Advertisement
Zinne91

Simple Votekick & Voteban by DJ Deagle

Jul 21st, 2014
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.15 KB | None | 0 0
  1. /*
  2.  * Simple Votekick & Voteban System by DJ Deagle
  3.  */
  4.  
  5. #define FILTERSCRIPT
  6.  
  7. #include a_samp
  8. #include ocmd
  9.  
  10. new yes,no,active,did[MAX_PLAYERS],sendername[MAX_PLAYER_NAME],usedname[MAX_PLAYER_NAME];
  11. forward EndVote(target);
  12.  
  13. #if defined FILTERSCRIPT
  14.  
  15. public OnFilterScriptInit()
  16. {
  17.         print("\n--------------------------------------");
  18.         print(" Simple Votekick & Voteban System by DJ Deagle! ");
  19.         print("--------------------------------------\n");
  20.         yes = 0; no = 0; active = 0;
  21.         return 1;
  22. }
  23.  
  24. #endif
  25.  
  26. public OnPlayerRequestClass(playerid, classid)
  27. {
  28.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  29.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  30.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  31.     return 1;
  32. }
  33.  
  34. public OnPlayerConnect(playerid)
  35. {
  36.     did[playerid] = 0;
  37.     return 1;
  38. }
  39.  
  40. public OnPlayerDisconnect(playerid, reason)
  41. {
  42.     did[playerid] = 0;
  43.     return 1;
  44. }
  45.  
  46. public OnPlayerSpawn(playerid)
  47. {
  48.     return 1;
  49. }
  50.  
  51. public OnPlayerDeath(playerid, killerid, reason)
  52. {
  53.     return 1;
  54. }
  55.  
  56. public OnVehicleSpawn(vehicleid)
  57. {
  58.     return 1;
  59. }
  60.  
  61. public OnVehicleDeath(vehicleid, killerid)
  62. {
  63.     return 1;
  64. }
  65.  
  66. public OnPlayerText(playerid, text[])
  67. {
  68.     return 1;
  69. }
  70.  
  71. public OnPlayerCommandText(playerid, cmdtext[])
  72. {
  73.     return 1;
  74. }
  75.  
  76. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  77. {
  78.     return 1;
  79. }
  80.  
  81. public OnPlayerExitVehicle(playerid, vehicleid)
  82. {
  83.     return 1;
  84. }
  85.  
  86. public OnPlayerStateChange(playerid, newstate, oldstate)
  87. {
  88.     return 1;
  89. }
  90.  
  91. public OnPlayerEnterCheckpoint(playerid)
  92. {
  93.     return 1;
  94. }
  95.  
  96. public OnPlayerLeaveCheckpoint(playerid)
  97. {
  98.     return 1;
  99. }
  100.  
  101. public OnPlayerEnterRaceCheckpoint(playerid)
  102. {
  103.     return 1;
  104. }
  105.  
  106. public OnPlayerLeaveRaceCheckpoint(playerid)
  107. {
  108.     return 1;
  109. }
  110.  
  111. public OnRconCommand(cmd[])
  112. {
  113.     return 1;
  114. }
  115.  
  116. public OnPlayerRequestSpawn(playerid)
  117. {
  118.     return 1;
  119. }
  120.  
  121. public OnObjectMoved(objectid)
  122. {
  123.     return 1;
  124. }
  125.  
  126. public OnPlayerObjectMoved(playerid, objectid)
  127. {
  128.     return 1;
  129. }
  130.  
  131. public OnPlayerPickUpPickup(playerid, pickupid)
  132. {
  133.     return 1;
  134. }
  135.  
  136. public OnVehicleMod(playerid, vehicleid, componentid)
  137. {
  138.     return 1;
  139. }
  140.  
  141. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  142. {
  143.     return 1;
  144. }
  145.  
  146. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  147. {
  148.     return 1;
  149. }
  150.  
  151. public OnPlayerSelectedMenuRow(playerid, row)
  152. {
  153.     return 1;
  154. }
  155.  
  156. public OnPlayerExitedMenu(playerid)
  157. {
  158.     return 1;
  159. }
  160.  
  161. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  162. {
  163.     return 1;
  164. }
  165.  
  166. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  167. {
  168.     return 1;
  169. }
  170.  
  171. public OnRconLoginAttempt(ip[], password[], success)
  172. {
  173.     return 1;
  174. }
  175.  
  176. public OnPlayerUpdate(playerid)
  177. {
  178.     return 1;
  179. }
  180.  
  181. public OnPlayerStreamIn(playerid, forplayerid)
  182. {
  183.     return 1;
  184. }
  185.  
  186. public OnPlayerStreamOut(playerid, forplayerid)
  187. {
  188.     return 1;
  189. }
  190.  
  191. public OnVehicleStreamIn(vehicleid, forplayerid)
  192. {
  193.     return 1;
  194. }
  195.  
  196. public OnVehicleStreamOut(vehicleid, forplayerid)
  197. {
  198.     return 1;
  199. }
  200.  
  201. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  202. {
  203.     return 1;
  204. }
  205.  
  206. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  207. {
  208.     return 1;
  209. }
  210.  
  211. ocmd:votekick(playerid,params[])
  212. {
  213.     new pID,string[128];
  214.     if(active != 0)return SendClientMessage(playerid,-1,"Es ist bereits ein Votekick oder Voteban aktiv, warte bis dieser abgelaufen ist!");
  215.     if(sscanf(params,"us",pID,string))return SendClientMessage(playerid,-1,"Benutze: /votekick [Spieler-ID] [Grund]");
  216.     GetPlayerName(playerid,sendername,sizeof sendername);
  217.     GetPlayerName(pID,usedname,sizeof usedname);
  218.     active = 1; yes ++; did[playerid] = 1;
  219.     format(string,sizeof string,"Der Spieler %s möchte den Spieler %s via Votekick vom Server kicken! Grund: %s",sendername,usedname,string);
  220.     SendClientMessageToAll(-1," ");
  221.     SendClientMessageToAll(-1,string);
  222.     SendClientMessageToAll(-1,"Um zu voten gebe nun /yes oder /no  ein!");
  223.     SendClientMessageToAll(-1,"Dafür hast du 13 Sekunden Zeit.");
  224.     SetTimerEx("EndVote",13000,0,"d",pID);
  225.     return 1;
  226. }
  227.  
  228. ocmd:voteban(playerid,params[])
  229. {
  230.     new pID,string[128];
  231.     if(active != 0)return SendClientMessage(playerid,-1,"Es ist bereits ein Votekick oder Voteban aktiv, warte bis dieser abgelaufen ist!");
  232.     if(sscanf(params,"us",pID,string))return SendClientMessage(playerid,-1,"Benutze: /voteban [Spieler-ID] [Grund]");
  233.     GetPlayerName(playerid,sendername,sizeof sendername);
  234.     GetPlayerName(pID,usedname,sizeof usedname);
  235.     active = 2; yes ++; did[playerid] = 1;
  236.     format(string,sizeof string,"Der Spieler %s möchte den Spieler %s via Voteban vom Server bannen! Grund: %s",sendername,usedname,string);
  237.     SendClientMessageToAll(-1," ");
  238.     SendClientMessageToAll(-1,string);
  239.     SendClientMessageToAll(-1,"Um zu voten gebe nun /yes oder /no  ein!");
  240.     SendClientMessageToAll(-1,"Dafür hast du 13 Sekunden Zeit.");
  241.     SetTimerEx("EndVote",13000,0,"d",pID);
  242.     return 1;
  243. }
  244.  
  245. ocmd:yes(playerid,params[])
  246. {
  247.     if(did[playerid] == 1)return SendClientMessage(playerid,-1,"Du kannst nur ein mal Voten!");
  248.     if(active == 0)return SendClientMessage(playerid,-1,"Es ist kein Votekick oder Voteban aktiv!");
  249.     yes ++; did[playerid] = 1;
  250.     SendClientMessage(playerid,-1,"Du hast für Ja gevotet.");
  251.     return 1;
  252. }
  253.  
  254. ocmd:no(playerid,params[])
  255. {
  256.     if(did[playerid] == 1)return SendClientMessage(playerid,-1,"Du kannst nur ein mal Voten!");
  257.     if(active == 0)return SendClientMessage(playerid,-1,"Es ist kein Votekick oder Voteban aktiv!");
  258.     no ++; did[playerid] = 1;
  259.     SendClientMessage(playerid,-1,"Du hast für Nein gevotet.");
  260.     return 1;
  261. }
  262.  
  263. public EndVote(target)
  264. {
  265.     new string[128];
  266.     SendClientMessageToAll(-1,"Die Abstimmung wurde beendet und die Stimmen werden sortiert!");
  267.     SendClientMessageToAll(-1," ");
  268.     if(yes > no){
  269.         if(active == 1) {
  270.             GetPlayerName(target,sendername,sizeof sendername);
  271.             Kick(target);
  272.             format(string,sizeof string,"Es haben %d Spieler für Ja, und %d Spieler für Nein gestimmt!",yes,no);
  273.             SendClientMessageToAll(-1,string);
  274.             format(string,sizeof string,"Der Spieler %s wurde vom Server gekickt!",sendername);
  275.             SendClientMessageToAll(-1,string);
  276.             active = 0; yes = 0; no = 0;
  277.         }
  278.         if(active == 2) {
  279.             GetPlayerName(target,sendername,sizeof sendername);
  280.             Ban(target);
  281.             format(string,sizeof string,"Es haben %d Spieler für Ja, und %d Spieler für Nein gestimmt!",yes,no);
  282.             SendClientMessageToAll(-1,string);
  283.             format(string,sizeof string,"Der Spieler %s wurde vom Server gebannt!",sendername);
  284.             SendClientMessageToAll(-1,string);
  285.             active = 0; yes = 0; no = 0;
  286.         }
  287.     }
  288.     if(no > yes){
  289.         if(active == 1) {
  290.             GetPlayerName(target,sendername,sizeof sendername);
  291.             format(string,sizeof string,"Es haben %d Spieler für Ja, und %d Spieler für Nein gestimmt!",yes,no);
  292.             SendClientMessageToAll(-1,string);
  293.             format(string,sizeof string,"Der Spieler %s wurde nicht vom Server gekickt!",sendername);
  294.             SendClientMessageToAll(-1,string);
  295.             active = 0; yes = 0; no = 0;
  296.         }
  297.         if(active == 2) {
  298.             GetPlayerName(target,sendername,sizeof sendername);
  299.             format(string,sizeof string,"Es haben %d Spieler für Ja, und %d Spieler für Nein gestimmt!",yes,no);
  300.             SendClientMessageToAll(-1,string);
  301.             format(string,sizeof string,"Der Spieler %s wurde nicht vom Server gebannt!",sendername);
  302.             SendClientMessageToAll(-1,string);
  303.             active = 0; yes = 0; no = 0;
  304.         }
  305.     }
  306.     if(yes == no){
  307.         if(active == 1) {
  308.             GetPlayerName(target,sendername,sizeof sendername);
  309.             format(string,sizeof string,"Es haben %d Spieler für Ja, und %d Spieler für Nein gestimmt!",yes,no);
  310.             SendClientMessageToAll(-1,string);
  311.             format(string,sizeof string,"Der Spieler %s wurde nicht vom Server gekickt!",sendername);
  312.             SendClientMessageToAll(-1,string);
  313.             active = 0; yes = 0; no = 0;
  314.         }
  315.         if(active == 2) {
  316.             GetPlayerName(target,sendername,sizeof sendername);
  317.             format(string,sizeof string,"Es haben %d Spieler für Ja, und %d Spieler für Nein gestimmt!",yes,no);
  318.             SendClientMessageToAll(-1,string);
  319.             format(string,sizeof string,"Der Spieler %s wurde nicht vom Server gebannt!",sendername);
  320.             SendClientMessageToAll(-1,string);
  321.             active = 0; yes = 0; no = 0;
  322.         }
  323.     }
  324.     for(new i;i<MAX_PLAYERS;i++) {
  325.         if(IsPlayerConnected(i) && did[i] == 1) {
  326.             did[i] = 0;
  327.         }
  328.     }
  329.     return 1;
  330. }
  331.  
  332. stock sscanf(string[], format[], {Float,_}:...)
  333. {
  334.     #if defined isnull
  335.     if (isnull(string))
  336.         #else
  337.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  338.             #endif
  339.     {
  340.         return format[0];
  341.     }
  342.     #pragma tabsize 4
  343.     new
  344.         formatPos = 0,
  345.     stringPos = 0,
  346.     paramPos = 2,
  347.     paramCount = numargs(),
  348.     delim = ' ';
  349.     while (string[stringPos] && string[stringPos] <= ' ')
  350.     {
  351.         stringPos++;
  352.     }
  353.     while (paramPos < paramCount && string[stringPos])
  354.     {
  355.         switch (format[formatPos++])
  356.         {
  357.             case '\0':
  358.                 {
  359.                     return 0;
  360.                 }
  361.             case 'i', 'd':
  362.                 {
  363.                     new
  364.                         neg = 1,
  365.                     num = 0,
  366.                     ch = string[stringPos];
  367.                     if (ch == '-')
  368.                     {
  369.                         neg = -1;
  370.                         ch = string[++stringPos];
  371.                     }
  372.                     do
  373.                     {
  374.                         stringPos++;
  375.                         if ('0' <= ch <= '9')
  376.                         {
  377.                             num = (num * 10) + (ch - '0');
  378.                         }
  379.                         else
  380.                         {
  381.                             return -1;
  382.                         }
  383.                     }
  384.                     while ((ch = string[stringPos]) > ' ' && ch != delim);
  385.                     setarg(paramPos, 0, num * neg);
  386.                 }
  387.             case 'h', 'x':
  388.                 {
  389.                     new
  390.                         num = 0,
  391.                     ch = string[stringPos];
  392.                     do
  393.                     {
  394.                         stringPos++;
  395.                         switch (ch)
  396.                         {
  397.                             case 'x', 'X':
  398.                                 {
  399.                                     num = 0;
  400.                                     continue;
  401.                                 }
  402.                             case '0' .. '9':
  403.                                 {
  404.                                     num = (num << 4) | (ch - '0');
  405.                                 }
  406.                             case 'a' .. 'f':
  407.                                 {
  408.                                     num = (num << 4) | (ch - ('a' - 10));
  409.                                 }
  410.                             case 'A' .. 'F':
  411.                                 {
  412.                                     num = (num << 4) | (ch - ('A' - 10));
  413.                                 }
  414.                             default:
  415.                                 {
  416.                                     return -1;
  417.                                 }
  418.                         }
  419.                     }
  420.                     while ((ch = string[stringPos]) > ' ' && ch != delim);
  421.                     setarg(paramPos, 0, num);
  422.                 }
  423.             case 'c':
  424.                 {
  425.                     setarg(paramPos, 0, string[stringPos++]);
  426.                 }
  427.             case 'f':
  428.                 {
  429.  
  430.                     new changestr[16], changepos = 0, strpos = stringPos;
  431.                     while(changepos < 16 && string[strpos] && string[strpos] != delim)
  432.                     {
  433.                         changestr[changepos++] = string[strpos++];
  434.                     }
  435.                     changestr[changepos] = '\0';
  436.                     setarg(paramPos,0,_:floatstr(changestr));
  437.                 }
  438.             case 'p':
  439.                 {
  440.                     delim = format[formatPos++];
  441.                     continue;
  442.                 }
  443.             case '\'':
  444.                 {
  445.                     new
  446.                         end = formatPos - 1,
  447.                     ch;
  448.                     while ((ch = format[++end]) && ch != '\'') {}
  449.                     if (!ch)
  450.                     {
  451.                         return -1;
  452.                     }
  453.                     format[end] = '\0';
  454.                     if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  455.                     {
  456.                         if (format[end + 1])
  457.                         {
  458.                             return -1;
  459.                         }
  460.                         return 0;
  461.                     }
  462.                     format[end] = '\'';
  463.                     stringPos = ch + (end - formatPos);
  464.                     formatPos = end + 1;
  465.                 }
  466.             case 'u':
  467.                 {
  468.                     new
  469.                         end = stringPos - 1,
  470.                     id = 0,
  471.                     bool:num = true,
  472.                     ch;
  473.                     while ((ch = string[++end]) && ch != delim)
  474.                     {
  475.                         if (num)
  476.                         {
  477.                             if ('0' <= ch <= '9')
  478.                             {
  479.                                 id = (id * 10) + (ch - '0');
  480.                             }
  481.                             else
  482.                             {
  483.                                 num = false;
  484.                             }
  485.                         }
  486.                     }
  487.                     if (num && IsPlayerConnected(id))
  488.                     {
  489.                         setarg(paramPos, 0, id);
  490.                     }
  491.                     else
  492.                     {
  493.                         #if !defined foreach
  494.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  495.                         #define __SSCANF_FOREACH__
  496.                         #endif
  497.                         string[end] = '\0';
  498.                         num = false;
  499.                         new
  500.                             name[MAX_PLAYER_NAME];
  501.                         id = end - stringPos;
  502.                         foreach (Player, playerid)
  503.                         {
  504.                             GetPlayerName(playerid, name, sizeof (name));
  505.                             if (!strcmp(name, string[stringPos], true, id))
  506.                             {
  507.                                 setarg(paramPos, 0, playerid);
  508.                                 num = true;
  509.                                 break;
  510.                             }
  511.                         }
  512.                         if (!num)
  513.                         {
  514.                             setarg(paramPos, 0, INVALID_PLAYER_ID);
  515.                         }
  516.                         string[end] = ch;
  517.                         #if defined __SSCANF_FOREACH__
  518.                         #undef foreach
  519.                         #undef __SSCANF_FOREACH__
  520.                         #endif
  521.                     }
  522.                     stringPos = end;
  523.                 }
  524.             case 's', 'z':
  525.                 {
  526.                     new
  527.                         i = 0,
  528.                     ch;
  529.                     if (format[formatPos])
  530.                     {
  531.                         while ((ch = string[stringPos++]) && ch != delim)
  532.                         {
  533.                             setarg(paramPos, i++, ch);
  534.                         }
  535.                         if (!i)
  536.                         {
  537.                             return -1;
  538.                         }
  539.                     }
  540.                     else
  541.                     {
  542.                         while ((ch = string[stringPos++]))
  543.                         {
  544.                             setarg(paramPos, i++, ch);
  545.                         }
  546.                     }
  547.                     stringPos--;
  548.                     setarg(paramPos, i, '\0');
  549.                 }
  550.             default:
  551.                 {
  552.                     continue;
  553.                 }
  554.         }
  555.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  556.         {
  557.             stringPos++;
  558.         }
  559.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  560.         {
  561.             stringPos++;
  562.         }
  563.         paramPos++;
  564.     }
  565.     do
  566.     {
  567.         if ((delim = format[formatPos++]) > ' ')
  568.         {
  569.             if (delim == '\'')
  570.             {
  571.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  572.             }
  573.             else if (delim != 'z')
  574.             {
  575.                 return delim;
  576.             }
  577.         }
  578.     }
  579.     while (delim > ' ');
  580.     return 0;
  581. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement