hello guys i added this code in my pack it is an npc, when someone flags another player on it's radius he sleep him and broadcasts a message i have zero errors i made an npc with l2Protector instance but it doesn't work!
package com.l2jrox.gameserver.model.actor.instance;
import java.util.concurrent.ScheduledFuture;
import com.l2jrox.Config;
import com.l2jrox.gameserver.ThreadPoolManager;
import com.l2jrox.gameserver.datatables.SkillTable;
import com.l2jrox.gameserver.model.L2Character;
import com.l2jrox.gameserver.model.L2Object;
import com.l2jrox.gameserver.model.L2Skill;
import com.l2jrox.gameserver.network.serverpackets.CreatureSay;
import com.l2jrox.gameserver.network.serverpackets.MagicSkillUse;
import com.l2jrox.gameserver.templates.L2NpcTemplate;
public class L2ProtectorInstance extends L2NpcInstance
{
private ScheduledFuture<?> _aiTask;
private class ProtectorAI implements Runnable
{
private L2ProtectorInstance _caster;
protected ProtectorAI(L2ProtectorInstance caster)
{
_caster = caster;
}
public void run()
{
/**
* For each known player in range, cast sleep if pvpFlag != 0 or Karma >0
* Skill use is just for buff animation
*/
for (L2PcInstance player : getKnownList().getKnownPlayers().values())
{
if ((player.getKarma() > 0 && Config.PROTECTOR_PLAYER_PK) || (player.getPvpFlag() != 0 && Config.PROTECTOR_PLAYER_PVP))
{
handleCast(player, Config.PROTECTOR_SKILLID, Config.PROTECTOR_SKILLLEVEL);
}
}
}
private boolean handleCast(L2PcInstance player, int skillId, int skillLevel)
{
if (player.isGM() || player.isDead() || !player.isVisible() || !isInsideRadius(player, getDistanceToWatchObject(player), false, false))
return false;
L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel);
if (player.getFirstEffect(skill) == null)
{
int objId = _caster.getObjectId();
skill.getEffects(_caster, player);
broadcastPacket(new MagicSkillUse(_caster, player, skillId, skillLevel, Config.PROTECTOR_SKILLTIME, 0));
broadcastPacket(new CreatureSay(objId,0,String.valueOf(getName()),Config.PROTECTOR_MESSAGE));
return true;
}
return false;
}
}
public L2ProtectorInstance(int objectId, L2NpcTemplate template)
{
super(objectId, template);
if (_aiTask != null)
_aiTask.cancel(true);
_aiTask = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new ProtectorAI(this), 3000, 3000);
}
@Override
public void deleteMe()
{
if (_aiTask != null)
{
_aiTask.cancel(true);
_aiTask = null;
}
super.deleteMe();
}
@Override
public int getDistanceToWatchObject(L2Object object)
{
return Config.PROTECTOR_RADIUS_ACTION;
}
@Override
public boolean isAutoAttackable(L2Character attacker)
{
return false;
}
}
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
DISCORD :
https://discord.com/users/325653525793210378
utchiha_market
telegram :
https://t.me/utchiha_market
SELLIX STORE :
https://utchihamkt.mysellix.io/
Join our server for more products :
https://discord.gg/uthciha-services
https://campsite.bio/utchihaamkt
Question
Boorinio
hello guys i added this code in my pack it is an npc, when someone flags another player on it's radius he sleep him and broadcasts a message i have zero errors i made an npc with l2Protector instance but it doesn't work!
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.