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

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

Ответ
Опции темы
Непрочитано 20.01.2019, 15:45   #1
Аватар для ntking
Пользователь

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

Да, ретурн то я не заметил(((

Последний раз редактировалось ntking; 20.01.2019 в 17:19.
ntking вне форума Отправить сообщение для ntking с помощью ICQ Ответить с цитированием
Непрочитано 20.01.2019, 16:03   #2
Аватар для finfan
fin-ex.corp

По умолчанию Re: AI камы 36

Убери return из цикла, получается что первый моб удаляется и цикл завершается как и весь метод, т.е. по другим мобам он и не проверяет ничего.

И лучше - храни заспавненных мобов в листе и удаляй всех из листа когда босс отъедет. на случай если вдруг мобы будут вдали от него по каким-то причинам.
Код:
List<Mobs> mobsStorage = new ArrayList<>();
onSpawnMobs -> mobsStorage.add(mob)
onDeathBoss - > mobsStorage.forEach(n->n.deleteMe());
mobsStorage.clear();
finfan вне форума Отправить сообщение для finfan с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 20.01.2019, 16:34   #3
Аватар для Gaikotsu
Герой

По умолчанию Re: AI камы 36

Ну или если не хочется заводить отдельный список, то можно просто затребовать список всех существующих GameObject/Creature в инстансе и удалить по object.isMonster() && object.getNpcId() == 18560

Добавлено через 6 минут
Но вобще, логика босса реализована неправильно
по оффу он просто раз в минуту спавнит миньона, ограничиваясь не более чем 9 живыми миньонами
PHP код:
class inzone_raid_36_normal_boss extends inzone_raid_boss_standard
{
    
parameters:
        
int Skill01 = @skill_4194_3;
        
int Skill01_Probablity 30;
        
int Skill01_Target_Type 0;
        
int Skill02 = @skill_4192_4;
        
int Skill02_Probablity 40;
        
int Skill02_Target_Type 0;

    
EventHandler CREATED()
    {
        
myself->AddTimerEx(900460 1000);
        
myself->i_ai3 0;
        
super;
    }

    
EventHandler TIMER_FIRED_EX(timer_idi0i1c0party0h0, private)
    {
        if (
timer_id == 9004)
        {
            if (
myself->i_ai0 == && myself->i_ai3 9)
            {
                
myself->CreateOnePrivateEx(1018560"inzone_raid_36_normal_private"00gg->FloatToInt(myself->sm->10), gg->FloatToInt(myself->sm->10), gg->FloatToInt(myself->sm->z), 0000);
                
myself->i_ai3 myself->i_ai3 1;
            }
            
myself->AddTimerEx(900460 1000);
        }
        
super;
    }

    
EventHandler PARTY_DIED(private)
    {
        if (private != 
myself->sm)
        {
            
myself->i_ai3 myself->i_ai3 1;
        }
    }



Последний раз редактировалось Gaikotsu; 20.01.2019 в 16:42. Причина: Добавлено сообщение
Gaikotsu вне форума Ответить с цитированием
Непрочитано 20.01.2019, 17:28   #4
Аватар для ntking
Пользователь

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

Цитата:
Сообщение от finfan Посмотреть сообщение
Убери return из цикла, получается что первый моб удаляется и цикл завершается как и весь метод, т.е. по другим мобам он и не проверяет ничего.

И лучше - храни заспавненных мобов в листе и удаляй всех из листа когда босс отъедет. на случай если вдруг мобы будут вдали от него по каким-то причинам.
Код:
List<Mobs> mobsStorage = new ArrayList<>();
onSpawnMobs -> mobsStorage.add(mob)
onDeathBoss - > mobsStorage.forEach(n->n.deleteMe());
mobsStorage.clear();
Да, ретурн то я не заметил (аж стыдно), как он туда закрался и всключил невидимость - понятия не имею)))
Убрал его и всех заспавненых миньонов стало удалять корректно.

Цитата:
Сообщение от Gaikotsu Посмотреть сообщение
Ну или если не хочется заводить отдельный список, то можно просто затребовать список всех существующих GameObject/Creature в инстансе и удалить по object.isMonster() && object.getNpcId() == 18560

Добавлено через 6 минут
Но вобще, логика босса реализована неправильно
по оффу он просто раз в минуту спавнит миньона, ограничиваясь не более чем 9 живыми миньонами
PHP код:
class inzone_raid_36_normal_boss extends inzone_raid_boss_standard
{
    
parameters:
        
int Skill01 = @skill_4194_3;
        
int Skill01_Probablity 30;
        
int Skill01_Target_Type 0;
        
int Skill02 = @skill_4192_4;
        
int Skill02_Probablity 40;
        
int Skill02_Target_Type 0;

    
EventHandler CREATED()
    {
        
myself->AddTimerEx(900460 1000);
        
myself->i_ai3 0;
        
super;
    }

    
EventHandler TIMER_FIRED_EX(timer_idi0i1c0party0h0, private)
    {
        if (
timer_id == 9004)
        {
            if (
myself->i_ai0 == && myself->i_ai3 9)
            {
                
myself->CreateOnePrivateEx(1018560"inzone_raid_36_normal_private"00gg->FloatToInt(myself->sm->10), gg->FloatToInt(myself->sm->10), gg->FloatToInt(myself->sm->z), 0000);
                
myself->i_ai3 myself->i_ai3 1;
            }
            
myself->AddTimerEx(900460 1000);
        }
        
super;
    }

    
EventHandler PARTY_DIED(private)
    {
        if (private != 
myself->sm)
        {
            
myself->i_ai3 myself->i_ai3 1;
        }
    }


На счет сценария - я знаю, что реализовано не правильно. Помню, что на офе они респались с интервалом, но с каким и сколько штук в максимуме я не знал. Поэтому сделал по своему - чем сильнее на него наседают, тем выше шанс респа миньона.
ntking вне форума Отправить сообщение для ntking с помощью ICQ Ответить с цитированием
Ответ


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

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

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

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


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

Вверх