Скрипты - Страница 160 - Форум HeroesWorld-а

Вернуться   Форум HeroesWorld-а > Все о игре Герои 5. All about Heroes 5 > Герои Меча и Магии 5 - Картостроительство (Редактор карт)
Имя
Пароль
Карта сайта Регистрация Справка Пользователи Календарь Все разделы прочитаны
Быстрая навигация по основным разделам форума:
Кланы HW Турниры на HW КАРТЫ и Картостроительство Heroes 6 Heroes 5 Heroes 4 Heroes 3 Heroes 2 Heroes 1 Might&Magic

Герои Меча и Магии 5 - Картостроительство (Редактор карт) В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство.

Ответ
 
Опции темы
Старый 18.10.2017, 22:01   #2386
Jack_of_shadows
 
Аватар для Jack_of_shadows
Регистрация: 08.09.2013
Сообщения: 419
Jack_of_shadows - уровень боевого духа
Выставка наград
По умолчанию Re: Скрипты

Цитата:
Есть правда еще один скрипт нового дня
Вот в этом и дело. Триггер нового дня это не список обработчиков, а одно название функции (как и все остальные триггеры). Если ставить несколько, работать будет только последний. Нужно слить их обработчики в один.
Цитата:
как листать консоль вверх-вниз?
Насколько я помню, PAGE_UP/PAGE_DOWN как-то мотал, но в небольших пределах.
Jack_of_shadows вне форума   Ответить с цитированием
Старый 18.10.2017, 23:42   #2387
AstralLein
 
Аватар для AstralLein
Регистрация: 02.06.2017
Адрес: На планете Земля.
Сообщения: 1424
AstralLein - уровень боевого духа AstralLein - уровень боевого духа
По умолчанию Re: Скрипты

Хм. Ща кину скрин второго.

Добавлено через 24 минуты
В общем имеется такой скрипт. Он в начале дня проверяет ряд условий и если они правдивы отработает функция парочка функций вырубится. По идее его можно кинуть в отдельный поток, только я ее умею их делать.

Добавлено через 1 час 14 минут
Все заработало! Спасибо вам большое, Jack_of_shadows!
__________________
Карты для героев 5:
"Плата за любовь"
"Путь некроманта"

Карты для Disciples 3:
"Противостояние"

Моды для Disciples 3:
"Астельнаир"(сладкое отсутствие разработки)
AstralLein вне форума   Ответить с цитированием
Старый 01.11.2017, 15:59   #2388
sergejez
Регистрация: 08.01.2017
Сообщения: 11
sergejez - уровень боевого духа
По умолчанию Re: Скрипты

Ребята помогите. Не работает вот это:

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;

Trigger(NEW_DAY_TRIGGER, "ZehirFlev33" );

function ZehirFlev35 (hero)
if IsHeroAlive("Zehir") == not nil and GetHeroLevel ("Zehir") >= 35 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, 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, "ZehirFlev35" );

До этого писал специализацию через проверку стат опыта(GetHeroStat), но она работала, когда у героя именно столько опыта, а не выше, что мне как раз и нужно.
sergejez вне форума   Ответить с цитированием
Старый 01.11.2017, 19:50   #2389
Jack_of_shadows
 
Аватар для Jack_of_shadows
Регистрация: 08.09.2013
Сообщения: 419
Jack_of_shadows - уровень боевого духа
Выставка наград
По умолчанию Re: Скрипты

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 Trigger(NEW_DAY_TRIGGER, "NewDay" );
Jack_of_shadows вне форума   Ответить с цитированием
Старый 01.11.2017, 21:07   #2390
sergejez
Регистрация: 08.01.2017
Сообщения: 11
sergejez - уровень боевого духа
Хорошо Re: Скрипты

Спасибо! Помогли
sergejez вне форума   Ответить с цитированием
Старый 04.11.2017, 13:45   #2391
32MeTpa
 
Аватар для 32MeTpa
Регистрация: 06.08.2011
Сообщения: 150
32MeTpa - уровень боевого духа
По умолчанию Re: Скрипты

Не знаю, задавался ли уже этот вопрос, но можно ли в случае поражения героя каким-то образом оставить его у игрока? Или сразу после боя разместить того же героя на стратегической карте, минуя условие "... должен выжить"?
32MeTpa вне форума   Ответить с цитированием
Старый 04.11.2017, 17:01   #2392
AstralLein
 
Аватар для AstralLein
Регистрация: 02.06.2017
Адрес: На планете Земля.
Сообщения: 1424
AstralLein - уровень боевого духа AstralLein - уровень боевого духа
По умолчанию Re: Скрипты

Хм. А зачем задание "нельзя сдохнуть ГГ", если не будет проигрыша если он откинет копыта?

Добавлено через 31 секунду
А так можно, конечно
__________________
Карты для героев 5:
"Плата за любовь"
"Путь некроманта"

Карты для Disciples 3:
"Противостояние"

Моды для Disciples 3:
"Астельнаир"(сладкое отсутствие разработки)
AstralLein вне форума   Ответить с цитированием
Старый 04.11.2017, 17:51   #2393
32MeTpa
 
Аватар для 32MeTpa
Регистрация: 06.08.2011
Сообщения: 150
32MeTpa - уровень боевого духа
По умолчанию Re: Скрипты

