lottery.txt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. //===== eAthena Script =======================================
  2. //= Lottery Script
  3. //===== By: ==================================================
  4. //= acky - god@acky.com
  5. //===== Current Version: =====================================
  6. //= 1.2.1a
  7. //===== Compatible With: =====================================
  8. //= Any eAthena Version
  9. //===== Description: =========================================
  10. //= Daily lottery draw.
  11. //===== Additional Comments: =================================
  12. //= Numbers drawn daily (Time is configured line 29)
  13. //= *Added GM-Riggability
  14. //= *Ability to renew ticket
  15. //= *Improved interface
  16. //= *Fixed minor bug where first load didn't work.
  17. //= 1.2.1a fix due to new script engine
  18. //============================================================
  19. prontera,1,1,1 script lotterygenerator 111,{
  20. OnInit:
  21. set $L_TicketPrice,4750; // TICKET COST
  22. set $L_Prize_Money,5000000; // JACKPOT AMOUNT
  23. set $L_Prize_Money_Small,1000000; // SECONDARY PRIZE
  24. if ($LID == 0) goto L_GenID;
  25. end;
  26. //Modify for own time
  27. OnClock2045:
  28. // CHECKS IF LOTTERY IS RIGGED
  29. if ($L_Rigged == 1) goto L_Rigged_Draw;
  30. // GENERATES RANDOM NUMBERS 1-40
  31. Pick1:
  32. set $LW1,rand (1,40);
  33. Pick2:
  34. set $LW2,rand (1,40);
  35. if ($LW2 == $LW1) goto Pick2;
  36. Pick3:
  37. set $LW3,rand (1,40);
  38. if ($LW3 == $LW2) goto Pick3;
  39. if ($LW3 == $LW1) goto Pick3;
  40. Pick4:
  41. set $LW4,rand (1,40);
  42. if ($LW4 == $LW2) goto Pick4;
  43. if ($LW4 == $LW1) goto Pick4;
  44. if ($LW4 == $LW3) goto Pick4;
  45. Pick5:
  46. set $LW5,rand (1,40);
  47. if ($LW5 == $LW1) goto Pick5;
  48. if ($LW5 == $LW2) goto Pick5;
  49. if ($LW5 == $LW3) goto Pick5;
  50. if ($LW5 == $LW4) goto Pick5;
  51. Pick6:
  52. set $LW6,rand (1,40);
  53. if ($LW6 == $LW1) goto Pick6;
  54. if ($LW6 == $LW2) goto Pick6;
  55. if ($LW6 == $LW3) goto Pick6;
  56. if ($LW6 == $LW4) goto Pick6;
  57. if ($LW6 == $LW5) goto Pick6;
  58. // BROADCASTS DRAW
  59. L_Broadcast:
  60. Announce "Lottery: Welcome to tonight's lotto draw!",8;
  61. Announce "The numbers are as follows: [" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]",8;
  62. Announce "Congratulations to the winners of tonight!",8;
  63. // GENERATES DRAW ID CODE
  64. L_GenID:
  65. set $LID2,$LID;
  66. // SETS TOMORROW'S ID NUMBER
  67. set $LID,rand (100000,999999);
  68. end;
  69. // SETS DRAW TO RIGGED NUMBERS
  70. L_Rigged_Draw:
  71. set $LW1,$LR1;
  72. set $LW2,$LR2;
  73. set $LW3,$LR3;
  74. set $LW4,$LR4;
  75. set $LW5,$LR5;
  76. set $LW6,$LR6;
  77. set $L_Rigged,0;
  78. goto L_Broadcast;
  79. }
  80. // BEGIN LOTTERY SCRIPT
  81. - script lottery 76,{
  82. L_Begin:
  83. mes "[Lottery]";
  84. mes "Winning Lotto Numbers ("+$LID2+"):";
  85. mes "^0000FF[" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]^000000";
  86. if ($LID > 99999) mes "Your Ticket ("+#LID+"):";
  87. if ($LID > 99999) mes "^FF0000[" + #LW1 + "] [" + #LW2 + "] [" + #LW3 + "] [" + #LW4 + "] [" + #LW5 + "] [" + #LW6 + "]^000000";
  88. mes "Next Draw-ID: ^FF0000" + $LID + "^000000.";
  89. next;
  90. if (getgmlevel() > 90) goto L_GM;
  91. menu "Claim Prize",L_Claim,"Buy New Ticket",L_Buy,"Cancel",L_Cancel;
  92. // PURCHASE TICKET
  93. L_Buy:
  94. if (#LID == $LID && #L1 != 0) goto L_DoubleTicket;
  95. mes "[Lottery]";
  96. mes "Tickets cost ^0000FF" + $L_TicketPrice + "z^000000.";
  97. mes "The Jackpot is ^FF0000" + $L_Prize_Money + "z^000000.";
  98. next;
  99. menu "Buy Ticket",-,"Cancel",L_Cancel;
  100. if (zeny < $L_TicketPrice) goto L_NoZeny;
  101. set zeny,zeny-$L_TicketPrice;
  102. mes "[Lottery]";
  103. mes "Would you like your numbers hand picked or computer generated?";
  104. next;
  105. menu "Computer Generated",L_ComputerGen,"Hand Picked",L_HandPick,"Renew Ticket",L_Renew;
  106. // RENEW LAST TICKET
  107. L_Renew:
  108. if ($LID < 99999) goto L_Invalid;
  109. set #LID,$LID;
  110. goto L_Confirm2;
  111. L_ComputerGen:
  112. // SELECTS RANDOM NUMBERS
  113. set @L1,0;
  114. set @L2,0;
  115. set @L3,0;
  116. set @L4,0;
  117. set @L5,0;
  118. set @L6,0;
  119. Pick1:
  120. set @L1,rand (1,40);
  121. Pick2:
  122. set @L2,rand (1,40);
  123. if (@L2 == @L1) goto Pick2;
  124. Pick3:
  125. set @L3,rand (1,40);
  126. if (@L3 == @L2) goto Pick3;
  127. if (@L3 == @L1) goto Pick3;
  128. Pick4:
  129. set @L4,rand (1,40);
  130. if (@L4 == @L2) goto Pick4;
  131. if (@L4 == @L1) goto Pick4;
  132. if (@L4 == @L3) goto Pick4;
  133. Pick5:
  134. set @L5,rand (1,40);
  135. if (@L5 == @L1) goto Pick5;
  136. if (@L5 == @L2) goto Pick5;
  137. if (@L5 == @L3) goto Pick5;
  138. if (@L5 == @L4) goto Pick5;
  139. Pick6:
  140. set @L6,rand (1,40);
  141. if (@L6 == @L1) goto Pick6;
  142. if (@L6 == @L2) goto Pick6;
  143. if (@L6 == @L3) goto Pick6;
  144. if (@L6 == @L4) goto Pick6;
  145. if (@L6 == @L5) goto Pick6;
  146. mes "[Lottery]";
  147. mes "The computer has selected the following numbers:";
  148. mes "^0000FF" + @L1 + " " + @L2 + " " + @L3 + " " + @L4 + " " + @L5 + " " + @L6 + "^000000";
  149. next;
  150. menu "Confirm",L_Confirm,"Re-Generate",L_ComputerGen;
  151. // HAND PICK LOTTERY NUMBERS
  152. L_HandPick:
  153. mes "[Lottery]";
  154. mes "Please pick your numbers (1-40):";
  155. set @L1,0;
  156. set @L2,0;
  157. set @L3,0;
  158. set @L4,0;
  159. set @L5,0;
  160. set @L6,0;
  161. Input1:
  162. input @L1;
  163. if (@L1 < 1 || @L1 > 40) goto Input1;
  164. mes @L1;
  165. Input2:
  166. input @L2;
  167. if (@L2 < 1 || @L2 > 40) goto Input2;
  168. if (@L2 == @L1) goto Input2;
  169. mes @L2;
  170. Input3:
  171. input @L3;
  172. if (@L3 < 1 || @L3 > 40) goto Input3;
  173. if (@L3 == @L1) goto Input3;
  174. if (@L3 == @L2) goto Input3;
  175. mes @L3;
  176. Input4:
  177. input @L4;
  178. if (@L4 < 1 || @L4 > 40) goto Input4;
  179. if (@L4 == @L1) goto Input4;
  180. if (@L4 == @L2) goto Input4;
  181. if (@L4 == @L3) goto Input4;
  182. mes @L4;
  183. Input5:
  184. input @L5;
  185. if (@L5 < 1 || @L5 > 40) goto Input5;
  186. if (@L5 == @L1) goto Input5;
  187. if (@L5 == @L2) goto Input5;
  188. if (@L5 == @L3) goto Input5;
  189. if (@L5 == @L4) goto Input5;
  190. mes @L5;
  191. Input6:
  192. input @L6;
  193. if (@L6 < 1 || @L6 > 40) goto Input6;
  194. if (@L6 == @L1) goto Input6;
  195. if (@L6 == @L2) goto Input6;
  196. if (@L6 == @L3) goto Input6;
  197. if (@L6 == @L4) goto Input6;
  198. if (@L6 == @L5) goto Input6;
  199. mes @L6;
  200. next;
  201. mes "[Lottery]";
  202. mes "Your numbers are:";
  203. mes "^0000FF" + @L1 + " " + @L2 + " " + @L3 + " " + @L4 + " " + @L5 + " " + @L6 + "^000000";
  204. next;
  205. menu "Confirm",L_Confirm,"Re-Pick",L_HandPick;
  206. L_Confirm:
  207. set #LW1,@L1;
  208. set #LW2,@L2;
  209. set #LW3,@L3;
  210. set #LW4,@L4;
  211. set #LW5,@L5;
  212. set #LW6,@L6;
  213. set #LID,$LID;
  214. L_Confirm2:
  215. mes "[Lottery]";
  216. mes "The live broadcasted draw is at 9pm.";
  217. mes "You can claim your ticket between then and the next draw.";
  218. next;
  219. mes "[Lottery]";
  220. mes "Good luck!";
  221. close;
  222. L_Claim:
  223. // CHECKS TICKET VALIDILITY
  224. if (#LID != $LID2) goto L_Invalid;
  225. // CHECKS HOW MANY NUMBERS MATCHED
  226. set @LPrize,0;
  227. if (#LW1 == $LW1) set @LPrize,@LPrize+1;
  228. if (#LW1 == $LW2) set @LPrize,@LPrize+1;
  229. if (#LW1 == $LW3) set @LPrize,@LPrize+1;
  230. if (#LW1 == $LW4) set @LPrize,@LPrize+1;
  231. if (#LW1 == $LW5) set @LPrize,@LPrize+1;
  232. if (#LW1 == $LW6) set @LPrize,@LPrize+1;
  233. if (#LW2 == $LW1) set @LPrize,@LPrize+1;
  234. if (#LW2 == $LW2) set @LPrize,@LPrize+1;
  235. if (#LW2 == $LW3) set @LPrize,@LPrize+1;
  236. if (#LW2 == $LW4) set @LPrize,@LPrize+1;
  237. if (#LW2 == $LW5) set @LPrize,@LPrize+1;
  238. if (#LW2 == $LW6) set @LPrize,@LPrize+1;
  239. if (#LW3 == $LW1) set @LPrize,@LPrize+1;
  240. if (#LW3 == $LW2) set @LPrize,@LPrize+1;
  241. if (#LW3 == $LW3) set @LPrize,@LPrize+1;
  242. if (#LW3 == $LW4) set @LPrize,@LPrize+1;
  243. if (#LW3 == $LW5) set @LPrize,@LPrize+1;
  244. if (#LW3 == $LW6) set @LPrize,@LPrize+1;
  245. if (#LW4 == $LW1) set @LPrize,@LPrize+1;
  246. if (#LW4 == $LW2) set @LPrize,@LPrize+1;
  247. if (#LW4 == $LW3) set @LPrize,@LPrize+1;
  248. if (#LW4 == $LW4) set @LPrize,@LPrize+1;
  249. if (#LW4 == $LW5) set @LPrize,@LPrize+1;
  250. if (#LW4 == $LW6) set @LPrize,@LPrize+1;
  251. if (#LW5 == $LW1) set @LPrize,@LPrize+1;
  252. if (#LW5 == $LW2) set @LPrize,@LPrize+1;
  253. if (#LW5 == $LW3) set @LPrize,@LPrize+1;
  254. if (#LW5 == $LW4) set @LPrize,@LPrize+1;
  255. if (#LW5 == $LW5) set @LPrize,@LPrize+1;
  256. if (#LW5 == $LW6) set @LPrize,@LPrize+1;
  257. if (#LW6 == $LW1) set @LPrize,@LPrize+1;
  258. if (#LW6 == $LW2) set @LPrize,@LPrize+1;
  259. if (#LW6 == $LW3) set @LPrize,@LPrize+1;
  260. if (#LW6 == $LW4) set @LPrize,@LPrize+1;
  261. if (#LW6 == $LW5) set @LPrize,@LPrize+1;
  262. if (#LW6 == $LW6) set @LPrize,@LPrize+1;
  263. if (@LPrize == 6) goto LWinBig;
  264. if (@LPrize > 3 && @LPrize < 6) goto LWinSmall;
  265. // NO WINNER
  266. mes "[Lottery]";
  267. mes "Bad luck, it appears you do not hold a winning ticket.";
  268. next;
  269. mes "[Lottery]";
  270. mes "Better luck next time!.";
  271. close;
  272. // MATCHED ALL SIX
  273. LWinBig:
  274. mes "[Lottery]";
  275. mes "You have matched all six numbers!";
  276. mes "Jackpot!";
  277. mes "You've won ^0000FF" + $L_Prize_Money + "z^000000.";
  278. set zeny,zeny+$L_Prize_Money;
  279. Announce "Lottery: " + strcharinfo(0) + " has won the JACKPOT of " + $L_Prize_Money + "z!",8;
  280. set #LID,0;
  281. close;
  282. // MATCHED AT LEAST 4
  283. LWinSmall:
  284. mes "[Lottery]";
  285. mes "You have matched at least 4 numbers!";
  286. mes "You've won ^0000FF" + $L_Prize_Money_Small + "z^000000.";
  287. set zeny,zeny+$L_Prize_Money_Small;
  288. Announce "Lottery: " + strcharinfo(0) + " has won a prize of " + $L_Prize_Money_Small + "z!",8;
  289. set #LID,0;
  290. close;
  291. // NO ZENY
  292. L_NoZeny:
  293. mes "[Lottery]";
  294. mes "You can't afford a lottery ticket.";
  295. close;
  296. // INVALID TICKET
  297. L_Invalid:
  298. mes "[Lottery]";
  299. mes "I'm sorry but it appears that you have an invalid ticket.";
  300. close;
  301. // DOUBLE TICKET
  302. L_DoubleTicket:
  303. mes "[Lottery]";
  304. mes "It appears that you already have a ticket for today.";
  305. mes "You may only purchase one ticket per draw.";
  306. close;
  307. L_Cancel:
  308. mes "[Lottery]";
  309. mes "Come back soon!";
  310. close;
  311. // GM MENU (Lets you manually do draws)
  312. L_GM:
  313. menu "Claim Prize",L_Claim,"Buy New Ticket",L_Buy,"[GM]Do Draw Now",-,"[GM]Rig the Lottery",L_GM_Rig,"Cancel",L_Cancel;
  314. // CHECKS IF LOTTERY IS RIGGED
  315. if ($L_Rigged == 1) goto L_Rigged_Draw;
  316. // GENERATES RANDOM NUMBERS 1-40
  317. GMPick1:
  318. set $LW1,rand (1,40);
  319. GMPick2:
  320. set $LW2,rand (1,40);
  321. if ($LW2 == $LW1) goto GMPick2;
  322. GMPick3:
  323. set $LW3,rand (1,40);
  324. if ($LW3 == $LW2) goto GMPick3;
  325. if ($LW3 == $LW1) goto GMPick3;
  326. GMPick4:
  327. set $LW4,rand (1,40);
  328. if ($LW4 == $LW2) goto GMPick4;
  329. if ($LW4 == $LW1) goto GMPick4;
  330. if ($LW4 == $LW3) goto GMPick4;
  331. GMPick5:
  332. set $LW5,rand (1,40);
  333. if ($LW5 == $LW1) goto GMPick5;
  334. if ($LW5 == $LW2) goto GMPick5;
  335. if ($LW5 == $LW3) goto GMPick5;
  336. if ($LW5 == $LW4) goto GMPick5;
  337. GMPick6:
  338. set $LW6,rand (1,40);
  339. if ($LW6 == $LW1) goto GMPick6;
  340. if ($LW6 == $LW2) goto GMPick6;
  341. if ($LW6 == $LW3) goto GMPick6;
  342. if ($LW6 == $LW4) goto GMPick6;
  343. if ($LW6 == $LW5) goto GMPick6;
  344. // BROADCASTS DRAW
  345. L_Broadcast:
  346. Announce "Lottery: Welcome to the special GM's lotto draw!",8;
  347. Announce "The numbers are as follows: [" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]",8;
  348. Announce "Congratulations to the winners!",8;
  349. // GENERATES DRAW ID CODE
  350. L_GenID:
  351. set $LID2,$LID;
  352. // SETS TOMORROW'S ID NUMBER
  353. set $LID,rand (100000,999999);
  354. close;
  355. // SETS DRAW TO RIGGED NUMBERS
  356. L_Rigged_Draw:
  357. set $LW1,$LR1;
  358. set $LW2,$LR2;
  359. set $LW3,$LR3;
  360. set $LW4,$LR4;
  361. set $LW5,$LR5;
  362. set $LW6,$LR6;
  363. set $L_Rigged,0;
  364. goto L_Broadcast;
  365. // ALLOWS GM TO DO A RIGGED DRAW
  366. L_GM_Rig:
  367. mes "[Lottery]";
  368. mes "Please pick your numbers (1-40):";
  369. set $LR1,0;
  370. set $LR2,0;
  371. set $LR3,0;
  372. set $LR4,0;
  373. set $LR5,0;
  374. set $LR6,0;
  375. GMInput1:
  376. Input $LR1;
  377. if ($LR1 < 1 || $LR1 > 40) goto GMInput1;
  378. mes $LR1;
  379. GMInput2:
  380. Input $LR2;
  381. if ($LR2 < 1 || $LR2 > 40) goto GMInput2;
  382. if ($LR2 == $LR1) goto GMInput2;
  383. mes $LR2;
  384. GMInput3:
  385. Input $LR3;
  386. if ($LR3 < 1 || $LR3 > 40) goto GMInput3;
  387. if ($LR3 == $LR1) goto GMInput3;
  388. if ($LR3 == $LR2) goto GMInput3;
  389. mes $LR3;
  390. GMInput4:
  391. Input $LR4;
  392. if ($LR4 < 1 || $LR4 > 40) goto GMInput4;
  393. if ($LR4 == $LR1) goto GMInput4;
  394. if ($LR4 == $LR2) goto GMInput4;
  395. if ($LR4 == $LR3) goto GMInput4;
  396. mes $LR4;
  397. GMInput5:
  398. Input $LR5;
  399. if ($LR5 < 1 || $LR5 > 40) goto GMInput5;
  400. if ($LR5 == $LR1) goto GMInput5;
  401. if ($LR5 == $LR2) goto GMInput5;
  402. if ($LR5 == $LR3) goto GMInput5;
  403. if ($LR5 == $LR4) goto GMInput5;
  404. mes $LR5;
  405. GMInput6:
  406. Input $LR6;
  407. if ($LR6 < 1 || $LR6 > 40) goto GMInput6;
  408. if ($LR6 == $LR1) goto GMInput6;
  409. if ($LR6 == $LR2) goto GMInput6;
  410. if ($LR6 == $LR3) goto GMInput6;
  411. if ($LR6 == $LR4) goto GMInput6;
  412. if ($LR6 == $LR5) goto GMInput6;
  413. mes $LR6;
  414. next;
  415. mes "[Lottery]";
  416. mes "Lottery rigged for next draw.";
  417. set $L_Rigged,1;
  418. close;
  419. }
  420. prontera,141,182,5 duplicate(lottery) Lottery 76