Ser9K, похоже я понял в чем ошибка.. В архиве фаилов text1 и text2 нету. Я их туда добовляю, выхожу, снова захожу и их нету.. В чем проблема?
Ser9K
Попробуй создать text1 и text2 через CustomGoal, которая находится чуть выше Odjectives. Кликаешь там на пустом поле жмешь new и вводишь название текстового сообщения, затем само сообщение. Жмешь ок, потом сохранить. Строку из CustomGoal затем нужно (!) удалить. На мой взгляд, это самый простой способ.
Блин... ну конечно же! :D PlayerHero = скриптовое имя героя который должен войти в регион написанное в "" (смотреть во вкладке Settings -> Script Name)
function kamillaF(hero) if hero == PlayerHero then MessageBox ("/Maps/SingleMissions/Island_Triads/text1.txt"); Trigger (REGION_AND_STOP_TRIGGER, "kamilla", nil ); end; end;
Вот, что я сделал, но похоже не то. Имя героя, вроде как Nemor.
SetPlayerStartResources(PLAYER_1,0,0,0,0,0,0,0);
function kamillaF(Nemor) if hero == Nemor then MessageBox ("/Maps/SingleMissions/Island_Triads/text1.txt"); Trigger (REGION_AND_STOP_TRIGGER, "kamilla", nil ); function aF() if hero == Nemor then Trigger(REGION_AND_STOP_TRIGGER,"a1",nil); MessageBox("/Maps/SingleMissions/Island_Triads/text2.txt"); end; end; end;
Dyrman
Имя героя в кавычках : "Nemor" ;)
Ment
Не REGION_AND_STOP_TRIGGER, a REGION_ENTER_AND_STOP_TRIGGER. Endы, по-моему, не там стоят.
а также отсутствуют строчки Trigger (REGION_AND_STOP_TRIGGER, "kamilla", "kamillaF" ); и Trigger(REGION_AND_STOP_TRIGGER,"a1","aF");
Valeonos
все еще не работает...
SetPlayerStartResources(PLAYER_1,0,0,0,0,0,0,0);
function kamillaF("Nemor") if hero == "Nemor" then Trigger (REGION_ENTER_AND_STOP_TRIGGER, "kamilla",nil); MessageBox ("/Maps/SingleMissions/Island_Triads/text1.txt"); Trigger (REGION_ENTER_AND_STOP_TRIGGER, "kamilla","kamillaF"); function aF() if hero == "Nemor" then Trigger(REGION_ENTER_AND_STOP_TRIGGER,"a1",nil); MessageBox("/Maps/SingleMissions/Island_Triads/text2.txt"); Trigger (REGION_ENTER_AND_STOP_TRIGGER, "a1","aF"); end; end; end;
FireShaman
Так попробуй SetPlayerStartResources(PLAYER_1,0,0,0,0,0,0,0);
function kamillaF("Nemor") if hero == "Nemor" then Trigger (REGION_ENTER_AND_STOP_TRIGGER, "kamilla",nil); MessageBox ("/Maps/SingleMissions/Island_Triads/text1.txt"); end; end; Trigger (REGION_ENTER_AND_STOP_TRIGGER, "kamilla","kamillaF"); function aF() if hero == "Nemor" then Trigger(REGION_ENTER_AND_STOP_TRIGGER,"a1",nil); MessageBox("/Maps/SingleMissions/Island_Triads/text2.txt"); Trigger (REGION_ENTER_AND_STOP_TRIGGER, "a1","aF"); end; end;
Добавлено через 3 минуты а блин ошибся. последние два энда перед последним триггером
Ser9K
Блин... вы что советуете? 0_o Я же сказал как нужно...
В твоем случае, если герой и впрямь Nemor (в простонародье Дейдра;)) то скрипт будет выглядеть так.
PlayerHero = "Nemor"
function kamillaF(hero) if hero == PlayerHero then MessageBox ( "/Maps/SingleMissions/Island_Triads/text1.txt" ); Trigger( REGION_ENTER_AND_STOP_TRIGGER, "kamilla", nil ); end; end;
Ошибка закралась тут 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 переменная куда забит адрес твоего ролика, выглядит примерно так:
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 - наивысший (то бишь захватывать будет невзирая на опасность умереть).
Угу, спасибо, только ещё одно (два): после ролика мне необходимо ещё телепортировать "Enabledнутого" героя на другую позицию. И с аттрактором: он у меня должен примениться на отключенных героев. Они на следующем ходу пойдут, или их надо как-то включить?