#include #include #include #include #include #pragma newdecls required #pragma semicolon 1 char sPublicIP[64]; int PublicSDRIP[4]; bool SDR_IP_Set = false; ConVar g_cWebhook = null; #define MSG_SDR "The SDR IP for {SERVER_NAME} is: `{SDR_INFO}` You can use `connect {SDR_INFO}` in the console!" public Plugin myinfo = { name = "List SDR Info", author = "Spaenny", description = "Adds a command to list SDR info and post to Discord.", version = "1.0.0", url = "https://spaenny.tf" }; public void OnPluginStart() { RegConsoleCmd("sm_sdr", Command_SDR, "List SDR Info"); g_cWebhook = CreateConVar("discord_sdrinfo_webhook", "sdrinfo", "Config key from configs/discord.cfg."); AutoExecConfig(true, "discord_sdrinfo"); } public void OnConfigsExecuted() { int decSDRIP = SteamPawn_GetSDRFakeIP(); if (decSDRIP == 0) { LogMessage("SDR IP is not set"); return; } SDR_IP_Set = true; PublicSDRIP[0] = (decSDRIP >> 24) & 0xFF; PublicSDRIP[1] = (decSDRIP >> 16) & 0xFF; PublicSDRIP[2] = (decSDRIP >> 8) & 0xFF; PublicSDRIP[3] = decSDRIP & 0xFF; int SDRPort = SteamPawn_GetSDRFakePort(0); Format(sPublicIP, sizeof(sPublicIP), "%u.%u.%u.%u:%d", PublicSDRIP[0], PublicSDRIP[1], PublicSDRIP[2], PublicSDRIP[3], SDRPort); // Build the Discord message char sMSG[512]; Format(sMSG, sizeof(sMSG), "%s", MSG_SDR); // Replace SDR IP ReplaceString(sMSG, sizeof(sMSG), "{SDR_INFO}", sPublicIP); // Replace Server Name char sServerName[128]; GetConVarString(FindConVar("hostname"), sServerName, sizeof(sServerName)); ReplaceString(sMSG, sizeof(sMSG), "{SERVER_NAME}", sServerName); LogMessage("SDR IP: %s", sPublicIP); SendMessage(sMSG); } public Action Command_SDR(int client, int args) { if (!SDR_IP_Set) { PrintToChat(client, "SDR does not seem to be on for this server."); return Plugin_Handled; } PrintToChat(client, "SDR IP: %s", sPublicIP); char password[64]; ConVar cv = FindConVar("sv_password"); if (cv != null) { cv.GetString(password, sizeof(password)); } else { password[0] = '\0'; } PrintToChat(client, "Connect Command: connect %s; password %s", sPublicIP, password); return Plugin_Handled; } // Helper function: send a message to Discord void SendMessage(const char[] sMessage) { if (g_cWebhook != null) { char sWebhook[64]; g_cWebhook.GetString(sWebhook, sizeof(sWebhook)); Discord_SendMessage(sWebhook, sMessage); } }