janiko Posted August 25, 2012 Posted August 25, 2012 Can someone help me to fix ai? i wrote it but npc not casts skill on player. package ai.individual; import ai.group_template.L2AttackableAIScript; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.effects.L2Effect; import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse; /* * @Author Janiko */ public class ElcardiaAssistant extends L2AttackableAIScript { private static final int ELCARDIA = 32785; public ElcardiaAssistant(int questId, String name, String descr) { super(questId, name, descr); addSpawnId(ELCARDIA); } @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { if ((event.equalsIgnoreCase("check_buff"))) { cancelQuestTimer("check_buff", npc, null); npc.setTarget(player); if (player.getCurrentHp() < player.getMaxHp() * 0.8D) { npc.broadcastPacket(new MagicSkillUse(npc, player, 6724, 1, 1500, 0)); // heal } if (player.getCurrentMp() < player.getMaxMp() * 0.5D) { npc.broadcastPacket(new MagicSkillUse(npc, player, 6728, 1, 6000, 0)); // recharge } if(player.isInCombat()) { npc.broadcastPacket(new MagicSkillUse(npc, player, 6725, 1, 1000, 0)); // blessBlood } L2Effect vampRage = player.getFirstEffect(6727); if(vampRage == null) { npc.broadcastPacket(new MagicSkillUse(npc, player, 6727, 1, 500, 0)); // vampRage } L2Effect holyResist = player.getFirstEffect(6729); if(holyResist == null) { npc.broadcastPacket(new MagicSkillUse(npc, player, 6729, 1, 500, 0)); // holyResist } startQuestTimer("check_buff", 30000, npc, null); } return super.onAdvEvent(event, npc, player); } @Override public String onSpawn(L2Npc npc) { startQuestTimer("check", 2000, npc, null); return super.onSpawn(npc); } public static void main(String[] args) { new ElcardiaAssistant(-1, ElcardiaAssistant.class.getSimpleName(), "ai"); } }
0 Tryskell Posted August 25, 2012 Posted August 25, 2012 Hey janiko, I invite you to see how Ant Queen larva spread RB malus : npc.broadcastPacket(new MagicSkillUse(npc, character, curse.getId(), curse.getLevel(), 300, 0)); curse.getEffects(npc, character); If the casting must be affected by regular cast rules, you can use instead : npc.setTarget(player); npc.doCast(skill); I must add your npc will launch all skills in same time. That's not the retail behavior if I think you do what I think you do.
0 janiko Posted August 25, 2012 Author Posted August 25, 2012 man i tried to do in that way npc.setTarget(player); npc.doCast(skill); but npc had no reaction it not added buffs on player I must add your npc will launch all skills in same time. can u better explain me? anyway thanks
0 Tryskell Posted August 25, 2012 Posted August 25, 2012 What's your code ? doCast argument is a L2Skill, you must find skill info first, check if != null and then cast. Your cast method got only "if, if, if" which means if all checks are valid, they all will be launched. startQuestTimer("check", 2000, npc, null); Null should be player.
0 janiko Posted August 26, 2012 Author Posted August 26, 2012 i have fixed it and thanks for help tryskell topic can be closed
Question
janiko
Can someone help me to fix ai?
i wrote it but npc not casts skill on player.
5 answers to this question
Recommended Posts