По просьбе выкладываю тут
EnableAIHero( "RedHeavenHero04", false );
EnableAIHero( "RedHeavenHero06", false );
EnableAIHero( "RedHeavenHero03", false );
EnableAIHero( "Duncan", false );
EnableAIHero( "Freyda", false );
Ошибка закралась тут
EnableAIHero. Правильно будет так
EnableHeroAIfunction death2 ()
PlayObjectAnimation ("golem", "death", ONESHOT_STILL);
end;
startThread(death2);
function death3 ()
PlayObjectAnimation ("gremlin", "death", ONESHOT_STILL);
end;
startThread(death3);
У голема в роликовой части нету анимации смерти (про гремлина не знаю). А эта функция берет ее именно отуда. Не знаю почему так сделано, но у многих существ анимация смерти там отсутствует. Придется менять существ на других.
И главный скрипт карты - герой (Zehyr) заходит в область, проигрывается ролик, герой, который был в этой области пермещается на другую точку (как бы телепортом), игроку (Зехиру) даётся контроль над городами и войсками другого игрока, а на последующем после этого ходу противника, вражеские герои нападают на города (человек будет чуть-чуть сильнее).
Разобьем на пару моментов.
Во-первых про заход в регион, проигрывания роликов, перенос героя и сдачу ему города. Используется простой стандартный триггер:
PlayerHero меняй на свеого.
START_DIALOG переменная куда забит адрес твоего ролика, выглядит примерно так:
START_DIALOG = "/DialogScenes/UC2/M5/S1/DialogScene.xdb#xpointer(/DialogScene)"
function noname(hero)
if hero == PlayerHero then
StartDialogScene( START_DIALOG );
SetObjectPosition( PlayerHero, 34, 6, 1 );
SetObjectOwner("TownSilvan", PLAYER_1);
Trigger( REGION_ENTER_AND_STOP_TRIGGER, "regionname", nil );
end;
end;
Trigger( REGION_ENTER_AND_STOP_TRIGGER, "regionname","noname", nil );
SetObjectPositionПараметры такие. (
heroname, x, y, z )
z - уровень (подземный или надземный). Не помню точно но кажется 1 - это подземный. То ли 0, то ли 2 - надземный. Можно вообще поставить nil тогда на тот же где он и стоял.
SetObjectOwnerТут попроще. (
скриптовое имя города (задаешь его сам),
игрок )
Во-вторых про захват городов. Тут вообще полная... кхм... ну короче есть сложности.
Существует такая вот функция:
SetAIHeroAttractor("DangeonTown", "Oddrema", 2);
Указываешь город, героя и приоритет. 2 - наивысший (то бишь захватывать будет невзирая на опасность умереть).
Выглядит хорошо, но не всегда работает как надо.