Показать сообщение отдельно
Непрочитано 06.08.2008, 08:51   #3
Пользователь

Автор темы (Топик Стартер) Ответ: Есть идея по реализации эвента Караван

ну возможно кто то реализовал так как идея была изложена на форумах l2jfree l2jserver и на сайте балансера тоже

Добавлено через 1 час 54 минуты
Вот вобщем то почти доделаный мозг для охраны главного перса те ведущего каравана...проверил работает единственное нужно переопределить действия при атаке и агре на персов.
Думаю при агре сделать чтоб говорили типа отойдите и прочее а при попытке атачить нападали 8)

они те охранники для кого этот мозг следуют толпой за НПС который ведущий.
Код:
package ai;

import l3b.gs.ai.DefaultAI;
import l3b.gs.model.L2Character;
import l3b.gs.model.L2World;
import l3b.gs.model.instances.L2NpcInstance;
import l3b.util.Rnd;

public class karavan extends DefaultAI
{
	private static int EDWIN_ID = 13112;
	private static int DRIFT_DISTANCE = 350;
	private L2NpcInstance _edwin;
	private long wait_timeout = 5000;

	public karavan(L2Character actor)
	{
		super(actor);
	}

	@Override
	public boolean isGlobalAI()
	{
		return true;
	}

	@Override
	protected boolean randomAnimation()
	{
		return false;
	}

	@Override
	protected boolean randomWalk()
	{
		return false;
	}

	@Override
	protected boolean thinkActive()
	{
		if(_edwin == null)
		{
			// Р˜С‰РµРј преследуемого РЅРµ чаще, чем раз РІ 15 секунд, если РїРѕ каким-то причинам его нету
			if(System.currentTimeMillis() > wait_timeout)
				for(L2NpcInstance npc : L2World.getAroundNpc(_thisActor))
					if(npc.getNpcId() == EDWIN_ID)
					{
						_edwin = npc;
						return true;
					}
		}
		else if(!_thisActor.isMoving)
		{
			int x = _edwin.getX() + Rnd.get(2 * DRIFT_DISTANCE) - DRIFT_DISTANCE;
			int y = _edwin.getY() + Rnd.get(2 * DRIFT_DISTANCE) - DRIFT_DISTANCE;
			int z = _edwin.getZ();

			_thisActor.setRunning(); // всегда бегают
			_thisActor.moveToLocation(x, y, z, 0, true);
			return true;
		}
		return false;
	}

	@Override
	protected void onEvtAttacked(L2Character attacker, int damage)
	{}

	@Override
	protected void onEvtAggression(L2Character target, int aggro)
	{}
}

Последний раз редактировалось bucha; 06.08.2008 в 10:49. Причина: Добавлено сообщение
bucha вне форума Ответить с цитированием