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