All pastes #275200 Raw Edit

MaXx001

public c v1 · immutable
·published 2006-12-11 09:40 UTC
rendered paste body
// Add this global array in your scriptnew 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 <playerid> \"<reason>\"");        } 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<MAX_PLAYERS;i++){        // Loop through all player slots        if(gPlayerKick[i]){            if(IsPlayerConnected(i)){                gPlayerKick[i] = 0;                Kick(i);            }        }    }    return 1;}stock ReadPlayerName(playerid){    new strName[MAX_PLAYER_NAME];    GetPlayerName(playerid, strName, MAX_PLAYER_NAME);        return strName;}stock strtoval(strText[]){    // This function replaces strval. The difference is that    // this function returns -1 if the string cant be converted.    new n,i;    new bool:numneg;        if(strText[0] == 0x2D){        numneg = true;        i++;    }        while(i<strlen(strText)){        if((strText[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;}