Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Парметры для АИ из спаунлиста...
#1
Есть идея сделать параметры для аи мобов в спаунлисте(каг на оффе...)

Пример с npcpos(ПТС спаунлист...:negodueSmile

тык

где

тык

к примеру возьмём в яве сделать 10 мобов с одним и тем же идом которые при спауне идут каждый на свою координату...

В пример 1 точка...

Идея в том чтобы сделать подобное в яве, одна проблема как вывести параметры чтобы к примеру пишим в спаунлисте

пример

в аи чтобы было к примеру
аи

Помогите кто знает Smile :negodue: извеняюсь если многобукаф и ошибак
[Изображение: 581.png]
Ответ
#2
пишеш загрузку этих параметров с sql или тxt файла со спауном(у кого как...)
пишеш сколько нужно get ,set методов(для каждого параметра)
при спауне моба проверяеш и присваиваеш мобу все что тебе нужно...
но это для несложных операций...

ПС: это так свои мысли)))
ПС2: вообще в идеале надо весь движек аи удалить и нормальный написатьBig Grin
Ответ
#3
как вариант добавить в спавнлист колонку, с уникальным ид данного спавна
далее завести таблицу наподобие ai_params (в феникасх подобная есть для задавания каких либо специфических параметров в аи и привязывающяя эти параметры к ид мобов) и привязывать в ней к этим уникальным ид нужные параметры.
ну и естесно в самом ядре делаешь загрузку и хранение данных параметров, а в базовых аи мобов, ну или не в базовых а тем где тебе нужно - проверяешь, задан ли уникальный идентификатор спавну конкретного моба и есть ли для этого идентификатора какие нибудь параметры.
Ответ
#4
clazz.getField("some_field").set(instance, val)

рефлексия уже не модно?
Ответ
#5
Если не ошибаюсь то вот нашёл вроде чтото подобное в L2P файл InstanceZone

тык

Что в instance.xml выглядив вроде так

тык
Только эффекта я не увидел...
если ошибаюсь подскажите тогда что делает данный код и как его использовать...

Обьясню что описывал

Файл TestClass к примеру лежит в папке scripts/ai

В этом классе у меня есть метод
Код:
    public static void debug_log(int id)
    {
        if(id == 1)
            System.out.println("instances.xml event trigger test is Done");
    else
            System.out.println("instances.xml id2");
        
    }

Если я правельно понял то в поле class пишим имя класса в method пишим используемый метод и этого класса а параметры это установка парметров в классе в данном случае id.... но ничего не происходит...

обьясните если кто знает плз, буду признателен Sad
[Изображение: 581.png]
Ответ
#6
Малявко Написал:Если не ошибаюсь то вот нашёл вроде чтото подобное в L2P файл InstanceZone

тык

Что в instance.xml выглядив вроде так

тык
Только эффекта я не увидел...
если ошибаюсь подскажите тогда что делает данный код и как его использовать...

Обьясню что описывал

Файл TestClass к примеру лежит в папке scripts/ai

В этом классе у меня есть метод
Код:
    public static void debug_log(int id)
    {
        if(id == 1)
            System.out.println("instances.xml event trigger test is Done");
    else
            System.out.println("instances.xml id2");
        
    }

Если я правельно понял то в поле class пишим имя класса в method пишим используемый метод и этого класса а параметры это установка парметров в классе в данном случае id.... но ничего не происходит...

обьясните если кто знает плз, буду признателен Sad

Если хочешь делать как написал в этом примере, то использовать надо reflection, как сказал вышел izen.
Но так не выйдет мне кажется. Если хочешь это делать через таблицу спауна, то расширяй клаcc L2Spawn, в котором передавай параметры спауна, тому нпс которого спаунишь (можно как предложил Gaikotsu)

Добавлено через 12 минут
Ну и где нить в L2Spawn засунуть (лучше наверно метод intializeNpc), что-то типа этого:
Код:
if(mob.getAI() instanceof DefaultAI)
{
    DefaultAI ai = (DefaultAI) mob.getAI();
    ai.set("my_position", 22);
}
передачу параметров в intializeNpc сами додумаете)
[Изображение: l2nextgen.gif]
Ответ
#7
bloodshed Написал:Если хочешь делать как написал в этом примере, то использовать надо reflection, как сказал вышел izen.
Но так не выйдет мне кажется. Если хочешь это делать через таблицу спауна, то расширяй клаcc L2Spawn, в котором передавай параметры спауна, тому нпс которого спаунишь (можно как предложил Gaikotsu)

Добавлено через 12 минут
Ну и где нить в L2Spawn засунуть (лучше наверно метод intializeNpc), что-то типа этого:
Код:
if(mob.getAI() instanceof DefaultAI)
{
    DefaultAI ai = (DefaultAI) mob.getAI();
    ai.set("my_position", 22);
}
передачу параметров в intializeNpc сами додумаете)

Ладно хорошо спасибо, немного уловил мысль как сделать Smile А что насчёт вопроса что я задал в предыдущем посту ?? Что делает тот код и как его использовать ? На сколько я понял он так же там стаит для большей функциональности АИ, или нет ??
[Изображение: 581.png]
Ответ
#8
Про какой код вы говорите? напишите ещё раз.
[Изображение: l2nextgen.gif]
Ответ
#9
bloodshed Написал:Про какой код вы говорите? напишите ещё раз.
В файле InstanceZoneManager есть вот такой код

Код

Который в XML формате будет выглядеть примерно так...
так

Цитата:Обьясню что описывал

Файл TestClass к примеру лежит в папке scripts/ai

В этом классе у меня есть метод
Код:
public static void debug_log(int id)
{
if(id == 1)
System.out.println("instances.xml event trigger test is Done");
else
System.out.println("instances.xml id2");

}
Если я правельно понял то в поле class пишим имя класса в method пишим используемый метод и этого класса а параметры это установка парметров в классе в данном случае id.... но ничего не происходит...

обьясните если кто знает плз, буду признателен
[Изображение: 581.png]
Ответ
#10
<event trigger="startMove" class="scripts.ai.MoveNPC" method="moveToLocation" delay="20">
<param value="координаты x"/>
<param value="координаты y"/>
<param value="координаты z"/>
</event>


Метод в AI:
Код:
public void moveToLocation(String[] param)
{
    тут делай обработку координат из param
}

scripts.ai.MoveNPC
путь к аи твоих нпс

потом когда нужно будет выполнишь у своего нпс:
Код:
npc.fireMethodInvoked("startMove", null);

Код не проверял, как то так должно быть.
[Изображение: l2nextgen.gif]
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)