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

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

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

Ответ
Страница 265 из 267
 
Опции темы
#3961
Старый 29.12.2024, 02:49
  #3961
^
Долгий
 
Аватар для Долгий
📖
Регистрация: 23.04.2019
Сообщения: 109
Регистрация: 23.04.2019
Сообщения: 109
По умолчанию
Re: Скрипты

Dogenator

Всем здравствуйте!

Возникла такая проблема:

Установил скрипт по смене дня-ночи, все работает, но...

При смене дневного освещения на ночное - становится недоступно меню героев, причем только для игрока №1

В чем может быть проблема?

Вот код:

curr_light = 'day'

function DayNight()
  if curr_light == 'day' then
    SetAmbientLight(GROUND, 'NIGHT', 1, 5.0)
    curr_light = 'night'
  else
    SetAmbientLight(GROUND, 'DAY', 1, 5.0)
    curr_light = 'day'
  end
end


Это только при запуске карты через мультиплеер? в сингл плеере всё нормально? У меня был подобный баг при вызове showFlyingSign(), пока на экране всех игроков надпись не появится, доступа к меню героя не будет, точнее будет но по нажатию на иконку героя меню будет открываться у последнего игрока (ставил всех под управление человека и тестил). Крч есть функции для правильной работы которых нужно чтоб они были на экране каждого игрока человека. PEST фиксит это в мультиплеере
Долгий вне форума
Ответить с цитированием
#3962
Старый 29.12.2024, 03:35
  #3962
^
Dogenator
 
Аватар для Dogenator
📖
Регистрация: 06.06.2024
Сообщения: 58
Регистрация: 06.06.2024
Сообщения: 58
По умолчанию
Re: Скрипты

Да, при запуске в мультиплеере, но под управлением вторым игроком.

То есть я правильно понимаю, что когда у меня наступила ночь, то у второго игрока еще день, поэтому получается такой рассинхрон.

Завтра попробую с товарищем попробовать, посмотрю как там будет и отпишусь

Dogenator вне форума
Ответить с цитированием
#3963
Старый 06.01.2025, 02:43
  #3963
^
Dogenator
 
Аватар для Dogenator
📖
Регистрация: 06.06.2024
Сообщения: 58
Регистрация: 06.06.2024
Сообщения: 58
По умолчанию
Re: Скрипты

Наконец, смог протестировать этот скрипт в онлайне.

Вы правы, Pest решает эту проблему, все работает

Спасибо за помощь!

Dogenator вне форума
Ответить с цитированием
#3964
Старый 23.01.2025, 14:35
  #3964
^
Dogenator
 
Аватар для Dogenator
📖
Регистрация: 06.06.2024
Сообщения: 58
Регистрация: 06.06.2024
Сообщения: 58
По умолчанию
Re: Скрипты

Всем добрый день!

Встала такая задача: через скрипт выдавать заклинание "Ускорение" при прокачке навыка "Волшебство скорости" из нападения. И удалять, если навык был скручен у ментора. Нужно это так как я изменил тир заклинания "Ускорения" с 1-го на 3-ий и при прокачке "ВС", в бою заклинание становится недоступно

В файлах по скриптам я нашел пару функций, которые за это отвечают

HasHeroSkill(heroName, skillID); - проверяет наличие навыка

TeachHeroSpell(heroName, spell);  - выдает заклинание 

Забирает заклинание - ?

Единственное, что меня смущает, так это скриптовое имя героя. Если я хочу, чтобы эта функция работала на всех героев, то как следует поступить?

 

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

 

 

Dogenator вне форума
Ответить с цитированием
#3965
Старый 23.01.2025, 19:37
  #3965
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 551
Выставка наград
Регистрация: 08.09.2013
Сообщения: 551
Выставка наград
По умолчанию
Re: Скрипты

Dogenator, нужно крутить отдельный поток, который будет пробегать по всем героям игрока
while(1) do
  local heroes = GetPlayerHeroes(ID_игрока);
  for i, hero in heroes do
    if(HasHeroSkill(hero, ID_скилла) and (not KnowHeroSpell(hero, ID_спелла))) then
      TeachHeroSpell(hero, ID_спелла);
    end
  end
  sleep(50);
