rendered paste body#include <amxmodx>
#include <engine>
#include <sockets>
#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
}