Ser9K, похоже я понял в чем ошибка.. В архиве фаилов text1 и text2 нету. Я их туда добовляю, выхожу, снова захожу и их нету.. В чем проблема?
Ser9K
16 лет назад
Попробуй создать text1 и text2 через CustomGoal, которая находится чуть выше Odjectives. Кликаешь там на пустом поле жмешь new и вводишь название текстового сообщения, затем само сообщение. Жмешь ок, потом сохранить. Строку из CustomGoal затем нужно (!) удалить. На мой взгляд, это самый простой способ.
Valeonos
16 лет назад
Ser9K, так и сделал, но все равно не работает... Тперь он правда не может создать файл с именем text1, но почему-то не работает...
Блин... ну конечно же! :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
16 лет назад
Имя героя в кавычках : "Nemor" ;)
Ment
16 лет назад
Не REGION_AND_STOP_TRIGGER, a REGION_ENTER_AND_STOP_TRIGGER. Endы, по-моему, не там стоят.
FireShaman
16 лет назад
а также отсутствуют строчки Trigger (REGION_AND_STOP_TRIGGER, "kamilla", "kamillaF" ); и Trigger(REGION_AND_STOP_TRIGGER,"a1","aF");
Valeonos
16 лет назад
все еще не работает...
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
16 лет назад
Так попробуй 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
16 лет назад
Блин... вы что советуете? 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 - наивысший (то бишь захватывать будет невзирая на опасность умереть).
Выглядит хорошо, но не всегда работает как надо.
Победитель
15 лет назад
Угу, спасибо, только ещё одно (два): после ролика мне необходимо ещё телепортировать "Enabledнутого" героя на другую позицию. И с аттрактором: он у меня должен примениться на отключенных героев. Они на следующем ходу пойдут, или их надо как-то включить?