end

Но на отнимание заклинания кажется функции нет, может читом разве что?
DogenatorТриггер касания работает с первого дня или можно задать так, чтобы он работал с определенного?
Можно в обработчике касания проверять какой сейчас день, или можно вешать триггер касания не сразу по старту, а в триггере нового дня когда наступит нужный день. Триггер работает с момента когда выполнится функция Trigger().
__________________
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#3966
Старый 24.01.2025, 00:26
  #3966
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 2056
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 2056
Выставка наград
По умолчанию
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 вне форума
Ответить с цитированием
#3967
Старый 24.01.2025, 00:41
  #3967
^
Dogenator
 
Аватар для Dogenator
📖
Регистрация: 06.06.2024
Сообщения: 58
Регистрация: 06.06.2024
Сообщения: 58
По умолчанию
Re: Скрипты

Сделал так, как вы сказали, все получилось

Но, почему то, у меня перестали работать абсолютно все другие скрипты, помещенные в функцию нового дня. В чем может быть проблема?

Так выглядит функция, которая запускается с NEW_DAY_TRIGGER

function new_day_trigger()
haste_p1 ()
haste_p2 ()
 if (GetDate(ABSOLUTE_DAY) == 2) then
Spawn_army()
 end
 if (GetDate(ABSOLUTE_DAY) == 3) then
day_3rd()
mentor_off ()
Trigger(OBJECT_TOUCH_TRIGGER, 'mentor_1', 'mentor_message_p1' );
Trigger(OBJECT_TOUCH_TRIGGER, 'mentor_2', 'mentor_message_p2' );
 end
end

А эта функция, что вы мне прислали, которая ломает все то, что выше

function haste_p1 ()
while(1) do
  local heroes = GetPlayerHeroes(PLAYER_1);
  for i, hero in heroes do
    if(HasHeroSkill(hero, 143) and (not KnowHeroSpell(hero, SPELL_HASTE))) then
      TeachHeroSpell(hero, SPELL_HASTE);
    end
  end
  sleep(50);
end
end

Возможно я неправильно поместил саму эту функцию haste, что до всех остальных функций обработка скрипта просто не доходит?

 



Добавлено через 2 минуты

}{0TT@6bI4Если заклинание недоступно для каста (недостаточный уровень магии света), то даже выданное скриптом оно кастоваться не будет, к сожалению

Как ни странно, но это работает, но заклинание кастуется только на искусном уровне школы света, хотя света даже нет в прокачке

Но ломает почему то все другие скрипты

Dogenator вне форума
Ответить с цитированием
#3968
Старый 24.01.2025, 12:34
  #3968
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 551
Выставка наград
Регистрация: 08.09.2013
Сообщения: 551
Выставка наград
По умолчанию
Re: Скрипты

Конструкции вида while(1) do ... end - это цикл, если в нём нет команды выхода из цикла, то он бесконечный. Когда вы вызываете haste_p1(), скрипт крутится внутри этой функции бесконечно. Для таких вещей нужно использовать отдельные потоки, функция startThread(название функции). Запустить один раз, можно прямо при старте карты, и они вечно работают.
__________________
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#3969
Старый 24.01.2025, 15:40
  #3969
^
Dogenator
 
Аватар для Dogenator
📖
Регистрация: 06.06.2024
Сообщения: 58
Регистрация: 06.06.2024
Сообщения: 58
По умолчанию
Re: Скрипты

Jack_of_shadowsКонструкции вида while(1) do ... end - это цикл, если в нём нет команды выхода из цикла, то он бесконечный. Когда вы вызываете haste_p1(), скрипт крутится внутри этой функции бесконечно. Для таких вещей нужно использовать отдельные потоки, функция startThread(название функции). Запустить один раз, можно прямо при старте карты, и они вечно работают.

Спасибо вам, вот теперь все работает как надо.

Dogenator вне форума
Ответить с цитированием
#3970
Старый 03.06.2025, 04:31
  #3970
^
_BlackKnight_
📖
Регистрация: 21.05.2025
Сообщения: 6
Регистрация: 21.05.2025
Сообщения: 6
По умолчанию
Re: Скрипты

Всем добра! Подскажите, пожалуйста, как сделать проверку на уровень существа? Идея следующая: когда вражеский герой дохнет, он повторно нанимается ИИ, при этом ему выдается армия своей фракции, количество существ и их уровень в ней соответствуют таковым в армии героя игрока.
_BlackKnight_ вне форума
Ответить с цитированием
#3971
Старый 03.06.2025, 23:12
  #3971
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 551
Выставка наград
Регистрация: 08.09.2013
Сообщения: 551
Выставка наград
По умолчанию
Re: Скрипты

_BlackKnight_, насколько мне известно, такой готовой функции нет. Как вариант, набить табличку какому существу игрока соответствует какое существо компа и по ней вычислять.
__________________
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#3972
Старый 04.06.2025, 03:39
  #3972
^
_BlackKnight_
📖
Регистрация: 21.05.2025
Сообщения: 6
Регистрация: 21.05.2025
Сообщения: 6
По умолчанию
Re: Скрипты

Jack_of_shadows_BlackKnight_, насколько мне известно, такой готовой функции нет. Как вариант, набить табличку какому существу игрока соответствует какое существо компа и по ней вычислять.
Не совсем понимаю, как это можно сделать, хотелось бы увидеть реализацию на конкретном примере.
_BlackKnight_ вне форума
Ответить с цитированием
#3973
Старый 04.06.2025, 16:56
  #3973
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 551
Выставка наград
Регистрация: 08.09.2013
Сообщения: 551
Выставка наград
По умолчанию
Re: Скрипты

_BlackKnight_, например если игрок строго рыцарь, а ИИ строго демон, то
-- таблица соответствия, внес только пару существ, остальных по аналогии
creatures_conversion_table =
{
  {CREATURE_PEASANT, CREATURE_FAMILIAR},
  {CREATURE_MILITIAMAN, CREATURE_IMP},
  {CREATURE_LANDLORD, CREATURE_QUASIT},
};

-- функция проверки, без обвязки касающейся в какой момент ее вызывать
-- на вход подаются имена героев игрока и ИИ.
function CheckCreaturesConversion(hero_player, hero_enemy)
  for i, cr in creatures_conversion_table do
    local cr_num = GetHeroCreatures(hero_player, cr[1]);
    if (cr_num > 0) then
      AddHeroCreatures(hero_enemy, cr[2], cr_num);
    end
  end
end

Если замки рандомные, то конечно всё будет чуть сложнее.
Код не проверял, мог где-то ошибиться.
__________________
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#3974
Старый 05.06.2025, 16:29
  #3974
^
_BlackKnight_
📖
Регистрация: 21.05.2025
Сообщения: 6
Регистрация: 21.05.2025
Сообщения: 6
По умолчанию
Re: Скрипты

Jack_of_shadows, скрипт рабочий, спасибо, только существ придется всех перечислять. поскольку на карте замки всех фракций. Немного не по теме: скачал последнюю версию героев 5.5, на ней скрипты отказываются работать, на старой версии все нормально. Пытаюсь понять, в чем проблема. 
_BlackKnight_ вне форума
Ответить с цитированием
#3975
Старый 27.06.2025, 16:21
  #3975
^
_BlackKnight_
📖
Регистрация: 21.05.2025
Сообщения: 6
Регистрация: 21.05.2025
Сообщения: 6
По умолчанию
Re: Скрипты

Еще вопрос. Допустим, герой заходит в гарнизон, выставляет существ, выскакивает предложение преобразовать этих существ в существ соответствующего тира и степени грейда. Для преобразования доступны существа 5, 6 и 7 тиров. Получены могут быть существа только тех фракций, к мировоззрению которых относится игрок.  Мировоззрение определяется стартовым героем.  За преобразование взимается плата, которая рассчитывается исходя из стоимости полученного существа. Существ 7 тира Некрополиса для получения соответствующего количества существ других фракций требуется на 50% больше.  Хотелось бы увидеть реализацию на примере существ злых фракций. Стало быть, условные ангелы могут быть преобразованы в дьяволов, циклопов и иже с ними. 
_BlackKnight_ вне форума
Ответить с цитированием
Ответ
Страница 265 из 267


Опции темы



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


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

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