· 8 years ago · Jan 24, 2018, 04:10 PM
1//#####################################################################
2//##### ESte NPC foi idealizado e produzido por Mclzeszenâ„¢ ############
3//##### ©Copy Saga Brasil Ragnarok Online #############################
4//##### Todos os direitos reservados® #################################
5//##### Antes de qualquer modificação por favor mandar PM #############
6//##### para mclzeszen Forum Cronus Emulator ### LOTERIA v2.5 #########
7//#####################################################################
8//Links
9//Exibição http://forum.cronus-emulator.com/pastebin/1r66uav4shq87/
10//BBCode Exibição [url=http://forum.cronus-emulator.com/pastebin/1r66uav4shq87/]Script: 1r66uav4shq87[/url]
11//Download http://forum.cronus-emulator.com/pastebin/1r66uav4shq87/dl/
12//BBCode Baixar [url=http://forum.cronus-emulator.com/pastebin/1r66uav4shq87/dl/]Baixar paste: 1r66uav4shq87[/url]
13
14
15//
16//--
17//-- Structure for table `loteria_b`
18//--
19
20// DROP TABLE IF EXISTS `loteria_b`;
21// CREATE TABLE IF NOT EXISTS `loteria_b` (
22// `id_b` int(11) NOT NULL DEFAULT '1',
23// `char_id` int(11) NOT NULL,
24// `bilhete` int(11) NOT NULL,
25// `aposta` int(11) NOT NULL
26// ) ENGINE=MyISAM;
27//
28//--
29//-- Structure for table `loteria_s`
30//--
31
32// DROP TABLE IF EXISTS `loteria_s`;
33// CREATE TABLE IF NOT EXISTS `loteria_s` (
34// `sort_id` int(11) NOT NULL,
35// `sorteio` int(11) NOT NULL
36// ) ENGINE=MyISAM;
37
38//Fim tabelas mysql
39
40//Variaveis
41prontera,115,142,5 script Loteria 1_M_LIBRARYMASTER,{
42
43set @npc$,"^0006D3...:::LOTERIA:::...^000000"; //nome do npc
44set @price,500000; //valor do bilhete
45set @maxApostas,30; //Numero maximo de apostas para cada char
46set @Servidor$,"AegirRO"; //Nome do seu servidor
47if(!$acumulado){ set $premio,10000000;} //se tiver acumulado o valor não é 10kk caso contrário é.
48query_sql "SELECT `bilhete`,`id_b` FROM `loteria_b` WHERE `char_id` = '"+getcharid(0)+"'",.@blot,.@id; //Conta as apostas
49query_sql "SELECT `sorteio` FROM `loteria_s`",.@slot; //consulta numeros do ultimo sorteio
50//Fim variaveis
51
52if($fechado){ //Se estiver em horário de pagamento de ganhadores apostas fechadas de 17 às 23 horas
53mes @npc$;
54mes "Me desculpe!";
55mes "Estamos reorganizando nosso sistema para o proximo sorteio.";
56mes "Volte para fazer apostas às 23 Horas";
57mes "Agradecemos pela preferência.";
58next;
59mes @npc$;
60mes "Gostaria consultar algo?";
61next;
62switch(select("- Ver meus bilhetes","- Ver o resultado,","- Sair")){
63 case 1:
64 goto L_NUMEROS;
65 end;
66 case 2:
67 goto LRS;
68 end;
69 case 3:
70 goto L_FIM;
71 end;
72
73}
74close;
75}
76
77if(getarraysize(.@blot) >= @maxApostas) goto L_INI; //Se o player já tiver feito o max de apostas
78callfunc("bilhete",.@bilhete); //Verifica se já existe os numeros na lista de bilhetes dele.
79query_sql "SELECT `bilhete` FROM `loteria_b` WHERE `char_id` = '"+getcharid(0)+"' and `bilhete` = '"+.@bilhete+"'",.@valida;
80if(.@valida){ //Se já tiver ele vai pedir pra tentar novamente. Não coloquei loop pra evitar travamentos
81mes @npc$;
82mes "Desculpe... Meu iPad Travou.";
83mes "Por favor tente novamente em alguns segundos.";
84close;
85
86}
87
88
89//parte de explicação
90L_INI:
91if(Sex == 1){set .sex$,"o";}else{set .sex$,"a";} //Coloquei esta condição pq meu emuilador não funciona a função strsex()
92mes @npc$;
93mes "Seja bem vind"+.sex$+" Ã Loteria!";
94mes "Eu trabalho na loteria do "+@Servidor$+".";
95mes "Eu faço parte da comissão de apostas,";
96mes "e você pode ficar milhonário em uma jogada só.";
97mes "É assim... Você faz uma aposta e eu lhe dou os números aleatórios gerados";
98mes "no meu iPad, e todos os dias às 17:00 Horas (Brasilia)";
99mes "ocorre o sorteio.";
100mes "Se ninguém ganhar o premio fica acumulado.";
101mes "O prêmio atual está em:";
102mes "^ff0000"+$premio+"^000000 Zenys,";
103mes "Se ninguém ganhar o prêmio será acumulado.";
104mes "Quanto mais acumulado estiver maior será a bolada do ganhador!";
105next;
106//Fim explicação
107
108//Valores
109mes @npc$;
110mes "E ai? Vai arriscar uma apostinha?";
111mes "O valor da aposta é de: "+@price;
112mes "Você pode apostar ^ff0000"+@maxApostas+"^000000 vezes por personagem.";
113next;
114//Fim valores
115
116
117 switch(select("- Vou apostar","- Números do ultimo sorteio","- Deixa pra próxima","- Meus Bilhetes","- Ultimo resultado")){ //Menu principal
118 case 1:
119 if(getarraysize(.@blot) >= @maxApostas) goto L_CHEGA;
120 if(Zeny < @price) goto L_NZ; //Verifica se tem Zenys
121 mes @npc$;
122 mes "Muito bem "+strcharinfo(0)+"!";
123 mes "Estou processando sua aposta aqui no iPad.";
124 next;
125
126 //Gera gera bilhete e conclui a aposta mandando o bilhete pra tabela Mysql
127 set Zeny,Zeny-@price;
128 mes @npc$;
129 mes "Só mais um instante está gerando seu bilhete.";
130 next;
131 mes @npc$;
132 mes "Pronto. Me desculpe a demora.";
133 mes "Este é seu número: ^C4258B"+.@bilhete+"^000000";
134 mes "Se você for ganhador... será anunciado e você tem até 23:00 Horas pra pegar seu prêmio.";
135 mes "Você tambem pode consultar seu bilhete aqui comigo sempre que quizer!";
136 mes "Tchau, até mais";
137 query_sql "INSERT INTO `loteria_b` (`char_id`,`bilhete`,`aposta`) VALUES ('"+getcharid(0)+"','"+.@bilhete+"','"+@price+"')";
138 close;
139 //Fim aposta
140
141 //Consulta ultimo sorteio
142 case 2:
143 if (.@slot == 0) {
144 mes @npc$;
145 mes strcharinfo(0)+".";
146 mes "Não houve sorteio ontem!!!";
147 mes "Sinto muito!";
148 close;
149 }else{
150 mes @npc$;
151 mes strcharinfo(0)+".";
152 mes "Os números do ultimo sorteio são: ^C47030"+.@slot+"^000000";
153 close;
154 }
155 //Fim consulta sorteio
156
157 //Nada
158 case 3:
159 mes @npc$;
160 mes "Ok! "+strcharinfo(0)+"!";
161 mes "Volte quando quizer...";
162 mes "Pense bem. Você pode ser um milhonário rs...";
163 close;
164
165 case 4:
166 goto L_NUMEROS;
167 close2;
168
169 case 5:
170 goto L_LAST;
171 close2;
172 }
173
174
175L_NUMEROS:
176
177 //query para confirmar o premio ao player
178 query_sql "SELECT `bilhete` FROM `loteria_b` WHERE `bilhete` = '"+.@slot+"' and `char_id` = '"+getcharid(0)+"'",.@winner;
179 //query para pegar os nomes nos chares que ganharam
180 if($nameW$ == ""){query_sql "SELECT `name` FROM `char` WHERE `char_id` IN (SELECT `char_id` FROM `loteria_b` WHERE `bilhete` = '"+.@slot+"')",$nameW$;}
181 if(.@winner){
182 set .@LotWon,getarraysize($nameW$);
183 set .@SeuPremio,$premio*getarraysize($nameW$);
184
185 ///Importando seu premio direto para o banco
186 query_sql "UPDATE `account_data` SET `bank_vault` = `bank_vault` + '"+$premio+"' WHERE `account_id` = '"+getcharid(3)+"'";
187
188 //Dados do ganhadores do sorteio
189 mes @npc$;
190 if(.@LotWon > 1){ set .@a1$,"Você foi um dos ganhadores."; }else{ set .@a1$,"Você foi o único ganhador."; }
191 mes .@a1$;
192 mes "Seu prêmio no valor de ^ff0000"+$premio+"^000000";
193 mes "Foi depositado na sua conta bancária.";
194 mes "Verifique seu saldo no BANCO,";
195 mes "E seus bilhetes foram deletados do nosso sistema";
196 mes "Para evitar fraudes";
197 next;
198 mes @npc$;
199 mes "^2EA686LISTA DE GANHADORES^000000";
200 mes "^8A4D29|||^000000 = Nome do ganhador";
201 mes "^FF0000|||^000000 = Valor do prêmio";
202 mes "____________________________";
203 for(set @i,0; @i < .@LotWon; set @i,@i+1)
204 mes "-^8A4D29"+ $nameW$[@i] +"^000000 :^ff0000 "+$premio+"^000000";
205
206 //
207 //mes .@winner;
208 next;
209 mes @npc$;
210 mes "Número de ganhadores: "+.@LotWon;
211 mes "Número sorteado: "+.@slot;
212 mes "Prêmio para cada um dos envolvidos!";
213 mes "z$:^ff0000"+ $premio+"^000000";
214 set $acumulado,0;
215 query_sql "DELETE FROM `loteria_b` WHERE `char_id` = '"+getcharid(0)+"'"; //Deleta o bilhete de quem ja recebeu o premio
216 close;
217 //Fim dos dados do sorteio
218
219 }
220
221 //Se não é ganhador e não está em horario de premiação o player confere os numeros da sua aposta
222 mes @npc$;
223 mes "^C4258B|||^000000 = Números do bilhete.";
224 mes "^FF0000|||^000000 = Código do bilhete.";
225 mes "__________________________";
226 mes "Estes são seus bilhetes.";
227 for(set .@n,0;.@n < getarraysize(.@blot); set .@n,.@n+1 ){
228 set @cod,.@n+1;
229 mes "Bilhete ^ff0000[ "+@cod+" ]^000000 : ^C4258B[ "+.@blot[.@n]+" ]^000000";
230 }
231 close;
232L_NZ:
233 //SEm Zenys
234 mes @npc$;
235 mes "Você não tem Zenys suficiente para apostar.";
236 mes "Volte quando tiver dinheiro!";
237 close;
238
239LRS:
240 query_sql "SELECT `bilhete` FROM `loteria_b` WHERE `bilhete` = '"+.@slot+"' and `char_id` = '"+getcharid(0)+"'",.@winner;
241 if(.@winner){ goto L_NUMEROS; }
242 if($nameW$ == ""){query_sql "SELECT `name` FROM `char` WHERE `char_id` in (SELECT `char_id` FROM `loteria_b` WHERE `bilhete` = '"+.@slot+"')",$nameW$;}
243 query_sql "SELECT `char_id` FROM `loteria_b` WHERE `bilhete`",.@sorteado;
244 if($nameW$ == ""){
245 mes @npc$;
246 mes "^2EA686NÃO HOUVE GANHADORES^000000";
247 mes "O número sorteado foi: ^ff0000"+.@slot+"^000000";
248 mes "O prêmio acumulou para: z$^ff0000"+$premio+"^000000";
249 close;
250 }else{
251 mes @npc$;
252 mes "^2EA686LISTA DE GANHADORES^000000";
253 mes "O número sorteado foi: ^ff0000"+.@slot+"^000000";
254 mes "^8A4D29|||^000000 = Nome do ganhador";
255 mes "^FF0000|||^000000 = Valor do prêmio";
256 mes "____________________________";
257 //mes $nameW$;
258 for(set @i,0; @i < getarraysize($nameW$); set @i,@i+1)
259 mes "-^8A4D29 "+$nameW$[@i]+"^000000 :^ff0000 "+$recebeu+"^000000";
260 close;
261 }
262
263
264L_CHEGA:
265mes @npc$;
266mes "Você já fez ^ff0000"+@maxApostas+"^000000 apostas!!!";
267mes "Acho bom parar por aqui.";
268close;
269
270L_FIM:
271mes @npc$;
272mes "Volte sempre!!!";
273close;
274
275
276L_LAST:
277 if($nameW$ == ""){
278 mes @npc$;
279 mes "^2EA686NÃO HOUVE GANHADORES^000000";
280 mes "O número sorteado foi: ^ff0000"+.@sorteado+"^000000";
281 mes "O prêmio acumulou para: z$^ff0000"+$premio+"^000000";
282 close;
283 }else{
284 mes @npc$;
285 mes "^2EA686LISTA DE GANHADORES^000000";
286 mes "^8A4D29|||^000000 = Nome do ganhador";
287 mes "^FF0000|||^000000 = Valor do prêmio";
288 mes "____________________________";
289 //mes $nameW$;
290 for(set @i,0; @i < getarraysize($nameW$); set @i,@i+1)
291 mes "-^8A4D29 "+$nameW$[@i]+"^000000 :^ff0000 "+$recebeu+"^000000";
292 close;
293 }
294
295}
296
297
298 //Script responsagem pelo sorteio
299- script sorteio -1,{
300
301 OnClock1701:
302 set $recebeu,0;
303 set $nameW$,"";
304 set $fechado,1; //Torna as o periodo de apostas fechado
305 query_sql "DELETE FROM `loteria_s`"; //Delete os numeros do ultimo sorteio
306 callfunc("bilhete",.@resultado); //Chama a função para gerar os numeros do sorteio
307 query_sql "INSERT INTO `loteria_s` (`sorteio`) VALUES ('"+.@resultado+"')"; //Insere os numeros sorteados na tabela
308 announce "[Loteria] : ATENÇÃO! Resultado do sorteio da loteria: "+.@resultado+"!",8; //mensagem Global
309 end;
310
311
312 ///##################################################################################################################
313
314
315 OnClock1702: //Anuncio de ganhadores ou acumulado
316
317 query_sql "SELECT `bilhete` FROM `loteria_b` WHERE `bilhete` IN (SELECT `sorteio` FROM `loteria_s`)",.res; //Pega os bilhetes que não foram deletados (Ganhadores)
318
319 if(.res <= 0){ //Se não tivemrem ganhadores
320 set $premio,$premio*2+500000; //Premio acumulado (Calculo do premio)
321 announce "[Loteria] : Não houve ganhadores desta vêz!!! Prêmio acumulado para "+$premio+"! ",8; //Mensagem global
322 set $acumulado,1; //O premio deixa de ser 10kk
323 end;
324 }
325
326 if(getarraysize(.res) == 1){ //Se tiver um ganhador
327 set $recebeu,$premio;
328 announce "[Loteria] : Meus parabéns. Tivemos [ 1 ] ganhador do prêmio de z$: "+$premio,8; //Mensagem global
329 end;
330 }else if(getarraysize(.res) > 1){ //Se tiverem mais de um ganhador
331 set $premio,$premio/getarraysize(.res); //Divide o premio para os ganhadores
332 announce "[Loteria] : Meus parabéns. Tivemos [ "+getarraysize(.res)+" ] ganhadores! E cada um vai levar z$: "+$premio,8;
333 set $recebeu,$premio;
334 }
335
336
337 ////#################################################################################################################
338
339
340
341
342 OnClock2305: //As 23 horas abrem as apostas e os ganhadores não poderam mais resgatar o prêmio (Perderam o premio!!!)
343 set $fechado,0;
344 query_sql "DELETE FROM `loteria_b`"; //para reiniciar as apostas
345 announce "[Loteria] : A Loteria já está aberta para apostas. Boa Sorte!",8;
346 end;
347
348
349
350
351 ///##################################################################################################################
352
353
354 //Uso restrito Administrador para dar reload no npc // Volta ao premio de 10kk e abre as apostas se tiver fechado
355 //Só use este se tiver certeza do que está fazendo
356 OnWhisperGlobal:
357 if(@whispervar0$ == "reload"){
358 if(getgroupid() <= 80){
359 //if(getgroupid() <= 80){ //Para novas versões do emulador
360 end;
361 }else{
362 set $fechado,0;
363 set $acumulado,0;
364 query_sql "DELETE FROM `loteria_b`";
365 dispbottom "Loteria: Variaveis resetadas!!!";
366 }
367 }
368
369 if(@whispervar0$ == "fechar"){
370 if(getgroupid() <= 80){
371 //if(getgroupid() <= 80){ //Para novas versões do emulador
372 set $fechado,1;
373 dispbottom "Loteria: Loteria fechada!!!";
374 }
375
376 }
377 }
378
379
380//##################################### FUNÇÂO PARA GERAR O BILHETE ############################################
381 ///Ps.: Os números gerados aqui não podem conter zeros e não podem ter digitos repetidos no mesmo numero. Facilitando a vida dos apostadores
382function script bilhete {
383
384set .@lt1,rand(1,9);
385L_1:
386set .@lt2,rand(1,9);
387if(.@lt2 == .@lt1) goto L_1;
388L_2:
389set .@lt3,rand(1,9);
390if((.@lt3 == .@lt1) || (.@lt3 == .@lt2)) goto L_2;
391L_3:
392set .@lt4,rand(1,9);
393if((.@lt4 == .@lt1) || (.@lt4 == .@lt2) || (.@lt4 == .@lt3)) goto L_3;
394
395///################################################################################
396///Se for ativar números de 4 digitos é preciso desativar o de 3 digitos... (Ps.: 4 digitos é bem dificil de ganhar, (Bom para SERVERS Grandes)
397set getarg(0),.@lt1+""+.@lt2+""+.@lt3; //Gera Números de 3 digitos para os bilhetes
398//set getarg(0),.@lt1+""+.@lt2+""+.@lt3+""+.@lt4; //Para ativar Números de 4 Digitos para os bilhetes
399
400return;
401
402}
403
404vip,63,271,5 duplicate(Loteria) Loteria#01 1_M_LIBRARYMASTER