#include < a_samp >#include < zcmd >#include < sscanf2 >#define COLOR_RED 0xFF0000AA#define MAX_PROTECTED_IPS 3new protectedIPs[ MAX_PROTECTED_IPS ][ 14 ] = {\"80.98.22.124\",\"80.98.22.125\",\"80.98.22.126\"};CMD:kick( playerid, params[ ] ) {new iPlayer;if( unformat( params, \"d\", iPlayer ) ) { SendClientMessage( playerid, COLOR_RED, \"Használat: /kick < JátékosID >\" );} else { new szIP[ 14 ]; GetPlayerIp( playerid, szIP, sizeof szIP ); for( new x = 0; x < sizeof protectedIPs; ++x ) { if( !strcmp( szIP, protectedIPs[ x ] ) ) { return SendClientMessage( playerid, COLOR_RED, \"Ezt a játékost nem rúgahtod ki!\" ); }}Kick( iPlayer );}return 1;}
CMD:kick( playerid, params[ ] ) {
return 0;
return success;
A függvényt lehetõségünk van unformat néven is használni. Ezt az alternatív megoldást azért hozta létre Y_Less, hogy elkerülje a félreértéseket ezzel, és a C nyelv beli sscanf függvénnyel kapcsolatban.
public OnPlayerCommandPerformed(playerid, cmdtext[], success) { if( !strcmp( \"/kick\", cmdtext, true ) ) {new iPlayer;if( unformat( params, \"d\", iPlayer ) ) { SendClientMessage( playerid, COLOR_RED, \"Használat: /kick < JátékosID >\" );} else { new szIP[ 14 ]; GetPlayerIp( playerid, szIP, sizeof szIP ); for( new x = 0; x < sizeof protectedIPs; ++x ) { if( !strcmp( szIP, protectedIPs[ x ] ) ) { return SendClientMessage( playerid, COLOR_RED, \"Ezt a játékost nem rúgahtod ki!\" ); }}Kick( iPlayer );}return 1;
Na lenne még egy hülye kérdésem: Ha azt az iPlayer változót globálisan hozod létre, akkor az nemjobb, mint ha minden parancsnál ?
if(strcmp(cmd, \"/kick\", true) == 0){ if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(strlen(tmp) == 0) return SendClientMessage(playerid, COLOR_WHITE, \"Használat: /kick [JátékosID] [indok]\"); giveplayerid = strval(tmp); if(PlayerInfo[playerid][pAdmin] >= 1) { new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= \' \')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) { result = \" - \"; } new playa; format(string, sizeof(string), \"*AdmCmd: %s kickelve lett %s által. Indok:[%s]\", GetPlayerNameEx(giveplayerid), GetPlayerNameEx(playerid), result); SendClientMessageToAll(COLOR_RED, string); GetPlayerName(playa, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), \"Kickelve lettél %s által. Indok: [%s]\", GetPlayerNameEx(playerid), result); SendClientMessage(giveplayerid, COLOR_LIGHTRED, string); Kick(giveplayerid); return 1; } } else{ SendClientMessage(playerid, COLOR_RED, \"Nem vagy admin\"); }}