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...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock