Advertisement
Zinne91

Simple Votekick & Voteban by DJ Deagle Hard-Edit by Kaliber

Jul 21st, 2014
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.34 KB | None | 0 0
  1. /*
  2.  * Simple Votekick & Voteban System by DJ Deagle...HARD EDIT by Kaliber
  3.  */
  4. #include <a_samp>
  5. #include <ocmd>
  6.  
  7. #define SCM SendClientMessage
  8. #define SCMT SendClientMessageToAll
  9.  
  10. static bool:active[2],bool:did[MAX_PLAYERS char],vote[2],name[MAX_PLAYERS][MAX_PLAYER_NAME];
  11.  
  12. public OnPlayerConnect(playerid) return GetPlayerName(playerid,name[playerid],MAX_PLAYER_NAME);
  13. public OnFilterScriptInit() return print("\n-------------------------------------- \nSimple Votekick & Voteban System by DJ Deagle (e) by Kaliber!\n--------------------------------------\n");
  14.  
  15. ocmd:votekick(playerid,params[]) {
  16.     if(active[0] || active[1]) return SCM(playerid,-1,"Es ist bereits ein Votekick oder Voteban aktiv, warte bis dieser abgelaufen ist!");
  17.     new pID,string[144];
  18.     if(sscanf(params,"us",pID,string))return SCM(playerid,-1,"Benutze: /votekick [Spieler-ID] [Grund]");
  19.     format(string,sizeof string,"Der Spieler %s möchte den Spieler %s via Votekick vom Server kicken! Grund: %s",name[playerid],name[pID],string);
  20.     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.");
  21.     return active[0]=true,vote[0]++,did{playerid}=true,SetTimerEx("@EndVote",13000,0,"d",pID);
  22. }
  23. ocmd:voteban(playerid,params[]) {
  24.     if(active[0] || active[1]) return SCM(playerid,-1,"Es ist bereits ein Votekick oder Voteban aktiv, warte bis dieser abgelaufen ist!");
  25.     new pID,string[144];
  26.     if(sscanf(params,"us",pID,string)) return SCM(playerid,-1,"Benutze: /voteban [Spieler-ID] [Grund]");
  27.     format(string,sizeof string,"Der Spieler %s möchte den Spieler %s via Voteban vom Server bannen! Grund: %s",name[playerid],name[pID],string);
  28.     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.");
  29.     return active[1]=true,vote[0]++,did{playerid}=true,SetTimerEx("@EndVote",13000,0,"d",pID);
  30. }
  31. ocmd:yes(playerid,params[]) {
  32.     if(did{playerid}) return SCM(playerid,-1,"Du kannst nur ein mal Voten!");
  33.     if(!active[0] && !active[1])return SCM(playerid,-1,"Es ist kein Votekick oder Voteban aktiv!");
  34.     return vote[0]++,did{playerid}=true,SCM(playerid,-1,"Du hast für Ja gevotet.");
  35. }
  36. ocmd:no(playerid,params[]) {
  37.     if(did{playerid})return SCM(playerid,-1,"Du kannst nur ein mal Voten!");
  38.     if(!active[0] && !active[1])return SCM(playerid,-1,"Es ist kein Votekick oder Voteban aktiv!");
  39.     return vote[1]++,did{playerid}=true,SCM(playerid,-1,"Du hast für Nein gevotet.");
  40. }
  41. @EndVote(playerid);@EndVote(playerid) {
  42.     new string[128];
  43.     SCMT(-1,"Die Abstimmung wurde beendet und die Stimmen werden sortiert!"),SCMT(-1," ");
  44.     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);
  45.     if(vote[0] > vote[1]){
  46.         format(string,sizeof string,"Der Spieler %s wurde vom Server %s!",name[playerid],(active[0]) ? ("gekickt") : ("gebannt")),SCMT(-1,string);
  47.         if(active[0]) Kick(playerid); else Ban(playerid);
  48.     } else format(string,sizeof string,"Der Spieler %s wurde vom Server nicht %s!",name[playerid],(active[0]) ? ("gekickt") : ("gebannt")),SCMT(-1,string);
  49.     return ResetVars();
  50. }
  51. stock ResetVars() {
  52.     for(new i; i<MAX_PLAYERS; i++) if(did{i}) did{i}=false;
  53.     return active[0]=false,active[1]=false,vote[0]=0,vote[1]=0;
  54. }
  55. stock sscanf(string[], format[], {Float,_}:...) {
  56.     if (string[0] == 0 || (string[0] == 1 && string[1] == 0)) return format[0];
  57.     new formatPos = 0,stringPos = 0,paramPos = 2,paramCount = numargs(),delim = ' ';
  58.     while (string[stringPos] && string[stringPos] <= ' ') stringPos++;
  59.     while (paramPos < paramCount && string[stringPos]) {
  60.         switch (format[formatPos++]) {
  61.             case '\0': return 0;
  62.             case 'u': {
  63.                 new end = stringPos - 1,id = 0,bool:num = true,ch;
  64.                 while ((ch = string[++end]) && ch != delim) {
  65.                     if (num) {
  66.                         if ('0' <= ch <= '9') id = (id * 10) + (ch - '0');
  67.                         else num = false;
  68.                     }
  69.                 }
  70.                 if (num && IsPlayerConnected(id)) setarg(paramPos, 0, id);
  71.                 else {
  72.                     #if !defined foreach
  73.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  74.                         #define __SSCANF_FOREACH__
  75.                     #endif
  76.                     string[end] = '\0',num = false,id = end - stringPos;
  77.                     foreach (Player, playerid) {
  78.                         if (!strcmp(name[playerid], string[stringPos], true, id)) {
  79.                             setarg(paramPos, 0, playerid),num = true;
  80.                             break;
  81.                         }
  82.                     }
  83.                     if (!num) setarg(paramPos, 0, INVALID_PLAYER_ID);
  84.                     string[end] = ch;
  85.                     #if defined __SSCANF_FOREACH__
  86.                         #undef foreach
  87.                         #undef __SSCANF_FOREACH__
  88.                     #endif
  89.                 }
  90.                 stringPos = end;
  91.             }
  92.             case 's', 'z': {
  93.                 new i = 0,ch;
  94.                 if (format[formatPos]) {
  95.                     while ((ch = string[stringPos++]) && ch != delim) setarg(paramPos, i++, ch);
  96.                     if (!i) return -1;
  97.                 }
  98.                 else {
  99.                     while ((ch = string[stringPos++]))setarg(paramPos, i++, ch);
  100.                 }
  101.                 stringPos--,setarg(paramPos, i, '\0');
  102.             }
  103.             default: continue;
  104.         }
  105.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ') stringPos++;
  106.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' ')) stringPos++;
  107.         paramPos++;
  108.     }
  109.     do {
  110.         if ((delim = format[formatPos++]) > ' ') {
  111.             if (delim == '\'') {
  112.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  113.             }
  114.             else if (delim != 'z') return delim;
  115.         }
  116.     }
  117.     while (delim > ' ');
  118.     return 0;
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement