Jump to content

iJohn

Members
  • Posts

    21
  • Joined

  • Last visited

About iJohn

  • Birthday 04/23/1988

Profile Information

  • Gender
    Male
  • Location
    Rio de Janeiro
  • Server
    rAthena
  • Github: johnl0l
  • Discord: John#4569
  • Interests
    NPC Script

Contact Methods

Recent Profile Visitors

674 profile views

iJohn's Achievements

Santa Poring

Santa Poring (3/15)

  • Collaborator
  • Reacting Well
  • Dedicated
  • First Post
  • Week One Done

Recent Badges

2

Reputation

  1. Talvez seja alguma coisa relacionado ao seu clientinfo.xml... <version>55</version> <langtype>5</langtype> Tenta alterar alguma coisa pra ver se resolve... ?
  2. what problem are you having with your skill_damage_db? you didn't even explain what's going on ''/
  3. Could it be that Body Relocation (Skill ID# 264, iRO Name: Snap) is also without animation?
  4. My friend thank you very much! You are the best!
  5. function script pegaritem { if(!getcharid(3)) // Verifica se o jogador está online end; OnTimer: if(!getcharid(3)) // Verifica se o jogador está online end; delitem 502, 1; // Remove o item do jogador settimer 60000, callfunc("OnTimer"); // Define o tempo para a próxima chamada da função } Este script usa a função settimer para definir um temporizador que chama a função OnTimer a cada 1 minuto. Dentro da função OnTimer, o script verifica se o jogador ainda está online e, se sim, remove o item especificado (neste caso, o item com ID 502) do inventário do jogador. Em seguida, a função define outro temporizador para a próxima chamada da função. Lembre-se de que, se o seu servidor tiver sistemas de proteção contra bots, é possível que este script acione esses sistemas e cause problemas para os jogadores. Portanto, é importante implementar essas funções com cuidado e avaliar seus efeitos em relação à experiência dos jogadores.
  6. Abra o software de gerenciamento de banco de dados que você está usando (por exemplo, phpMyAdmin) e acesse o banco de dados do seu servidor de Ragnarok. Localize a tabela que armazena as informações das contas de jogador. Geralmente, esta tabela é chamada de "login" ou "loginserver". Execute a seguinte consulta SQL na tabela para zerar o Zeny de todas as contas: UPDATE login SET zeny=0; Isso irá definir o Zeny de todas as contas em zero. Salve as alterações e feche o software de gerenciamento de banco de dados. Certifique-se de reiniciar o seu servidor de Ragnarok para que as alterações entrem em vigor. Lembre-se de que esta ação não pode ser desfeita e que os jogadores podem ficar insatisfeitos se suas contas forem afetadas. Portanto, é importante avisar aos jogadores com antecedência e explicar o motivo da ação. Também é recomendável fazer backup do banco de dados antes de executar qualquer alteração significativa.
  7. Crie um novo arquivo de script para a funcionalidade @vipwarp. Você pode nomeá-lo como preferir (por exemplo, vip_warp.txt) e salvá-lo na pasta "npc" do seu servidor. No arquivo de script, adicione a seguinte linha de comando para verificar se o jogador é um VIP: if (getcharid(0) != 0 && getgroupid(getcharid(0)) == VIP_GROUP_ID) { // o jogador é um VIP } else { // o jogador não é um VIP } Onde "VIP_GROUP_ID" é o ID do grupo VIP definido em seu servidor. Certifique-se de alterar esse valor para corresponder ao ID do seu grupo VIP. Adicione as linhas de comando para a funcionalidade @warp dentro do bloco "if" que verifica se o jogador é um VIP: if (getcharid(0) != 0 && getgroupid(getcharid(0)) == VIP_GROUP_ID) { // o jogador é um VIP warp "nome_do_mapa", coordenada_x, coordenada_y; } else { // o jogador não é um VIP mes "Você não tem permissão para usar esta funcionalidade."; } Onde "nome_do_mapa" é o nome do mapa para o qual você deseja permitir que os jogadores VIP sejam teletransportados, e "coordenada_x" e "coordenada_y" são as coordenadas de destino. Certifique-se de alterar esses valores para corresponder às suas configurações do servidor. Em seguida, você precisará adicionar um NPC em seu servidor que chame a funcionalidade @vipwarp. Você pode usar um script existente ou criar um novo. O NPC deve ter um comando que execute o script @vipwarp, por exemplo: mes "[NPC]: Bem-vindo ao meu serviço de teletransporte VIP."; next; menu "Por favor, selecione o destino desejado.", "Warp para Nome do Mapa (1000 Zeny).", @vipwarp,1; close; Onde "Nome do Mapa" é o nome do mapa para o qual você deseja permitir que os jogadores VIP sejam teletransportados. Certifique-se de alterar esse valor para corresponder às suas configurações do servidor. Por fim, salve todos os arquivos e reinicie o servidor. Agora, os jogadores VIP poderão usar a funcionalidade @vipwarp para se teletransportar para o mapa desejado, enquanto os jogadores não-VIP receberão uma mensagem de erro. Lembre-se de que as configurações e scripts podem variar dependendo do emulador de servidor que você está usando, por isso é importante consultar a documentação do emulador ou os fóruns da comunidade para obter ajuda específica.
  8. O formato .yml é um tipo de arquivo utilizado para armazenar dados e configurações em um formato estruturado e legível por humanos. O termo "yml" significa "YAML Ain't Markup Language", o que indica que o YAML (YAML não é uma linguagem de marcação) é um formato de dados que tenta ser mais simples e fácil de entender do que outros formatos como o XML e o JSON. No contexto de Ragnarok Online, o formato .yml é utilizado em alguns emuladores de servidor, como o eAthena, para definir as configurações do jogo, como as taxas de drop e experiência, as habilidades das classes, as fórmulas de dano, entre outras opções. Em um arquivo .yml, os dados são organizados em uma estrutura de árvore, com indentação e uso de pontos e traços para representar os diferentes níveis e tipos de dados. Por exemplo, para definir as taxas de drop em um arquivo .yml, pode-se utilizar o seguinte formato: rates: item: 100 card: 10 Nesse caso, o "rates" é o nível superior da árvore, seguido pelos subníveis "item" e "card", que representam as taxas de drop de itens e cartas, respectivamente. A principal vantagem do formato .yml é a sua legibilidade e simplicidade, o que torna mais fácil para os desenvolvedores e administradores de servidor entenderem e modificar as configurações do jogo. No entanto, é importante notar que o uso do formato .yml pode variar entre os diferentes emuladores de servidor e outras plataformas de programação.
  9. Para alterar a moeda usada de Moedas de Ouro para Zeny, basta trocar a linha em que a variável .coin é definida: set .coin, 671; Por: set .coin, 1; Assim, a moeda usada será 1 Zeny.
  10. callshop "d_shop01",1; npcshopattach "d_shop01"; end; OnBuyItem: { set @loops, 0; while (@loops < getarraysize (@bought_nameid)) { set @loops2, 0; while (@loops2 < getarraysize (.items)) { if (@bought_nameid[@loops] == .items[@loops2]) { set @total_prize, @total_prize + @bought_quantity[@loops] * .items[@loops2+1]; set @loops2, @loops2+2; } else { set @loops2, @loops2+2; } } set @loops, @loops+1; } if (@total_prize > getarraysize (.coin)) { message strcharinfo (0),"Você não possui Zeny suficientes."; deletearray @bought_quantity, getarraysize(@bought_quantity); deletearray @bought_nameid, getarraysize(@bought_nameid); set @total_prize, 0; end; } else { set @loops, 0; set @weight1, getarraysize (@bought_nameid); set @weight2, 0; while (@loops < getarraysize (@bought_nameid)) { if (checkweight(@bought_nameid[@loops],@bought_quantity[@loops]) == 1) { set @weight2, @weight2+1; set @loops, @loops+1; } else { set @loops, @loops+1; } } if (@weight2 == @weight1) { set @loops, 0; while (@loops < getarraysize (@bought_nameid)) { getitem @bought_nameid[@loops],@bought_quantity[@loops]; set @loops, @loops+1; } message strcharinfo (0),"Compra efetuada com sucesso."; delitem .coin,@total_prize; dispbottom "Você gastou "+@total_prize+" Zeny, "+getarraysize (.coin)+" Zeny restantes."; deletearray @bought_quantity, getarraysize(@bought_quantity); deletearray @bought_nameid, getarraysize(@bought_nameid); set @total_prize, 0; end; // Gravar 10% do valor da compra
  11. Para fazer com que o NPC buffe apenas jogadores VIP, você precisará verificar se o jogador que está falando com o NPC é VIP ou não. Para isso, você pode usar a função "getcharid (3)" que retornará o ID do personagem que está falando com o NPC. Em seguida, você pode usar a função "getgd (id, flag)" para obter o valor de uma variável global definida como 1 para jogadores VIP e 0 para jogadores não VIP. Você pode criar uma variável global chamada "VIP" e atribuir o valor 1 para jogadores VIP e 0 para jogadores não VIP. Para atribuir o valor 1 para jogadores VIP, você pode criar um script separado que irá adicionar o personagem a um grupo VIP e, em seguida, definir a variável global "VIP" como 1. O script que adiciona os jogadores VIP ao grupo pode ser executado sempre que um jogador comprar um pacote VIP, por exemplo. Depois de verificar se o jogador é VIP ou não, você pode usar uma instrução "if" para determinar se o NPC deve buffar ou não o jogador. A seguir está um exemplo de como você pode modificar o seu script para buffar apenas jogadores VIP: prontera,150,150,3 script VIP BUFFER 4_M_TRAINEE,{ if(getgd(getcharid(3), "VIP") == 1) { sc_start SC_CASH_PLUSEXP,18000000,100; sc_start SC_FOOD_STR_CASH,18000000,6; sc_start SC_FOOD_AGI_CASH,18000000,6; sc_start SC_FOOD_VIT_CASH,18000000,6; sc_start SC_FOOD_INT_CASH,18000000,6; sc_start SC_FOOD_DEX_CASH,18000000,6; sc_start SC_FOOD_LUK_CASH,18000000,6; sc_start SC_PLUSATTACKPOWER, 18000000, 40; sc_start SC_PLUSMAGICPOWER, 18000000, 40; } else { mes "Desculpe, este serviço é apenas para jogadores VIP."; } Espero que isso ajude!
  12. Sim, existem algumas traduções do rAthena disponíveis, mas muitas delas podem não estar completas. Você pode tentar procurar por traduções na comunidade brasileira de Ragnarok Online, em fóruns e sites especializados. Quanto a usar a tradução de outro servidor no rAthena, é possível que algumas partes da tradução funcionem, mas outras podem não ser compatíveis com o rAthena, já que cada servidor tem suas próprias particularidades. Por isso, é recomendado buscar uma tradução específica para o rAthena para garantir que tudo funcione corretamente. Além disso, é importante lembrar que as traduções podem conter erros e imprecisões, já que muitas vezes são feitas por voluntários. Por isso, é recomendado verificar a qualidade da tradução antes de utilizá-la em seu servidor. Caso não encontre uma tradução adequada para o rAthena, você também pode considerar fazer a tradução por conta própria, ou até mesmo recrutar membros da comunidade para ajudar nessa tarefa. Isso pode garantir uma tradução mais precisa e de acordo com as necessidades do seu servidor. No entanto, é importante lembrar que a tradução é apenas uma das várias etapas necessárias para criar um servidor de Ragnarok Online. Você também precisará ter conhecimentos em programação, configuração de servidores, gerenciamento de banco de dados e outras habilidades técnicas para criar um servidor funcional e de qualidade.
  13. Não estou ciente de nenhum sistema existente no emulador R-athena ou em algum NPC personalizado que permita aos jogadores invocar um monstro que lute ao seu lado por um determinado período de tempo. Embora o jogo tenha vários recursos, como pets, mercenários, homúnculos e plantas dos alquimistas, nenhum deles se comporta da maneira que você descreve. No entanto, pode ser possível criar um item personalizado para fazer isso. Se você estiver interessado em desenvolver esse recurso, sugiro que entre em contato com a comunidade de desenvolvedores do emulador R-athena. Eles podem fornecer informações sobre como criar um item personalizado ou até mesmo desenvolver o recurso para você, mediante pagamento. Espero que isso ajude. Boa sorte!
  14. Aqui está um exemplo de como adicionar a opção de invocação de mobs ao diálogo switch(select("Abrir Reino:Entrar no Reino:Abandonar Reino:Invocar Mobs")) { // código existente case 4: // função de invocação de mobs aqui break; } Em seguida, você pode criar uma nova função de invocação de mobs usando a função monster() do rAthena: function summonMobs() { monster "Dark_Poring", 100, 100, "<richtext>Um grupo de Dark Porings aparece!</richtext>", 1, 0; monster "Dark_Slime", 100, 100, "<richtext>Um grupo de Dark Slimes aparece!</richtext>", 1, 0; // adicione quantos monstros quiser aqui } Finalmente, você pode chamar a função summonMobs() no caso 4 do switch acima: case 4: summonMobs(); mes "[Emissário das Trevas]"; mes "Os monstros foram invocados!"; break; Lembre-se de ajustar a posição dos monstros e os nomes dos monstros que você quer invocar de acordo com sua preferência.
  15. Abra o seu servidor Ragnarok e navegue até a pasta "db". Abra o arquivo "login.conf" em um editor de texto. Localize a linha "login_reward: off" e altere para "login_reward: 1". Isso ativará o sistema de recompensa de login. Abra o arquivo "renewal.conf" e localize a linha "loginreward_db: false". Altere para "loginreward_db: true". Abra o seu banco de dados SQL e crie uma nova tabela chamada "login_reward" com as seguintes colunas: "account_id", "char_id", "reward_id" e "reward_time". No arquivo "renewal.conf", defina "loginreward_db_name" como o nome do banco de dados em que você criou a tabela "login_reward". Abra o arquivo "db/import/login_reward.sql" e execute o arquivo SQL para importar a tabela "login_reward" no seu banco de dados SQL. Abra o arquivo "db/pre-re/item_db.txt" e crie um novo item que será o ticket VIP de 7 dias. Defina um ID para o item e forneça um nome e uma descrição para ele. Defina os parâmetros para o item, incluindo o preço de venda, o peso e o valor de compra. Defina a "view_id" e a "icon_id" para a aparência do item. Salve as alterações no arquivo "item_db". Abra o arquivo "login.lua" na pasta "npc" e adicione o seguinte código: function LoginReward( accID ) if not accID or accID == 0 then return end local chars = {} local q = mysql_query("SELECT char.char_id FROM char WHERE account_id='"..accID.."' AND char.name!='Merchants' AND char.name!='Blacksmiths';") while mysql_fetch_row(q) do chars[#chars+1] = mysql_get_value(q,1) end mysql_free_result(q) for _,id in pairs(chars) do q = mysql_query("SELECT reward_time FROM "..getLoginRewardDB()..".login_reward WHERE char_id='"..id.."' ORDER BY reward_time DESC LIMIT 1") if mysql_num_rows(q) == 0 then local q2 = mysql_query("INSERT INTO "..getLoginRewardDB()..".login_reward (account_id,char_id,reward_id,reward_time) VALUES ('"..accID.."','"..id.."','ID_DO_TICKET_VIP_7_DIAS','"..os.time().."')") mysql_free_result(q2) additem(id,ID_DO_TICKET_VIP_7_DIAS,1) end mysql_free_result(q) end end Substitua "ID_DO_TICKET_VIP_7_DIAS" pelo ID do item que você criou no passo 7. Salve o arquivo "login.lua". Reinicie o seu servidor de Ragnarok. O sistema de recompensa é armazenado na tabela "login_reward" em seu banco de dados SQL, e é verificado sempre que um jogador se loga. Se um jogador já tiver recebido um ticket VIP de 7 dias, o sistema não o recompensará novamente. Você também pode personalizar as recompensas para diferentes períodos de tempo ou oferecer outros itens como recompensas. Certifique-se de ajustar os parâmetros do item em "item_db" para refletir o tipo de bônus eletrônico aleatório que você deseja que o item forneça.
×
×
  • Create New...