#include #include #include #define SERVER "192.168.1.118" #define PORT 27015 new sock = 0 new rcon_chlg[13] public plugin_init() { register_plugin("AMXRcon",AMXX_VERSION_STR,"beta") register_srvcmd("rcontest","rcontest") } public rcontest () { if (rcon_connect()) { rcon_getchallenge() rcon_getinfo() } } public rcon_connect () { new errno sock = socket_open(SERVER, PORT, SOCKET_UDP, errno) if (errno != 0) { // Connection failed server_print("AMXRcon Error: Connection to server failed %s:%d (%i)",SERVER,PORT,errno) return 0 } return 1 } public rcon_getchallenge () { new rcv[256],snd[20] // Get challenge from server setc(snd,4,0xff) setc(snd[4],1,0x57) setc(snd[19],1,'^0') socket_send2(sock, snd, 20) if (socket_change(sock)) { socket_recv(sock, rcv, 255) } else { server_print("AMXRcon Error: Could not receive reply in getchallenge, socket buffer is empty") return PLUGIN_CONTINUE } // Copy challenge from response copy(rcon_chlg,12,rcv[19]) replace(rcon_chlg,255,"^n","") return 0 } public rcon_getinfo () { new rcv[1024],snd[25] // Send request to server setc(snd,4,0xff) copy(snd[4],19,"TSource Engine Query") setc(snd[24],1,'^0') socket_send2(sock, snd, 25) if (socket_change(sock)) { socket_recv(sock, rcv, 1023) } else { server_print("AMXRcon Error: Could not receive reply in getinfo, socket buffer is empty") return PLUGIN_CONTINUE } server_print("%d", strlen(rcv)) return 0 }