Перейти к содержанию
Аватар пользователя
#122
По просьбе выкладываю тут :)
EnableAIHero( "RedHeavenHero04", false );
EnableAIHero( "RedHeavenHero06", false );
EnableAIHero( "RedHeavenHero03", false );
EnableAIHero( "Duncan", false );
EnableAIHero( "Freyda", false );

Ошибка закралась тут EnableAIHero. Правильно будет так EnableHeroAI
function 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 - наивысший (то бишь захватывать будет невзирая на опасность умереть).

Выглядит хорошо, но не всегда работает как надо.
Клан "Вершители Асхана" - "Masters of Ashan"