Jump to content

Racaae

Members
  • Posts

    250
  • Joined

  • Last visited

  • Days Won

    41

Everything posted by Racaae

  1. 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.
  2. 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; }
  3. Hi. Add this after input .@value,0,#GOLDPOINTS; if (.@value == 0) { mes "Exchange canceled."; close; }
  4. 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.
  5. 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.
  6. The menu works just fine here. Did you whisper to "npc:vipsystem8806azwan"?
  7. Hi. I didn't test much. The command is @reward.
  8. } else if (getskilllv("GD_APPROVAL") != 1) { mes "Official Guild Approval required to enter."; }
  9. Here's the full script, try it out.
  10. 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
  11. 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;
  12. 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.
  13. 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;
  14. 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)
  15. 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.
  16. 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.
  17. 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
  18. 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)
  19. 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!
  20. 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".
  21. 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;
×
×
  • Create New...