Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Simple Votekick & Voteban System by DJ Deagle...HARD EDIT by Kaliber
- */
- #include <a_samp>
- #include <ocmd>
- #define SCM SendClientMessage
- #define SCMT SendClientMessageToAll
- static bool:active[2],bool:did[MAX_PLAYERS char],vote[2],name[MAX_PLAYERS][MAX_PLAYER_NAME];
- public OnPlayerConnect(playerid) return GetPlayerName(playerid,name[playerid],MAX_PLAYER_NAME);
- public OnFilterScriptInit() return print("\n-------------------------------------- \nSimple Votekick & Voteban System by DJ Deagle (e) by Kaliber!\n--------------------------------------\n");
- ocmd:votekick(playerid,params[]) {
- if(active[0] || active[1]) return SCM(playerid,-1,"Es ist bereits ein Votekick oder Voteban aktiv, warte bis dieser abgelaufen ist!");
- new pID,string[144];
- if(sscanf(params,"us",pID,string))return SCM(playerid,-1,"Benutze: /votekick [Spieler-ID] [Grund]");
- format(string,sizeof string,"Der Spieler %s möchte den Spieler %s via Votekick vom Server kicken! Grund: %s",name[playerid],name[pID],string);
- SCMT(-1," "),SCMT(-1,string),SCMT(-1,"Um zu voten gebe nun /yes oder /no ein!"),SCMT(-1,"Dafür hast du 13 Sekunden Zeit.");
- return active[0]=true,vote[0]++,did{playerid}=true,SetTimerEx("@EndVote",13000,0,"d",pID);
- }
- ocmd:voteban(playerid,params[]) {
- if(active[0] || active[1]) return SCM(playerid,-1,"Es ist bereits ein Votekick oder Voteban aktiv, warte bis dieser abgelaufen ist!");
- new pID,string[144];
- if(sscanf(params,"us",pID,string)) return SCM(playerid,-1,"Benutze: /voteban [Spieler-ID] [Grund]");
- format(string,sizeof string,"Der Spieler %s möchte den Spieler %s via Voteban vom Server bannen! Grund: %s",name[playerid],name[pID],string);
- SCMT(-1," "),SCMT(-1,string),SCMT(-1,"Um zu voten gebe nun /yes oder /no ein!"),SCMT(-1,"Dafür hast du 13 Sekunden Zeit.");
- return active[1]=true,vote[0]++,did{playerid}=true,SetTimerEx("@EndVote",13000,0,"d",pID);
- }
- ocmd:yes(playerid,params[]) {
- if(did{playerid}) return SCM(playerid,-1,"Du kannst nur ein mal Voten!");
- if(!active[0] && !active[1])return SCM(playerid,-1,"Es ist kein Votekick oder Voteban aktiv!");
- return vote[0]++,did{playerid}=true,SCM(playerid,-1,"Du hast für Ja gevotet.");
- }
- ocmd:no(playerid,params[]) {
- if(did{playerid})return SCM(playerid,-1,"Du kannst nur ein mal Voten!");
- if(!active[0] && !active[1])return SCM(playerid,-1,"Es ist kein Votekick oder Voteban aktiv!");
- return vote[1]++,did{playerid}=true,SCM(playerid,-1,"Du hast für Nein gevotet.");
- }
- @EndVote(playerid);@EndVote(playerid) {
- new string[128];
- SCMT(-1,"Die Abstimmung wurde beendet und die Stimmen werden sortiert!"),SCMT(-1," ");
- format(string,sizeof string,"Es haben %d Spieler für Ja, und %d Spieler für Nein gestimmt!",vote[0],vote[1]),SCMT(-1,string);
- if(vote[0] > vote[1]){
- format(string,sizeof string,"Der Spieler %s wurde vom Server %s!",name[playerid],(active[0]) ? ("gekickt") : ("gebannt")),SCMT(-1,string);
- if(active[0]) Kick(playerid); else Ban(playerid);
- } else format(string,sizeof string,"Der Spieler %s wurde vom Server nicht %s!",name[playerid],(active[0]) ? ("gekickt") : ("gebannt")),SCMT(-1,string);
- return ResetVars();
- }
- stock ResetVars() {
- for(new i; i<MAX_PLAYERS; i++) if(did{i}) did{i}=false;
- return active[0]=false,active[1]=false,vote[0]=0,vote[1]=0;
- }
- stock sscanf(string[], format[], {Float,_}:...) {
- if (string[0] == 0 || (string[0] == 1 && string[1] == 0)) return format[0];
- new formatPos = 0,stringPos = 0,paramPos = 2,paramCount = numargs(),delim = ' ';
- while (string[stringPos] && string[stringPos] <= ' ') stringPos++;
- while (paramPos < paramCount && string[stringPos]) {
- switch (format[formatPos++]) {
- case '\0': return 0;
- case 'u': {
- new end = stringPos - 1,id = 0,bool:num = true,ch;
- while ((ch = string[++end]) && ch != delim) {
- if (num) {
- if ('0' <= ch <= '9') id = (id * 10) + (ch - '0');
- else num = false;
- }
- }
- if (num && IsPlayerConnected(id)) setarg(paramPos, 0, id);
- else {
- #if !defined foreach
- #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
- #define __SSCANF_FOREACH__
- #endif
- string[end] = '\0',num = false,id = end - stringPos;
- foreach (Player, playerid) {
- if (!strcmp(name[playerid], string[stringPos], true, id)) {
- setarg(paramPos, 0, playerid),num = true;
- break;
- }
- }
- if (!num) setarg(paramPos, 0, INVALID_PLAYER_ID);
- string[end] = ch;
- #if defined __SSCANF_FOREACH__
- #undef foreach
- #undef __SSCANF_FOREACH__
- #endif
- }
- stringPos = end;
- }
- case 's', 'z': {
- new i = 0,ch;
- if (format[formatPos]) {
- while ((ch = string[stringPos++]) && ch != delim) setarg(paramPos, i++, ch);
- if (!i) return -1;
- }
- else {
- while ((ch = string[stringPos++]))setarg(paramPos, i++, ch);
- }
- stringPos--,setarg(paramPos, i, '\0');
- }
- default: continue;
- }
- while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ') stringPos++;
- while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' ')) stringPos++;
- paramPos++;
- }
- do {
- if ((delim = format[formatPos++]) > ' ') {
- if (delim == '\'') {
- while ((delim = format[formatPos++]) && delim != '\'') {}
- }
- else if (delim != 'z') return delim;
- }
- }
- while (delim > ' ');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement