· 9 years ago · Dec 15, 2016, 01:58 PM
1/*
2 .___ ___. __ __ ___
3 | \/ | | | | |/ /
4 | \ / | | | | ' /
5 | |\/| | | | | <
6 | | | | | | | . \
7 |__| |__| |__| |__|\__\
8
9 = MikVipSystem
10 = by Mikéias
11 = eAthena
12
13-- TABELA PARA O FUNCIONAMENTO DO SCRIPT --
14-- OBS.: A tabela é inserida automáticamente.
15
16CREATE TABLE `viptable` (
17`id_account` int( 11 ) unsigned NOT NULL default '0',
18`login` varchar( 255 ) NOT NULL default '',
19`char_name` varchar( 100 ) NOT NULL default '',
20`minutos_vip` int( 11 ) unsigned NOT NULL default '0',
21`online` tinyint(2) NOT NULL default '0',
22`vipinsert` tinyint(2) NOT NULL default '0',
23PRIMARY KEY ( `id_account` )
24) ENGINE=MyISAM;
25
26*/
27
28function script updateStatus {
29 query_sql "UPDATE `viptable` SET `online`='"+getarg(0)+"' WHERE `id_account`='"+getcharid(3)+"'";
30 return;
31}
32
33
34// -> PCCommands
35- script PremiumEvent -1,{
36
37 // LOGOU --
38 OnPCLoginEvent:
39 query_sql "SELECT `vipinsert` FROM `viptable` WHERE `id_account`='"+getcharid(3)+"'",.@HERE_VIPINSERT;
40
41 if ( .@HERE_VIPINSERT ){
42
43 mes "^B00400[ Premium Account ]^000000";
44 mes "Olá, "+strcharinfo(0);
45 mes "Obrigado por sua recarga em nosso servidor. Sua conta premium está atÃva, bom jogo!";
46 query_sql "UPDATE `viptable` SET `vipinsert`='0' WHERE `id_account` ='"+getcharid(3)+"'";
47 atcommand "@adjgmlvl "+$@LevelPremium+" "+strcharinfo(0);
48 close2;
49
50 }
51
52 query_sql "SELECT `minutos_vip` FROM `viptable` WHERE `id_account`='"+getcharid(3)+"'", @MIN;
53 if ( @MIN ){
54 callfunc ("updateStatus",1);
55 if ( (@MIN/24/60) < 1){
56 set .@MOSTRE, @MIN;
57 dispbottom "Você só tem ["+.@MOSTRE+"] "+(.@MOSTRE < 2 ? "minuto":"minutos")+" Premium!";
58 }
59 else {
60 set .@MOSTRE, (@MIN/24/60);
61 dispbottom "Você tem ["+.@MOSTRE+"] "+(.@MOSTRE < 2 ? "dia":"dias")+" Premium!";
62 }
63
64 }
65 end;
66
67 // DESLOGOU --
68 OnPCLogoutEvent:
69 query_sql "SELECT `minutos_vip` FROM `viptable` WHERE `id_account`='"+getcharid(3)+"'", @MIN;
70 if ( @MIN ){
71 callfunc ("updateStatus",0);
72 }
73 end;
74
75}
76
77
78prontera,160,215,3 script [ Premium Account ] 712,{
79
80 function EndProcess { if( getarg(0) == "fim" || getarg(0) == "sair" || getarg(0) == "end" ){ close; } return; }
81
82 OnReturnMenu:
83 mes .npcName$;
84 if ( getgmlevel() < .LevelGM && !.ActiveBuyDay ){
85 mes "Realize uma doação! Nos ajudará a manter o servidor!";
86 mes " ";
87 mes "Informações: www.seuwebsite.com/doacoes";
88 close;
89 }
90 mes "Oii. ~! Veio me procurar por que está interessado no Vip?";
91 mes "Dê uma olhada sem compromisso.";
92 next;
93 switch(select((getgmlevel() >= .LevelGM ? "^B00400[GM]^000000 Adicionar VIP":""),
94 (getgmlevel() >= .LevelGM ? "^B00400[GM]^000000 Retirar VIP":""),
95 (getgmlevel() >= .LevelGM ? "^B00400[GM]^000000 Checar Conta":""),
96 (!.ActiveBuyDay ? "":"- Comprar VIP"),
97 (getgmlevel() >= 1 ? "- Informações VIP":""),"- Cancelar")){
98
99
100 // ADD VIP
101 case 1:
102 OnReturnMenu2:
103 mes .npcName$;
104 mes "Por favor, informe o usuário:";
105 next;
106 input .@USUARIO_FOR_VIP$;
107 EndProcess(.@USUARIO_FOR_VIP$);
108 query_sql "SELECT `account_id` FROM `login` WHERE `userid`='"+.@USUARIO_FOR_VIP$+"'",.@HERE_ACCOUNT_ID;
109 if (!getarraysize(.@HERE_ACCOUNT_ID)){ goto OnReturnMenu2; }
110 next;
111 mes .npcName$;
112 mes "Por favor, informe a quantidade de dias VIP:";
113 next;
114 input .@QUANTY_VIP_IN_DAYS;
115 if ( !.@QUANTY_VIP_IN_DAYS ){ goto OnReturnMenu; }
116 next;
117 mes .npcName$;
118 mes "Tem certeza que deseja adicionar ["+.@QUANTY_VIP_IN_DAYS+"] "+(.@QUANTY_VIP_IN_DAYS < 2 ? "dia":"dias")+" premium?";
119 if(select("- Cancelar","- Adicionar") == 1){ close; }
120 close2;
121 message strcharinfo(0), "[ Account Premium Insertted ]";
122 query_sql "SELECT `account_id` FROM `login` WHERE `userid`='"+.@USUARIO_FOR_VIP$+"'",.@HERE_ACCOUNT_ID;
123 query_sql "SELECT `char_id` FROM `char` WHERE `account_id`='"+.@HERE_ACCOUNT_ID+"'",.@HERE_CHAR_ID;
124 query_sql "SELECT `name` FROM `char` WHERE `char_id`='"+.@HERE_CHAR_ID+"'",.@HERE_CHAR_NAME$;
125 set @ADC_VIP_IN_MINUTES, (1440*.@QUANTY_VIP_IN_DAYS);
126 query_sql "SELECT `id_account` FROM `viptable` WHERE `id_account`='"+.@HERE_ACCOUNT_ID+"'",@HERE_CONFERE_ID;
127
128 if (@HERE_CONFERE_ID == 0)
129 {
130 query_sql "INSERT INTO `viptable` ( `id_account`, `login`, `char_name`, `minutos_vip`, `online`, `vipinsert`) VALUES ( '"+.@HERE_ACCOUNT_ID+"', '"+.@USUARIO_FOR_VIP$+"', '"+.@HERE_CHAR_NAME$+"', '"+@ADC_VIP_IN_MINUTES+"', '0', '1')";
131 query_sql "UPDATE `login` SET `level`='"+$@LevelPremium+"' WHERE `account_id`='"+.@HERE_ACCOUNT_ID+"'";
132 goto OnAttach;
133 end;
134 }
135
136 query_sql "UPDATE `viptable` SET `minutos_vip`= minutos_vip +'"+@ADC_VIP_IN_MINUTES+"' WHERE `id_account`='"+.@HERE_ACCOUNT_ID+"'";
137 query_sql "UPDATE `login` SET `level`='"+$@LevelPremium+"' WHERE `account_id`='"+.@HERE_ACCOUNT_ID+"'";
138
139 OnAttach:
140 if (isloggedin(.@HERE_ACCOUNT_ID)){
141 attachrid(.@HERE_ACCOUNT_ID);
142 query_sql "UPDATE `viptable` SET `vipinsert`='0' WHERE `id_account`='"+.@HERE_ACCOUNT_ID+"'";
143 callfunc ("updateStatus",1);
144 atcommand "@adjgmlvl "+$@LevelPremium+" "+strcharinfo(0);
145 message strcharinfo(0), "[ Account Premium Begun ]";
146 dispbottom "Sua conta premium acaba de ser iniciada. Obrigado, "+strcharinfo(0);
147 }
148 detachrid;
149 end;
150
151 // REMOVE VIP
152 case 2:
153 OnReturnMenu3:
154 mes .npcName$;
155 mes "Por favor, informe o usuário:";
156 next;
157 input .@USUARIO_RET_VIP$;
158 EndProcess(.@USUARIO_RET_VIP$);
159 query_sql "SELECT `id_account` FROM `viptable` WHERE `login`='"+.@USUARIO_RET_VIP$+"'",.@HERE_ACCOUNT_ID_RET;
160 if(!getarraysize(.@HERE_ACCOUNT_ID_RET)){
161
162 mes .npcName$;
163 mes "Esta conta não possui VIP!";
164 close;
165 }
166 query_sql "SELECT `minutos_vip` FROM `viptable` WHERE `id_account`='"+.@HERE_ACCOUNT_ID_RET+"'", .@minutes;
167 mes .npcName$;
168 mes "Esta conta possui ^B00400["+.@minutes+"]^000000 minutos!";
169 mes "Como proceder?";
170 next;
171 switch(select("- Retirar alguns minutos","- Retirar todos os minutos")){
172
173 case 1:
174 mes .npcName$;
175 mes "Quantos minutos você deseja retirar dessa conta?";
176 next;
177 input .@remove_minutes;
178 mes .npcName$;
179 mes "Você está ciênte disto?";
180 if(select("- Não:- Sim") == 1 ){ close; }
181 next;
182 query_sql "UPDATE `viptable` SET `minutos_vip` = `minutos_vip`-"+.@remove_minutes+" WHERE `id_account`="+.@HERE_ACCOUNT_ID_RET;
183 mes .npcName$;
184 mes "Foram retirados ["+.@remove_minutes+"] minutos VIP da conta ["+.@USUARIO_RET_VIP$+"]";
185 close2;
186 if (isloggedin(.@HERE_ACCOUNT_ID_RET)){
187 attachrid(.@HERE_ACCOUNT_ID_RET);
188
189 if ( .@minutes == .@remove_minutes ){ goto RetAllMinutes; }
190
191 }
192 detachrid;
193 break;
194
195 case 2:
196 mes .npcName$;
197 mes "Você está ciênte disto?";
198 if(select("- Não:- Sim") == 1 ){ close; }
199 next;
200 query_sql "UPDATE `login` SET `level`='"+$@LevelAccountSimple+"' WHERE `account_id`='"+.@HERE_ACCOUNT_ID_RET+"'";
201 query_sql "DELETE from viptable where id_account='"+.@HERE_ACCOUNT_ID_RET+"'";
202 mes .npcName$;
203 mes "Foram retirados ["+.@minutes+"] minutos VIP da conta ["+.@USUARIO_RET_VIP$+"]";
204 close2;
205 RetAllMinutes:
206 if (isloggedin(.@HERE_ACCOUNT_ID_RET)){
207 attachrid(.@HERE_ACCOUNT_ID_RET);
208 atcommand "@adjgmlvl "+$@LevelAccountSimple+" "+strcharinfo(0);
209 message strcharinfo(0), "[ Account Premium Finished ]";
210 dispbottom "Sua conta premium acaba de ser finalizada! Faça uma nova recarga.";
211 }
212 detachrid;
213 break;
214
215 case 3:
216 close;
217 }
218 end;
219
220
221 // CHECK ACCOUNT VIP
222 case 3:
223 OnReturnMenu4:
224 mes .npcName$;
225 mes "Por favor, informe o usário:";
226 next;
227 input .@LOGIN_CHECK$;
228 EndProcess(.@LOGIN_CHECK$);
229 query_sql "SELECT `id_account` FROM `viptable` WHERE `login`='"+.@LOGIN_CHECK$+"'",.@HERE_ACCOUNT_ID;
230 if (!getarraysize(.@HERE_ACCOUNT_ID)){
231 mes .npcName$;
232 mes "Conta inexistente no Sistema VIP.";
233 next;
234 goto OnReturnMenu4;
235 }
236 query_sql "SELECT id_account,minutos_vip FROM `viptable` WHERE `login`='"+.@LOGIN_CHECK$+"'",.@HERE_ACCOUNT_CHECK , .@MINUTOS;
237 query_sql "SELECT `name` FROM `char` WHERE `account_id`='"+.@HERE_ACCOUNT_CHECK+"'",.@CHAR_NAME_CHECK$;
238 mes .npcName$;
239 mes " ";
240 mes "Informações:";
241 mes "Login: "+.@LOGIN_CHECK$+"";
242 mes "Account ID: "+.@HERE_ACCOUNT_CHECK;
243 if ( .@MINUTOS < 1440){ mes "Minutos: "+.@MINUTOS; }
244 else if ( .@MINUTOS >= 1440){ mes "Dias: "+(.@MINUTOS/24/60); }
245 if (.@CHAR_NAME_CHECK$ == ""){
246 mes "Nenhum personagem encontrado.";
247 close;
248 }
249 mes " ";
250 mes "Personagens:";
251 for ( set .@x,0; .@x < getarraysize(.@CHAR_NAME_CHECK$); set .@x, .@x+1 ){
252 mes ""+(.@x+1)+" - "+.@CHAR_NAME_CHECK$[.@x]+"";
253 }
254 close;
255
256 // DAYS VIP BUYING
257 /*case 4:
258 setarray .Dias[0], 1, 15, 30; // <- DIAS POSSÃVEIS PARA SE COMPRAR VIP. Ex: 1, 2, 3, 4, 5, ou seja, posso comprar até 5 dias VIP.
259 mes .npcName$;
260 mes "Está querendo ser mais do que um simples jogador comum? Posso te ajudar. Por alguns reais eu posso te dá comandos, funções exlusÃvas e muito mais.";
261 mes "^0000FF1 dia VIP ^000000 ~ ^FF0000R$ "+(.Qpointscash/1000)+",00^000000";
262 next;
263 mes .npcName$;
264 mes "Seu saldo: ^FF0000R$ "+(#CASHPOINTS/1000)+",00^000000.";
265 mes " ";
266 mes "Se você não quer desembolsar muito dinheiro, tenho "+getarraysize(.Dias)+" opções para você. Escolha a opção que cabe em seu bolso!";
267 for (set .@i, 0; .@i < getarraysize(.Dias); set .@i, .@i + 1){
268 set .@menu$, .@menu$ + "^FF0000"+.Dias[.@i]+"^000000 "+(.Dias[.@i] < 2 ? "dia":"dias")+" vip ~ ^FF0000R$ "+(.Dias[.@i]*.Qpointscash/.Qpointscash)+",00^000000";
269 set .@menu$, .@menu$ + ":";
270 }
271 set .@menu, select (.@menu$);
272 if(#CASHPOINTS < (.Qpointscash*.Dias[.@menu-1])){
273
274 next;
275 mes .npcName$;
276 mes "Desculpe, senhor"+(Sex? "":"a")+". Seu saldo é insuficiente para realizar a compra.";
277 mes " ";
278 mes "Você precisa de ^FF0000R$"+(.Dias[.@menu-1]*.Qpointscash)/.Qpointscash+",00^000000.";
279 close;
280
281 }
282 next;
283 mes .npcName$;
284 mes "Hum. Tem certeza que está fazendo a coisa certa? Não há reembolso.";
285 next;
286 if(select("- Comprar","- Cancelar") == 2){ close; }
287
288 query_sql "SELECT `userid` FROM `login` WHERE `account_id`='"+getcharid(3)+"'",.@USUARIO$;
289 query_sql "SELECT `char_id` FROM `char` WHERE `account_id`='"+getcharid(3)+"'",.@HERE_CHAR_ID;
290 query_sql "SELECT `name` FROM `char` WHERE `char_id`='"+.@HERE_CHAR_ID+"'",.@HERE_CHAR_NAME$;
291 set @ADC_VIP_IN_MINUTES, (1440*.Dias[.@menu-1]);
292 query_sql "SELECT `id_account` FROM `viptable` WHERE `id_account`='"+getcharid(3)+"'",@HERE_CONFERE_ID;
293 set #CASHPOINTS, #CASHPOINTS-(.Qpointscash*.Dias[.@menu-1]);
294
295 if (@HERE_CONFERE_ID == 0)
296 {
297 query_sql "INSERT INTO `viptable` ( `id_account`, `login`, `char_name`, `minutos_vip`, `online`, `vipinsert`) VALUES ( '"+getcharid(3)+"', '"+.@USUARIO$+"', '"+.@HERE_CHAR_NAME$+"', '"+@ADC_VIP_IN_MINUTES+"', '0', '0')";
298 query_sql "UPDATE `login` SET `level`='"+$@LevelPremium+"' WHERE `account_id`='"+getcharid(3)+"'";
299 close2;
300 goto OnAttach2;
301 end;
302 }
303
304 query_sql "UPDATE `viptable` SET `minutos_vip`= minutos_vip +'"+@ADC_VIP_IN_MINUTES+"' WHERE `id_account`='"+getcharid(3)+"'";
305 query_sql "UPDATE `login` SET `level`='"+$@LevelPremium+"' WHERE `account_id`='"+getcharid(3)+"'";
306 close2;
307 OnAttach2:
308 if (isloggedin(getcharid(3))){
309 attachrid(getcharid(3));
310 callfunc ("updateStatus",1);
311 atcommand "@adjgmlvl "+$@LevelPremium+" "+strcharinfo(0);
312 message strcharinfo(0), "[ Account Premium Begun ]";
313 dispbottom "Sua conta premium acaba de ser iniciada. Obrigado, "+strcharinfo(0);
314 }
315 detachrid;
316 end;*/
317
318 case 5:
319
320 query_sql "SELECT userid FROM login WHERE account_id = '"+getcharid(3)+"'", .@LOGIN_ch$;
321 query_sql "SELECT minutos_vip FROM `viptable` WHERE `login`='"+.@LOGIN_ch$+"'", .@MINUTOS;
322 mes .npcName$;
323 mes "Login: "+.@LOGIN_ch$;
324 mes "Status: "+(.@MINUTOS ? "^228B22VIP^000000":"^B00400Normal^000000");
325 mes "Account ID: "+getcharid(3);
326 if ( .@MINUTOS < 1440){
327 mes "Minutos restantes: "+.@MINUTOS;
328 } else {
329 if ( .@MINUTOS >= 1440){
330 mes "Dias restantes: "+(.@MINUTOS/24/60);
331 }
332 }
333 close;
334
335 case 6:
336 close;
337
338 }
339
340 OnInit:
341 // ==================================== CONFIG ====================================
342 // -> Leia com atenção e configure ao seu gosto.
343 set .npcName$,"^B00400[ Premium Account ]^000000"; // <- Nome da Janela de Conversação do NPC.
344 set $@LevelPremium,1; // <- Level da Account Premium
345 set $@LevelAccountSimple,0; // <- Level do Account Common
346 set .LevelGM,99; // <- Level mÃnimo de GM para acessar ao menu
347 set .ActiveBuyDay,0; // <- Permitir compra de dias vip? 0 = Não / 1 = Sim
348 set .Qpointscash,1000; // <- Quantidade de pontos necessários para comprar 1 dia vip.
349 // ===================================== // =======================================
350 // -- Tabela VIP
351 query_sql ("CREATE TABLE IF NOT EXISTS `viptable` (`id_account` int( 11 ) unsigned NOT NULL default '0',`login` varchar( 255 ) NOT NULL default '',`char_name` varchar( 100 ) NOT NULL default '',`minutos_vip` int( 11 ) unsigned NOT NULL default '0',`online` tinyint(2) NOT NULL default '0',`vipinsert` tinyint(2) NOT NULL default '0',PRIMARY KEY ( `id_account` )) ENGINE=MyISAM;");
352 initnpctimer;
353 end;
354
355
356 // COUNT, REMOVE & DELETE MINUTES VIP.
357 OnTimer60000:
358 stopnpctimer;
359 query_sql "UPDATE `viptable` SET `minutos_vip`=`minutos_vip`-1 WHERE `minutos_vip`>'0' AND online ='1'";
360 sleep2 100;
361 set .@query, query_sql ("SELECT `id_account` FROM `viptable` WHERE `minutos_vip`<='0'",.@HERE_ACCOUNT_REMOVE_VIP);
362 if (getarraysize(.@query)){
363 // REMOVE LEVEL VIP
364 query_sql "UPDATE `login` SET `level`='"+$@LevelAccountSimple+"' WHERE `account_id`='"+.@HERE_ACCOUNT_REMOVE_VIP+"'";
365 }
366 // DELETE ACCOUNT WHEN MINUTES <= 0
367 query_sql "DELETE from viptable WHERE minutos_vip<=0";
368 initnpctimer;
369 if ( !getarraysize(.@query) ){ end; }
370
371 for( set .@c,0; .@c < getarraysize(.@HERE_ACCOUNT_REMOVE_VIP); set .@c, .@c+1 ){
372 if (isloggedin(.@HERE_ACCOUNT_REMOVE_VIP[.@c])){
373 attachrid(.@HERE_ACCOUNT_REMOVE_VIP[.@c]);
374
375 atcommand "@adjgmlvl "+$@LevelAccountSimple+" "+strcharinfo(0);
376 message strcharinfo(0), "[ Account Premium Finished ]";
377 dispbottom "Sua conta premium acaba de ser finalizada! Faça uma nova recarga.";
378 }
379 }
380 detachrid;
381}