· 10 years ago · Aug 27, 2016, 09:00 PM
1/*
2 .___ ___. __ __ ___
3 | \/ | | | | |/ /
4 | \ / | | | | ' /
5 | |\/| | | | | <
6 | | | | | | | . \
7 |__| |__| |__| |__|\__\
8
9 = MikVipSystem
10 = by Mikéias
11 = brAthena
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 ] 4_M_05,{
79
80 function EndProcess { if( getarg(0) == "fim" || getarg(0) == "sair" || getarg(0) == "end" ){ close; } return; }
81
82 OnReturnMenu:
83 mes .npcName$;
84 if ( getgroupid() < .LevelGM && !.ActiveBuyDay ){
85 mes "Realize uma doação! Nos ajudará a manter o servidor!";
86 mes " ";
87 mes "Informações: www.ragnatyr.luminushost.com/?module=doa";
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((getgroupid() >= .LevelGM ? "^B00400[GM]^000000 Adicionar VIP":""),
94 (getgroupid() >= .LevelGM ? "^B00400[GM]^000000 Retirar VIP":""),
95 (getgroupid() >= .LevelGM ? "^B00400[GM]^000000 Checar Conta":""),
96 (!.ActiveBuyDay ? "":"- Comprar VIP"),
97 (getgroupid() >= 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 `group_id`='"+$@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 `group_id`='"+$@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 `group_id`='"+$@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 "-> Informações de ^B00400["+.@LOGIN_CHECK$+"]^000000";
240 mes " ";
241 mes "Account ID: "+.@HERE_ACCOUNT_CHECK;
242 if ( .@MINUTOS < 1440){ mes "Minutos: "+.@MINUTOS; }
243 else if ( .@MINUTOS >= 1440){ mes "Dias: "+(.@MINUTOS/24/60); }
244 if (.@CHAR_NAME_CHECK$ == ""){
245 mes "Nenhum personagem encontrado.";
246 close;
247 }
248 mes "-- Personagens Encontrados --";
249 for ( set .@x,0; .@x < getarraysize(.@CHAR_NAME_CHECK$); set .@x, .@x+1 ){
250 mes "[^B00400"+(.@x+1)+"^000000] -> [^B00400"+.@CHAR_NAME_CHECK$[.@x]+"^000000]";
251 }
252 close;
253
254 // DAYS VIP BUYING
255 case 4:
256 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.
257 mes .npcName$;
258 mes "Está querendo ser mais do que um simples jogador comum? Posso te ajudar. Por alguns Cashs eu posso te dá comandos, funções exlusÃvas e muito mais.";
259 mes "^0000FF1 dia VIP ^000000 ~ ^FF0000 "+(.Qpointscash)+" CashPoints^000000";
260 next;
261 mes .npcName$;
262 mes "Seu saldo: ^FF0000 "+(#CASHPOINTS)+" CashPoints^000000";
263 mes " ";
264 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!";
265 for (set .@i, 0; .@i < getarraysize(.Dias); set .@i, .@i + 1){
266 set .@menu$, .@menu$ + "^FF0000"+.Dias[.@i]+"^000000 "+(.Dias[.@i] < 2 ? "dia":"dias")+" vip ~ ^FF0000 "+(.Qpointscash)+"^000000";
267 set .@menu$, .@menu$ + ":";
268 }
269 set .@menu, select (.@menu$);
270 if(#CASHPOINTS < (.Qpointscash*.Dias[.@menu-1])){
271
272 next;
273 mes .npcName$;
274 mes "Desculpe, senhor"+(Sex? "":"a")+". Seu saldo é insuficiente para realizar a compra.";
275 mes " ";
276 mes "Você precisa de ^FF0000"+(.Dias[.@menu-1]*.Qpointscash)+"^000000";
277 close;
278
279 }
280 next;
281 mes .npcName$;
282 mes "Hum. Tem certeza que está fazendo a coisa certa? Não há reembolso.";
283 next;
284 if(select("- Comprar","- Cancelar") == 2){ close; }
285
286 query_sql "SELECT `userid` FROM `login` WHERE `account_id`='"+getcharid(3)+"'",.@USUARIO$;
287 query_sql "SELECT `char_id` FROM `char` WHERE `account_id`='"+getcharid(3)+"'",.@HERE_CHAR_ID;
288 query_sql "SELECT `name` FROM `char` WHERE `char_id`='"+.@HERE_CHAR_ID+"'",.@HERE_CHAR_NAME$;
289 set @ADC_VIP_IN_MINUTES, (1440*.Dias[.@menu-1]);
290 query_sql "SELECT `id_account` FROM `viptable` WHERE `id_account`='"+getcharid(3)+"'",@HERE_CONFERE_ID;
291 set #CASHPOINTS, #CASHPOINTS-(.Qpointscash*.Dias[.@menu-1]);
292
293 if (@HERE_CONFERE_ID == 0)
294 {
295 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')";
296 query_sql "UPDATE `login` SET `group_id`='"+$@LevelPremium+"' WHERE `account_id`='"+getcharid(3)+"'";
297 close2;
298 goto OnAttach2;
299 end;
300 }
301
302 query_sql "UPDATE `viptable` SET `minutos_vip`= minutos_vip +'"+@ADC_VIP_IN_MINUTES+"' WHERE `id_account`='"+getcharid(3)+"'";
303 query_sql "UPDATE `login` SET `group_id`='"+$@LevelPremium+"' WHERE `account_id`='"+getcharid(3)+"'";
304 close2;
305 OnAttach2:
306 if (isloggedin(getcharid(3))){
307 attachrid(getcharid(3));
308 callfunc ("updateStatus",1);
309 atcommand "@adjgmlvl "+$@LevelPremium+" "+strcharinfo(0);
310 message strcharinfo(0), "[ Account Premium Begun ]";
311 dispbottom "Sua conta premium acaba de ser iniciada. Obrigado, "+strcharinfo(0);
312 }
313 detachrid;
314 end;
315
316 case 5:
317
318 query_sql "SELECT userid FROM login WHERE account_id = '"+getcharid(3)+"'", .@LOGIN_ch$;
319 query_sql "SELECT minutos_vip FROM `viptable` WHERE `login`='"+.@LOGIN_ch$+"'", .@MINUTOS;
320 mes .npcName$;
321 mes "Login: "+.@LOGIN_ch$;
322 mes "Status: "+(.@MINUTOS ? "^228B22VIP^000000":"^B00400Normal^000000");
323 mes "Account ID: "+getcharid(3);
324 if ( .@MINUTOS < 1440){
325 mes "Minutos restantes: "+.@MINUTOS;
326 } else {
327 if ( .@MINUTOS >= 1440){
328 mes "Dias restantes: "+(.@MINUTOS/24/60);
329 }
330 }
331 close;
332
333 case 6:
334 close;
335
336 }
337
338 OnInit:
339 // ==================================== CONFIG ====================================
340 // -> Leia com atenção e configure ao seu gosto.
341 set .npcName$, "^B00400[ Premium Account ]^000000"; // <- Nome da Janela de Conversação do NPC.
342 set $@LevelPremium, 1; // <- Level da Account Premium
343 set $@LevelAccountSimple, 0; // <- Level do Account Common
344 set .LevelGM, 99; // <- Level mÃnimo de GM para acessar ao menu
345 set .ActiveBuyDay, 1; // <- Permitir compra de dias vip? 0 = Não / 1 = Sim
346 set .Qpointscash, 600; // <- Quantidade de pontos necessários para comprar 1 dia vip.
347 // ===================================== // =======================================
348 // -- Tabela VIP
349 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;");
350 initnpctimer;
351 end;
352
353
354 // COUNT, REMOVE & DELETE MINUTES VIP.
355 OnTimer60000:
356 stopnpctimer;
357 query_sql "UPDATE `viptable` SET `minutos_vip`=`minutos_vip`-1 WHERE `minutos_vip`>'0' AND online ='1'";
358 sleep2 100;
359 set .@query, query_sql ("SELECT `id_account` FROM `viptable` WHERE `minutos_vip`<='0'",.@HERE_ACCOUNT_REMOVE_VIP);
360 if (getarraysize(.@query)){
361 // REMOVE LEVEL VIP
362 query_sql "UPDATE `login` SET `group_id`='"+$@LevelAccountSimple+"' WHERE `account_id`='"+.@HERE_ACCOUNT_REMOVE_VIP+"'";
363 }
364 // DELETE ACCOUNT WHEN MINUTES <= 0
365 query_sql "DELETE from viptable WHERE minutos_vip<=0";
366 initnpctimer;
367 if ( !getarraysize(.@query) ){ end; }
368
369 for( set .@c,0; .@c < getarraysize(.@HERE_ACCOUNT_REMOVE_VIP); set .@c, .@c+1 ){
370 if (isloggedin(.@HERE_ACCOUNT_REMOVE_VIP[.@c])){
371 attachrid(.@HERE_ACCOUNT_REMOVE_VIP[.@c]);
372
373 atcommand "@adjgmlvl "+$@LevelAccountSimple+" "+strcharinfo(0);
374 message strcharinfo(0), "[ Account Premium Finished ]";
375 dispbottom "Sua conta premium acaba de ser finalizada! Faça uma nova recarga.";
376 }
377 }
378 detachrid;
379}