thinkActive - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.

Ответ
Опции темы
Непрочитано 30.10.2011, 14:22   #1
Пользователь

Автор темы (Топик Стартер) thinkActive

Подскажите как в AI наследывать наследовать thinkActive
Незнаю как объяснить...
Тоесть есть допустим АИ:

Код HTML:
package ai.group_template;

import com.l2js.gameserver.ai.CtrlIntention;
import com.l2js.gameserver.model.actor.L2Attackable;
import com.l2js.gameserver.model.actor.L2Npc;
import com.l2js.gameserver.model.actor.instance.L2PcInstance;

public class SearchingMaster extends L2AttackableAIScript
{
	private static final int[] mobs =
	{
		20965,20966,20967,20968,20969,20970,20971,20972,20973
	};
	
	public SearchingMaster(int questId, String name, String descr)
	{
		super(questId, name, descr);
		for (int id : mobs)
			addAttackId(id);
	}
	
	@Override
	public String onAttack(L2Npc npc, L2PcInstance player, int damage, boolean isPet)
	{
		if (player == null)
			return null;
		
		npc.setIsRunning(true);
		((L2Attackable) npc).addDamageHate(player, 0, 999);
		npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
		
		return super.onAttack(npc, player, damage, isPet);
	}
	
	public static void main(String[] args)
	{
		new SearchingMaster(-1, "SearchingMaster", "ai");
	}
}
в етом АИ допустим мне надо делать некоторые действия, которые происходят в состоянии не активности, тоесть когда он просто стоит
как ето сделать?
L2j
XmAI вне форума Ответить с цитированием
Непрочитано 30.10.2011, 14:36   #2
Аватар для Azagthtot
Эксперт

По умолчанию Re: thinkActive

В этом - никак. Это не АИ-скрипт, а АИ-квест.
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Непрочитано 30.10.2011, 14:39   #3
Пользователь

Автор темы (Топик Стартер) Re: thinkActive

Цитата:
Сообщение от Azagthtot Посмотреть сообщение
Это не АИ-скрипт, а АИ-скрипт.
Всмысле?..
XmAI вне форума Ответить с цитированием
Непрочитано 30.10.2011, 14:40   #4
Аватар для Azagthtot
Эксперт

По умолчанию Re: thinkActive

Упс... ошибся... АИ-квест
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Непрочитано 30.10.2011, 14:43   #5
Пользователь

Автор темы (Топик Стартер) Re: thinkActive

Ну а как тогда сделать?

Добавлено через 4 минуты
Мне нужно нпц задать действия в thinkActive, как ето сделать?

Последний раз редактировалось XmAI; 30.10.2011 в 14:48. Причина: Добавлено сообщение
XmAI вне форума Ответить с цитированием
Непрочитано 30.10.2011, 14:52   #6
Аватар для Azagthtot
Эксперт

По умолчанию Re: thinkActive

Нужно переписать AI-класс (тот, который возвращается методом getAI() )
Это ядро
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Непрочитано 30.10.2011, 14:55   #7
Пользователь

Автор темы (Топик Стартер) Re: thinkActive

что именно там менять?
XmAI вне форума Ответить с цитированием
Непрочитано 30.10.2011, 14:56   #8
Аватар для Azagthtot
Эксперт

По умолчанию Re: thinkActive

Написать класс-наследник AttackableAI, в нем перекрыть thinkActive() и в инстансе своего NPC вернуть экземпляр нового класса
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Непрочитано 30.10.2011, 15:27   #9
Пользователь

Автор темы (Топик Стартер) Re: thinkActive

создать в gameserver.ai

Код:
package com.l2js.gameserver.ai;

import static com.l2js.gameserver.ai.CtrlIntention.AI_INTENTION_ACTIVE;
import com.l2js.gameserver.model.actor.L2Character;

public abstract class DefaultAI extends L2AttackableAI
{
	private boolean _isThinking; 
	
	public DefaultAI(L2Character.AIAccessor accessor)
	{
		super(accessor);
	}
	
	@Override
	protected void onEvtThink()
	{
		if (isThinking())
			return;
		
		setThinking(true);
		
		try
		{
			if (getIntention() == AI_INTENTION_ACTIVE)
				thinkActive();
		}
		finally
		{
			setThinking(false);
		}

	}
	
	public boolean isThinking()
	{
		return _isThinking;
	}
	
	public void setThinking(boolean isThinking)
	{
		_isThinking = isThinking;
	}
	
	protected void thinkActive()
	{
	}
	

}
?
XmAI вне форума Ответить с цитированием
Непрочитано 30.10.2011, 15:40   #10
Аватар для Azagthtot
Эксперт

По умолчанию Re: thinkActive

Зачем вам наследоваться от абстрактного класса? Если только вы кардинально собрались менять поведение...
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 06:06. Часовой пояс GMT +3.

Вверх