Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты
Тема: Скрипты
Показать сообщение отдельно
#119
Старый 06.09.2010, 07:30
  #119
^
Ser9K
 
Аватар для Ser9K
📖
Регистрация: 05.07.2007
Адрес: В далеком забытом лесу
Сообщения: 103
Выставка наград
Регистрация: 05.07.2007
Адрес: В далеком забытом лесу
Сообщения: 103
Выставка наград
По умолчанию
Re: Скрипты

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

Выглядит хорошо, но не всегда работает как надо.
Ser9K вне форума
Ответить с цитированием