Ir para conteúdo
  • Cadastre-se
  • 0

Skill passiva na arma


leod35

Pergunta

Alguem sabe me dizer, se consigo adicionar uma skill passiva na arma, após a mesma ser encantada (enchantada) para +4 ++ ??? 

Explicando melhor, a skill seria passiva e apareceria no ALT+K dando um bônus de HP, MP e CP somente após a arma ser enchantada para +4 ...

Se alguem souber, por favor me explica como faz ?

OBS: minha REV é ACSIS 

 

Agradeço desde já

 

PS: se alguem ja tiver postado algo semelhante, me desculpem, mas ja revirei o fórum e nao consegui achar, as vezes deixei passar por descuido...

Léo Diegues

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts recomendados


  • 0
11 horas atrás, leod35 disse:

Alguem sabe me dizer, se consigo adicionar uma skill passiva na arma, após a mesma ser encantada (enchantada) para +4 ++ ??? 

Explicando melhor, a skill seria passiva e apareceria no ALT+K dando um bônus de HP, MP e CP somente após a arma ser enchantada para +4 ...

Se alguem souber, por favor me explica como faz ?

OBS: minha REV é ACSIS 

 

Agradeço desde já

 

PS: se alguem ja tiver postado algo semelhante, me desculpem, mas ja revirei o fórum e nao consegui achar, as vezes deixei passar por descuido...

 

Tenta isso

 

Passo a passo para habilitar skill por enchant customizado via XML

1. Modificar a leitura do XML

Você precisa editar o parser de itens. Normalmente isso fica em:

 

com.l2jserver.gameserver.datatables.ItemTable 

ou no parser específico de itens como:

 

com.l2jserver.gameserver.model.items.Weapon com.l2jserver.gameserver.model.items.Armor 

Adicione um novo mapa:

 

private final Map<Integer, SkillHolder> _enchantSkills = new HashMap<>(); 

No método de parsing, adicione algo como:

 

for (Node n = firstNode.getFirstChild(); n != null; n = n.getNextSibling()) { if ("enchant_skill".equalsIgnoreCase(n.getNodeName())) { final NamedNodeMap attrs = n.getAttributes(); int enchant = Integer.parseInt(attrs.getNamedItem("enchant").getNodeValue()); int skillId = Integer.parseInt(attrs.getNamedItem("skillId").getNodeValue()); int skillLevel = Integer.parseInt(attrs.getNamedItem("skillLevel").getNodeValue()); _enchantSkills.put(enchant, new SkillHolder(skillId, skillLevel)); } } 

2. Aplicar a skill ao equipar

No momento em que o item é equipado (ex: Inventory#equipItem() ou Inventory#refreshEquippedItems()), verifique se o enchant do item bate com o configurado:

 

if (item != null && item.getItem().hasEnchantSkill(item.getEnchantLevel())) { SkillHolder sh = item.getItem().getEnchantSkill(item.getEnchantLevel()); if (sh != null) activeChar.addSkill(sh.getSkill(), false); } 

3. No XML da arma ou armadura

Agora você pode usar isso:

 

<enchant_skill enchant="10" skillId="1234" skillLevel="1" type="passive"/> 

E se quiser múltiplos níveis:

 

<enchant_skill enchant="5" skillId="1200" skillLevel="1" type="passive"/> <enchant_skill enchant="10" skillId="1234" skillLevel="1" type="passive"/> 

Resultado

Com essa modificação, qualquer arma ou armadura pode conceder skills passivas ao atingir o enchant definido no XML, sem precisar mexer em Java de novo.

Editado por sreli
Link para o comentário
Compartilhar em outros sites

  • 0
12 horas atrás, Semente disse:

Olha dual grade -S . Ela funciona exatamente assim .

EXATAMENTE oq eu precisava mano, vllllw

11 horas atrás, J0nS4nt disse:

Amigo, se vc souber programar da pra vc fazer qualquer coisa, é só estudar java

Boaa, ainda estou aprendendo ! Mas muito obrigado !!!

2 horas atrás, sreli disse:

 

Tenta isso

 

Passo a passo para habilitar skill por enchant customizado via XML

1. Modificar a leitura do XML

Você precisa editar o parser de itens. Normalmente isso fica em:

 

com.l2jserver.gameserver.datatables.ItemTable 

ou no parser específico de itens como:

 

com.l2jserver.gameserver.model.items.Weapon com.l2jserver.gameserver.model.items.Armor 

Adicione um novo mapa:

 

private final Map<Integer, SkillHolder> _enchantSkills = new HashMap<>(); 

No método de parsing, adicione algo como:

 

for (Node n = firstNode.getFirstChild(); n != null; n = n.getNextSibling()) { if ("enchant_skill".equalsIgnoreCase(n.getNodeName())) { final NamedNodeMap attrs = n.getAttributes(); int enchant = Integer.parseInt(attrs.getNamedItem("enchant").getNodeValue()); int skillId = Integer.parseInt(attrs.getNamedItem("skillId").getNodeValue()); int skillLevel = Integer.parseInt(attrs.getNamedItem("skillLevel").getNodeValue()); _enchantSkills.put(enchant, new SkillHolder(skillId, skillLevel)); } } 

2. Aplicar a skill ao equipar

No momento em que o item é equipado (ex: Inventory#equipItem() ou Inventory#refreshEquippedItems()), verifique se o enchant do item bate com o configurado:

 

if (item != null && item.getItem().hasEnchantSkill(item.getEnchantLevel())) { SkillHolder sh = item.getItem().getEnchantSkill(item.getEnchantLevel()); if (sh != null) activeChar.addSkill(sh.getSkill(), false); } 

3. No XML da arma ou armadura

Agora você pode usar isso:

 

<enchant_skill enchant="10" skillId="1234" skillLevel="1" type="passive"/> 

E se quiser múltiplos níveis:

 

<enchant_skill enchant="5" skillId="1200" skillLevel="1" type="passive"/> <enchant_skill enchant="10" skillId="1234" skillLevel="1" type="passive"/> 

Resultado

Com essa modificação, qualquer arma ou armadura pode conceder skills passivas ao atingir o enchant definido no XML, sem precisar mexer em Java de novo.

Curti, vou tentar esse caminho tmb !

Léo Diegues

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.



×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.