19.08.2010, 16:42
Okay, I am developing my new admin script, this is the /kick command I have come up with:
as you can see it is fairly long, It works okay but I want it shorter. What could I do to make this code as short as possible?
Код:
if(strcmp(cmd,"/kick",true) == 0) { new tmp[256]; tmp = strtok(cmdtext, idx); new id; tmp = strtok(cmdtext, idx); if(PlayerInfo[playerid][Level] <= 3) { SendClientMessage(playerid,RED,"You have to be Level 4 to use this command!"); return 1; } if(Logged[playerid] == 0) { SendClientMessage(playerid,BRIGHTRED,"Please login before you use this command!"); return 1; } if(!strlen(tmp)) { SendClientMessage(playerid,WHITE,"Usage: /kick [id] [reason]"); return 1; } id = strval(tmp); if(IsPlayerConnected(id)) { 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)) { SendClientMessage(playerid,RED, "SERVER: /kick [id] [reason]"); } else { tmp = strtok(cmdtext, idx); new string[128]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); new nname[MAX_PLAYER_NAME]; GetPlayerName(id,nname,sizeof(nname)); format(string,sizeof(string)," * You have kicked %s Reason: %s",nname,result); SendClientMessage(playerid,YELLOW,string); format(string,sizeof(string)," * you have been kicked by %s Reason: %s ",name,result); SendClientMessage(id,BRIGHTRED,string); format(string,sizeof(string)," * %s has been kicked by %s. Reason: %s *",nname,name,result); SendClientMessageToAll(BRIGHTRED,string); } return 1; } }