[ai]Закен
7 replies140 viewsCurrently viewing: 1
· 01/22/2010, 11:48 AM
Вообщем, не совсем относится к этой теме, но всё же - Кто может поделиться хорошим AI для Zaken'a лучше всего для L2JFree? Без разницы какой формат Py или Java. Заранее благодарю.
0
· 01/22/2010, 11:59 AM
Ну вот хороший АИ из SC сборок на основе Ребы на Яве.
Работает все как положено:
Zaken.java
Код
package ai;
import sc.ext.listeners.DayNightChangeListener;
import sc.ext.listeners.L2ZoneEnterLeaveListener;
import sc.ext.listeners.PropertyCollection;
import sc.game.GameTimeController;
import sc.game.ai.Fighter;
import sc.game.instancemanager.ZoneManager;
import sc.game.model.L2Character;
import sc.game.model.L2Object;
import sc.game.model.L2Zone;
import sc.game.model.L2Zone.ZoneType;
import sc.game.model.instances.L2NpcInstance;
/**
* Индивидуальное АИ эпик боса Zaken.<BR> - неуязвим ночью<BR> - получает 25% пенальти на регены солнечной комнате - зона zaken_sunlight_room, id: 1335
*
*/
public class Zaken extends Fighter implements PropertyCollection
{
private static final L2Zone _zone = ZoneManager.getInstance().getZoneById(ZoneType.no_restart, 1335, true);
private ZoneListener _zoneListener = new ZoneListener();
private final float _baseHpReg;
private final float _baseMpReg;
public Zaken(L2Character actor)
{
super(actor);
GameTimeController.getInstance().getListenerEngine().addPropertyChangeListener(GameTimeControllerDayNightChange, new NightInvulDayNightListener());
_zone.getListenerEngine().addMethodInvokedListener(_zoneListener);
_baseHpReg = actor.getTemplate().baseHpReg;
_baseMpReg = actor.getTemplate().baseMpReg;
}
private class NightInvulDayNightListener extends DayNightChangeListener
{
private NightInvulDayNightListener()
{
if(GameTimeController.getInstance().isNowNight())
switchToNight();
else
switchToDay();
}
/**
* Вызывается, когда на сервере наступает ночь
*/
@Override
public void switchToNight()
{
L2NpcInstance actor = getActor();
if(actor != null)
actor.setIsInvul(true);
}
/**
* Вызывается, когда на сервере наступает день
*/
@Override
public void switchToDay()
{
L2NpcInstance actor = getActor();
if(actor != null)
actor.setIsInvul(false);
}
}
private class ZoneListener extends L2ZoneEnterLeaveListener
{
@Override
public void objectEntered(L2Zone zone, L2Object object)
{
L2NpcInstance actor = getActor();
if(actor == null)
return;
// Регены снижаем в любое время суток, все равно закен ночью бессмертен
// что бы лишний раз не дергать GameTimeController
actor.getTemplate().baseHpReg = (float) (_baseHpReg * 0.75);
actor.getTemplate().baseMpReg = (float) (_baseMpReg * 0.75);
}
@Override
public void objectLeaved(L2Zone zone, L2Object object)
{
L2NpcInstance actor = getActor();
if(actor == null)
return;
actor.getTemplate().baseHpReg = _baseHpReg;
actor.getTemplate().baseMpReg = _baseMpReg;
}
}
@Override
protected void onEvtDead()
{
_zone.getListenerEngine().removeMethodInvokedListener(_zoneListener);
super.onEvtDead();
}
}
import sc.ext.listeners.DayNightChangeListener;
import sc.ext.listeners.L2ZoneEnterLeaveListener;
import sc.ext.listeners.PropertyCollection;
import sc.game.GameTimeController;
import sc.game.ai.Fighter;
import sc.game.instancemanager.ZoneManager;
import sc.game.model.L2Character;
import sc.game.model.L2Object;
import sc.game.model.L2Zone;
import sc.game.model.L2Zone.ZoneType;
import sc.game.model.instances.L2NpcInstance;
/**
* Индивидуальное АИ эпик боса Zaken.<BR> - неуязвим ночью<BR> - получает 25% пенальти на регены солнечной комнате - зона zaken_sunlight_room, id: 1335
*
*/
public class Zaken extends Fighter implements PropertyCollection
{
private static final L2Zone _zone = ZoneManager.getInstance().getZoneById(ZoneType.no_restart, 1335, true);
private ZoneListener _zoneListener = new ZoneListener();
private final float _baseHpReg;
private final float _baseMpReg;
public Zaken(L2Character actor)
{
super(actor);
GameTimeController.getInstance().getListenerEngine().addPropertyChangeListener(GameTimeControllerDayNightChange, new NightInvulDayNightListener());
_zone.getListenerEngine().addMethodInvokedListener(_zoneListener);
_baseHpReg = actor.getTemplate().baseHpReg;
_baseMpReg = actor.getTemplate().baseMpReg;
}
private class NightInvulDayNightListener extends DayNightChangeListener
{
private NightInvulDayNightListener()
{
if(GameTimeController.getInstance().isNowNight())
switchToNight();
else
switchToDay();
}
/**
* Вызывается, когда на сервере наступает ночь
*/
@Override
public void switchToNight()
{
L2NpcInstance actor = getActor();
if(actor != null)
actor.setIsInvul(true);
}
/**
* Вызывается, когда на сервере наступает день
*/
@Override
public void switchToDay()
{
L2NpcInstance actor = getActor();
if(actor != null)
actor.setIsInvul(false);
}
}
private class ZoneListener extends L2ZoneEnterLeaveListener
{
@Override
public void objectEntered(L2Zone zone, L2Object object)
{
L2NpcInstance actor = getActor();
if(actor == null)
return;
// Регены снижаем в любое время суток, все равно закен ночью бессмертен
// что бы лишний раз не дергать GameTimeController
actor.getTemplate().baseHpReg = (float) (_baseHpReg * 0.75);
actor.getTemplate().baseMpReg = (float) (_baseMpReg * 0.75);
}
@Override
public void objectLeaved(L2Zone zone, L2Object object)
{
L2NpcInstance actor = getActor();
if(actor == null)
return;
actor.getTemplate().baseHpReg = _baseHpReg;
actor.getTemplate().baseMpReg = _baseMpReg;
}
}
@Override
protected void onEvtDead()
{
_zone.getListenerEngine().removeMethodInvokedListener(_zoneListener);
super.onEvtDead();
}
}
На Форуме я тоже Radar!
Я везде Radar!
0
· 01/22/2010, 12:02 PM
Как бы этот AI выдран командой SC со сборки Next Gen)) Мне просто не подходит Rebbelion скрипты, нужны стандарт L2J (L2JServer или L2JFree или Emu) Вообщем типо этого. Но всё равно спасибо.
0
· 01/22/2010, 12:06 PM
Abstract3D: Как бы этот AI выдран командой SC со сборки Next Gen))
А Некст Ген у Дрима, Дрим у Феникса,... бабка за дедку, дедка за репку))))
Концов и не найдешь.
На Форуме я тоже Radar!
Я везде Radar!
0
· 01/22/2010, 12:34 PM
LeoNius: Вот глянь...
_http://dump.ru/file/4194858
thx
0
· 02/02/2010, 10:25 PM
народ подскажите плиз куда его вставлять в сборке L2Emu_3261_CT1_FinaL
0
Войдите или зарегистрируйтесь чтобы ответить


