Kassio Felix Posted November 23, 2020 Group: Members Topic Count: 8 Topics Per Day: 0.00 Content Count: 20 Reputation: 1 Joined: 10/24/20 Last Seen: November 30, 2020 Share Posted November 23, 2020 (edited) Salve pessoal, estou usando esse npc para adicionar o vip, pois o emulador que estou usando é eAmod com rathena, porem é um emulador antigo e n tem suporte ao sistema vip original do rathena. gostaria de saber, se alguém pode fazer o script de dias vip grats, abaixo segue o sistema que estou usando. Spoiler // ___________________________________________________________________________________ // / \ // | __ __ _____ _ _____ | // | | \/ |_ _| | | __ \ | // | | \ / | | | | | | | | | | // | | |\/| | | | | | | | | | | // | | | | |_| |_| |____| |__| | | // | |_| |_|_____|______|_____/ | // | | // | --------------------------------------------------------------------------------- | // | Name: VIP System ( CONTROL ) | // | --------------------------------------------------------------------------------- | // | Author: mild | // | --------------------------------------------------------------------------------- | // | Description: VIP System ( CONTROL ), | // | add VIP, remove VIP, Add new staff member and other. | // | --------------------------------------------------------------------------------- | // | Changelog: | // | 1.0 Started [mild] | // | 1.1 Added "See members banished" [mild] | // | 1.2 Added "See VIP members" [mild] | // | ALTER TABLE `login` ADD `dayVip` INT(11) NOT NULL DEFAULT '0';// | // \__________________________________________________________________________________/ prontera, 155, 172, 4 script VIP System#script 936,{ // Script's configurations // Script's name set $nScript$, "[ VIP System ]"; // VIP's configurations // Sale of VIP, 30 days. set @dVip1, 30; // Sale of VIP, 15 days. set @dVip2, 15; // Sale of VIP, 5 days. set @dVip3, 5; // Purchase price of the VIP of 30 days. set @pVip1, 20; // Purchase price of the VIP of 15 days. set @pVip2, 10; // Purchase price of the VIP of 5 days. set @pVip3, 5; if ( getgroupid() < 1 ) { mes $nScript$; mes "Você não é VIP, deseja adquirir?"; if (select ("- Yes:- No") == 1) { switch ( select ("- "+@dVip1+" days for ^FF0000"+@pVip1+"^000000 cash.:- "+@dVip2+" days for ^FF0000"+@pVip2+"^000000 cash.:- "+@dVip3+" days for ^FF0000"+@pVip3+"^000000 cash.:- Nothing.") ) { case 1: if (#CASHPOINTS >= @pVip1) { mes $nScript$; mes "Your VIP will be activated."; close2; query_sql ("UPDATE `login` SET `group_id`='1',`dayVip`=`dayVip`+"+@dVip1+" WHERE `account_id`='"+ getcharid(3) +"'"); set #CASHPOINTS,#CASHPOINTS-@pVip1; atcommand "@kick " + strcharinfo(0); end; } next; mes $nScript$; mes "Você não tem ^FF0000"+@pVip1+"^000000 Cash."; close; case 2: if (#CASHPOINTS >= @pVip2) { mes $nScript$; mes "Seu VIP será ativado."; close2; query_sql ("UPDATE `login` SET `group_id`='1',`dayVip`=`dayVip`+"+@dVip2+" WHERE `account_id`='"+ getcharid(3) +"'"); set #CASHPOINTS,#CASHPOINTS-@pVip2; atcommand "@kick " + strcharinfo(0); end; } next; mes $nScript$; mes "Você não tem ^FF0000"+@pVip2+"^000000 Cash."; close; case 3: if (#CASHPOINTS >= @pVip3) { mes $nScript$; mes "Your VIP will be activated."; close2; query_sql ("UPDATE `login` SET `group_id`='1',`dayVip`=`dayVip`+"+@dVip3+" WHERE `account_id`='"+ getcharid(3) +"'"); set #CASHPOINTS,#CASHPOINTS-@pVip3; atcommand "@kick " + strcharinfo(0); end; } next; mes $nScript$; mes "Você não tem ^FF0000"+@pVip3+"^000000 Cash."; close; case 4: mes $nScript$; mes "Okay, vejo você em breve."; close; } } next; mes $nScript$; mes "Okay, vejo você em breve."; close; } else if (getgroupid() == 1) { query_sql ("SELECT `dayVip` FROM `login` WHERE `account_id` = '"+getcharid(3)+"'", @dayVip); mes $nScript$; mes "Olá "+strcharinfo(0); mes "Você tem ^FF0000"+@dayVip+"^000000 dias VIP"; close; } else if ( getgroupid() == 99 ) { mes $nScript$; mes "Olá "+strcharinfo(0)+"."; mes "O que você quer fazer?"; switch ( select ( "- Add VIP.:- Add staff.:- Remove VIP.:- membros VIP:- Banir membro.:- Ver membros banidos.: -Nada." ) ) { case 1: next; mes $nScript$; mes "Digite o login da conta que deseja adicionar dias VIP"; input .@lAccount$; query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+.@lAccount$+"'",.@ExisAccount); if ( .@ExisAccount == 0 ) { next; mes $nScript$; mes "Você não digitou o login correto."; close; } next; mes $nScript$; mes "Agora digite a quantidade de dias que deseja adicionar. "+.@lAccount$+"."; input .@ammouVip; if ( .@ammouVip == 0 ) { next; mes $nScript$; mes "Você digitou uma quantidade inválida."; close; } next; mes $nScript$; mes "Ok, vou adicionar o VIP"; next; mes $nScript$; mes "Pronto, adicionei o VIP na conta ^FF0000"+.@lAccount$+"^000000 - Quantidade ^FF0000"+.@ammouVip+"^000000."; query_sql ("UPDATE `login` SET `group_id`='1',`dayVip`=`dayVip`+"+.@ammouVip+" WHERE `userid`='"+.@lAccount$+"'"); close; case 2: next; mes $nScript$; mes "Escolha a posição que deseja adicionar à conta."; switch ( select ("- Administrator ^CD0000(99)^000000 :- Game Master ^CD0000(60)^000000 :- Game Helper ^CD0000(40)^000000 :- Other :- Nothing") ) { case 1: next; mes $nScript$; mes "Digite a conta de login."; input .@lAccoGM$; query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+.@lAccoGM$+"'",.@NoGM); if ( .@NoGM == 0 ) { next; mes $nScript$; mes "Essa conta não existe."; close; } mes $nScript$; mes "Vou adicionar a posição na conta."; query_sql ("UPDATE `login` SET `group_id`='99' WHERE `userid`='"+.@lAccoGM$+"'"); next; mes $nScript$; mes "Pronto, adicionado!"; close; case 2: next; mes $nScript$; mes "Digite a conta de login."; input .@lAccoGM$; query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+.@lAccoGM$+"'",.@NoGM); if ( .@NoGM == 0 ) { next; mes $nScript$; mes "Essa conta não existe."; close; } mes $nScript$; mes "Vou adicionar a posição na conta."; query_sql ("UPDATE `login` SET `group_id`='60' WHERE `userid`='"+.@lAccoGM$+"'"); next; mes $nScript$; mes "Pronto, adicionado"; close; case 3: next; mes $nScript$; mes "Digite a conta de login."; input .@lAccoGM$; query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+.@lAccoGM$+"'",.@NoGM); if ( .@NoGM == 0 ) { next; mes $nScript$; mes "Essa conta não existe."; close; } mes $nScript$; mes "Vou adicionar a posição na conta."; query_sql ("UPDATE `login` SET `group_id`='40' WHERE `userid`='"+.@lAccoGM$+"'"); next; mes $nScript$; mes "Pronto, adicionado"; close; case 4: next; mes $nScript$; mes "Digite a conta de login."; input .@lAccoGM$; query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+.@lAccoGM$+"'",.@NoGM); if ( .@NoGM == 0 ) { next; mes $nScript$; mes "Essa conta não existe."; close; } mes $nScript$; mes "Agora, adiciona a posição que deseja."; input .@lGroup; next; mes $nScript$; mes "Vou adicionar a posição na conta."; query_sql ("UPDATE `login` SET `group_id`='"+.@lGroup+"' WHERE `userid`='"+.@lAccoGM$+"'"); next; mes $nScript$; mes "Pronto, adicionado."; close; case 5: next; mes $nScript$; mes "Ok, adeus"; close; } case 3: next; mes $nScript$; mes "Deseja remover VIP de alguma conta?"; if ( select ("- Yes.:- No,") == 1 ) { input @AccountBan$; query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+@AccountBan$+"'",.@NoExist); if (!.@NoExist) { next; mes $nScript$; mes "Essa conta não existe."; close; } next; mes $nScript$; mes "Digite a quantidade de dias que deseja remover."; next; input .@QAccountBan; mes $nScript$; mes "Eu vou remover."+.@QAccountBan+" - Account: "+@AccountBan$+"."; next; mes $nScript$; mes "Você tem certeza?"; if ( select ("- Yes:- No") == 1 ) { next; mes $nScript$; mes "Ok, vou remover o VIP."; close2; query_sql ("UPDATE `login` SET `group_id`='1',`dayVip`=`dayVip`-"+.@QAccount+" WHERE `userid`='"+@AccountBan$+"'"); end; } next; mes $nScript$; mes "Okay, Adeus."; close; } next; mes $nScript$; mes "Okay, Adeus."; close; case 4: next; query_sql("SELECT `userid` FROM `login` WHERE `group_id`=1",@nVIPs$); for(set @v, 0; @v < getarraysize(@nVIPs$); set @v, @v+1) { mes @v+" - "+ @nVips$[@v]; } close; case 5: next; mes $nScript$; mes "Deseja banir alguém?"; if ( select ("- Yes.:- No.") == 1 ) { next; mes $nScript$; mes "Digite a conta de login."; next; input @banM$; query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+@banM$+"'",.@NoExis); if ( !.@NoExis ) { next; mes $nScript$; mes "Essa conta não existe."; close; } next; mes $nScript$; mes "Tem certeza que deseja banir "+@banM$+"?"; if ( select ("- Yes:- No") == 1 ) { close2; atcommand "@kick " + @banM$; query_sql ("UPDATE `login` SET `state`='5' WHERE `userid`='"+@BanM$+"'"); end; } next; mes $nScript$; mes "Okay, Adeus."; close; } next; mes $nScript$; mes "Okay, Adeus."; close; case 6: next; query_sql("SELECT `userid` FROM `login` WHERE `state`>=5",@nBan$); for(set @a, 0; @a < getarraysize(@nBan$); set @a, @a+1) { mes @a+" - "+ @nBan$[@a]; } close; case 7: next; mes $nScript$; mes "Okay, Adeus."; close; } } } - script SysVip#clock -1,{ OnClock0001: query_sql ("UPDATE `login` SET `dayVip`=`dayVip`-1 WHERE `group_id`='1'"); end; OnClock0002: query_sql ("UPDATE `login` SET `group_id`='0' WHERE `dayVip`<='0' AND `group_id`='1'"); end; } - script SysVip#onlogin -1,{ OnPCLoginEvent: query_sql ("SELECT `dayVip` FROM `login` WHERE `account_id` = '"+getcharid(3)+"'", .@ReSVIP); if(getgroupid() < 1) { dispbottom "Você não é VIP"; end; } else if (getgroupid() == 1) { dispbottom "Olá "+strcharinfo(0)+" Você tem "+.@ReSVIP+" dias VIP."; end; } else end; } E tenho esse vip grats aqui. porem com outra tabela.... Porem estou com muita dificuldade de fazer ele funcionar... Spoiler //==================================== // ==Aqui a tabela do vip //==ALTER TABLE `login` ADD `diasvip` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0'; //==================================== - script VIPGRATIS -1,{ OnPCLoginEvent: if(#japegou != 1){ mes "Bem-Vindo(a) ao Adventure! "; mes "Você está recebendo agora 7 dias vip gratis.^000000."; mes "Você será desconectado para que a operação tenha efeito. Basta digitar seu Login e sua senha normalmente e continuar a jogar"; close2; query_sql "UPDATE `login` SET `group_id`='1',`diasvip`='5' WHERE `account_id` = '"+ getcharid(3) +"'"; set #japegou,1; atcommand "@kick "+strcharinfo(0); end; }else{ end; } } OnPCLoginEvent: if(getgmlvl () >= 1){ dispbottom "[Controle VIP]: Você ainda tem "+.@diasvip+" dia(s) de VIP."; //======================================== //==Abaixo o controle dos dias vip //======================================== - script contador vip -1,{ OnPCLoginEvent: query_sql "SELECT `diasvip` FROM `login` WHERE `account_id` = '"+ getcharid(3) +"'", .@diasvip; if (.@diasvip > 0) && { dispbottom "[Controle VIP]: Você ainda tem "+.@diasvip+" dia(s) de VIP."; end; }else{ OnPCLoginEvent: query_sql "SELECT `diasvip` FROM `login` WHERE `account_id` = '"+ getcharid(3) +"'", .@diasvip; if (.@diasvip <= 3) { dispbottom "[#ragnaMeta! Controle VIP]: O seu vip está acabando, você só tem mais "+.@diasvip+" dia(s) de VIP."; dispbottom "[#ragnaMeta! Controle VIP]: Acesse ja o site www.ragnaMeta.net e saiba ja como fazer uma doação para continuar utilizando esta conta com os benefícios vip"; end; } OnClock0000: query_sql "UPDATE `login` SET `diasvip`=`diasvip`-1 WHERE `group_id`>='1'"; end; OnClock0000: query_sql "UPDATE `login` SET `group_id`='0' WHERE `diasvip`<='0' AND `group_id`>='1'"; end; } //========================================= Consegui fazer funcionar, mas agradeço se alguém conseguir optimizar esse npc =D Spoiler - script VIPGratis#K-1 -1,{ OnPcLoginEvent: if(GetGmLevel() >= 1) end; if(#vipmake == 0) { mes "Bem-Vindo(a) ao servidor "+strcharinfo(0)+""; mes "Voce acaba de ganhar 7 dias vip grátis."; mes "Re-Logue para que ele seja ativado."; query_sql "UPDATE `login` SET `group_id`='1',`dayVip`='7' WHERE `account_id` = '"+ getcharid(3) +"'"; set #vipmake,1; close; } end; } // Diminuição dos VIPS - script VIPGratis#K-2 -1,{ end; OnClock0001: query_sql "UPDATE `login` SET `dayVip`=`dayVip`-1 WHERE `group_id`='1'"; end; OnClock0002: query_sql "UPDATE `login` SET `group_id`='0' WHERE `dayVip`<='0' AND `group_id`='1'"; end; } // Relógio VIP - script VIPGratis#K-3 -1,{ OnPCLoginEvent: if (getgroupid() < 1 || getgroupid() > 2) end; query_sql "SELECT `dayVip` FROM `login` WHERE `account_id` = '"+ getcharid(3) +"'", @dias; if (@dias[0] <= 5){ dispbottom "[Controle VIP]"; dispbottom "Você só tem "+@dias+" dia(s) de VIP restando,"; dispbottom "Recarregue sua VIP e Ajude o Servidor !!!"; end; } dispbottom "[Controle VIP]"; dispbottom "Você ainda tem "+@dias+" dia(s) de VIP."; end; } Edited November 23, 2020 by Kassio Felix Quote Link to comment Share on other sites More sharing options...
aoshinho Posted February 25, 2023 Group: Members Topic Count: 1 Topics Per Day: 0.00 Content Count: 15 Reputation: 8 Joined: 02/20/23 Last Seen: Thursday at 05:52 PM Share Posted February 25, 2023 (edited) então, com base no seu npc eu criei a versão pro meu emulador tive q trocar a variavel de vip pra vip_time pq é assim q tava no meu sql, em group id o padrao de vip é 5 tbm retirei a variavel no npc e utilizei uma variavel global pra dar o item uma vez por conta, ele também da rédeas e 10 pergaminhos de refino +8 como a base foi toda sua acho justo compartilhar: Quote - script VIPGratis#K-1 -1,{ OnPcLoginEvent: if( !#onetimeitem ){ if(GetGmLevel() >= 1) end; if(#vipmake == 0) { mes "Bem-Vindo(a) ao servidor "+strcharinfo(0)+""; mes "Voce acaba de ganhar 7 dias vip grátis."; mes "Re-Logue para que ele seja ativado."; query_sql "UPDATE `login` SET `group_id`='5',`vip_time`='7' WHERE `account_id` = '"+ getcharid(3) +"'"; set #onetimeitem,1; getitem 12622,1; getitem 6233,10; close; } } end; } // Diminuição dos VIPS - script VIPGratis#K-2 -1,{ end; OnClock0001: query_sql "UPDATE `login` SET `vip_time`=`vip_time`-1 WHERE `group_id`='5'"; end; OnClock0002: query_sql "UPDATE `login` SET `group_id`='0' WHERE `vip_time`<='0' AND `group_id`='5'"; end; } // Relógio VIP - //essa parte não consegui fazer funcionar - script VIPGratis#K-3 -1,{ OnPCLoginEvent: if (getgroupid() > 1 || getgroupid() < 5) end; query_sql "SELECT `vip_time` FROM `login` WHERE `account_id` = '"+ getcharid(3) +"'", @dias; if (@dias[0] <= 5){ dispbottom "[Controle VIP]"; dispbottom "Você só tem "+@dias+" dia(s) de VIP restando,"; dispbottom "Recarregue sua VIP e Ajude o Servidor !!!"; end; } dispbottom "[Controle VIP]"; dispbottom "Você ainda tem "+@dias+" dia(s) de VIP."; end; } Edited February 25, 2023 by aoshinho esqueci de falar que ele dá item, ótimo para npc inicial Quote Link to comment Share on other sites More sharing options...
aoshinho Posted February 26, 2023 Group: Members Topic Count: 1 Topics Per Day: 0.00 Content Count: 15 Reputation: 8 Joined: 02/20/23 Last Seen: Thursday at 05:52 PM Share Posted February 26, 2023 (edited) voltei aqui porque refiz o código com ajuda do ChatGPT e ele fez a gente parecer idiota reduzindo os dias manualmente e simplesmente criou um evento de SQL que faz isso em todo mundo todos os dias kkkkkkkkkk segue código funcional e testado: Quote //===== rAthena Script ======================================= //= Auto SQL VIP //===== By: ================================================== //= AoShinHo + ChatGPT //===== Current Version: ===================================== //= 2.0 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= Um NPC que quando você faz login a primeira vez em uma conta //= free2play te da 15 dias vip, rédeas e 10 pergaminhos de refino +8, //= reduz automaticamente os dias de vip do jogador via SQL e //= quando os dias chegam em 0 ele troca o group_id pra 0 se você não for GM //= através de um evento SQL //= também avisa aos jogadores vip quando o vip deles está acabando //===== Additional Comments: ================================= //= 1.0 revisado para uso geral. [AoShinHo] //= 2.0 adicionado a segunda parte do script que faz o aviso [AoShinHo] //============================================================ /* SQL table DROP TABLE IF EXISTS `daily_vip_update`; CREATE EVENT IF NOT EXISTS `daily_vip_update` ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP ON COMPLETION PRESERVE DO UPDATE `login` SET `vip_time` = GREATEST(`vip_time` - 1, 0), `group_id` = IF(`vip_time` <= 0 AND `group_id` != 99, 0, `group_id`); ) ENGINE=MyISAM; */ - script VIPGratis#K-1 -1,{ OnPcLoginEvent: if (!#onetimeitem) { if (getgroupid(getcharid(3)) <= 5) { mes "[AoShinRO]"; mes "Bem-vindo ao nosso servidor! Aqui está um VIP gratuito para você usar durante 15 dias."; getitem 12622,1; getitem 6233,10; set #onetimeitem,1; query_sql "UPDATE `login` SET `group_id`='5',`vip_time`='15' WHERE `account_id` = '"+ getcharid(3) +"'"; mes "Seu tempo VIP restante é de 15 dias."; close; } } OnInit: end; } - script VIPGratis#K-2 -1,{ OnInit: end; OnPcLoginEvent: set .@char_id, getcharid(3); query_sql( "SELECT `vip_time` FROM `login` WHERE `account_id` = '" + .@char_id + "'", .@vip_time); query_sql( "SELECT `group_id` FROM `login` WHERE `account_id` = '" + .@char_id + "'", .@gm_level); if (.@gm_level == 5 && .@vip_time > 0){ if (.@vip_time <= 5) { mes "[AoShinRO]"; mes "Seu tempo VIP restante é de " + .@vip_time + " dias."; mes "[AoShinRO]"; mes "Considere pagar pelo VIP para ajudar o servidor e desbloquear mais recursos exclusivos."; } else { mes "[AoShinRO]"; mes "Seu tempo VIP restante é de " + .@vip_time + " dias."; } } end; } Edited February 27, 2023 by aoshinho Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.