Сообщений: 78
Тем: 16
Зарегистрирован: Mar 2013
Репутация:
143
01-20-2019, 03:45 PM
(Сообщение последний раз редактировалось: 01-20-2019, 05:19 PM ntking.)
Да, ретурн то я не заметил(((
Сообщений: 1,058
Тем: 129
Зарегистрирован: May 2009
Репутация:
11,626
Убери return из цикла, получается что первый моб удаляется и цикл завершается как и весь метод, т.е. по другим мобам он и не проверяет ничего.
И лучше - храни заспавненных мобов в листе и удаляй всех из листа когда босс отъедет. на случай если вдруг мобы будут вдали от него по каким-то причинам.
Код: List<Mobs> mobsStorage = new ArrayList<>();
onSpawnMobs -> mobsStorage.add(mob)
onDeathBoss - > mobsStorage.forEach(n->n.deleteMe());
mobsStorage.clear();
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
01-20-2019, 04:34 PM
(Сообщение последний раз редактировалось: 01-20-2019, 04:42 PM Gaikotsu.)
Ну или если не хочется заводить отдельный список, то можно просто затребовать список всех существующих GameObject/Creature в инстансе и удалить по object.isMonster() && object.getNpcId() == 18560
Добавлено через 6 минут
Но вобще, логика босса реализована неправильно
по оффу он просто раз в минуту спавнит миньона, ограничиваясь не более чем 9 живыми миньонами
PHP код: <?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(9004, 60 * 1000);
myself->i_ai3 = 0;
super;
}
EventHandler TIMER_FIRED_EX(timer_id, i0, i1, c0, party0, h0, private)
{
if (timer_id == 9004)
{
if (myself->i_ai0 == 1 && myself->i_ai3 < 9)
{
myself->CreateOnePrivateEx(1018560, "inzone_raid_36_normal_private", 0, 0, gg->FloatToInt(myself->sm->x + 10), gg->FloatToInt(myself->sm->y + 10), gg->FloatToInt(myself->sm->z), 0, 0, 0, 0);
myself->i_ai3 = myself->i_ai3 + 1;
}
myself->AddTimerEx(9004, 60 * 1000);
}
super;
}
EventHandler PARTY_DIED(private)
{
if (private != myself->sm)
{
myself->i_ai3 = myself->i_ai3 - 1;
}
}
}
Сообщений: 78
Тем: 16
Зарегистрирован: Mar 2013
Репутация:
143
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 код: <?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(9004, 60 * 1000);
myself->i_ai3 = 0;
super;
}
EventHandler TIMER_FIRED_EX(timer_id, i0, i1, c0, party0, h0, private)
{
if (timer_id == 9004)
{
if (myself->i_ai0 == 1 && myself->i_ai3 < 9)
{
myself->CreateOnePrivateEx(1018560, "inzone_raid_36_normal_private", 0, 0, gg->FloatToInt(myself->sm->x + 10), gg->FloatToInt(myself->sm->y + 10), gg->FloatToInt(myself->sm->z), 0, 0, 0, 0);
myself->i_ai3 = myself->i_ai3 + 1;
}
myself->AddTimerEx(9004, 60 * 1000);
}
super;
}
EventHandler PARTY_DIED(private)
{
if (private != myself->sm)
{
myself->i_ai3 = myself->i_ai3 - 1;
}
}
}
На счет сценария - я знаю, что реализовано не правильно. Помню, что на офе они респались с интервалом, но с каким и сколько штук в максимуме я не знал. Поэтому сделал по своему - чем сильнее на него наседают, тем выше шанс респа миньона.
|