Advertisement
Guest User

Untitled

a guest
Aug 7th, 2015
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.76 KB | None | 0 0
  1. // Balsavimo sistema by Justac
  2. // 2015.02.06
  3.  
  4. #define BALSAVIMOLAIKAS     30   // Balsavimo trukmė sekundėmis.
  5. #define MAXVARIANTAI        5   // Maksimalus variantų skaičius balsavime.
  6. #define TEKSTOSPALVA        -1  // Balta teksto spalva, pasikeiskit pagal save.
  7.  
  8. #include <a_samp>
  9. #include <zcmd>
  10.  
  11. new bduomenys[MAX_PLAYERS][MAXVARIANTAI+1][64];
  12. new balsavimas = -1, zingsnis[MAX_PLAYERS], variantas[MAX_PLAYERS];
  13.  
  14. public OnFilterScriptInit()
  15. {
  16.     print(" ");
  17.     print("  >> Balsavimo sistema užkrauta! <<");
  18.     print("  >> Autorius: Justac            <<"); // Keisti griežtai draudžiama!
  19.     print("  >> 2015.02.06                  <<");
  20.     print(" ");
  21.     return 1;
  22. }
  23.  
  24. CMD:balsavimas(playerid)
  25. {
  26.     if (!IsPlayerAdmin(playerid)) return 0;
  27.     if (balsavimas > -1) return SendClientMessage(playerid, TEKSTOSPALVA, "Balsavimas jau pradėtas!");
  28.     ShowPlayerDialog(playerid, 555, 1, "Balsavimas", "Įveskite balsavimo pavadinimą/klausimą", "Tęsti", "Atšaukti");
  29.     return 1;
  30. }
  31.  
  32. CMD:balsuoti(playerid)
  33. {
  34.     if (balsavimas == -1) return SendClientMessage(playerid, TEKSTOSPALVA, "Balsavimas nevyksta!");
  35.     ShowPlayerDialog(playerid, 558, 2, bduomenys[balsavimas][0], GetFullString(balsavimas, 1), "Balsuoti", "Atšaukti");
  36.     return 1;
  37. }
  38.  
  39. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  40. {
  41.     if (dialogid == 555)
  42.     {
  43.         if (response)
  44.         {
  45.             if (!isnull(inputtext))
  46.             {
  47.                 strins(bduomenys[playerid][0], inputtext, 0, strlen(inputtext));
  48.                 zingsnis[playerid]++;
  49.                 ShowPlayerDialog(playerid, 556, 2, bduomenys[playerid][0], GetFullString(playerid, 0), "Tęsti", "Atšaukti");
  50.             }
  51.             else
  52.             {
  53.                 ShowPlayerDialog(playerid, 555, 1, "Balsavimas", "Įveskite balsavimo pavadinimą/klausimą", "Tęsti", "Atšaukti");
  54.             }
  55.         }
  56.     }
  57.    
  58.     if (dialogid == 556)
  59.     {
  60.         if (response)
  61.         {
  62.             if (listitem == 0)
  63.             {
  64.                 if (zingsnis[playerid] > MAXVARIANTAI) return ShowPlayerDialog(playerid, 556, 2, bduomenys[playerid][0], GetFullString(playerid, 0), "Tęsti", "Atšaukti");
  65.                 ShowPlayerDialog(playerid, 557, 1, "Pridėti atsakymo variantą", "Įveskite atsakymo variantą", "Tęsti", "Atšaukti");
  66.             }
  67.             else if (listitem == zingsnis[playerid])
  68.             {
  69.                 if (balsavimas > -1) return SendClientMessage(playerid, TEKSTOSPALVA, "Balsavimas jau pradėtas!");
  70.                 new string[128], vardas[MAX_PLAYER_NAME+1];
  71.                 GetPlayerName(playerid, vardas, sizeof(vardas));
  72.                 format(string, sizeof(string), "%s pradėjo balsavimą '%s', norėdami balsuoti rašykite /balsuoti", vardas, bduomenys[playerid][0]);
  73.                 SendClientMessageToAll(TEKSTOSPALVA, string);
  74.                 balsavimas = playerid;
  75.                 SetTimerEx("BalsavimoPabaiga", BALSAVIMOLAIKAS*1000, false, "i", playerid);
  76.             }
  77.             else if (listitem > 0 && listitem < zingsnis[playerid])
  78.             {
  79.             ShowPlayerDialog(playerid, 559, 1, bduomenys[playerid][listitem], "Varianto redagacija", "Tęsti", "Atšaukti");
  80.             SetPVarInt(playerid, "redagacija", listitem);
  81.             }
  82.         }
  83.         else
  84.         {
  85.             DeleteData(playerid);
  86.         }
  87.     }
  88.    
  89.     if (dialogid == 557)
  90.     {
  91.         if (response)
  92.         {
  93.             if (!isnull(inputtext))
  94.             {
  95.                 strins(bduomenys[playerid][zingsnis[playerid]], inputtext, 0, strlen(inputtext));
  96.                 zingsnis[playerid]++;
  97.             }
  98.             ShowPlayerDialog(playerid, 556, 2, bduomenys[playerid][0], GetFullString(playerid, 0), "Tęsti", "Atšaukti");
  99.         }
  100.         else
  101.         {
  102.             DeleteData(playerid);
  103.         }
  104.     }
  105.    
  106.     if (dialogid == 558)
  107.     {
  108.         if (response)
  109.         {
  110.             variantas[playerid] = listitem+1;
  111.             SendClientMessage(playerid, TEKSTOSPALVA, "Jūsų balsas įskaičiuotas!");
  112.         }
  113.     }
  114.    
  115.     if (dialogid == 559)
  116.     {
  117.         if (response)
  118.         {
  119.             if (isnull(inputtext)) return ShowPlayerDialog(playerid, 559, 1, bduomenys[playerid][GetPVarInt(playerid, "redagacija")], "Varianto redagacija", "Tęsti", "Atšaukti");
  120.             strdel(bduomenys[playerid][GetPVarInt(playerid, "redagacija")], 0, strlen(bduomenys[playerid][GetPVarInt(playerid, "redagacija")]));
  121.             strins(bduomenys[playerid][GetPVarInt(playerid, "redagacija")], inputtext, 0, strlen(inputtext));
  122.             DeletePVar(playerid, "redagacija");
  123.             ShowPlayerDialog(playerid, 556, 2, bduomenys[playerid][0], GetFullString(playerid, 0), "Tęsti", "Atšaukti");
  124.         }
  125.         else
  126.         {
  127.             DeletePVar(playerid, "redagacija");
  128.             ShowPlayerDialog(playerid, 556, 2, bduomenys[playerid][0], GetFullString(playerid, 0), "Tęsti", "Atšaukti");
  129.         }
  130.     }
  131.     return 1;
  132. }
  133.  
  134. stock GetFullString(playerid, type)
  135. {
  136.     new string[360], tempstring[70];
  137.     if (!type)
  138.     {
  139.         strins(string, "- Pridėti atsakymo variantą\n", 0, strlen("- Pridėti atsakymo variantą\n"));
  140.         if (zingsnis[playerid] > MAXVARIANTAI)
  141.         {
  142.             strins(string, "{999999}", 0, 8);
  143.         }
  144.         for (new i = 1; i < MAXVARIANTAI+1; i++)
  145.         {
  146.             if (isnull(bduomenys[playerid][i])) continue;
  147.             format(tempstring, sizeof(tempstring), "%i. {d2d2d2}%s", i, bduomenys[playerid][i]);
  148.             strins(string, tempstring, strlen(string), strlen(bduomenys[playerid][i]));
  149.             strins(string, "\n", strlen(string), 2);
  150.         }
  151.         if (zingsnis[playerid] > 2)
  152.         {
  153.             strins(string, "{00bd00}- Pradėti balsavimą", strlen(string), strlen("{00bd00}- Pradėti balsavimą"));
  154.         }
  155.     }
  156.     else
  157.     {
  158.         for (new i = 1; i < MAXVARIANTAI+1; i++)
  159.         {
  160.             if (isnull(bduomenys[playerid][i])) continue;
  161.             format(tempstring, sizeof(tempstring), "%i. {d2d2d2}%s", i, bduomenys[playerid][i]);
  162.             strins(string, tempstring, strlen(string), strlen(bduomenys[playerid][i]));
  163.             strins(string, "\n", strlen(string), 2);
  164.         }
  165.     }
  166.     return string;
  167. }
  168.  
  169. forward BalsavimoPabaiga(playerid);
  170. public BalsavimoPabaiga(playerid)
  171. {
  172.     if (!KiekBalsavo())
  173.     {
  174.         DeleteData(playerid);
  175.         balsavimas = -1;
  176.         SendClientMessageToAll(TEKSTOSPALVA, "Balsavimas nutraukiamas dėl nepakankamo balsavusiųjų skaičiaus!");
  177.         return 1;
  178.     }
  179.     new string[128], procentas = (KiekPasirinkoVarianta(DBSVariantas())*100)/KiekBalsavo(), fullstring[256], vardas[MAX_PLAYER_NAME+1], data[6];
  180.     fcreate("balsavimai.txt");
  181.     new File:failas=fopen("balsavimai.txt", io_append);
  182.     GetPlayerName(playerid, vardas, sizeof(vardas));
  183.     getdate(data[0], data[1], data[2]);
  184.     gettime(data[3], data[4], data[5]);
  185.     format(fullstring, sizeof(fullstring), "[%i-%02i-%02i %02i:%02i:%02i] Administratorius %s sukūrė balsavimą '%s', kuriame dalyvavo %i žaidėjai(-ų); daugiausiai balsų surinko '%s' variantas.\n", data[0], data[1], data[2], data[3], data[4], data[5], vardas, bduomenys[playerid][0], KiekBalsavo(), bduomenys[playerid][DBSVariantas()]);
  186.     fwrite(failas, fullstring);
  187.     format(string, sizeof(string), "Balsavimas baigtas! Daugiausiai balsų surinko variantas '%s' (%i%s)", bduomenys[playerid][DBSVariantas()], procentas, "%%");
  188.     SendClientMessageToAll(TEKSTOSPALVA, string);
  189.     DeleteData(playerid);
  190.     for (new i = 0; i < MAX_PLAYERS; i++)
  191.     {
  192.         variantas[i] = 0;
  193.     }
  194.     fclose(failas);
  195.     balsavimas = -1;
  196.     return 1;
  197. }
  198.  
  199. stock DBSVariantas()
  200. {
  201.     new temparray[MAXVARIANTAI], maxv;
  202.     for (new i = 0; i < MAX_PLAYERS; i++)
  203.     {
  204.         if (IsPlayerConnected(i))
  205.         {
  206.             if (variantas[i])
  207.             {
  208.                 temparray[variantas[i]-1] = temparray[variantas[i]-1] + 1;
  209.             }
  210.         }
  211.     }
  212.     for (new i = 0; i < sizeof(temparray); i++)
  213.     {
  214.         if (temparray[i] > maxv) maxv = i;
  215.     }
  216.     return maxv + 1;
  217. }
  218.  
  219. stock KiekPasirinkoVarianta(var)
  220. {
  221.     new balsai;
  222.     for (new i = 0; i < MAX_PLAYERS; i++)
  223.     {
  224.         if (IsPlayerConnected(i))
  225.         {
  226.             if (variantas[i] == var)
  227.             {
  228.                 balsai++;
  229.             }
  230.         }
  231.     }
  232.     return balsai;
  233. }
  234.  
  235. stock KiekBalsavo()
  236. {
  237.     new balsavo;
  238.     for (new i = 0; i < MAX_PLAYERS; i++)
  239.     {
  240.         if (IsPlayerConnected(i) && variantas[i])
  241.         {
  242.             balsavo++;
  243.         }
  244.     }
  245.     return balsavo;
  246. }
  247.  
  248. stock DeleteData(playerid)
  249. {
  250.     for (new i = 0; i < MAXVARIANTAI+1; i++)
  251.     {
  252.         strdel(bduomenys[playerid][i], 0, strlen(bduomenys[playerid][i]));
  253.     }
  254.     zingsnis[playerid] = 0;
  255. }
  256.  
  257. stock fcreate(filename[])
  258. {
  259.     if (fexist(filename)) return 0;
  260.     new File:fhandle = fopen(filename,io_write);
  261.     fclose(fhandle);
  262.     return 1;
  263. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement