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

Быстрая навигация по основным разделам форума:
Турниры
КАРТЫ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

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

Ответ
Страница 267 из 267
 
Опции темы
#3991
Старый 15.12.2025, 20:28
  #3991
^
Долгий
 
Аватар для Долгий
📖
Регистрация: 23.04.2019
Сообщения: 112
Регистрация: 23.04.2019
Сообщения: 112
По умолчанию
Re: Скрипты

Haw3kПривет, скажите пожалуйста а можно ли скриптами заблокировать возможность получить определенный навык или два при взятии навыка?

Скриптом нельзя, только делать мод.
Долгий вне форума
Ответить с цитированием
#3992
Старый 15.12.2025, 23:29
  #3992
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 2057
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 2057
Выставка наград
По умолчанию
Re: Скрипты

Привет!

К сожалению, нет

__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3993
Старый 02.01.2026, 10:37
  #3993
^
temnyrizar
 
Аватар для temnyrizar
📖
Регистрация: 06.06.2025
Адрес: Зияд
Сообщения: 77
Регистрация: 06.06.2025
Адрес: Зияд
Сообщения: 77
По умолчанию
Re: Скрипты

Всех с наступившим новым годом. В процессе создания специализации "герой учит заклинания магии тьмы с повышением своего уровня" столкнулся с проблемой, что если героя нанять в таверне, а не выбрать на старте, его специализация работать не будет. Может надо что-то добавить в код?
function IsoldaS()
local hero="Isolda"
local lvl=GetHeroLevel("Isolda")
if lvl == 3 then
    TeachHeroSpell(hero, 12)
elseif lvl == 5 then
    TeachHeroSpell(hero, 11)
elseif lvl == 8 then
    TeachHeroSpell(hero, 15)
elseif lvl == 10 then
    TeachHeroSpell(hero, 14)
elseif lvl == 15 then
    TeachHeroSpell(hero, 13)
elseif lvl == 18 then
    TeachHeroSpell(hero, 17)
elseif lvl == 20 then
    TeachHeroSpell(hero, 18)
elseif lvl == 23 then
    TeachHeroSpell(hero, 212)
elseif lvl == 25 then
    TeachHeroSpell(hero, 210)
elseif lvl == 28 then
    TeachHeroSpell(hero, 215)
elseif lvl == 30 then
    TeachHeroSpell(hero, 214)
elseif lvl == 33 then
    TeachHeroSpell(hero, 211)
elseif lvl == 35 then
    TeachHeroSpell(hero, 213)
elseif lvl == 38 then
    TeachHeroSpell(hero, 21)
elseif lvl == 40 then
    TeachHeroSpell(hero, 20)
end
end

Trigger(HERO_LEVELUP_TRIGGER, "Isolda", "IsoldaS")
__________________
Модификация "New Era": 3,7%
Модификация "New Era": 3,7%
temnyrizar вне форума
Ответить с цитированием
#3994
Старый 02.01.2026, 23:03
  #3994
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 2057
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 2057
Выставка наград
По умолчанию
Re: Скрипты

Ваш код выполняется только на старте карты. Соответственно, вам нужно вешать триггер не только на старте, но и по появлении героя:

function UpdateHeroSpecs(hero)
  if hero == 'Isolda' then
    Trigger(HERO_LEVELUP_TRIGGER, hero, 'IsoldaSpec')
  elseif hero == 'AnotherHero' then
    --...
  else
    --...
  end
end

for pl = PLAYER_1, PLAYER_8 do
  if GetPlayerState(pl) == PLAYER_ACTIVE then
    Trigger(PLAYER_ADD_HERO_TRIGGER, pl, 'UpdateHeroSpecs')
  end
end
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3995
Старый 03.01.2026, 10:35
  #3995
^
temnyrizar
 
Аватар для temnyrizar
📖
Регистрация: 06.06.2025
Адрес: Зияд
Сообщения: 77
Регистрация: 06.06.2025
Адрес: Зияд
Сообщения: 77
По умолчанию
Re: Скрипты

и опять я не так что-то сделал
function IsoldaSpec()
local hero="Isolda"
local lvl=GetHeroLevel("Isolda")
if lvl == 3 then
    TeachHeroSpell(hero, 12)
elseif lvl == 5 then
    TeachHeroSpell(hero, 11)
elseif lvl == 8 then
    TeachHeroSpell(hero, 15)
elseif lvl == 10 then
    TeachHeroSpell(hero, 14)
elseif lvl == 15 then
    TeachHeroSpell(hero, 13)
elseif lvl == 18 then
    TeachHeroSpell(hero, 17)
elseif lvl == 20 then
    TeachHeroSpell(hero, 18)
elseif lvl == 22 then
    TeachHeroSpell(hero, SPELL_BLIND)
elseif lvl == 23 then
    TeachHeroSpell(hero, 212)
elseif lvl == 25 then
    TeachHeroSpell(hero, 210)
elseif lvl == 28 then
    TeachHeroSpell(hero, 215)
elseif lvl == 30 then
    TeachHeroSpell(hero, 214)
elseif lvl == 33 then
    TeachHeroSpell(hero, 211)
elseif lvl == 35 then
    TeachHeroSpell(hero, 213)
elseif lvl == 38 then
    TeachHeroSpell(hero, 21)
elseif lvl == 40 then
    TeachHeroSpell(hero, 20)
end
end

function UpdateHeroSpecs(hero)
  if hero == 'Isolda' then
    Trigger(HERO_LEVELUP_TRIGGER, hero, 'IsoldaSpec')
  end
end

for pl = PLAYER_1, PLAYER_8 do
  if GetPlayerState(pl) == PLAYER_ACTIVE then
    Trigger(PLAYER_ADD_HERO_TRIGGER, pl, 'UpdateHeroSpecs')
  end
end
__________________
Модификация "New Era": 3,7%
Модификация "New Era": 3,7%
temnyrizar вне форума
Ответить с цитированием
#3996
Старый 04.01.2026, 00:21
  #3996
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 2057
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 2057
Выставка наград
По умолчанию
Re: Скрипты

А что не работает, что пишет консоль?) Визуально я очевидных ошибок не вижу, но, возможно, это просто половина двенадцатого ночи 😁
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3997
Старый 04.01.2026, 09:25
  #3997
^
temnyrizar
 
Аватар для temnyrizar
📖
Регистрация: 06.06.2025
Адрес: Зияд
Сообщения: 77
Регистрация: 06.06.2025
Адрес: Зияд
Сообщения: 77
По умолчанию
Re: Скрипты

}{0TT@6bI4А что не работает, что пишет консоль?) Визуально я очевидных ошибок не вижу, но, возможно, это просто половина двенадцатого ночи 😁
Заклинание НЕ выдаётся
__________________
Модификация "New Era": 3,7%
Модификация "New Era": 3,7%
temnyrizar вне форума
Ответить с цитированием
#3998
Старый 04.01.2026, 21:13
  #3998
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 2057
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 2057
Выставка наград
По умолчанию
Re: Скрипты

Не выдаётся на старте или при найме героя?)
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3999
Старый 04.01.2026, 21:53
  #3999
^
temnyrizar
 
Аватар для temnyrizar
📖
Регистрация: 06.06.2025
Адрес: Зияд
Сообщения: 77
Регистрация: 06.06.2025
Адрес: Зияд
Сообщения: 77
По умолчанию
Re: Скрипты

}{0TT@6bI4Не выдаётся на старте или при найме героя?)
В обоих случаях.
__________________
Модификация "New Era": 3,7%
Модификация "New Era": 3,7%
temnyrizar вне форума
Ответить с цитированием
#4000
Старый 05.01.2026, 00:37
  #4000
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 2057
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 2057
Выставка наград
По умолчанию
Re: Скрипты

Ок, завтра потестирую
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#4001
Старый 03.02.2026, 06:31
  #4001
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 230
Регистрация: 24.04.2016
Сообщения: 230
По умолчанию
Re: Скрипты

Приветствую! А был ли у кого код на дополнительный бафф баффающим объектам? Например, хочется мне объекту Разорванный флаг(даёт бонусы на боевой дух и удачу на 1 бой) дать ещё какой-то бонус, ну скажем бафф к скорости. Естественно, бафф будет работать так же как и оригинальный, т.е. через GiveHeroBattleBonus(). Будет вешаться всем кто коснётся объекта, и не выдастся повторно до тех пор пока герой не сразится с кем-нибудь. Пока что есть мысль написать код, который будет заносить в список всех кто трогает объект, и добавлять им метку типа allow_touch = 0(если 0, то баффа при повторном касании не будет), а потом в функции из COMBAT_RESULTS_TRIGGER отслеживать кто бой завершил, и если это один из наших посетителей - выдавать ему разрешение(0 на 1 менять) на повторный забафф от флага. Но может быть есть вариант попроще?)
Азгалор вне форума
Ответить с цитированием
#4002
Старый 04.02.2026, 02:31
  #4002
^
Долгий
 
Аватар для Долгий
📖
Регистрация: 23.04.2019
Сообщения: 112
Регистрация: 23.04.2019
Сообщения: 112
По умолчанию
Re: Скрипты

АзгалорПриветствую! А был ли у кого код на дополнительный бафф баффающим объектам? Например, хочется мне объекту Разорванный флаг(даёт бонусы на боевой дух и удачу на 1 бой) дать ещё какой-то бонус, ну скажем бафф к скорости. Естественно, бафф будет работать так же как и оригинальный, т.е. через GiveHeroBattleBonus(). Будет вешаться всем кто коснётся объекта, и не выдастся повторно до тех пор пока герой не сразится с кем-нибудь. Пока что есть мысль написать код, который будет заносить в список всех кто трогает объект, и добавлять им метку типа allow_touch = 0(если 0, то баффа при повторном касании не будет), а потом в функции из COMBAT_RESULTS_TRIGGER отслеживать кто бой завершил, и если это один из наших посетителей - выдавать ему разрешение(0 на 1 менять) на повторный забафф от флага. Но может быть есть вариант попроще?)

Писал код на изменённый поиск пути: за каждую единицу удачи 10% шанс получить двойной бонус с баффов. 

    arrayBuffTouched = {[1] = {0,0,0,0,0,0,0,0},
                        [2] = {0,0,0,0,0,0,0,0},
                        [3] = {0,0,0,0,0,0,0,0},
                        [4] = {0,0,0,0,0,0,0,0}}
allFreeBuffs = {1,2,3,4,5,2,6,1,3,1,4,5,7,6}

for i = 1,14 do
    Trigger(OBJECT_TOUCH_TRIGGER,"Buff"..i,"TouchBuff")
end

function TouchBuff(hero,obj)
    local i = GetObjectOwner(hero)
    for j = 1,14 do
        if obj == "Buff"..j then
            if arrayBuffTouched[i][allFreeBuffs[j]] == 0 then
                HasFortunateAdventurer(i,obj)
                arrayBuffTouched[i][allFreeBuffs[j]] = 1
            end
        end
    end
end

function HasFortunateAdventurer(i,obj)
    if HasHeroSkill(heroT[i],33) == not nil and random(10)+1 <= GetHeroStat(heroT[i],5) then
        local bufftype = 0
        for j = 1,14 do
            if obj == "Buff"..j then
                bufftype = j
            end
        end
        if allFreeBuffs[bufftype] == 1 then
            GiveHeroBattleBonus(heroT[i],1,1)--morale
            GiveHeroBattleBonus(heroT[i],0,1)--luck
        elseif allFreeBuffs[bufftype] == 2 then
            if GetDate(DAY_OF_WEEK) == 7 then
                GiveHeroBattleBonus(heroT[i],1,2)--morale
            else
                GiveHeroBattleBonus(heroT[i],1,1)--morale
            end
        elseif allFreeBuffs[bufftype] == 3 then
            if GetDate(DAY_OF_WEEK) == 7 then
                GiveHeroBattleBonus(heroT[i],1,1)--morale
                GiveHeroBattleBonus(heroT[i],0,1)--luck
            elseif GetDate(DAY_OF_WEEK) == 1 or GetDate(DAY_OF_WEEK) == 3 or GetDate(DAY_OF_WEEK) == 5 then
                GiveHeroBattleBonus(heroT[i],0,1)--luck
            else
                GiveHeroBattleBonus(heroT[i],1,1)--morale
            end
        elseif allFreeBuffs[bufftype] == 5 then
            if GetDate(DAY_OF_WEEK) == 1 then
                GiveHeroBattleBonus(heroT[i],2,3)--offence
            elseif GetDate(DAY_OF_WEEK) == 2 then
                GiveHeroBattleBonus(heroT[i],1,1)--morale
            elseif GetDate(DAY_OF_WEEK) == 3 then
                GiveHeroBattleBonus(heroT[i],3,3)--defence
            elseif GetDate(DAY_OF_WEEK) == 4 then
                GiveHeroBattleBonus(heroT[i],0,1)--luck
            elseif GetDate(DAY_OF_WEEK) == 5 then
                GiveHeroBattleBonus(heroT[i],5,1)--initiative
            elseif GetDate(DAY_OF_WEEK) == 6 then
                GiveHeroBattleBonus(heroT[i],2,2)--offence
                GiveHeroBattleBonus(heroT[i],3,2)--defence
            elseif GetDate(DAY_OF_WEEK) == 7 then
                GiveHeroBattleBonus(heroT[i],6,1)--speed
            end
        elseif allFreeBuffs[bufftype] == 6 then
            GiveHeroBattleBonus(heroT[i],1,1)--morale
        elseif allFreeBuffs[bufftype] == 7 then
            if GetDate(DAY_OF_WEEK) == 7 then
                GiveHeroBattleBonus(heroT[i],0,2)--luck
            else
                GiveHeroBattleBonus(heroT[i],0,1)--luck
            end
        end
    end
end

и обновлять после боя 
arrayBuffTouched[i] = {0,0,0,0,0,0,0,0}


Долгий вне форума
Ответить с цитированием
#4003
Старый 04.02.2026, 12:05
  #4003
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 230
Регистрация: 24.04.2016
Сообщения: 230
По умолчанию
Re: Скрипты

Долгий, любопытно, спасибо) А персонаж(и) heroT - это кто? Это ведь полный код механики?
Азгалор вне форума
Ответить с цитированием
#4004
Старый 04.02.2026, 13:28
  #4004
^
Долгий
 
Аватар для Долгий
📖
Регистрация: 23.04.2019
Сообщения: 112
Регистрация: 23.04.2019
Сообщения: 112
По умолчанию
Re: Скрипты

Азгалор
Долгий, любопытно, спасибо) А персонаж(и) heroT - это кто? Это ведь полный код механики?
это массив имён героев.
Долгий вне форума
Ответить с цитированием
Ответ
Страница 267 из 267


Опции темы



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


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

Яндекс цитирование    Top.Mail.Ru