Ñêðèïòû - Ñòðàíèöà 160 - Ôîðóì HeroesWorld-à

Áûñòðàÿ íàâèãàöèÿ ïî îñíîâíûì ðàçäåëàì ôîðóìà:
Òóðíèðû
ÊÀÐÒÛ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Ãåðîè Ìå÷à è Ìàãèè 5 - Êàðòîñòðîèòåëüñòâî (Ðåäàêòîð êàðò)  ýòîì ðàçäåëå ìîæíî îáñóæäàòü âñå ÷òî êàñàåòñÿ ðåäàêòîðà êàðò äëÿ Heroes of Might and Magic V. Òàê æå çäåñü îáñóæäàåì êàðòîñòðîèòåëüñòâî.

Îòâåò
Ñòðàíèöà 160 èç 264
 
Îïöèè òåìû
#2386
Ñòàðûé 18.10.2017, 22:01
  #2386
^
Jack_of_shadows
 
Àâàòàð äëÿ Jack_of_shadows
📖
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 527
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 527
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Есть правда еще один скрипт нового дня
Вот в этом и дело. Триггер нового дня это не список обработчиков, а одно название функции (как и все остальные триггеры). Если ставить несколько, работать будет только последний. Нужно слить их обработчики в один.
как листать консоль вверх-вниз?
Насколько я помню, PAGE_UP/PAGE_DOWN как-то мотал, но в небольших пределах.
Jack_of_shadows âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2387
Ñòàðûé 18.10.2017, 23:42
  #2387
^
AstralLein
 
Àâàòàð äëÿ AstralLein
📖
Ðåãèñòðàöèÿ: 02.06.2017
Àäðåñ: Â Èìïåðèè Íåçàíõåëüì.
Ñîîáùåíèÿ: 4487
Ðåãèñòðàöèÿ: 02.06.2017
Àäðåñ: Â Èìïåðèè Íåçàíõåëüì.
Ñîîáùåíèÿ: 4487
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

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

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

Добавлено через 1 час 14 минут
Все заработало! Спасибо вам большое, Jack_of_shadows!
AstralLein âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2388
Ñòàðûé 01.11.2017, 15:59
  #2388
^
sergejez
📖
Ðåãèñòðàöèÿ: 08.01.2017
Ñîîáùåíèÿ: 20
Ðåãèñòðàöèÿ: 08.01.2017
Ñîîáùåíèÿ: 20
Ïî óìîë÷àíèþ
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 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2389
Ñòàðûé 01.11.2017, 19:50
  #2389
^
Jack_of_shadows
 
Àâàòàð äëÿ Jack_of_shadows
📖
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 527
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 527
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
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 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2390
Ñòàðûé 01.11.2017, 21:07
  #2390
^
sergejez
📖
Ðåãèñòðàöèÿ: 08.01.2017
Ñîîáùåíèÿ: 20
Ðåãèñòðàöèÿ: 08.01.2017
Ñîîáùåíèÿ: 20
Õîðîøî
Re: Ñêðèïòû

Спасибо! Помогли
sergejez âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2391
Ñòàðûé 04.11.2017, 13:45
  #2391
^
32MeTpa
 
Àâàòàð äëÿ 32MeTpa
📖
Ðåãèñòðàöèÿ: 06.08.2011
Ñîîáùåíèÿ: 178
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 06.08.2011
Ñîîáùåíèÿ: 178
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Не знаю, задавался ли уже этот вопрос, но можно ли в случае поражения героя каким-то образом оставить его у игрока? Или сразу после боя разместить того же героя на стратегической карте, минуя условие "... должен выжить"?
32MeTpa âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2392
Ñòàðûé 04.11.2017, 17:01
  #2392
^
AstralLein
 
Àâàòàð äëÿ AstralLein
📖
Ðåãèñòðàöèÿ: 02.06.2017
Àäðåñ: Â Èìïåðèè Íåçàíõåëüì.
Ñîîáùåíèÿ: 4487
Ðåãèñòðàöèÿ: 02.06.2017
Àäðåñ: Â Èìïåðèè Íåçàíõåëüì.
Ñîîáùåíèÿ: 4487
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

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

Добавлено через 31 секунду
А так можно, конечно
AstralLein âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2393
Ñòàðûé 04.11.2017, 17:51
  #2393
^
32MeTpa
 
Àâàòàð äëÿ 32MeTpa
📖
Ðåãèñòðàöèÿ: 06.08.2011
Ñîîáùåíèÿ: 178
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 06.08.2011
Ñîîáùåíèÿ: 178
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Это в течении определенного квеста можно проиграть, а так в течении всей миссии оно нужно. В принципе можно просто в отдельный поток пустить проверку на существование героя и заблокировать ее на время квеста, но как тогда поместить того же героя на карту?
Или все же есть способ, чтобы герой остался после поражения?
32MeTpa âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2394
Ñòàðûé 05.11.2017, 13:37
  #2394
