Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Balsavimo sistema by Justac
- // 2015.02.06
- #define BALSAVIMOLAIKAS 30 // Balsavimo trukmė sekundėmis.
- #define MAXVARIANTAI 5 // Maksimalus variantų skaičius balsavime.
- #define TEKSTOSPALVA -1 // Balta teksto spalva, pasikeiskit pagal save.
- #include <a_samp>
- #include <zcmd>
- new balsavimas = -1;
- new bduomenys[MAX_PLAYERS][MAXVARIANTAI+1][64];
- new zingsnis[MAX_PLAYERS];
- new variantas[MAX_PLAYERS];
- public OnFilterScriptInit()
- {
- print(" ");
- print(" >> Balsavimo sistema užkrauta! <<");
- print(" >> Autorius: Justac <<"); // Keisti griežtai draudžiama!
- print(" >> 2015.02.06 <<");
- print(" ");
- return 1;
- }
- CMD:balsavimas(playerid)
- {
- if (!IsPlayerAdmin(playerid)) return 0;
- if (balsavimas > -1) return SendClientMessage(playerid, TEKSTOSPALVA, "Balsavimas jau pradėtas!");
- ShowPlayerDialog(playerid, 555, 1, "Balsavimas", "Įveskite balsavimo pavadinimą/klausimą", "Tęsti", "Atšaukti");
- return 1;
- }
- CMD:balsuoti(playerid)
- {
- if (balsavimas == -1) return SendClientMessage(playerid, TEKSTOSPALVA, "Balsavimas nevyksta!");
- ShowPlayerDialog(playerid, 558, 2, bduomenys[balsavimas][0], GetFullString(balsavimas, 1), "Balsuoti", "Atšaukti");
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if (dialogid == 555)
- {
- if (response)
- {
- if (!isnull(inputtext))
- {
- strins(bduomenys[playerid][0], inputtext, 0, strlen(inputtext));
- zingsnis[playerid]++;
- ShowPlayerDialog(playerid, 556, 2, bduomenys[playerid][0], GetFullString(playerid, 0), "Tęsti", "Atšaukti");
- }
- else
- {
- ShowPlayerDialog(playerid, 555, 1, "Balsavimas", "Įveskite balsavimo pavadinimą/klausimą", "Tęsti", "Atšaukti");
- }
- }
- }
- if (dialogid == 556)
- {
- if (response)
- {
- if (listitem == 0)
- {
- if (zingsnis[playerid] > MAXVARIANTAI) return ShowPlayerDialog(playerid, 556, 2, bduomenys[playerid][0], GetFullString(playerid, 0), "Tęsti", "Atšaukti");
- ShowPlayerDialog(playerid, 557, 1, "Pridėti atsakymo variantą", "Įveskite atsakymo variantą", "Tęsti", "Atšaukti");
- }
- else if (listitem == zingsnis[playerid])
- {
- if (balsavimas > -1) return SendClientMessage(playerid, TEKSTOSPALVA, "Balsavimas jau pradėtas!");
- new string[128], vardas[MAX_PLAYER_NAME+1];
- GetPlayerName(playerid, vardas, sizeof(vardas));
- format(string, sizeof(string), "%s pradėjo balsavimą '%s', norėdami balsuoti rašykite /balsuoti", vardas, bduomenys[playerid][0]);
- SendClientMessageToAll(TEKSTOSPALVA, string);
- balsavimas = playerid;
- SetTimerEx("BalsavimoPabaiga", BALSAVIMOLAIKAS*1000, false, "i", playerid);
- }
- else if (listitem > 0 && listitem < zingsnis[playerid])
- {
- ShowPlayerDialog(playerid, 559, 1, bduomenys[playerid][listitem], "Varianto redagacija", "Tęsti", "Atšaukti");
- SetPVarInt(playerid, "redagacija", listitem);
- }
- }
- else
- {
- DeleteData(playerid);
- }
- }
- if (dialogid == 557)
- {
- if (response)
- {
- if (!isnull(inputtext))
- {
- strins(bduomenys[playerid][zingsnis[playerid]], inputtext, 0, strlen(inputtext));
- zingsnis[playerid]++;
- }
- ShowPlayerDialog(playerid, 556, 2, bduomenys[playerid][0], GetFullString(playerid, 0), "Tęsti", "Atšaukti");
- }
- else
- {
- DeleteData(playerid);
- }
- }
- if (dialogid == 558)
- {
- if (response)
- {
- variantas[playerid] = listitem+1;
- SendClientMessage(playerid, TEKSTOSPALVA, "Jūsų balsas įskaičiuotas!");
- }
- }
- if (dialogid == 559)
- {
- if (response)
- {
- if (isnull(inputtext)) return ShowPlayerDialog(playerid, 559, 1, bduomenys[playerid][GetPVarInt(playerid, "redagacija")], "Varianto redagacija", "Tęsti", "Atšaukti");
- strdel(bduomenys[playerid][GetPVarInt(playerid, "redagacija")], 0, strlen(bduomenys[playerid][GetPVarInt(playerid, "redagacija")]));
- strins(bduomenys[playerid][GetPVarInt(playerid, "redagacija")], inputtext, 0, strlen(inputtext));
- DeletePVar(playerid, "redagacija");
- ShowPlayerDialog(playerid, 556, 2, bduomenys[playerid][0], GetFullString(playerid, 0), "Tęsti", "Atšaukti");
- }
- else
- {
- DeletePVar(playerid, "redagacija");
- ShowPlayerDialog(playerid, 556, 2, bduomenys[playerid][0], GetFullString(playerid, 0), "Tęsti", "Atšaukti");
- }
- }
- return 1;
- }
- stock GetFullString(playerid, type)
- {
- new string[360], tempstring[70];
- if (!type)
- {
- strins(string, "- Pridėti atsakymo variantą\n", 0, strlen("- Pridėti atsakymo variantą\n"));
- if (zingsnis[playerid] > MAXVARIANTAI)
- {
- strins(string, "{999999}", 0, 8);
- }
- for (new i = 1; i < MAXVARIANTAI+1; i++)
- {
- if (isnull(bduomenys[playerid][i])) continue;
- format(tempstring, sizeof(tempstring), "%i. {d2d2d2}%s", i, bduomenys[playerid][i]);
- strins(string, tempstring, strlen(string), strlen(bduomenys[playerid][i]));
- strins(string, "\n", strlen(string), 2);
- }
- if (zingsnis[playerid] > 2)
- {
- strins(string, "{00bd00}- Pradėti balsavimą", strlen(string), strlen("{00bd00}- Pradėti balsavimą"));
- }
- }
- else
- {
- for (new i = 1; i < MAXVARIANTAI+1; i++)
- {
- if (isnull(bduomenys[playerid][i])) continue;
- format(tempstring, sizeof(tempstring), "%i. {d2d2d2}%s", i, bduomenys[playerid][i]);
- strins(string, tempstring, strlen(string), strlen(bduomenys[playerid][i]));
- strins(string, "\n", strlen(string), 2);
- }
- }
- return string;
- }
- forward BalsavimoPabaiga(playerid);
- public BalsavimoPabaiga(playerid)
- {
- if (!KiekBalsavo())
- {
- DeleteData(playerid);
- balsavimas = -1;
- SendClientMessageToAll(TEKSTOSPALVA, "Balsavimas nutraukiamas dėl nepakankamo balsavusiųjų skaičiaus!");
- return 1;
- }
- new string[128], procentas = (KiekPasirinkoVarianta(DBSVariantas())*100)/KiekBalsavo(), fullstring[256], vardas[MAX_PLAYER_NAME+1], data[6];
- fcreate("balsavimai.txt");
- new File:failas=fopen("balsavimai.txt", io_append);
- GetPlayerName(playerid, vardas, sizeof(vardas));
- getdate(data[0], data[1], data[2]);
- gettime(data[3], data[4], data[5]);
- 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()]);
- fwrite(failas, fullstring);
- format(string, sizeof(string), "Balsavimas baigtas! Daugiausiai balsų surinko variantas '%s' (%i%s)", bduomenys[playerid][DBSVariantas()], procentas, "%%");
- SendClientMessageToAll(TEKSTOSPALVA, string);
- DeleteData(playerid);
- for (new i = 0; i < MAX_PLAYERS; i++)
- {
- variantas[i] = 0;
- }
- fclose(failas);
- balsavimas = -1;
- return 1;
- }
- stock DBSVariantas()
- {
- new temparray[MAXVARIANTAI], maxv;
- for (new i = 0; i < MAX_PLAYERS; i++)
- {
- if (IsPlayerConnected(i))
- {
- if (variantas[i])
- {
- temparray[variantas[i]-1] = temparray[variantas[i]-1] + 1;
- }
- }
- }
- for (new i = 0; i < sizeof(temparray); i++)
- {
- if (temparray[i] > maxv) maxv = i;
- }
- return maxv + 1;
- }
- stock KiekPasirinkoVarianta(var)
- {
- new balsai;
- for (new i = 0; i < MAX_PLAYERS; i++)
- {
- if (IsPlayerConnected(i))
- {
- if (variantas[i] == var)
- {
- balsai++;
- }
- }
- }
- return balsai;
- }
- stock KiekBalsavo()
- {
- new balsavo;
- for (new i = 0; i < MAX_PLAYERS; i++)
- {
- if (IsPlayerConnected(i))
- {
- if (variantas[i]) balsavo++;
- }
- }
- return balsavo;
- }
- stock DeleteData(playerid)
- {
- for (new i = 0; i < MAXVARIANTAI+1; i++)
- {
- strdel(bduomenys[playerid][i], 0, strlen(bduomenys[playerid][i]));
- }
- zingsnis[playerid] = 0;
- }
- stock fcreate(filename[])
- {
- if (fexist(filename)) return 0;
- new File:fhandle = fopen(filename,io_write);
- fclose(fhandle);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement