// Add this global array in your script new gPlayerKick[MAX_PLAYERS]; public OnPlayerCommandText(playerid, cmdtext[]) { new strCmd[8][255]; new strText[255]; split(cmdtext, strCmd, ' ', sizeof(strCmd)); if(equal(strCmd[0], "/kick", false)){ if(strCmd[1][0]==0 || strCmd[2][0]==0){ SendClientMessage(playerid, INSERT_COLOR, "USAGE: /kick \"\""); } else { AdminKickPlayer(playerid, strtoval(strCmd[1]), strCmd[2]); } return 1; } return 0; } public OnPlayerDisconnect(playerid) { // Add this to your OnPlayerDisconnect gPlayerKick[playerid] = 0; return 1; } AdminKickPlayer1(playerid, targetid, reason[]) { // This function will send a kick message to // targetid player and activate a 500mS timer // that will execute the actual kick. new strMsg[128]; if(IsPlayerAdmin(playerid)){ if(IsPlayerConnected(targetid)){ if(reason[0]==0){ // Admin gave no reason, so display a // standard reason. format(strMsg, sizeof(strMsg), "%s (%d) were kicked by %s. Reason: None given.", ReadPlayerName(targetid), targetid, ReadPlayerName(playerid)); } else { format(strMsg, sizeof(strMsg), "%s (%d) were kicked by %s. Reason: %s", ReadPlayerName(targetid), targetid, ReadPlayerName(playerid), reason); } // Send the message to all players and set the kick flag SendClientMessageToAll(INSERT_COLOR, strMsg); gPlayerKick[targetid] = 1; SetTimer("OnPlayerKick", 500, 0); } else { SendClientMessage(playerid, INSERT_COLOR, "Invalid playerid"); } } return 1; } public OnPlayerKick() { for(new i=0;i= 0x30) && (strText[i]<=0x39)){ n = (n*10) + (strText[i] - 48); } else { // Encountered non-numeric ascii return -1; } i++; } if(numneg){ return 0 - n; } return n; } stock split(const strsrc[], strdest[][], delimiter, maxitems) { new i, li; new aNum; new len; new remdel; while((i <= strlen(strsrc)) && (aNum < maxitems)){ if(strsrc[i]==0x22){ // 0x22 = " if(delimiter != 0x22){ remdel = delimiter; delimiter = 0x22; i++; li++; } } if((strsrc[i]==delimiter) || (i==strlen(strsrc))){ len = strmid(strdest[aNum], strsrc, li, i, 128); strdest[aNum][len] = 0; // zero terminate string li = i+1; aNum++; if(delimiter==0x22){ delimiter = remdel; li++; i++; } } i++; } return 1; } stock equal(strsrc[], strcomp[], bool:casesen) { // Returns 1 if strings are equal, 0 if not. // Casesen true = Case Sensitive new bool:caseused; if(!casesen){caseused = true;} if(strcmp(strsrc, strcomp, caseused)==0){ // Strings are equal return 1; } return 0; }