^
Jack_of_shadows
 
Àâàòàð äëÿ Jack_of_shadows
📖
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 527
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 527
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Отдельный поток можно не делать, есть же специальный триггер на потерю героя - PLAYER_REMOVE_HERO_TRIGGER.
Ещё была функция, по которой герой автоматически появлялся в таверне после смерти - MakeHeroReturnToTavernAfterDeath.
Если же нужно, чтобы появился на карте, героя нужно поместить в резерв (в редакторе в настройках карты) и выводить его из резерва в начале карты и каждый раз после смерти - DeployReserveHero.
Jack_of_shadows âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2395
Ñòàðûé 05.11.2017, 15:01
  #2395
^
32MeTpa
 
Àâàòàð äëÿ 32MeTpa
📖
Ðåãèñòðàöèÿ: 06.08.2011
Ñîîáùåíèÿ: 178
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 06.08.2011
Ñîîáùåíèÿ: 178
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Спасибо, работает как надо, все оказалось действительно просто
32MeTpa âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2396
Ñòàðûé 16.11.2017, 22:47
  #2396
^
SoloMidDazzle
 
Àâàòàð äëÿ SoloMidDazzle
📖
Ðåãèñòðàöèÿ: 29.07.2017
Ñîîáùåíèÿ: 26
Ðåãèñòðàöèÿ: 29.07.2017
Ñîîáùåíèÿ: 26
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Ребята, сори если такой вопрос уже был. можете подсказать как на картах включать скрипты?
Т.е - у меня есть скрипты по Data/scripts/ которые меняют некоторые абилки в игре. но они не работают на ГСК картах. Так вот как мне их активировать на карте?
SoloMidDazzle âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2397
Ñòàðûé 16.11.2017, 23:06
  #2397
^
Jack_of_shadows
 
Àâàòàð äëÿ Jack_of_shadows
📖
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 527
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 527
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

SoloMidDazzleесть скрипты по Data/scripts/
Если я правильно понял, что скрипты лежат в data.pak/scripts, или в папке data/scripts, то в обоих вариантах можно вручную вызвать нужный скрипт из консоли:
	@doFile("/scripts/НАЗВАНИЕ_СКРИПТА.lua")
Jack_of_shadows âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2398
Ñòàðûé 16.11.2017, 23:11
  #2398
^
SoloMidDazzle
 
Àâàòàð äëÿ SoloMidDazzle
📖
Ðåãèñòðàöèÿ: 29.07.2017
Ñîîáùåíèÿ: 26
Ðåãèñòðàöèÿ: 29.07.2017
Ñîîáùåíèÿ: 26
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Jack_of_shadowsЕсли я правильно понял, что скрипты лежат в data.pak/scripts, или в папке data/scripts, то в обоих вариантах можно вручную вызвать нужный скрипт из консоли:
	@doFile("/scripts/НАЗВАНИЕ_СКРИПТА.lua")
А нельзя дать ссылку где то в карте что бы они работали при запуске?
В IRMG скрипты сразу работают без посторонних вмешательств. В моде NHF есть прога посторонняя которая патчит карты(как оказалось она работает не только на их мод (и проблема уже решилась, но хочется понять суть)).
SoloMidDazzle âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2399
Ñòàðûé 16.11.2017, 23:29
  #2399
^
Jack_of_shadows
 
Àâàòàð äëÿ Jack_of_shadows
📖
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 527
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 527
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

А нельзя дать ссылку где то в карте что бы они работали при запуске?
В любой карте есть (а если нет, то можно создать) файл MapScript.lua, который выполняется при старте карты. Туда можно прописать строчку, которую я давал, только без "@" в начале.
Jack_of_shadows âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2400
Ñòàðûé 22.11.2017, 17:28
  #2400
^
32MeTpa
 
Àâàòàð äëÿ 32MeTpa
📖
Ðåãèñòðàöèÿ: 06.08.2011
Ñîîáùåíèÿ: 178
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 06.08.2011
Ñîîáùåíèÿ: 178
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
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 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
Îòâåò
Ñòðàíèöà 160 èç 264


Îïöèè òåìû



×àñîâîé ïîÿñ GMT +4, âðåìÿ: 04:35.


vBulletin v3.5.0, Copyright ©2000-2024, Jelsoft Enterprises Ltd. (Ðóññêèé)

ßíäåêñ öèòèðîâàíèå    Top.Mail.Ru