lottery.txt 12 KB

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