All pastes #551040 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-06-08 16:54 UTC
rendered paste body
#include <amxmodx>
#include <engine>
#include <sockets>

#define	SERVER	"192.168.1.118"
#define	PORT	27016

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[256]

	// Get challenge from server
	setc(snd,4,0xff)
	setc(snd[4],1,0x57)
	setc(snd[19],1,'^0')
	socket_send(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[256],snd[256]

	// Send request to server
	setc(snd,4,0xff)
	copy(snd[4],19,"Source Engine Query")
	setc(snd[23],1,'^0')
	socket_send(sock, snd, 24)

	if (socket_change(sock)) {
		socket_recv(sock, rcv, 255)
	} else {
		server_print("AMXRcon Error: Could not receive reply in getinfo, socket buffer is empty")
		return PLUGIN_CONTINUE
	}

	server_print("asdf")

	return 0
}