Ïåðåíîñ äàííûõ èç îäíîé êàðòû â äðóãóþ ìåæäó ëþáûìè êàðòàìè - Ôîðóì HeroesWorld-à

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

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

Îòâåò
 
Îïöèè òåìû
#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 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#2
Ñòàðûé 18.12.2021, 23:40
  #2
^
Andrei_21
 
Àâàòàð äëÿ Andrei_21
📖
Ðåãèñòðàöèÿ: 14.03.2021
Ñîîáùåíèÿ: 238
andrei_21
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 14.03.2021
Ñîîáùåíèÿ: 238
andrei_21
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ïåðåíîñ äàííûõ èç îäíîé êàðòû â äðóãóþ ìåæäó ëþáûìè êàðòàìè

Это очень хорошие открытие! Надо будет посидеть и обмозговать информацию, полученную вами. Может, как-то удастся упростить данный способ для большей доступности.
__________________
Ñöåíàðèé: "Íàñëåäèå ïðîøëîãî"
Êàìïàíèè:
"
Íîâûé ïîðÿäîê", "Ñåðûé Àëüÿíñ""Ïîèñêè Èñòèíû"

Òðåéëåð êàìïàíèè "Äûõàíèå Ïóñòîòû": https://www.youtube.com/watch?v=NH04dyKPmw8&ab_channel=%D0%90ndrei_21

Andrei_21 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3
Ñòàðûé 19.12.2021, 04:13
  #3
^
vova2112
 
Àâàòàð äëÿ vova2112
📖
Ðåãèñòðàöèÿ: 01.09.2020
Àäðåñ: EAO
Ñîîáùåíèÿ: 122
Ðåãèñòðàöèÿ: 01.09.2020
Àäðåñ: EAO
Ñîîáùåíèÿ: 122
Ïî óìîë÷àíèþ
Re: Ïåðåíîñ äàííûõ èç îäíîé êàðòû â äðóãóþ ìåæäó ëþáûìè êàðòàìè

Не знаю на сколько это осуществимо :
1) Создать отдельное приложение в котором по средствам допустим выбора чекбоксов, указать какую информацию необходимо сохранить и в какой миссии-главе(например в 1-ой главе сохранить прокачку героя и армию, а во 2-ой главе что-либо иное). И сохранить выбранные настройки в файл допустим в виде 'ini' или 'xml'.
2) Уже из Dll распарсить файл с сохранёнными настройками, и подставлять необходимые для переноса данные в функцию которая будет создавать скрипт.
__________________
Ãðåøèòü, çëîäåéñòâîâàòü, à ðàâíî è äåëàòü äîáðî èëè ñîâåðøàòü ïîäâèãè íàäî áåç íàòóãè. À åñëè ñ íàòóãîé — òî ëó÷øå íå íàäî.
Ê. Ïðóòêîâ-èíæåíåð. Ìûñëü ¹ 77.
Ìíîãèå âåùè íàì íåïîíÿòíû íå ïîòîìó, ÷òî íàøè ïîíÿòèÿ ñëàáû; íî ïîòîìó, ÷òî ñèè âåùè íå âõîäÿò â êðóã íàøèõ ïîíÿòèé.
© Êîçüìà Ïðóòêîâ
Ãðåøèòü, çëîäåéñòâîâàòü, à ðàâíî è äåëàòü äîáðî èëè ñîâåðøàòü ïîäâèãè íàäî áåç íàòóãè. À åñëè ñ íàòóãîé — òî ëó÷øå íå íàäî.
Ê. Ïðóòêîâ-èíæåíåð. Ìûñëü ¹ 77.
Ìíîãèå âåùè íàì íåïîíÿòíû íå ïîòîìó, ÷òî íàøè ïîíÿòèÿ ñëàáû; íî ïîòîìó, ÷òî ñèè âåùè íå âõîäÿò â êðóã íàøèõ ïîíÿòèé.
© Êîçüìà Ïðóòêîâ
vova2112 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#4
Ñòàðûé 19.12.2021, 14:11
  #4
^
Ment
 
Àâàòàð äëÿ Ment
📖
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30729
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30729
Ïî óìîë÷àíèþ
Re: Ïåðåíîñ äàííûõ èç îäíîé êàðòû â äðóãóþ ìåæäó ëþáûìè êàðòàìè

АвторВыхукал где игра вызывает обычный print в консоль и собрал простейший DLL, который перехватывает их и сохраняет в файл, то что мне нужно.
Я хочу отдельно засвидетельствовать, то, что вы делаете -- это высший класс. Спасибо!
Ment âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#5
Ñòàðûé 19.12.2021, 14:34
  #5
^
Waterfall_13
 
