Впервые здесь? Я Роха — провести быструю экскурсию?
Ошибка соединенияНеверный запросСтраница устарелаСессия истеклаТребуется входЗапрещеноНе найденоСлишком много запросовВнутренняя ошибка сервераПлохой шлюзСервис недоступенТайм-аут шлюзаВерсия HTTP не поддерживается
Сессия истекла
Ваша сессия истекла. Пожалуйста, войдите снова.
Требуется вход
Для этого нужна учётная запись. Войдите или создайте её — это займёт минуту.
Страница устарела
Токен безопасности отклонён — обычно потому, что страница была открыта слишком долго или вы вошли в систему в другом месте. Ничего не сохранено. Обновите страницу и повторите.
Запрос не выполнен
При обработке вашего запроса возникла проблема.
Проверьте подключение к интернету и попробуйте снова.
Вот в этом и дело. Триггер нового дня это не список обработчиков, а одно название функции (как и все остальные триггеры). Если ставить несколько, работать будет только последний. Нужно слить их обработчики в один.
как листать консоль вверх-вниз?
Насколько я помню, PAGE_UP/PAGE_DOWN как-то мотал, но в небольших пределах.
Добавлено через 24 минуты В общем имеется такой скрипт. Он в начале дня проверяет ряд условий и если они правдивы отработает функция парочка функций вырубится. По идее его можно кинуть в отдельный поток, только я ее умею их делать.
Добавлено через 1 час 14 минут Все заработало! Спасибо вам большое, Jack_of_shadows!
function ZehirFlev1 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 1 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 320); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev1" );
function ZehirFlev3 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 3 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 600); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev3" );
function ZehirFlev5 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 5 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 750); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev5" );
function ZehirFlev7 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 7 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 950); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev7" );
function ZehirFlev10 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 10 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 400); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev10" );
function ZehirFlev12 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 12 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 700); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev12" );
function ZehirFlev14 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 14 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 820); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev14" );
function ZehirFlev16 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 16 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev16" );
function ZehirFlev18 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 18 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 350); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev18" );
function ZehirFlev20 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 20 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 830); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev20" );
function ZehirFlev22 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 22 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 400); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev22" );
function ZehirFlev25 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 25 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev25" );
function ZehirFlev28 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 28 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 525); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev28" );
function ZehirFlev30 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 30 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); end; end;
Trigger(NEW_DAY_TRIGGER, "ZehirFlev30" );
function ZehirFlev33 (hero) if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 33 then ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 900); sleep(5); ChangeHeroStat("Zehir", STAT_EXPERIENCE, 650); end; end;
До этого писал специализацию через проверку стат опыта(GetHeroStat), но она работала, когда у героя именно столько опыта, а не выше, что мне как раз и нужно.
sergejez, триггер нового дня может быть только один, поэтому скрипт не работает. Если отбросить выдачу опыта в несколько шагов, а оставить только логику "каждый день Зехир получает опыт, пропорциональный своему уровню", то можно написать так:
-- таблица уровней и величины опыта zehir_lvl_and_exp = {от большего уровня к меньшему, {3,600}, {1,320}};
function NewDay() if IsHeroAlive("Zehir") == not nil then local zehir_level = GetHeroLevel("Zehir"); for lvl_and_exp in zehir_lvl_and_exp do if zehir_level >= lvl_and_exp[1] then ChangeHeroStat("Zehir", STAT_EXPERIENCE, lvl_and_exp[2]); break end end end end
Не знаю, задавался ли уже этот вопрос, но можно ли в случае поражения героя каким-то образом оставить его у игрока? Или сразу после боя разместить того же героя на стратегической карте, минуя условие "... должен выжить"?
Это в течении определенного квеста можно проиграть, а так в течении всей миссии оно нужно. В принципе можно просто в отдельный поток пустить проверку на существование героя и заблокировать ее на время квеста, но как тогда поместить того же героя на карту? Или все же есть способ, чтобы герой остался после поражения?
Отдельный поток можно не делать, есть же специальный триггер на потерю героя - PLAYER_REMOVE_HERO_TRIGGER. Ещё была функция, по которой герой автоматически появлялся в таверне после смерти - MakeHeroReturnToTavernAfterDeath. Если же нужно, чтобы появился на карте, героя нужно поместить в резерв (в редакторе в настройках карты) и выводить его из резерва в начале карты и каждый раз после смерти - DeployReserveHero.
Ребята, сори если такой вопрос уже был. можете подсказать как на картах включать скрипты? Т.е - у меня есть скрипты по Data/scripts/ которые меняют некоторые абилки в игре. но они не работают на ГСК картах. Так вот как мне их активировать на карте?
Если я правильно понял, что скрипты лежат в data.pak/scripts, или в папке data/scripts, то в обоих вариантах можно вручную вызвать нужный скрипт из консоли:
Если я правильно понял, что скрипты лежат в data.pak/scripts, или в папке data/scripts, то в обоих вариантах можно вручную вызвать нужный скрипт из консоли:
@doFile("/scripts/НАЗВАНИЕ_СКРИПТА.lua")
А нельзя дать ссылку где то в карте что бы они работали при запуске? В IRMG скрипты сразу работают без посторонних вмешательств. В моде NHF есть прога посторонняя которая патчит карты(как оказалось она работает не только на их мод (и проблема уже решилась, но хочется понять суть)).
А нельзя дать ссылку где то в карте что бы они работали при запуске?
В любой карте есть (а если нет, то можно создать) файл MapScript.lua, который выполняется при старте карты. Туда можно прописать строчку, которую я давал, только без "@" в начале.
Подскажите, почему при использовании StartCombat вражеский герой, поставленный из резерва, становится нейтралом? Можно это как-то исправить? По сути код выглядит так: