Форум HeroesWorld-а - Показать сообщение отдельно - Перенос данных из одной карты в другую между любыми картами
Показать сообщение отдельно
#1
Старый 18.12.2021, 21:41
  #1
^
Mistral-war2
📖
Регистрация: 18.12.2021
Сообщения: 2
Регистрация: 18.12.2021
Сообщения: 2
По умолчанию
Перенос данных из одной карты в другую между любыми картами

В общем я пытался создать кампанию в которой было бы больше 5 миссий.
Приходится делать через обычные карты, но невозможность переноса все сильно ограничивает.
Нагугливал на разных сайтах, что раньше можно было делать print_to прямо в файл, но как оказалось эту возможность давно убрали.
Не придумал ничего лучше, чем дописать функцию в код игры самому.
Выхукал где игра вызывает обычный print в консоль и собрал простейший DLL, который перехватывает их и сохраняет в файл, то что мне нужно.
Для того, чтобы оно все сразу само переносилось в следующие миссии я записываю непосредственно скриптовые функции сразу в LUA файл, который потом может быть загружен в следующей карте (миссии кампании) через простейший doFile().

Пример переноса данных из одной карты в другую.
На видео видно как между миссиями переносятся статы Атака и Защита героя Витторио. (собрано на коленке из говна и палок за 0.00001 наносек)
Сохранение в файл происходит когда у синего игрока убивают героя. (но по сути можно прописать это в любой триггер, вообще в любой)

https://www.youtube.com/watch?v=2icBCpRaBp4


Если развивать эту тему, то можно в теории переносить любую информацию в другие карты на лету.
Все можно скачать и попробовать во вложении. Исходник DLL компилится через MINGW GCC, но возможно MS VS его тоже сожрет.

Плюсы
1) Очевидно такой способ позволяет создавать кампании с количеством миссий больше 5, просто с переносом инфы между картами (или между несколькими кампаниями, если надо)
2) Можно выбирать, какую информацию переносить, не как в обычной кампании из редактора карт, а например, можно перенести только один определенный стат, навык, артефакт или даже армию.
3) Переносить инфу больше чем о 5 героях.
4) Наверное есть ещё, но пока не придумал.
Минусы
1) Сейчас оно все захардкодено в DLL, возможно кто-то может подсказать как бы лучше это дело автоматизировать и облегчить, чтобы могли пользоваться даже люди, не способные скомпилировать DLL.
2) Приходится вручную прописывать print практически для каждого значения стата, так как в DLL выхукано именно вывод текста. Что-то типа print("ATAK=",A) оно не ловит, только обычный принт.
3) ChangeHeroStat именно добавляет статы а не ставит значения, поэтому сейчас приходится уменьшать их на оригинальное значение, а потом только добавлять.
4) Наверное есть ещё, но пока не придумал.

Вопрос:
Есть ли у кого-то способ или скрипт как именно устанавливать значение статов, а не добавлять их как в ChangeHeroStat ?
Вложения
Тип файла: zip h5.zip (5.22 Мбайт, 20 просмотров)
Mistral-war2 вне форума
Ответить с цитированием