Àâàòàð äëÿ Waterfall_13
📖
Ðåãèñòðàöèÿ: 31.03.2020
Àäðåñ: Êðûì
Ñîîáùåíèÿ: 828
Waterfall#7225
Ðåãèñòðàöèÿ: 31.03.2020
Àäðåñ: Êðûì
Ñîîáùåíèÿ: 828
Waterfall#7225
Ïî óìîë÷àíèþ
Re: Ïåðåíîñ äàííûõ èç îäíîé êàðòû â äðóãóþ ìåæäó ëþáûìè êàðòàìè

Крутая штука cool
Waterfall_13 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#6
Ñòàðûé 20.12.2021, 07:52
  #6
^
}{0TT@6bI4
 
Àâàòàð äëÿ }{0TT@6bI4
📖
Ðåãèñòðàöèÿ: 05.09.2019
Àäðåñ: Ñåðåáðÿíûå Ãîðîäà, Àëü-Ñàôèð
Ñîîáùåíèÿ: 1980
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 05.09.2019
Àäðåñ: Ñåðåáðÿíûå Ãîðîäà, Àëü-Ñàôèð
Ñîîáùåíèÿ: 1980
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ïåðåíîñ äàííûõ èç îäíîé êàðòû â äðóãóþ ìåæäó ëþáûìè êàðòàìè

Блин, офигенная вещь!
Статы можно выставить как delta-default (из дельты вычесть начальное значение), но вы это и так знаете, как вижу.

К слову хочу сказать, что данные (числа и строки, а также функции для parse'ра) можно передавать между сценариями через SetGameVar, а телепорт в новые миссии осуществлять автоматом через WarpToMap.
__________________
Ñ óâàæåíèåì, }{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 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#7
Ñòàðûé 20.12.2021, 17:07
  #7
^
Mistral-war2
📖
Ðåãèñòðàöèÿ: 18.12.2021
Ñîîáùåíèÿ: 2
Ðåãèñòðàöèÿ: 18.12.2021
Ñîîáùåíèÿ: 2
Ïî óìîë÷àíèþ
Re: Ïåðåíîñ äàííûõ èç îäíîé êàðòû â äðóãóþ ìåæäó ëþáûìè êàðòàìè

Видел вы писали на ютубе "Вот было бы круто, если бы переносились данные по карте map.xdb (положении обьектов к концу игры итд)."
В теории можно запомнить любую информацию, которую можно узнать скриптами и вывести в print, а затем так же скриптами установить. Но как я понимаю как раз их и SetGameVar тоже может?
А вообще положение объектов, что имеется ввиду? где герой стоял? В теории можно узнавать его координаты через локации, а телепортировать через SetObjectPosition. Или на героев оно не работает? И для других объектов типа лежащих ресурсов тоже наверное можно узнать подбирались ли они? Вроде видел в мануале GetObjectsInRegion. Конечно тема муторная получается в итоге, но в теории возможно?


Кстати SetGameVar и WarpToMap работают в кампаниях тоже? или только в стандартных миссиях?
Получается я зря делал свой dll раз уже был способ переноса и так.


Насчет выставления статов получается delta-default единственное решение? А я думал, что должен был быть более "нормальный" способ. Кажется как будто разработчики не дописали API скриптовое, точнее зачем то его сломали, так как я читал, что раньше ChangeStat нормально устанавливал значения, а не прибавлял в старых версиях. Странно, что после изменения этой функции разрабы не добавили че-то типа SetStat.
Mistral-war2 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#8
Ñòàðûé 21.12.2021, 08:15
  #8
^
}{0TT@6bI4
 
Àâàòàð äëÿ }{0TT@6bI4
📖
Ðåãèñòðàöèÿ: 05.09.2019
Àäðåñ: Ñåðåáðÿíûå Ãîðîäà, Àëü-Ñàôèð
Ñîîáùåíèÿ: 1980
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 05.09.2019
Àäðåñ: Ñåðåáðÿíûå Ãîðîäà, Àëü-Ñàôèð
Ñîîáùåíèÿ: 1980
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ïåðåíîñ äàííûõ èç îäíîé êàðòû â äðóãóþ ìåæäó ëþáûìè êàðòàìè

Узнать координаты объектов на карте можно, но вот только тогда нужно их всех проименовать)
По сути, то, чего я хочу, — утопическая идея о полном переносе информации карты в скрипт (для постоянного хождения между локациями как в Сталкере).

Увы, SetGameVar переносит данные между сценариями, последовательно запущенными, а также между миссиями кампаний (так организован перенос артефактов). Но dll вы писали не зря, я уверен, что у него есть более широкое применение. Возможно ли сохранение таблиц? Это же очень круто: передать сложные n-мерные таблицы при помощи SetGameVar нереально.

По поводу стат — по-моему, так и есть, увы.
__________________
Ñ óâàæåíèåì, }{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 âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
Îòâåò


Îïöèè òåìû



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


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

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