Это в течении определенного квеста можно проиграть, а так в течении всей миссии оно нужно. В принципе можно просто в отдельный поток пустить проверку на существование героя и заблокировать ее на время квеста, но как тогда поместить того же героя на карту?
Или все же есть способ, чтобы герой остался после поражения?
32MeTpa вне форума   Ответить с цитированием
Старый 05.11.2017, 13:37   #2394
Jack_of_shadows
 
Аватар для Jack_of_shadows
Регистрация: 08.09.2013
Сообщения: 419
Jack_of_shadows - уровень боевого духа
Выставка наград
По умолчанию Re: Скрипты

Отдельный поток можно не делать, есть же специальный триггер на потерю героя - PLAYER_REMOVE_HERO_TRIGGER.
Ещё была функция, по которой герой автоматически появлялся в таверне после смерти - MakeHeroReturnToTavernAfterDeath.
Если же нужно, чтобы появился на карте, героя нужно поместить в резерв (в редакторе в настройках карты) и выводить его из резерва в начале карты и каждый раз после смерти - DeployReserveHero.
Jack_of_shadows вне форума   Ответить с цитированием
Старый 05.11.2017, 15:01   #2395
32MeTpa
 
Аватар для 32MeTpa
Регистрация: 06.08.2011
Сообщения: 150
32MeTpa - уровень боевого духа
По умолчанию Re: Скрипты

Спасибо, работает как надо, все оказалось действительно просто
32MeTpa вне форума   Ответить с цитированием
Старый 16.11.2017, 22:47   #2396
SoloMidDazzle
 
Аватар для SoloMidDazzle
Регистрация: 29.07.2017
Сообщения: 20
SoloMidDazzle - уровень боевого духа
По умолчанию Re: Скрипты

Ребята, сори если такой вопрос уже был. можете подсказать как на картах включать скрипты?
Т.е - у меня есть скрипты по Data/scripts/ которые меняют некоторые абилки в игре. но они не работают на ГСК картах. Так вот как мне их активировать на карте?
SoloMidDazzle вне форума   Ответить с цитированием
Старый 16.11.2017, 23:06   #2397
Jack_of_shadows
 
Аватар для Jack_of_shadows
Регистрация: 08.09.2013
Сообщения: 419
Jack_of_shadows - уровень боевого духа
Выставка наград
По умолчанию Re: Скрипты

Цитата:
Сообщение от SoloMidDazzle
есть скрипты по Data/scripts/
Если я правильно понял, что скрипты лежат в data.pak/scripts, или в папке data/scripts, то в обоих вариантах можно вручную вызвать нужный скрипт из консоли:
Код:
@doFile("/scripts/НАЗВАНИЕ_СКРИПТА.lua")
Jack_of_shadows вне форума   Ответить с цитированием
Старый 16.11.2017, 23:11   #2398
SoloMidDazzle
 
Аватар для SoloMidDazzle
Регистрация: 29.07.2017
Сообщения: 20
SoloMidDazzle - уровень боевого духа
По умолчанию Re: Скрипты

Цитата:
Сообщение от Jack_of_shadows
Если я правильно понял, что скрипты лежат в data.pak/scripts, или в папке data/scripts, то в обоих вариантах можно вручную вызвать нужный скрипт из консоли:
Код:
@doFile("/scripts/НАЗВАНИЕ_СКРИПТА.lua")
А нельзя дать ссылку где то в карте что бы они работали при запуске?
В IRMG скрипты сразу работают без посторонних вмешательств. В моде NHF есть прога посторонняя которая патчит карты(как оказалось она работает не только на их мод (и проблема уже решилась, но хочется понять суть)).
SoloMidDazzle вне форума   Ответить с цитированием
Старый 16.11.2017, 23:29   #2399
Jack_of_shadows
 
Аватар для Jack_of_shadows
Регистрация: 08.09.2013
Сообщения: 419
Jack_of_shadows - уровень боевого духа
Выставка наград
По умолчанию Re: Скрипты

Цитата:
А нельзя дать ссылку где то в карте что бы они работали при запуске?
В любой карте есть (а если нет, то можно создать) файл MapScript.lua, который выполняется при старте карты. Туда можно прописать строчку, которую я давал, только без "@" в начале.
Jack_of_shadows вне форума   Ответить с цитированием
Старый 22.11.2017, 17:28   #2400
32MeTpa
 
Аватар для 32MeTpa
Регистрация: 06.08.2011
Сообщения: 150
32MeTpa - уровень боевого духа
По умолчанию Re: Скрипты

Подскажите, почему при использовании StartCombat вражеский герой, поставленный из резерва, становится нейтралом? Можно это как-то исправить?
По сути код выглядит так:
Код:
DeployReserveHero('Skeggy', 27, 145, 0, 0); sleep(1); local ENA = crtables(random(3)+1); StartCombat(hero, 'Skeggy', 5, ENA[1][1], ENA[1][2], ENA[2][1], ENA[2][2], ENA[3][1], ENA[3][2], ENA[4][1], ENA[4][2], ENA[5][1], ENA[5][2], nil, 'AC', '/Arenas/Arena.AdventureFlybyScene).xdb#xpointer(/AdventureFlybyScene)');
crtables - внешняя функция
32MeTpa вне форума   Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Вкл.
Быстрый переход


Часовой пояс GMT +4, время: 11:19.


vBulletin v3.5.0, Copyright ©2000-2018, Jelsoft Enterprises Ltd. (Русский)

Яндекс цитирование  Rambler\'s Top100   Рейтинг@Mail.ru

Авторские права - Copyright © 2002-2018 www.HeroesWorld.ru All rights reserved (new server)


На правах рекламы:123123