root/npc/custom/lottery.txt @ 6

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