Trigger(PLAYER_REMOVE_HERO_TRIGGER, PLAYER_2, 'Player2LoseHero');
function Player2LoseHero(looser, winner)
if(looser == 'имя_героя') then
...
end
endВозможно нужны дополнительные проверки, если целевой герой может быть потерян иным способом, чем убит игроком.
Сообщения от Текущие вопросы и ответы по редактору карт
EnableHeroAI('Brem', nil);
EnableHeroAI('Straker', nil);
StartAdvMapDialog(0);
function rewF()
StartAdvMapDialog(1);
end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "rew", "rewF" );
После добавления триггера про смерть героя и последующие после этого действия - все катсцены и триггеры перестали работать.
EnableHeroAI('Brem', nil);
EnableHeroAI('Straker', nil);
StartAdvMapDialog(0);
function rewF()
StartAdvMapDialog(1);
end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "rew", "rewF" );
Trigger(PLAYER_REMOVE_HERO_TRIGGER, PLAYER_2, 'Player2LoseHero');
function Player2LoseHero(looser, winner)
if(looser == 'Brem') then
StartAdvMapDialog(2);
StartAdvMapDialog(3);
CreateMonster(134,inferno,134,90,10,0,mood= MONSTER_MOOD_AGGRESSIVE,courage= MONSTER_COURAGE_CAN_FLEE_JOIN,rotation= 0 );
StartAdvMapDialog(4);
StartAdvMapDialog(5);
StartAdvMapDialog(6);
StartAdvMapDialog(7);
StartAdvMapDialog(8);
end;
end;
mood= MONSTER_MOOD_AGGRESSIVE,courage= MONSTER_COURAGE_CAN_FLEE_JOIN,rotation= 0
Второе, если скрипт крашится, хорошим тоном всё таки является заглянуть в консоль и привести здесь текст ошибки (да он и вам часто может помочь понять проблему самостоятельно).
Третье, если вы нацелились на более-менее скриптовую карту (>200 строчек кода), рекомендую другой подход к структуре кода. Сейчас все ваши инициализирующие функции расположены на верхнем уровне в разнобой, в результате чего достаточно одной мелкой ошибки в коде, чтобы интерпретатор вылетел, скрипты полностью перестали работать, и главное непонятно где искать проблему.
Рекомендую всё, что выполняется непосредственно при старте карты, поместить в отдельную функцию, дополнив её периодически printa'ми:
function InitMap()
print('init start');
EnableHeroAI('Brem', nil);
EnableHeroAI('Straker', nil);
print('init heroes OK');
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "rew", "rewF" );
Trigger(PLAYER_REMOVE_HERO_TRIGGER, PLAYER_2, 'Player2LoseHero');
print('init triggers OK');
print('init finish');
end
InitMap();Этот код помещается в самый конец скрипта и при запуске карты первым делом заглядываем в консоль.Если в коде была ошибка синтаксиса, которую lua-интерпретатор не переварил, консоль будет пустая, до функции InitMap() дело просто не дойдёт.
Если всё хорошо, консоль будет заканчиваться строчкой 'init finish'.
Если мы попытаемся что-то инициализировать неправильно, к примеру ошибемся с названием региона "rew", то в консоли будет:
init start
init heroes OK
какая-нибудь ошибка красным шрифтом
EnableHeroAI('Brem', nil);
EnableHeroAI('Straker', nil);
StartAdvMapDialog(0);
function rewF()
StartAdvMapDialog(1);
end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "rew", "rewF" );
Trigger(PLAYER_REMOVE_HERO_TRIGGER, PLAYER_2, 'Player2LoseHero');
function Player2LoseHero(looser, winner)
if(looser == 'Brem') then
StartAdvMapDialog(2);
StartAdvMapDialog(3);
StartAdvMapDialog(4);
StartAdvMapDialog(5);
StartAdvMapDialog(6);
StartAdvMapDialog(7);
end;
end;
Теперь катсцены работают до убийства героя, после убийства - завершение игры.
1) уничтожить героя
2) игрок должен выжить.
В качестве награды ничего нет.
И ещё вопросик. В редакторе подземелья можно как-нибудь светлее сделать, а то ставлю объект и вижу его, только когда выделил. Попытался на форуме поискать что-то внятное, но ничего толком не нашёл.
В редакторе подземелья можно как-нибудь светлее сделать
Вопрос: можно скриптом заставить героя отыграть анимацию?
Добавлено через 8 минут
Неа все анимации есть. Полней комплект плюс три вида разговора и много еще чего. Кстати, оцените сам скрипт. Работать работает, но оценка не помешает.

Добавлено через 2 минуты
Тут есть добавление к заданию заметки. Как сделать так что бы появление обновления квеста стало видно игроку без знания методики "зайти в задания и посмотреть что там изменилось". Команда SetObjectiveProgress то на глобальную карту не влияет.