Advertisement
Guest User

Untitled

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