I not remember the author, but if it someone its the author, reply this
Ps.
If someone have a better method, reply this topic.
EDIT: Its required to use the stock Socket module, have fun
Code: Select all
stock Rcon_Command(const szHost[],iPort,const szPass[],const szCommand[])
{
new iError;
new iSocket = socket_open(szHost,iPort,SOCKET_UDP,iError);
switch(iError)
{
case 1:
{
socket_close(iSocket);
server_print("* Error on creating the socket.");
return PLUGIN_HANDLED;
}
case 2:
{
socket_close(iSocket);
server_print("* Error on resolve the given hostname.");
return PLUGIN_HANDLED;
}
case 3:
{
socket_close(iSocket);
server_print("* Error on connecting.");
return PLUGIN_HANDLED;
}
}
new iSend[256],szCmd[256],szRcon[32],szNone[64];
formatex(iSend,sizeof(iSend),"%c%c%c%cchallenge rcon",255,255,255,255);
socket_send2(iSocket,iSend,charsmax(iSend));
if(!socket_change(iSocket,2000000)) // If socket not change in 2 seconds, then stop it
{
socket_close(iSocket);
server_print("* No response from %s:%d",szHost,iPort);
return PLUGIN_HANDLED;
}
socket_recv(iSocket,szCmd,charsmax(szCmd));
parse(szCmd,szNone,charsmax(szNone),szNone,charsmax(szNone),szRcon,charsmax(szRcon));
formatex(szCmd,sizeof(szCmd),"%c%c%c%crcon %s ^"%s^" %s",255,255,255,255,szRcon,szPass,szCommand);
socket_send2(iSocket,szCmd,charsmax(szCmd));
if(socket_change(iSocket))
{
new szBuffer[2048];
socket_recv(iSocket,szBuffer,charsmax(szBuffer));
server_print(szBuffer);
}
socket_close(iSocket);
return PLUGIN_HANDLED;
} 