

Racaae
Members-
Posts
250 -
Joined
-
Last visited
-
Days Won
41
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Racaae
-
Vai em src/config/core.h, ache essa parte e tira os // da segunda linha. Recompila o servidor, VIP ativado. /// Uncomment to enable VIP system. //#define VIP_ENABLE conf/login_athena.conf, acha essa parte e muda o 5 para 1. // Which group (ID) will be denoted as the VIP group? // Default: 5 vip_group: 5 Em conf/battle/player.conf tem algumas opções de configuração do vip. Por exemplo: rate de EXP e drop, aumentar limite do armazém. Em conf/groups.conf você configura os comandos e algumas outras coisas disponíveis para os VIPs. Em conf/login_athena.conf também dá para aumentar o número de personagens máximo em contas VIP.
-
Boa noite. Sim, é possível criar um NPC que pede um item em troca de algo. Aí depende do seu sistema VIP se é fácil de criar isso ou não. Aqui tem um exemplo de um NPC que faz exatamente isso, usando o vip oficial do rAthena. prontera,159,170,3 script Moça do VIP 4_F_KAFRA1,{ mes "[" + strnpcinfo(1) + "]"; if (vip_status(VIP_STATUS_ACTIVE)) mes "Olá, você já é VIP."; else { mes "Olá, quer se tornar VIP? São vários benefícios!"; mes "Escolha quanto tempo você quer contratar."; next; for( .@i = 0; .@i < getarraysize( .day ); .@i++ ) .@menu$ += (.day[.@i] + " dia(s):"); .@i = select(.@menu$) - 1; mes "[" + strnpcinfo(1) + "]"; mes "O custo de "+.day[.@i]+" dia(s) de VIP é:"; if (.cash_cost[.@i]) mes "- " + callfunc("F_InsertComma",.cash_cost[.@i]) + " CASH"; if (.cash_cost[.@i] && .item_qtd[.@i]) mes "ou"; if (.item_qtd[.@i]) mes "- " + .item_qtd[.@i]+"x <ITEM>" + getitemname( .item_id ) + "<INFO>" + .item_id + "</INFO></ITEM>"; if (.zeny_cost[.@i] && .item_qtd[.@i] || .cash_cost[.@i] && .zeny_cost[.@i]) mes "ou"; if (.zeny_cost[.@i]) mes "- " + callfunc("F_InsertComma",.zeny_cost[.@i]) + "z"; next; .@menu$ = ""; if (.cash_cost[.@i]) .@menu$ += "Pagar com CASH"; .@menu$ += ":"; if (.item_qtd[.@i]) .@menu$ += "Pagar com "+getitemname(.item_id); .@menu$ += ":"; if (.zeny_cost[.@i]) .@menu$ += "Pagar com zeny"; switch(select(.@menu$ + ":Deixa pra lá.")) { case 1: mes "[" + strnpcinfo(1) + "]"; if ( #CASHPOINTS < .cash_cost[.@i] ) { mes "Você não tem CASH suficiente."; } else { #CASHPOINTS -= .cash_cost[.@i]; vip_time ( .day[.@i] * 1440 ); mes "VIP adquirido com sucesso!"; mes "Você pode usar o comando ^00FF00@tempovip^000000 para ver a duração do seu VIP."; } break; case 2: mes "[" + strnpcinfo(1) + "]"; if ( countitem( .item_id ) < .item_qtd[.@i] ) { mes getitemname( .item_id ) + " insuficiente."; } else { delitem .item_id, .item_qtd[.@i]; vip_time ( .day[.@i] * 1440 ); mes "VIP adquirido com sucesso!"; mes "Você pode usar o comando ^00FF00@tempovip^000000 para ver a duração do seu VIP."; } break; case 3: mes "[" + strnpcinfo(1) + "]"; if ( Zeny < .zeny_cost[.@i] ) { mes "Você não tem Zeny suficiente."; } else { Zeny -= .zeny_cost[.@i]; vip_time ( .day[.@i] * 1440 ); mes "VIP adquirido com sucesso!"; mes "Você pode usar o comando ^00FF00@tempovip^000000 para ver a duração do seu VIP."; } break; case 4: mes "[" + strnpcinfo(1) + "]"; mes "Até mais."; } } close; OnCheck: if (vip_status(VIP_STATUS_ACTIVE)) dispbottom "SISTEMA: Você é VIP até "+ gettimestr("%d/%m/%Y %H:%M",21,vip_status(VIP_STATUS_EXPIRE)); else dispbottom "SISTEMA: Você não é VIP."; end; OnInit: //== CONFIGURAÇÕES ================== setarray .day,7,14,30; //Opções de dias de VIP //setarray .cash_cost,4000,7000,10000; //Custo em Cash de cada opção (use // para desabilitar CASH) //setarray .zeny_cost,10000000,15000000,30000000; //Custo em Zeny de cada opção (use // para desabilitar Zeny) .item_id = 7929; //ID do item usado para troca setarray .item_qtd,3,5,10; //Custo (em item) para cada opção de tempo (use // para desabilitar item) //=================================== bindatcmd("tempovip", strnpcinfo(3)+"::OnCheck"); end; } O refinador 100% é mais simples que os refinadores comuns já que não tem nenhuma chance de falha. Aqui vai o exemplo: prontera,161,170,3 script Refinador Barra Pesada 4_M_REPAIR,{ disable_items; mes "[" + strnpcinfo(1) + "]"; mes "Olá! Eu aceito CASH para refinar seus equipamentos com 100% de chance de sucesso!"; next; if(select("Informações.:Refinar.") == 1) { mes "[" + strnpcinfo(1) + "]"; mes "Eu refino equipamentos ^0000FFaté o nível " + .max + "^000000. O valor em CASH que eu peço depende do nível do equipamento."; mes "Você pode ver a tabela com os preços abaixo."; next; mes "[TABELA DE PREÇOS]"; for( .@i = 0; .@i < .max; .@i++ ) mes "+" + .@i + ">+" + (.@i+1) + " - " + callfunc("F_InsertComma", .cost[.@i]) + " CASH"; close; } mes "[" + strnpcinfo(1) + "]"; mes "Já estou animado!"; mes "Que equipamento você quer refinar?"; next; setarray .@position$[1],"Topo","Armadura","Mão esquerda","Mão direita","Capa","Sapatos","Acessório 1","Acesório 2","Cabeça meio","Cabeça baixo"; setarray .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW; for(set .@i,1; .@i<=10; set .@i,.@i+1) set .@menu$, .@menu$+((getequipisequiped(.@indices[.@i]))?"+"+getequiprefinerycnt(.@indices[.@i])+" "+getequipname(.@indices[.@i]):.@position$[.@i]+"- [VAZIO]")+":"; set .@part, .@indices[ select(.@menu$) ]; if (!getequipisequiped(.@part)) { mes "[" + strnpcinfo(1) + "]"; mes "Você deve equipar o item que quer refinar."; close; } if (!getequipisenableref(.@part)) { emotion ET_OTL; mes "[" + strnpcinfo(1) + "]"; mes "Me desculpe."; mes "É impossível refinar esse item."; close; } .@item_refine = getequiprefinerycnt(.@part); //save refinery count if (getequiprefinerycnt(.@part) >= .max) { emotion ET_PROFUSELY_SWEAT; mes "[" + strnpcinfo(1) + "]"; mes "Esse item já é poderoso demais até para mim. É melhor deixar para lá."; close; } mes "[" + strnpcinfo(1) + "]"; mes "Refinar ^006400"+getequipname(.@part)+"^8B4513 vai custar " + callfunc("F_InsertComma", .cost[.@item_refine]) + " CASH."; mes "Devo continuar?"; next; if(select("Não.:Sim.") == 1) { emotion ET_THINK; mes "[" + strnpcinfo(1) + "]"; mes "Oh, você mudou de ideia."; mes "Ok."; mes "Você pode voltar depois."; close; } if (#CASHPOINTS < .cost[.@item_refine]) { mes "[" + strnpcinfo(1) + "]"; mes "Você não tem CASH suficiente."; close; } mes "[" + strnpcinfo(1) + "]"; mes "Ótimo."; mes "Como desejar!"; mes "Eu tenho um jeito especial para refinar..."; mes ".......ka boom!"; specialeffect EF_SUI_EXPLOSION; #CASHPOINTS -= .cost[.@item_refine]; successrefitem .@part; next; emotion ET_DELIGHT; mes "[" + strnpcinfo(1) + "]"; mes "Certo, aqui está~"; mes "Adeus~!"; close; OnInit: //== CONFIGURAÇÕES ================== .max = 15; //refino máximo //custo de cada nv de refinamento setarray .cost,100,100,100,100,500,1000,2000,4000,5000,6000,10000,18000,19000,20000,21000,22000,40000,50000,70000,100000; //=================================== end; }
-
Gold room error and adding limit for 300mins
Racaae replied to Petey Pablo's question in Scripting Support
Hi. Add this after input .@value,0,#GOLDPOINTS; if (.@value == 0) { mes "Exchange canceled."; close; } -
Isso vai de script para script. Você tem que entender como o ranking do script funciona, ou pode compartilhar aqui para eu ver se acho.
-
Maybe the account you are using is of lowel level. set $VIPs_AdminGmLevel,99; Find this line and change the 99 to the level of your account.
-
The menu works just fine here. Did you whisper to "npc:vipsystem8806azwan"?
-
Hi. I didn't test much. The command is @reward.
-
} else if (getskilllv("GD_APPROVAL") != 1) { mes "Official Guild Approval required to enter."; }
- 1 reply
-
- 1
-
-
Here's the full script, try it out.
-
Boa noite, você pode usar o comando hateffect. Ele coloca um efeito continuo no personagem. Exemplo: OnPCLoginEvent: if (verifique aqui se o personagem é o líder do pvp) hateffect(HAT_EF_LEVEL99_SUN_ORANGE, true); end; Nesse exemplo, o efeito LEVEL99_SUN_ORANGE é ativado na hora que o boneco loga. Tem várias "auras" como opção. Você pode ver a lista em src/map/script_constants.hpp
-
Hi. The variables need to be set when the server starts, so you need to add OnInit before the confs and end after. Like this: OnInit: //**************** VIP SYSTEM CONFIGURATION ************************* set $VIPs_SilverAccLevel,1; // Account Level assigned for VIP Silver * set $VIPs_GoldAccLevel,2; // Account Level assigned for VIP Gold * set $VIPs_PlatinumAccLevel,3; // Account Level assigned for VIP Platinum * set $VIPs_SilverExpRate,50; // VIP Silver Exp Boost in % ( 1 = 1% ) * set $VIPs_GoldExpRate,100; // VIP Gold Exp Boost in % ( 1 = 1% ) * set $VIPs_PlatinumExpRate,200000; // VIP Platinum Exp Boost in % ( 1 = 1% ) * set $VIPs_SilverItemRate,10; // VIP Silver Item Drop Boost in % ( 1 = 1% ) * set $VIPs_GoldItemRate,20; // VIP Gold Item Drop Boost in % ( 1 = 1% ) * set $VIPs_PlatinumItemRate,30; // VIP Platinum Item Drop Boost in % ( 1 = 1%)* set $VIPs_AdminGmLevel,99; // Define GM Level enabled to add, list and * // remove VIP entries. Any GM with access le- * // vel equal or higher than this will be able * // to manage VIP Accounts. * // ******************************************************************** end;
-
Hi. You can put this before the autoreset so it goes automatically. I did not test. query_sql "SELECT * FROM ladder_mvp ORDER BY kills DESC LIMIT 1", .@charid, .@name$, .@kill; .@sender$ = "GM Team"; .@title$ = "Top MvP Prize"; .@body$ = "Congratulations " + .@name$ + "! You are the top ranker with " + .@kill + " kills!"; .@zeny = 0; setarray .@mailitem[0], 504, 505; // White Potion, Blue Potion setarray .@mailamount[0], 10, 5; // 10 White Potions, 5 Blue Potions mail .@charid, .@sender$, .@title$, .@body$, .@zeny, .@mailitem, .@mailamount; You can learn more about how to customize the rodex contents reading the file doc/script_commands.txt.
-
Hi! Look at your function Chest_Raro, F_Rand just returns a random number from the options. You still need to use getitem to give the item. Example: .@item_id = callfunc("F_Rand",1,603,5,617,5); //sets the variable to one of the five options. getitem .@item_id, .@qnt;
-
Your system/PetEvolutionCln.lub may be outdated. The server and client data files need to match, check if it has the following lines: InsertEvolutionRecipeLGU(9099, 9108, 23189, 3) InsertEvolutionRecipeLGU(9099, 9108, 7442, 300) InsertEvolutionRecipeLGU(9099, 9108, 724, 50) InsertEvolutionRecipeLGU(9099, 9108, 4340, 1)
-
no final do arquivo \data\luafiles514\lua files\skillinfoz\skilltreeview.lub, algo parecido com isso: O nome das abas tem que ser curtos o suficiente para a aba ETC aparecer.
-
Are you using updated rAthena? The command is documented just fine. You can post the untranslated script, the important thing are the commands and syntax, not the messages/names.
-
Hi! Prefixes and postfixes cant be separated from the variable name. So for example instead of . @ sleep it must be .@sleep always. delchar is not a command to delete characters. You can use the command breakequip to break equips. ? You can learn a lot reading the doc, good luck! \doc\script_commands.txt
-
prontera,153,173,3 script Porteiro 4_M_PIERROT,{ if(!getcharid(2)) { mes "Você não está em um clã!"; close; } switch(select("Abrir casa do clã","Entrar na casa","Cancelar")) { case 1: instance_create("Casa do Clã",IM_GUILD); end; case 2: switch( instance_enter("Casa do Clã") ) { case IE_OTHER: mes "An unknown error occurred."; close; case IE_NOINSTANCE: mes "Memorial Dungeon " + .@md_name$ + " does not exist."; mes "No guild member has created the Memorial Dungeon."; close; case IE_NOMEMBER: mes "Only guild members can enter the Memorial Dungeon."; close; case IE_OK: mapannounce "prontera", "" + strcharinfo(0) + " entrou na casa do clã " + getguildname( getcharid(2) ) + ".", bc_map,0xFF99,FW_NORMAL,12; end; } case 3: end; } } \db\import\instance_db.txt 51,Casa do Clã,3600,300,alberta_in,114,134 Isso deve dar para você ter noção. (não testei)
-
Oi! Você pode encontrar a lista de comandos, funcionalidades e exemplos em \doc\script_commands.txt. Dá pra estudar bem por lá. A instância do bafomé selado (SealedShrine) e todas as outras ficam na pasta \npc\instances e \npc\re\instances (caso seu server seja renewal). Instâncias são criadas com o comando instance_create, todas as instâncias da pasta usam a opção de grupo, mas é possível criar para guild também. Você pode criar um item e ligar um script nele usando o comando callfunc, por exemplo o item Cartão Kafra: 12211,Kafra_Card,Kafra Card,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ callfunc "F_CashStore"; },{},{} Boa sorte!
-
Hi! Just like you hide the Prontera NPC using hideonnpc when the portal closes, you need to hide the quiz_02 NPC when you end the event. In the OnGMStop label, change the hideoffnpc to the correct script command. hideoffnpc "The Baaam#qz"; Add a mapwarp so players dont get stuck. mapwarp "<from map>","<to map>",<x>,<y>; You need to hide her when the event starts too so add the same line to the OnEventStart label. Also: warp "savepoint",0,0; savepoint is case sensitive. Change it to "Save" or "SavePoint".
-
announce Guardia de .Town_Invade$+": ¡Ayuda! nos han invadido",bc_blue|bc_all; Change this line to: announce "Guardia de " + .Town_Invade$+": ¡Ayuda! nos han invadido",bc_blue|bc_all;