elections.inc 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819
  1. /*
  2. ______ _ ______ _____ _______ _____ ____ _ _ _____ ______ __ _____ ______ _____ __ __ ____ _ _ _____
  3. | ____| | | ____/ ____|__ __|_ _/ __ \| \ | |/ ____| | _ \ \ / / | __ \| ____|/ ____| \/ |/ __ \| \ | | __ \
  4. | |__ | | | |__ | | | | | || | | | \| | (___ | |_) \ \_/ / | | | | |__ | (___ | \ / | | | | \| | | | |
  5. | __| | | | __|| | | | | || | | | . ` |\___ \ | _ < \ / | | | | __| \___ \| |\/| | | | | . ` | | | |
  6. | |____| |____| |___| |____ | | _| || |__| | |\ |____) | | |_) | | | | |__| | |____ ____) | | | | |__| | |\ | |__| |
  7. |______|______|______\_____| |_| |_____\____/|_| \_|_____/ |____/ |_| |_____/|______|_____/|_| |_|\____/|_| \_|_____/
  8. */
  9. #define MAX_CANDIDATES 4
  10. #define DIALOG_ELECTIONS_ONE 11560
  11. #define DIALOG_ELECTIONS_TWO 11561
  12. #define DIALOG_ELECTIONS_THREE 11562
  13. #define DIALOG_ELECTIONS_FOUR 11563
  14. #define DIALOG_ELECTIONS_FIVE 11564
  15. #define DIALOG_ELECTIONS_SIX 11565
  16. #define DIALOG_ELECTIONS_SEVEN 11566
  17. #define DIALOG_ELECTIONS_EIGHT 11567
  18. #define DIALOG_ELECTIONS_NINE 11568
  19. enum eleinfo
  20. {
  21. cname[24], // name of the candidate
  22. votes, // votes counter
  23. eskinid, // skinid of the model txd
  24. PlayerText: vtxd[MAX_PLAYERS], // votes txd
  25. PlayerText: ntxd[MAX_PLAYERS] // candidate name txd
  26. };
  27. new Elections[MAX_CANDIDATES][eleinfo];
  28. new bool: ElectionsActive, ElectionsCandidates, bool: ElectionsReadable = false;
  29. new elestr[128];
  30. new pcandidates[MAX_PLAYERS];
  31. new pcandidate1name[MAX_PLAYERS][24], pcandidate1skin[MAX_PLAYERS];
  32. new pcandidate2name[MAX_PLAYERS][24], pcandidate2skin[MAX_PLAYERS];
  33. new pcandidate3name[MAX_PLAYERS][24], pcandidate3skin[MAX_PLAYERS];
  34. new pcandidate4name[MAX_PLAYERS][24], pcandidate4skin[MAX_PLAYERS];
  35. new bool: viewingelections[MAX_PLAYERS] = false;
  36. new PlayerText: electionstextdraws[MAX_PLAYERS][26];
  37. new VoteTimer[MAX_PLAYERS];
  38. forward StartElections(playerid, candidates);
  39. forward VoteIncrease(candidate);
  40. forward OnVoteCheck(playerid);
  41. forward LogVote(playerid, candidate);
  42. forward HideElectionsAll(playerid);
  43. public HideElectionsAll(playerid)
  44. {
  45. PlayerTextDrawHide(playerid, electionstextdraws[playerid][0]);
  46. PlayerTextDrawHide(playerid, electionstextdraws[playerid][1]);
  47. PlayerTextDrawHide(playerid, electionstextdraws[playerid][2]);
  48. PlayerTextDrawHide(playerid, Elections[0][ntxd]);
  49. PlayerTextDrawHide(playerid, Elections[1][ntxd]);
  50. PlayerTextDrawHide(playerid, Elections[2][ntxd]);
  51. PlayerTextDrawHide(playerid, Elections[3][ntxd]);
  52. PlayerTextDrawHide(playerid, Elections[0][vtxd]);
  53. PlayerTextDrawHide(playerid, Elections[1][vtxd]);
  54. PlayerTextDrawHide(playerid, Elections[2][vtxd]);
  55. PlayerTextDrawHide(playerid, Elections[3][vtxd]);
  56. PlayerTextDrawHide(playerid, electionstextdraws[playerid][7]);
  57. PlayerTextDrawHide(playerid, electionstextdraws[playerid][8]);
  58. PlayerTextDrawHide(playerid, electionstextdraws[playerid][9]);
  59. PlayerTextDrawHide(playerid, electionstextdraws[playerid][10]);
  60. PlayerTextDrawHide(playerid, electionstextdraws[playerid][13]);
  61. PlayerTextDrawHide(playerid, electionstextdraws[playerid][16]);
  62. PlayerTextDrawHide(playerid, electionstextdraws[playerid][21]);
  63. PlayerTextDrawHide(playerid, electionstextdraws[playerid][22]);
  64. PlayerTextDrawHide(playerid, electionstextdraws[playerid][23]);
  65. PlayerTextDrawHide(playerid, electionstextdraws[playerid][24]);
  66. PlayerTextDrawHide(playerid, electionstextdraws[playerid][25]);
  67. return 1;
  68. }
  69. public StartElections(playerid, candidates)
  70. {
  71. mysql_query(sqlGameConnection, "TRUNCATE TABLE voters;");
  72. ElectionsReadable = true;
  73. format(elestr, sizeof(elestr), "%s has started the elections poll! (/viewelections)", PlayerOOCName(playerid));
  74. SendClientMessageToAll(COLOR_LIGHTBLUE, elestr);
  75. for(new i = 0; i < MAX_CANDIDATES; i++)
  76. {
  77. Elections[i][votes] = 0;
  78. }
  79. format(Elections[0][cname], 24, "%s", pcandidate1name[playerid]);
  80. Elections[0][eskinid] = pcandidate1skin[playerid];
  81. format(Elections[1][cname], 24, "%s", pcandidate2name[playerid]);
  82. Elections[1][eskinid] = pcandidate2skin[playerid];
  83. if(candidates > 2)
  84. {
  85. format(Elections[2][cname], 24, "%s", pcandidate3name[playerid]);
  86. Elections[2][eskinid] = pcandidate3skin[playerid];
  87. }
  88. if(candidates == 4)
  89. {
  90. format(Elections[3][cname], 24, "%s", pcandidate4name[playerid]);
  91. Elections[3][eskinid] = pcandidate4skin[playerid];
  92. }
  93. foreach( new i: Player )
  94. {
  95. PlayerTextDrawSetString(i, Elections[0][ntxd][i], Elections[0][cname]);
  96. PlayerTextDrawSetString(i, Elections[1][ntxd][i], Elections[1][cname]);
  97. PlayerTextDrawSetString(i, Elections[2][ntxd][i], Elections[2][cname]);
  98. PlayerTextDrawSetString(i, Elections[3][ntxd][i], Elections[3][cname]);
  99. PlayerTextDrawSetString(i, Elections[0][vtxd][i], "Votes: 0");
  100. PlayerTextDrawSetString(i, Elections[1][vtxd][i], "Votes: 0");
  101. PlayerTextDrawSetString(i, Elections[2][vtxd][i], "Votes: 0");
  102. PlayerTextDrawSetString(i, Elections[3][vtxd][i], "Votes: 0");
  103. PlayerTextDrawSetPreviewModel(i, electionstextdraws[i][13], Elections[0][eskinid]);
  104. PlayerTextDrawSetPreviewModel(i, electionstextdraws[i][16], Elections[1][eskinid]);
  105. PlayerTextDrawSetPreviewModel(i, electionstextdraws[i][1], Elections[2][eskinid]);
  106. PlayerTextDrawSetPreviewModel(i, electionstextdraws[i][2], Elections[3][eskinid]);
  107. }
  108. return 1;
  109. }
  110. public VoteIncrease(candidate)
  111. {
  112. Elections[candidate][votes] ++;
  113. foreach( new i: Player )
  114. {
  115. format(elestr, sizeof(elestr), "Votes: %d", Elections[candidate][votes]);
  116. PlayerTextDrawSetString(i, Elections[candidate][vtxd][i], elestr);
  117. }
  118. return 1;
  119. }
  120. Hook:Elections_OnPlayerConnect(playerid)
  121. {
  122. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][0]);
  123. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][1]);
  124. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][2]);
  125. PlayerTextDrawDestroy(playerid, Elections[0][ntxd]);
  126. PlayerTextDrawDestroy(playerid, Elections[1][ntxd]);
  127. PlayerTextDrawDestroy(playerid, Elections[2][ntxd]);
  128. PlayerTextDrawDestroy(playerid, Elections[3][ntxd]);
  129. PlayerTextDrawDestroy(playerid, Elections[0][vtxd]);
  130. PlayerTextDrawDestroy(playerid, Elections[1][vtxd]);
  131. PlayerTextDrawDestroy(playerid, Elections[2][vtxd]);
  132. PlayerTextDrawDestroy(playerid, Elections[3][vtxd]);
  133. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][7]);
  134. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][8]);
  135. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][9]);
  136. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][10]);
  137. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][13]);
  138. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][16]);
  139. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][21]);
  140. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][22]);
  141. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][23]);
  142. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][24]);
  143. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][25]);
  144. electionstextdraws[playerid][0] = CreatePlayerTextDraw(playerid, 188.999984, 60.000000, "box");
  145. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][0], 0.000000, 32.033344);
  146. PlayerTextDrawTextSize(playerid, electionstextdraws[playerid][0], 449.000000, 0.000000);
  147. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][0], 1);
  148. PlayerTextDrawColor(playerid, electionstextdraws[playerid][0], 16777215);
  149. PlayerTextDrawUseBox(playerid, electionstextdraws[playerid][0], 1);
  150. PlayerTextDrawBoxColor(playerid, electionstextdraws[playerid][0], 196796);
  151. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][0], 289);
  152. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][0], 0);
  153. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][0], 255);
  154. PlayerTextDrawFont(playerid, electionstextdraws[playerid][0], 1);
  155. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][0], 1);
  156. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][0], 289);
  157. electionstextdraws[playerid][1] = CreatePlayerTextDraw(playerid, 160.333297, 259.244445, "");
  158. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][1], 0.000000, 0.000000);
  159. PlayerTextDrawTextSize(playerid, electionstextdraws[playerid][1], 90.000000, 90.000000);
  160. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][1], 1);
  161. PlayerTextDrawColor(playerid, electionstextdraws[playerid][1], -1);
  162. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][1], 0);
  163. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][1], 0);
  164. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][1], -256);
  165. PlayerTextDrawFont(playerid, electionstextdraws[playerid][1], 5);
  166. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][1], 0);
  167. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][1], 0);
  168. PlayerTextDrawSetPreviewModel(playerid, electionstextdraws[playerid][1], Elections[2][eskinid]);
  169. PlayerTextDrawSetPreviewRot(playerid, electionstextdraws[playerid][1], 0.000000, 0.000000, 0.000000, 1.000000);
  170. electionstextdraws[playerid][2] = CreatePlayerTextDraw(playerid, 385.333343, 258.000000, "");
  171. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][2], 0.000000, 0.000000);
  172. PlayerTextDrawTextSize(playerid, electionstextdraws[playerid][2], 90.000000, 90.000000);
  173. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][2], 1);
  174. PlayerTextDrawColor(playerid, electionstextdraws[playerid][2], -1);
  175. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][2], 0);
  176. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][2], 0);
  177. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][2], 0);
  178. PlayerTextDrawFont(playerid, electionstextdraws[playerid][2], 5);
  179. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][2], 0);
  180. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][2], 0);
  181. PlayerTextDrawSetPreviewModel(playerid, electionstextdraws[playerid][2], Elections[3][eskinid]);
  182. PlayerTextDrawSetPreviewRot(playerid, electionstextdraws[playerid][2], 0.000000, 0.000000, 0.000000, 1.000000);
  183. Elections[2][ntxd][playerid] = CreatePlayerTextDraw(playerid, 226.000030, 253.074081, Elections[2][cname]);
  184. PlayerTextDrawLetterSize(playerid, Elections[2][ntxd][playerid], 0.158663, 1.309630);
  185. PlayerTextDrawAlignment(playerid, Elections[2][ntxd][playerid], 1);
  186. PlayerTextDrawColor(playerid, Elections[2][ntxd][playerid], -1);
  187. PlayerTextDrawSetShadow(playerid, Elections[2][ntxd][playerid], 0);
  188. PlayerTextDrawSetOutline(playerid, Elections[2][ntxd][playerid], -2);
  189. PlayerTextDrawBackgroundColor(playerid, Elections[2][ntxd][playerid], 255);
  190. PlayerTextDrawFont(playerid, Elections[2][ntxd][playerid], 2);
  191. PlayerTextDrawSetProportional(playerid, Elections[2][ntxd][playerid], 1);
  192. PlayerTextDrawSetShadow(playerid, Elections[2][ntxd][playerid], 0);
  193. Elections[3][ntxd][playerid] = CreatePlayerTextDraw(playerid, 340.333374, 251.829620, Elections[3][cname]);
  194. PlayerTextDrawLetterSize(playerid, Elections[3][ntxd][playerid], 0.148329, 1.417479);
  195. PlayerTextDrawAlignment(playerid, Elections[3][ntxd][playerid], 1);
  196. PlayerTextDrawColor(playerid, Elections[3][ntxd][playerid], -1);
  197. PlayerTextDrawSetShadow(playerid, Elections[3][ntxd][playerid], 0);
  198. PlayerTextDrawSetOutline(playerid, Elections[3][ntxd][playerid], -2);
  199. PlayerTextDrawBackgroundColor(playerid, Elections[3][ntxd][playerid], 255);
  200. PlayerTextDrawFont(playerid, Elections[3][ntxd][playerid], 2);
  201. PlayerTextDrawSetProportional(playerid, Elections[3][ntxd][playerid], 1);
  202. PlayerTextDrawSetShadow(playerid, Elections[3][ntxd][playerid], 0);
  203. format(elestr, sizeof(elestr), "Votes: %i", Elections[2][votes]);
  204. Elections[2][vtxd][playerid] = CreatePlayerTextDraw(playerid, 230.999954, 275.414855, elestr);
  205. PlayerTextDrawLetterSize(playerid, Elections[2][vtxd][playerid], 0.252999, 1.197630);
  206. PlayerTextDrawAlignment(playerid, Elections[2][vtxd][playerid], 1);
  207. PlayerTextDrawColor(playerid, Elections[2][vtxd][playerid], -1);
  208. PlayerTextDrawSetShadow(playerid, Elections[2][vtxd][playerid], 0);
  209. PlayerTextDrawSetOutline(playerid, Elections[2][vtxd][playerid], -2);
  210. PlayerTextDrawBackgroundColor(playerid, Elections[2][vtxd][playerid], 255);
  211. PlayerTextDrawFont(playerid, Elections[2][vtxd][playerid], 2);
  212. PlayerTextDrawSetProportional(playerid, Elections[2][vtxd][playerid], 1);
  213. PlayerTextDrawSetShadow(playerid, Elections[2][vtxd][playerid], 0);
  214. format(elestr, sizeof(elestr), "Votes: %i", Elections[3][votes]);
  215. Elections[3][vtxd][playerid] = CreatePlayerTextDraw(playerid, 340.666717, 276.281524, elestr);
  216. PlayerTextDrawLetterSize(playerid, Elections[3][vtxd][playerid], 0.259665, 1.077334);
  217. PlayerTextDrawAlignment(playerid, Elections[3][vtxd][playerid], 1);
  218. PlayerTextDrawColor(playerid, Elections[3][vtxd][playerid], -1);
  219. PlayerTextDrawSetShadow(playerid, Elections[3][vtxd][playerid], 0);
  220. PlayerTextDrawSetOutline(playerid, Elections[3][vtxd][playerid], -2);
  221. PlayerTextDrawBackgroundColor(playerid, Elections[3][vtxd][playerid], 255);
  222. PlayerTextDrawFont(playerid, Elections[3][vtxd][playerid], 2);
  223. PlayerTextDrawSetProportional(playerid, Elections[3][vtxd][playerid], 1);
  224. PlayerTextDrawSetShadow(playerid, Elections[3][vtxd][playerid], 0);
  225. electionstextdraws[playerid][7] = CreatePlayerTextDraw(playerid, 187.999908, 59.748138, "box");
  226. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][7], 0.000000, 4.766664);
  227. PlayerTextDrawTextSize(playerid, electionstextdraws[playerid][7], 449.000000, 0.000000);
  228. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][7], 1);
  229. PlayerTextDrawColor(playerid, electionstextdraws[playerid][7], -1);
  230. PlayerTextDrawUseBox(playerid, electionstextdraws[playerid][7], 1);
  231. PlayerTextDrawBoxColor(playerid, electionstextdraws[playerid][7], 255);
  232. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][7], 0);
  233. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][7], 0);
  234. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][7], 255);
  235. PlayerTextDrawFont(playerid, electionstextdraws[playerid][7], 1);
  236. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][7], 1);
  237. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][7], 0);
  238. electionstextdraws[playerid][8] = CreatePlayerTextDraw(playerid, 277.000000, 76.755561, "Elections");
  239. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][8], 0.400000, 1.600000);
  240. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][8], 1);
  241. PlayerTextDrawColor(playerid, electionstextdraws[playerid][8], -1);
  242. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][8], 0);
  243. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][8], 0);
  244. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][8], 255);
  245. PlayerTextDrawFont(playerid, electionstextdraws[playerid][8], 2);
  246. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][8], 1);
  247. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][8], 0);
  248. electionstextdraws[playerid][9] = CreatePlayerTextDraw(playerid, 237.999969, 327.414794, "VOTE");
  249. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][9], 0.282332, 1.077329);
  250. PlayerTextDrawTextSize(playerid, electionstextdraws[playerid][9], 269.000000, 7.077329);
  251. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][9], 1);
  252. PlayerTextDrawColor(playerid, electionstextdraws[playerid][9], -1);
  253. PlayerTextDrawUseBox(playerid, electionstextdraws[playerid][9], 1);
  254. PlayerTextDrawBoxColor(playerid, electionstextdraws[playerid][9], 255);
  255. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][9], 0);
  256. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][9], 0);
  257. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][9], 255);
  258. PlayerTextDrawFont(playerid, electionstextdraws[playerid][9], 2);
  259. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][9], 1);
  260. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][9], 0);
  261. PlayerTextDrawSetSelectable(playerid, electionstextdraws[playerid][9], true);
  262. electionstextdraws[playerid][10] = CreatePlayerTextDraw(playerid, 353.999969, 327.170349, "VOTE");
  263. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][10], 0.282999, 1.056591);
  264. PlayerTextDrawTextSize(playerid, electionstextdraws[playerid][10], 383.000000, 7.056591);
  265. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][10], 1);
  266. PlayerTextDrawColor(playerid, electionstextdraws[playerid][10], -1);
  267. PlayerTextDrawUseBox(playerid, electionstextdraws[playerid][10], 1);
  268. PlayerTextDrawBoxColor(playerid, electionstextdraws[playerid][10], 255);
  269. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][10], 0);
  270. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][10], 0);
  271. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][10], 255);
  272. PlayerTextDrawFont(playerid, electionstextdraws[playerid][10], 2);
  273. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][10], 1);
  274. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][10], 0);
  275. PlayerTextDrawSetSelectable(playerid, electionstextdraws[playerid][10], true);
  276. electionstextdraws[playerid][13] = CreatePlayerTextDraw(playerid, 159.666641, 124.414810, "");
  277. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][13], 0.000000, 0.000000);
  278. PlayerTextDrawTextSize(playerid, electionstextdraws[playerid][13], 90.000000, 90.000000);
  279. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][13], 1);
  280. PlayerTextDrawColor(playerid, electionstextdraws[playerid][13], -1);
  281. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][13], 0);
  282. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][13], 0);
  283. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][13], -256);
  284. PlayerTextDrawFont(playerid, electionstextdraws[playerid][13], 5);
  285. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][13], 0);
  286. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][13], 0);
  287. PlayerTextDrawSetPreviewModel(playerid, electionstextdraws[playerid][13], Elections[0][eskinid]);
  288. PlayerTextDrawSetPreviewRot(playerid, electionstextdraws[playerid][13], 0.000000, 0.000000, 0.000000, 1.000000);
  289. Elections[0][ntxd][playerid] = CreatePlayerTextDraw(playerid, 225.666717, 109.525848, Elections[0][cname]);
  290. PlayerTextDrawLetterSize(playerid, Elections[0][ntxd][playerid], 0.159996, 1.313776);
  291. PlayerTextDrawAlignment(playerid, Elections[0][ntxd][playerid], 1);
  292. PlayerTextDrawColor(playerid, Elections[0][ntxd][playerid], -1);
  293. PlayerTextDrawSetShadow(playerid, Elections[0][ntxd][playerid], 0);
  294. PlayerTextDrawSetOutline(playerid, Elections[0][ntxd][playerid], -2);
  295. PlayerTextDrawBackgroundColor(playerid, Elections[0][ntxd][playerid], 255);
  296. PlayerTextDrawFont(playerid, Elections[0][ntxd][playerid], 2);
  297. PlayerTextDrawSetProportional(playerid, Elections[0][ntxd][playerid], 1);
  298. PlayerTextDrawSetShadow(playerid, Elections[0][ntxd][playerid], 0);
  299. Elections[1][ntxd][playerid] = CreatePlayerTextDraw(playerid, 340.000030, 109.585189, Elections[1][cname]);
  300. PlayerTextDrawLetterSize(playerid, Elections[1][ntxd][playerid], 0.154661, 1.413333);
  301. PlayerTextDrawAlignment(playerid, Elections[1][ntxd][playerid], 1);
  302. PlayerTextDrawColor(playerid, Elections[1][ntxd][playerid], -1);
  303. PlayerTextDrawSetShadow(playerid, Elections[1][ntxd][playerid], 0);
  304. PlayerTextDrawSetOutline(playerid, Elections[1][ntxd][playerid], -2);
  305. PlayerTextDrawBackgroundColor(playerid, Elections[1][ntxd][playerid], 255);
  306. PlayerTextDrawFont(playerid, Elections[1][ntxd][playerid], 2);
  307. PlayerTextDrawSetProportional(playerid, Elections[1][ntxd][playerid], 1);
  308. PlayerTextDrawSetShadow(playerid, Elections[1][ntxd][playerid], 0);
  309. electionstextdraws[playerid][16] = CreatePlayerTextDraw(playerid, 384.666625, 121.170372, "");
  310. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][16], 0.000000, 0.000000);
  311. PlayerTextDrawTextSize(playerid, electionstextdraws[playerid][16], 90.000000, 90.000000);
  312. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][16], 1);
  313. PlayerTextDrawColor(playerid, electionstextdraws[playerid][16], -1);
  314. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][16], 0);
  315. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][16], 0);
  316. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][16], 0);
  317. PlayerTextDrawFont(playerid, electionstextdraws[playerid][16], 5);
  318. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][16], 0);
  319. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][16], 0);
  320. PlayerTextDrawSetPreviewModel(playerid, electionstextdraws[playerid][16], Elections[1][eskinid]);
  321. PlayerTextDrawSetPreviewRot(playerid, electionstextdraws[playerid][16], 0.000000, 0.000000, 0.000000, 1.000000);
  322. format(elestr, sizeof(elestr), "Votes: %i", Elections[0][votes]);
  323. Elections[0][vtxd][playerid] = CreatePlayerTextDraw(playerid, 232.999969, 142.244430, elestr);
  324. PlayerTextDrawLetterSize(playerid, Elections[0][vtxd][playerid], 0.275999, 1.210072);
  325. PlayerTextDrawAlignment(playerid, Elections[0][vtxd][playerid], 1);
  326. PlayerTextDrawColor(playerid, Elections[0][vtxd][playerid], -1);
  327. PlayerTextDrawSetShadow(playerid, Elections[0][vtxd][playerid], 0);
  328. PlayerTextDrawSetOutline(playerid, Elections[0][vtxd][playerid], -2);
  329. PlayerTextDrawBackgroundColor(playerid, Elections[0][vtxd][playerid], 255);
  330. PlayerTextDrawFont(playerid, Elections[0][vtxd][playerid], 2);
  331. PlayerTextDrawSetProportional(playerid, Elections[0][vtxd][playerid], 1);
  332. PlayerTextDrawSetShadow(playerid, Elections[0][vtxd][playerid], 0);
  333. format(elestr, sizeof(elestr), "Votes: %i", Elections[1][votes]);
  334. Elections[1][vtxd][playerid] = CreatePlayerTextDraw(playerid, 340.666687, 141.414825, elestr);
  335. PlayerTextDrawLetterSize(playerid, Elections[1][vtxd][playerid], 0.280665, 1.255704);
  336. PlayerTextDrawAlignment(playerid, Elections[1][vtxd][playerid], 1);
  337. PlayerTextDrawColor(playerid, Elections[1][vtxd][playerid], -1);
  338. PlayerTextDrawSetShadow(playerid, Elections[1][vtxd][playerid], 0);
  339. PlayerTextDrawSetOutline(playerid, Elections[1][vtxd][playerid], -2);
  340. PlayerTextDrawBackgroundColor(playerid, Elections[1][vtxd][playerid], 255);
  341. PlayerTextDrawFont(playerid, Elections[1][vtxd][playerid], 2);
  342. PlayerTextDrawSetProportional(playerid, Elections[1][vtxd][playerid], 1);
  343. PlayerTextDrawSetShadow(playerid, Elections[1][vtxd][playerid], 0);
  344. electionstextdraws[playerid][21] = CreatePlayerTextDraw(playerid, 354.000061, 201.451995, "VOTE");
  345. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][21], 0.293332, 1.205924);
  346. PlayerTextDrawTextSize(playerid, electionstextdraws[playerid][21], 383.000000, 7.205924);
  347. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][21], 1);
  348. PlayerTextDrawColor(playerid, electionstextdraws[playerid][21], -1);
  349. PlayerTextDrawUseBox(playerid, electionstextdraws[playerid][21], 1);
  350. PlayerTextDrawBoxColor(playerid, electionstextdraws[playerid][21], 255);
  351. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][21], 0);
  352. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][21], 0);
  353. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][21], 255);
  354. PlayerTextDrawFont(playerid, electionstextdraws[playerid][21], 2);
  355. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][21], 1);
  356. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][21], 0);
  357. PlayerTextDrawSetSelectable(playerid, electionstextdraws[playerid][21], true);
  358. electionstextdraws[playerid][22] = CreatePlayerTextDraw(playerid, 187.999954, 110.770492, "box");
  359. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][22], 0.000000, 26.366670);
  360. PlayerTextDrawTextSize(playerid, electionstextdraws[playerid][22], 188.000000, 0.000000);
  361. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][22], 1);
  362. PlayerTextDrawColor(playerid, electionstextdraws[playerid][22], -1);
  363. PlayerTextDrawUseBox(playerid, electionstextdraws[playerid][22], 1);
  364. PlayerTextDrawBoxColor(playerid, electionstextdraws[playerid][22], 255);
  365. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][22], 0);
  366. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][22], 0);
  367. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][22], 255);
  368. PlayerTextDrawFont(playerid, electionstextdraws[playerid][22], 3);
  369. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][22], 1);
  370. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][22], 0);
  371. electionstextdraws[playerid][23] = CreatePlayerTextDraw(playerid, 448.333282, 110.355613, "box");
  372. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][23], 0.000000, 26.433334);
  373. PlayerTextDrawTextSize(playerid, electionstextdraws[playerid][23], 449.000000, 0.000000);
  374. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][23], 1);
  375. PlayerTextDrawColor(playerid, electionstextdraws[playerid][23], -1);
  376. PlayerTextDrawUseBox(playerid, electionstextdraws[playerid][23], 1);
  377. PlayerTextDrawBoxColor(playerid, electionstextdraws[playerid][23], 255);
  378. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][23], 0);
  379. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][23], 0);
  380. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][23], 255);
  381. PlayerTextDrawFont(playerid, electionstextdraws[playerid][23], 3);
  382. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][23], 1);
  383. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][23], 0);
  384. electionstextdraws[playerid][24] = CreatePlayerTextDraw(playerid, 191.333419, 353.022277, "box");
  385. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][24], 0.000000, -0.533334);
  386. PlayerTextDrawTextSize(playerid, electionstextdraws[playerid][24], 447.000000, 0.000000);
  387. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][24], 1);
  388. PlayerTextDrawColor(playerid, electionstextdraws[playerid][24], -1);
  389. PlayerTextDrawUseBox(playerid, electionstextdraws[playerid][24], 1);
  390. PlayerTextDrawBoxColor(playerid, electionstextdraws[playerid][24], 255);
  391. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][24], 0);
  392. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][24], 0);
  393. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][24], 255);
  394. PlayerTextDrawFont(playerid, electionstextdraws[playerid][24], 1);
  395. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][24], 1);
  396. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][24], 0);
  397. electionstextdraws[playerid][25] = CreatePlayerTextDraw(playerid, 240.999588, 201.859283, "VOTE");
  398. PlayerTextDrawLetterSize(playerid, electionstextdraws[playerid][25], 0.293332, 1.205924);
  399. PlayerTextDrawTextSize(playerid, electionstextdraws[playerid][25], 270.000000, 7.205924);
  400. PlayerTextDrawAlignment(playerid, electionstextdraws[playerid][25], 1);
  401. PlayerTextDrawColor(playerid, electionstextdraws[playerid][25], -1);
  402. PlayerTextDrawUseBox(playerid, electionstextdraws[playerid][25], 1);
  403. PlayerTextDrawBoxColor(playerid, electionstextdraws[playerid][25], 255);
  404. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][25], 0);
  405. PlayerTextDrawSetOutline(playerid, electionstextdraws[playerid][25], 0);
  406. PlayerTextDrawBackgroundColor(playerid, electionstextdraws[playerid][25], 255);
  407. PlayerTextDrawFont(playerid, electionstextdraws[playerid][25], 2);
  408. PlayerTextDrawSetProportional(playerid, electionstextdraws[playerid][25], 1);
  409. PlayerTextDrawSetShadow(playerid, electionstextdraws[playerid][25], 0);
  410. PlayerTextDrawSetSelectable(playerid, electionstextdraws[playerid][25], true);
  411. viewingelections[playerid] = false;
  412. HideElectionsAll(playerid);
  413. return 1;
  414. }
  415. Hook:EL_OnPlayerDisconnect(playerid, reason)
  416. {
  417. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][0]);
  418. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][1]);
  419. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][2]);
  420. PlayerTextDrawDestroy(playerid, Elections[0][ntxd]);
  421. PlayerTextDrawDestroy(playerid, Elections[1][ntxd]);
  422. PlayerTextDrawDestroy(playerid, Elections[2][ntxd]);
  423. PlayerTextDrawDestroy(playerid, Elections[3][ntxd]);
  424. PlayerTextDrawDestroy(playerid, Elections[0][vtxd]);
  425. PlayerTextDrawDestroy(playerid, Elections[1][vtxd]);
  426. PlayerTextDrawDestroy(playerid, Elections[2][vtxd]);
  427. PlayerTextDrawDestroy(playerid, Elections[3][vtxd]);
  428. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][7]);
  429. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][8]);
  430. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][9]);
  431. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][10]);
  432. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][13]);
  433. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][16]);
  434. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][21]);
  435. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][22]);
  436. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][23]);
  437. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][24]);
  438. PlayerTextDrawDestroy(playerid, electionstextdraws[playerid][25]);
  439. return 1;
  440. }
  441. Hook:ELECTIONS_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  442. {
  443. if(dialogid == DIALOG_ELECTIONS_ONE)
  444. {
  445. if(response)
  446. {
  447. new candidates = strval(inputtext);
  448. if(candidates < 2 || candidates > 4)
  449. {
  450. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_ONE, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part One", "{FFFFFF}How many candidates would you like to have? (2-4)", "Next", "Cancel");
  451. SendClientMessage(playerid, COLOR_GREY, "The candidates number must not be less than 2 or more than 4.");
  452. return 1;
  453. }
  454. pcandidates[playerid] = candidates;
  455. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_TWO, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Two", "{FFFFFF}Enter the name for your first candidate.", "Next", "Cancel");
  456. }
  457. }
  458. if(dialogid == DIALOG_ELECTIONS_TWO)
  459. {
  460. if(response)
  461. {
  462. if(strlen(inputtext) < 3 || strlen(inputtext) > 24)
  463. {
  464. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_TWO, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Two", "{FFFFFF}Enter the name for your first candidate.", "Next", "Cancel");
  465. SendClientMessage(playerid, COLOR_GREY, "The candidate name must be between 3-24 characters.");
  466. return 1;
  467. }
  468. format(pcandidate1name[playerid], 24, "%s", inputtext);
  469. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_THREE, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Three", "{FFFFFF}Enter the skin ID for your first candidate.", "Next", "Cancel");
  470. }
  471. }
  472. if(dialogid == DIALOG_ELECTIONS_THREE)
  473. {
  474. if(response)
  475. {
  476. new skinid = strval(inputtext);
  477. if(skinid < 1 || skinid > 311)
  478. {
  479. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_THREE, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Three", "{FFFFFF}Enter the skin ID for your first candidate.", "Next", "Cancel");
  480. SendClientMessage(playerid, COLOR_GREY, "The candidat's skin ID must be between 1-311.");
  481. return 1;
  482. }
  483. pcandidate1skin[playerid] = skinid;
  484. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_FOUR, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Four", "{FFFFFF}Enter the name for your second candidate.", "Next", "Cancel");
  485. }
  486. }
  487. if(dialogid == DIALOG_ELECTIONS_FOUR)
  488. {
  489. if(response)
  490. {
  491. if(strlen(inputtext) < 3 || strlen(inputtext) > 24)
  492. {
  493. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_FOUR, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Four", "{FFFFFF}Enter the name for your second candidate.", "Next", "Cancel");
  494. SendClientMessage(playerid, COLOR_GREY, "The candidate name must be between 3-24 characters.");
  495. return 1;
  496. }
  497. format(pcandidate2name[playerid], 24, "%s", inputtext);
  498. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_FIVE, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Five", "{FFFFFF}Enter the skin ID for your second candidate.", "Next", "Cancel");
  499. }
  500. }
  501. if(dialogid == DIALOG_ELECTIONS_FIVE)
  502. {
  503. if(response)
  504. {
  505. new skinid = strval(inputtext);
  506. if(skinid < 1 || skinid > 311)
  507. {
  508. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_FIVE, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Five", "{FFFFFF}Enter the skin ID for your second candidate.", "Next", "Cancel");
  509. SendClientMessage(playerid, COLOR_GREY, "The candidat's skin ID must be between 1-311.");
  510. return 1;
  511. }
  512. pcandidate2skin[playerid] = skinid;
  513. if(pcandidates[playerid] == 2)
  514. {
  515. ElectionsCandidates = pcandidates[playerid];
  516. ElectionsActive = true;
  517. StartElections(playerid, ElectionsCandidates);
  518. }
  519. if(pcandidates[playerid] > 2)
  520. {
  521. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_SIX, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Six", "{FFFFFF}Enter the name for your third candidate.", "Next", "Cancel");
  522. }
  523. }
  524. }
  525. if(dialogid == DIALOG_ELECTIONS_SIX)
  526. {
  527. if(response)
  528. {
  529. if(strlen(inputtext) < 3 || strlen(inputtext) > 24)
  530. {
  531. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_SIX, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Six", "{FFFFFF}Enter the name for your third candidate.", "Next", "Cancel");
  532. SendClientMessage(playerid, COLOR_GREY, "The candidate name must be between 3-24 characters.");
  533. return 1;
  534. }
  535. format(pcandidate3name[playerid], 24, "%s", inputtext);
  536. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_SEVEN, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Seven", "{FFFFFF}Enter the skin ID for your third candidate.", "Next", "Cancel");
  537. }
  538. }
  539. if(dialogid == DIALOG_ELECTIONS_SEVEN)
  540. {
  541. if(response)
  542. {
  543. new skinid = strval(inputtext);
  544. if(skinid < 1 || skinid > 311)
  545. {
  546. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_SEVEN, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Seven", "{FFFFFF}Enter the skin ID for your third candidate.", "Next", "Cancel");
  547. SendClientMessage(playerid, COLOR_GREY, "The candidat's skin ID must be between 1-311.");
  548. return 1;
  549. }
  550. pcandidate3skin[playerid] = skinid;
  551. if(pcandidates[playerid] == 3)
  552. {
  553. ElectionsCandidates = pcandidates[playerid];
  554. ElectionsActive = true;
  555. StartElections(playerid, ElectionsCandidates);
  556. }
  557. if(pcandidates[playerid] > 3)
  558. {
  559. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_EIGHT, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Eight", "{FFFFFF}Enter the name for your fourth candidate.", "Next", "Cancel");
  560. }
  561. }
  562. }
  563. if(dialogid == DIALOG_ELECTIONS_EIGHT)
  564. {
  565. if(response)
  566. {
  567. if(strlen(inputtext) < 3 || strlen(inputtext) > 24)
  568. {
  569. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_EIGHT, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Eight", "{FFFFFF}Enter the name for your fourth candidate.", "Next", "Cancel");
  570. SendClientMessage(playerid, COLOR_GREY, "The candidate name must be between 3-24 characters.");
  571. return 1;
  572. }
  573. format(pcandidate4name[playerid], 24, "%s", inputtext);
  574. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_NINE, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Nine", "{FFFFFF}Enter the skin ID for your fourth candidate.", "Done", "Cancel");
  575. }
  576. }
  577. if(dialogid == DIALOG_ELECTIONS_NINE)
  578. {
  579. if(response)
  580. {
  581. new skinid = strval(inputtext);
  582. if(skinid < 1 || skinid > 311)
  583. {
  584. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_NINE, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part Nine", "{FFFFFF}Enter the skin ID for your fourth candidate.", "Next", "Cancel");
  585. SendClientMessage(playerid, COLOR_GREY, "The candidat's skin ID must be between 1-311.");
  586. return 1;
  587. }
  588. ElectionsCandidates = pcandidates[playerid];
  589. ElectionsActive = true;
  590. pcandidate4skin[playerid] = skinid;
  591. StartElections(playerid, ElectionsCandidates);
  592. }
  593. }
  594. return 1;
  595. }
  596. CMD:startelections(playerid, params[])
  597. {
  598. if(PlayerInfo[playerid][pAdmin] < 2 && PlayerInfo[playerid][pDev] < 2) return AdmErrorMsg;
  599. if(ElectionsActive == true) return SendClientMessage(playerid, COLOR_GREY, "Elections are already active! /endelections to end them.");
  600. ShowPlayerDialog(playerid, DIALOG_ELECTIONS_ONE, DIALOG_STYLE_INPUT, "{FFFFFF}Elections - Part One", "{FFFFFF}How many candidates would you like to have? (2-4)", "Next", "Cancel");
  601. return 1;
  602. }
  603. CMD:endelections(playerid, params[])
  604. {
  605. if(PlayerInfo[playerid][pAdmin] < 2 && PlayerInfo[playerid][pDev] < 2) return AdmErrorMsg;
  606. if(ElectionsActive == false) return SendClientMessage(playerid, COLOR_GREY, "Elections are not active, /startelections to begin.");
  607. ElectionsActive = false;
  608. format(elestr, sizeof(elestr), "%s has ended the elections poll.", PlayerOOCName(playerid));
  609. SendClientMessageToAll(COLOR_LIGHTBLUE, elestr);
  610. foreach( new i: Player )
  611. {
  612. viewingelections[i] = false;
  613. HideElectionsAll(i);
  614. CancelSelectTextDraw(i);
  615. }
  616. return 1;
  617. }
  618. CMD:viewelections(playerid, params[]) // view only, can't vote (vote textdraws don't display)
  619. {
  620. if(!ElectionsReadable) return SendClientMessage(playerid, COLOR_GREY, "There are no active elections.");
  621. if(viewingelections[playerid] == false)
  622. {
  623. SendClientMessage(playerid, COLOR_GREY, "Use /viewelections again to turn off the elections box, use /evote to vote.");
  624. viewingelections[playerid] = true;
  625. PlayerTextDrawShow(playerid, electionstextdraws[playerid][0]);
  626. PlayerTextDrawShow(playerid, electionstextdraws[playerid][16]);
  627. PlayerTextDrawShow(playerid, Elections[0][ntxd]);
  628. PlayerTextDrawShow(playerid, Elections[0][vtxd]);
  629. PlayerTextDrawShow(playerid, Elections[1][ntxd]);
  630. PlayerTextDrawShow(playerid, Elections[1][vtxd]);
  631. if(ElectionsCandidates > 2)
  632. {
  633. PlayerTextDrawShow(playerid, Elections[2][ntxd]);
  634. PlayerTextDrawShow(playerid, Elections[2][vtxd]);
  635. PlayerTextDrawShow(playerid, electionstextdraws[playerid][1]);
  636. }
  637. if(ElectionsCandidates > 3)
  638. {
  639. PlayerTextDrawShow(playerid, Elections[3][ntxd]);
  640. PlayerTextDrawShow(playerid, Elections[3][vtxd]);
  641. PlayerTextDrawShow(playerid, electionstextdraws[playerid][2]);
  642. }
  643. PlayerTextDrawShow(playerid, electionstextdraws[playerid][7]);
  644. PlayerTextDrawShow(playerid, electionstextdraws[playerid][8]);
  645. PlayerTextDrawShow(playerid, electionstextdraws[playerid][13]);
  646. PlayerTextDrawShow(playerid, electionstextdraws[playerid][22]);
  647. PlayerTextDrawShow(playerid, electionstextdraws[playerid][23]);
  648. PlayerTextDrawShow(playerid, electionstextdraws[playerid][24]);
  649. CancelSelectTextDraw(playerid);
  650. }
  651. else if(viewingelections[playerid] == true)
  652. {
  653. viewingelections[playerid] = false;
  654. HideElectionsAll(playerid);
  655. CancelSelectTextDraw(playerid);
  656. }
  657. return 1;
  658. }
  659. CMD:evote(playerid, params[])
  660. {
  661. if(ElectionsActive == false) return SendClientMessage(playerid, COLOR_GREY, "There are no active elections.");
  662. if(PlayerInfo[playerid][pLevel] < 5) return SendClientMessage(playerid, COLOR_GREY, "You may only vote as a level 5+");
  663. if(!IsPlayerInRangeOfPoint(playerid, 5.0, -2108.4446, 764.0786, 9006.0859) && !IsPlayerInRangeOfPoint(playerid, 5.0, -2205.0752, 837.4177, 9999.2656))
  664. return SendClientMessage(playerid, COLOR_GREY, "You're not at the LSPD front desk or the city hall service desk.");
  665. if(gettime() < VoteTimer[playerid] + 5) return SendClientMessage(playerid, COLOR_GREY, "Please wait 5 seconds before using /evote again.");
  666. new query[128];
  667. VoteTimer[playerid] = gettime();
  668. mysql_format(sqlGameConnection, query, sizeof query, "SELECT `ID` FROM voters WHERE `ID` = %d", PlayerInfo[playerid][pID]);
  669. mysql_pquery(sqlGameConnection, query, "OnVoteCheck", "i", playerid);
  670. return 1;
  671. }
  672. public OnVoteCheck(playerid)
  673. {
  674. if(cache_num_rows() != 0) return SendClientMessage(playerid, COLOR_GREY, "You already voted on the elections!");
  675. viewingelections[playerid] = true;
  676. PlayerTextDrawShow(playerid, electionstextdraws[playerid][0]);
  677. PlayerTextDrawShow(playerid, Elections[0][ntxd]);
  678. PlayerTextDrawShow(playerid, Elections[0][vtxd]);
  679. PlayerTextDrawShow(playerid, electionstextdraws[playerid][25]); // VOTE BUTTON
  680. PlayerTextDrawShow(playerid, Elections[1][ntxd]);
  681. PlayerTextDrawShow(playerid, Elections[1][vtxd]);
  682. PlayerTextDrawShow(playerid, electionstextdraws[playerid][21]); // VOTE BUTTON
  683. if(ElectionsCandidates > 2)
  684. {
  685. PlayerTextDrawShow(playerid, Elections[2][ntxd]);
  686. PlayerTextDrawShow(playerid, Elections[2][vtxd]);
  687. PlayerTextDrawShow(playerid, electionstextdraws[playerid][9]); // VOTE BUTTON
  688. PlayerTextDrawShow(playerid, electionstextdraws[playerid][1]);
  689. }
  690. if(ElectionsCandidates > 3)
  691. {
  692. PlayerTextDrawShow(playerid, Elections[3][ntxd]);
  693. PlayerTextDrawShow(playerid, Elections[3][vtxd]);
  694. PlayerTextDrawShow(playerid, electionstextdraws[playerid][10]); // VOTE BUTTON
  695. PlayerTextDrawShow(playerid, electionstextdraws[playerid][2]);
  696. }
  697. PlayerTextDrawShow(playerid, electionstextdraws[playerid][7]);
  698. PlayerTextDrawShow(playerid, electionstextdraws[playerid][8]);
  699. PlayerTextDrawShow(playerid, electionstextdraws[playerid][13]);
  700. PlayerTextDrawShow(playerid, electionstextdraws[playerid][16]);
  701. PlayerTextDrawShow(playerid, electionstextdraws[playerid][22]);
  702. PlayerTextDrawShow(playerid, electionstextdraws[playerid][23]);
  703. PlayerTextDrawShow(playerid, electionstextdraws[playerid][24]);
  704. SendClientMessage(playerid, COLOR_GREY, "You may now vote for your candidate. Use /viewelections to turn off the elections box.");
  705. SelectTextDraw(playerid, 0x00FF00FF);
  706. return 1;
  707. }
  708. public LogVote(playerid, candidate)
  709. {
  710. new query[128];
  711. mysql_format(sqlGameConnection, query, sizeof(query), "INSERT INTO `voters` (`ID`, `votedFor`) VALUES('%d', '%e')", PlayerInfo[playerid][pID], Elections[candidate][cname]);
  712. mysql_query(sqlGameConnection, query);
  713. return 1;
  714. }