Advertisement
Guest User

Untitled

a guest
Aug 4th, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.65 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, -1, "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, -1, "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, -1, "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.         }
  112.     }
  113.    
  114.     if (dialogid == 559)
  115.     {
  116.         if (response)
  117.         {
  118.             if (isnull(inputtext)) return ShowPlayerDialog(playerid, 559, 1, bduomenys[playerid][GetPVarInt(playerid, "redagacija")], "Varianto redagacija", "Tęsti", "Atšaukti");
  119.             strdel(bduomenys[playerid][GetPVarInt(playerid, "redagacija")], 0, strlen(bduomenys[playerid][GetPVarInt(playerid, "redagacija")]));
  120.             strins(bduomenys[playerid][GetPVarInt(playerid, "redagacija")], inputtext, 0, strlen(inputtext));
  121.             DeletePVar(playerid, "redagacija");
  122.             ShowPlayerDialog(playerid, 556, 2, bduomenys[playerid][0], GetFullString(playerid, 0), "Tęsti", "Atšaukti");
  123.         }
  124.         else
  125.         {
  126.             DeletePVar(playerid, "redagacija");
  127.             ShowPlayerDialog(playerid, 556, 2, bduomenys[playerid][0], GetFullString(playerid, 0), "Tęsti", "Atšaukti");
  128.         }
  129.     }
  130.     return 1;
  131. }
  132.  
  133. stock GetFullString(playerid, type)
  134. {
  135.     new string[360], tempstring[70];
  136.     if (!type)
  137.     {
  138.         strins(string, "- Pridėti atsakymo variantą\n", 0, strlen("- Pridėti atsakymo variantą\n"));
  139.         if (zingsnis[playerid] > MAXVARIANTAI)
  140.         {
  141.             strins(string, "{999999}", 0, 8);
  142.         }
  143.         for (new i = 1; i < MAXVARIANTAI+1; i++)
  144.         {
  145.             if (isnull(bduomenys[playerid][i])) continue;
  146.             format(tempstring, sizeof(tempstring), "%i. {d2d2d2}%s", i, bduomenys[playerid][i]);
  147.             strins(string, tempstring, strlen(string), strlen(bduomenys[playerid][i]));
  148.             strins(string, "\n", strlen(string), 2);
  149.         }
  150.         if (zingsnis[playerid] > 2)
  151.         {
  152.             strins(string, "{00bd00}- Pradėti balsavimą", strlen(string), strlen("{00bd00}- Pradėti balsavimą"));
  153.         }
  154.     }
  155.     else
  156.     {
  157.         for (new i = 1; i < MAXVARIANTAI+1; i++)
  158.         {
  159.             if (isnull(bduomenys[playerid][i])) continue;
  160.             format(tempstring, sizeof(tempstring), "%i. {d2d2d2}%s", i, bduomenys[playerid][i]);
  161.             strins(string, tempstring, strlen(string), strlen(bduomenys[playerid][i]));
  162.             strins(string, "\n", strlen(string), 2);
  163.         }
  164.     }
  165.     return string;
  166. }
  167.  
  168. forward BalsavimoPabaiga(playerid);
  169. public BalsavimoPabaiga(playerid)
  170. {
  171.     if (!KiekBalsavo())
  172.     {
  173.         DeleteData(playerid);
  174.         balsavimas = -1;
  175.         SendClientMessageToAll(TEKSTOSPALVA, "Balsavimas nutraukiamas dėl nepakankamo balsavusiųjų skaičiaus!");
  176.         return 1;
  177.     }
  178.     new string[128], procentas = (KiekPasirinkoVarianta(DBSVariantas())*100)/KiekBalsavo(), fullstring[256], vardas[MAX_PLAYER_NAME+1], data[6];
  179.     fcreate("balsavimai.txt");
  180.     new File:failas=fopen("balsavimai.txt", io_append);
  181.     GetPlayerName(playerid, vardas, sizeof(vardas));
  182.     getdate(data[0], data[1], data[2]);
  183.     gettime(data[3], data[4], data[5]);
  184.     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()]);
  185.     fwrite(failas, fullstring);
  186.     format(string, sizeof(string), "Balsavimas baigtas! Daugiausiai balsų surinko variantas '%s' (%i%s)", bduomenys[playerid][DBSVariantas()], procentas, "%%");
  187.     SendClientMessageToAll(TEKSTOSPALVA, string);
  188.     DeleteData(playerid);
  189.     for (new i = 0; i < MAX_PLAYERS; i++)
  190.     {
  191.         variantas[i] = 0;
  192.     }
  193.     fclose(failas);
  194.     balsavimas = -1;
  195.     return 1;
  196. }
  197.  
  198. stock DBSVariantas()
  199. {
  200.     new temparray[MAXVARIANTAI], maxv;
  201.     for (new i = 0; i < MAX_PLAYERS; i++)
  202.     {
  203.         if (IsPlayerConnected(i))
  204.         {
  205.             if (variantas[i])
  206.             {
  207.                 temparray[variantas[i]-1] = temparray[variantas[i]-1] + 1;
  208.             }
  209.         }
  210.     }
  211.     for (new i = 0; i < sizeof(temparray); i++)
  212.     {
  213.         if (temparray[i] > maxv) maxv = i;
  214.     }
  215.     return maxv + 1;
  216. }
  217.  
  218. stock KiekPasirinkoVarianta(var)
  219. {
  220.     new balsai;
  221.     for (new i = 0; i < MAX_PLAYERS; i++)
  222.     {
  223.         if (IsPlayerConnected(i))
  224.         {
  225.             if (variantas[i] == var)
  226.             {
  227.                 balsai++;
  228.             }
  229.         }
  230.     }
  231.     return balsai;
  232. }
  233.  
  234. stock KiekBalsavo()
  235. {
  236.     new balsavo;
  237.     for (new i = 0; i < MAX_PLAYERS; i++)
  238.     {
  239.         if (IsPlayerConnected(i) && variantas[i])
  240.         {
  241.             balsavo++;
  242.         }
  243.     }
  244.     return balsavo;
  245. }
  246.  
  247. stock DeleteData(playerid)
  248. {
  249.     for (new i = 0; i < MAXVARIANTAI+1; i++)
  250.     {
  251.         strdel(bduomenys[playerid][i], 0, strlen(bduomenys[playerid][i]));
  252.     }
  253.     zingsnis[playerid] = 0;
  254. }
  255.  
  256. stock fcreate(filename[])
  257. {
  258.     if (fexist(filename)) return 0;
  259.     new File:fhandle = fopen(filename,io_write);
  260.     fclose(fhandle);
  261.     return 1;
  262. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement