Advertisement
System32

S32_VoteBan

Sep 3rd, 2011
555
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.36 KB | None | 0 0
  1. #include <a_samp>
  2. #include <YSI\y_commands>
  3. new Text: TDName, Text: TDYes, Text: TDNo, Text: TDYesResult, Text: TDNoResult, Text: TDTime;
  4. new Yes, No, seconds = 60, PlayerToBan =- 1;
  5. new bool: IsVoteBanStarted, bool: HasPlayerVoted[MAX_PLAYERS];
  6. new tdstring[128], tdstring2[128], tdname[24], tdname2[24];
  7.  
  8. public OnFilterScriptInit()
  9. {
  10.     print("\n");
  11.     print("  \4\4\4\4\4\4\4\4\4\4\4\4\4\4");
  12.     print("  \4 S32VoteBan \4");
  13.     print("  \4 by         \4");
  14.     print("  \4 System32   \4");
  15.     print("  \4\4\4\4\4\4\4\4\4\4\4\4\4\4\n");
  16.  
  17.     TDName = TextDrawCreate(56.000000, 211.000000, "Name");
  18.     TextDrawBackgroundColor(TDName, 255);
  19.     TextDrawFont(TDName, 2);
  20.     TextDrawLetterSize(TDName, 0.280000, 0.799999);
  21.     TextDrawColor(TDName, -1);
  22.     TextDrawSetOutline(TDName, 0);
  23.     TextDrawSetProportional(TDName, 1);
  24.     TextDrawSetShadow(TDName, 1);
  25.    
  26.     TDYes = TextDrawCreate(42.000000, 226.000000, "Yes");
  27.     TextDrawBackgroundColor(TDYes, 255);
  28.     TextDrawFont(TDYes, 2);
  29.     TextDrawLetterSize(TDYes, 0.500000, 1.000000);
  30.     TextDrawColor(TDYes, 16777215);
  31.     TextDrawSetOutline(TDYes, 0);
  32.     TextDrawSetProportional(TDYes, 1);
  33.     TextDrawSetShadow(TDYes, 1);
  34.  
  35.     TDNo = TextDrawCreate(133.000000, 226.000000, "No");
  36.     TextDrawBackgroundColor(TDNo, 255);
  37.     TextDrawFont(TDNo, 2);
  38.     TextDrawLetterSize(TDNo, 0.500000, 1.000000);
  39.     TextDrawColor(TDNo, 16777215);
  40.     TextDrawSetOutline(TDNo, 0);
  41.     TextDrawSetProportional(TDNo, 1);
  42.     TextDrawSetShadow(TDNo, 1);
  43.    
  44.     TDYesResult = TextDrawCreate(52.000000, 236.000000, "0");
  45.     TextDrawBackgroundColor(TDYesResult, 255);
  46.     TextDrawFont(TDYesResult, 2);
  47.     TextDrawLetterSize(TDYesResult, 0.500000, 1.000000);
  48.     TextDrawColor(TDYesResult, -16711681);
  49.     TextDrawSetOutline(TDYesResult, 0);
  50.     TextDrawSetProportional(TDYesResult, 1);
  51.     TextDrawSetShadow(TDYesResult, 1);
  52.  
  53.     TDNoResult = TextDrawCreate(137.000000, 236.000000, "0");
  54.     TextDrawBackgroundColor(TDNoResult, 255);
  55.     TextDrawFont(TDNoResult, 2);
  56.     TextDrawLetterSize(TDNoResult, 0.500000, 1.000000);
  57.     TextDrawColor(TDNoResult, -16711681);
  58.     TextDrawSetOutline(TDNoResult, 0);
  59.     TextDrawSetProportional(TDNoResult, 1);
  60.     TextDrawSetShadow(TDNoResult, 1);
  61.  
  62.     TDTime = TextDrawCreate(93.000000, 230.000000, "60");
  63.     TextDrawBackgroundColor(TDTime, 255);
  64.     TextDrawFont(TDTime, 2);
  65.     TextDrawLetterSize(TDTime, 0.430000, 0.699999);
  66.     TextDrawColor(TDTime, -1);
  67.     TextDrawSetOutline(TDTime, 0);
  68.     TextDrawSetProportional(TDTime, 1);
  69.     TextDrawSetShadow(TDTime, 1);
  70.     return 1;
  71. }
  72.  
  73. public OnFilterScriptExit()
  74. {
  75.     TextDrawDestroy(TDName);
  76.     TextDrawDestroy(TDYes);
  77.     TextDrawDestroy(TDNo);
  78.     TextDrawDestroy(TDYesResult);
  79.     TextDrawDestroy(TDNoResult);
  80.     TextDrawDestroy(TDTime);
  81.     return 1;
  82. }
  83.  
  84. public OnPlayerSpawn(playerid)
  85. {
  86.     if(IsVoteBanStarted == true)
  87.     {
  88.         TextDrawShowForPlayer(playerid, TDName);
  89.         TextDrawShowForPlayer(playerid, TDYes);
  90.         TextDrawShowForPlayer(playerid, TDNo);
  91.         TextDrawShowForPlayer(playerid, TDYesResult);
  92.         TextDrawShowForPlayer(playerid, TDNoResult);
  93.         TextDrawShowForPlayer(playerid, TDTime);
  94.         return 1;
  95.     }
  96.     return 1;
  97. }
  98.  
  99. public OnPlayerDisconnect(playerid)
  100. {
  101.         if(PlayerToBan == playerid)
  102.         {
  103.             GetPlayerName(playerid, tdname, sizeof(tdname));
  104.             format(tdstring, sizeof(tdstring), "%s exited the server, so the voteban has been closed automatically!", tdname);
  105.             SendClientMessageToAll(0x6DC5F3FF, tdstring);
  106.             Yes=0, No=0, PlayerToBan =- 1, seconds=60, IsVoteBanStarted = false;
  107.             TextDrawHideForAll(TDName);
  108.             TextDrawHideForAll(TDYes);
  109.             TextDrawHideForAll(TDNo);
  110.             TextDrawHideForAll(TDYesResult);
  111.             TextDrawHideForAll(TDNoResult);
  112.             TextDrawHideForAll(TDTime);
  113.             return 1;
  114.         }
  115.         return 1;
  116. }
  117.  
  118. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  119. {
  120.     if(dialogid == 5656)
  121.     {
  122.         if(response)
  123.         {
  124.             if(IsNumeric(inputtext)) StartVoteBan(strval(inputtext));
  125.             else
  126.             {
  127.                 for(new i = 0; i<MAX_PLAYERS; i++)
  128.                 {
  129.                     GetPlayerName(playerid, tdname, sizeof(tdname));
  130.                     if(!strcmp(inputtext, tdname, true))
  131.                     {
  132.                         StartVoteBan(i);
  133.                         break;
  134.                     }
  135.                 }
  136.             }
  137.             if(PlayerToBan == -1) return SendClientMessage(playerid, 0x6DC5F3FF, "Player not found!");
  138.             GetPlayerName(playerid, tdname2, sizeof(tdname2));
  139.             format(tdstring, sizeof(tdstring), "%s has started a voteban for %s! Type Yes or No to vote", tdname2, tdname);
  140.             SendClientMessageToAll(0x6DC5F3FF, tdstring);
  141.         }
  142.     }
  143.     return 1;
  144. }
  145.  
  146. public OnPlayerText(playerid, text[])
  147. {
  148.         if(!strcmp("Yes", text, true) && strlen(text) == strlen("Yes") && IsVoteBanStarted == true && HasPlayerVoted[playerid] == false)
  149.         {
  150.             Yes++;
  151.             HasPlayerVoted[playerid] = true;
  152.             SendClientMessage(playerid, 0x6DC5F3FF, "Thanks for voting!");
  153.             format(tdstring, sizeof(tdstring), "%d", Yes);
  154.             TextDrawHideForAll(TDYesResult);
  155.             TextDrawSetString(TDYesResult, tdstring);
  156.             TextDrawShowForAll(TDYesResult);
  157.             return 0;
  158.         }
  159.         if(!strcmp("No", text, true) && strlen(text) == strlen("No") && IsVoteBanStarted == true && HasPlayerVoted[playerid] == false)
  160.         {
  161.             No++;
  162.             HasPlayerVoted[playerid] = true;
  163.             SendClientMessage(playerid, 0x6DC5F3FF, "Thanks for voting!");
  164.             format(tdstring, sizeof(tdstring), "%d", No);
  165.             TextDrawHideForAll(TDNoResult);
  166.             TextDrawSetString(TDNoResult, tdstring);
  167.             TextDrawShowForAll(TDNoResult);
  168.             return 0;
  169.         }
  170.         return 1;
  171. }
  172.  
  173. stock IsNumeric(str[])
  174. {
  175.         for(new i=0; i<strlen(str); i++)
  176.         {
  177.                 if(str[i]<'0' || str[i]>'9')
  178.                 return 0;
  179.         }
  180.         return 1;
  181. }
  182.  
  183. stock StartVoteBan(playerid)
  184. {
  185.         if(!IsPlayerConnected(playerid)) return 0;
  186.         PlayerToBan = playerid;
  187.         IsVoteBanStarted = true;
  188.         GetPlayerName(PlayerToBan, tdname, sizeof(tdname));
  189.         format(tdstring, sizeof(tdstring), "~<~%s~>~", tdname);
  190.         TextDrawHideForAll(TDName);
  191.         TextDrawSetString(TDName, tdstring);
  192.         TextDrawShowForAll(TDName);
  193.         TextDrawShowForAll(TDYes);
  194.         TextDrawShowForAll(TDNo);
  195.         TextDrawShowForAll(TDYesResult);
  196.         TextDrawShowForAll(TDNoResult);
  197.         TextDrawShowForAll(TDTime);
  198.         for(new i = 0; i<MAX_PLAYERS; i++)
  199.         HasPlayerVoted[i] = false;
  200.         SetTimer("KickTimer", 1000, false);
  201.         return 1;
  202. }
  203.  
  204. forward KickTimer();
  205. public KickTimer()
  206. {
  207.         if(PlayerToBan == -1) return 1;
  208.         if(seconds == 0) return EndVoteBan();
  209.         seconds--;
  210.         format(tdstring, sizeof(tdstring), "%02d", seconds);
  211.         TextDrawHideForAll(TDTime);
  212.         TextDrawSetString(TDTime, tdstring);
  213.         TextDrawShowForAll(TDTime);
  214.         SetTimer("KickTimer", 1000, false);
  215.         return 1;
  216. }
  217.  
  218. stock EndVoteBan()
  219. {
  220.         GetPlayerName(PlayerToBan, tdname, sizeof(tdname));
  221.         if(Yes > No)
  222.         {
  223.                 format(tdstring, sizeof(tdstring), "%s has been votebanned [Yes %d | %d No]", tdname, Yes, No);
  224.                 Ban(PlayerToBan);
  225.         }
  226.         else
  227.         {
  228.             format(tdstring2, sizeof(tdstring2), "%s has not been banned! [Yes %d  | %d No]", tdname, Yes, No);
  229.         }
  230.         SendClientMessageToAll(0x6DC5F3FF, tdstring2);
  231.         Yes = 0, No = 0, PlayerToBan =- 1, seconds = 60, IsVoteBanStarted = false;
  232.         TextDrawHideForAll(TDName);
  233.         TextDrawHideForAll(TDYes);
  234.         TextDrawHideForAll(TDNo);
  235.         TextDrawHideForAll(TDYesResult);
  236.         TextDrawHideForAll(TDNoResult);
  237.         TextDrawHideForAll(TDTime);
  238.         return 1;
  239. }
  240.  
  241. YCMD:voteban(playerid, params[], help)
  242. {
  243.     #pragma unused help
  244.     #pragma unused params
  245.     if(IsVoteBanStarted == true) return SendClientMessage(playerid, 0x6DC5F3FF, "A votekban has been already started! Wait until it finish to ask for a new one!");
  246.     ShowPlayerDialog(playerid, 5656, DIALOG_STYLE_INPUT, "Vote Ban", "Type an ID or name of player that you want to ban!", "Ok", "Exit");
  247.     return 1;
  248. }
  249.  
  250. /*=======================================================S32VoteBan=======================================================
  251. Credits to Phanto90 & System32*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement