Jump to content
  • 0

AI[JAVA] Help


Question

Posted

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");
}
}

5 answers to this question

Recommended Posts

  • 0
Posted

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
Posted

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
Posted

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.

Guest
This topic is now closed to further replies.


×
×
  • Create New...