Advertisement
Guest User

Untitled

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