Current time: 29.11.2024, 05:39 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Вопросы по моддингу
» (обсуждаем моддинг здесь)
Author Message
Raistlin Away
Moderators

Posts: 1349
Post: #1891

Думаю, зависимости можно найти через поиск по константам (есть в OllyDBG). Надо посмотреть, каким номерам строк они соответствуют в текстовом файле, а потом поискать эти номера.


Создал новый глобальный мод: WoG Ultra Edition
03.02.2022 11:39
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #1892

Raistlin, зачем? ещё раз говорю, номера опций не влияют ни на что.


Image: widget.png?style=banner2

Новейший Heroes Launcher
03.02.2022 11:55
Visit this user's website Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 792
Post: #1893

Raistlin, в воговских исходниках нашел функцию с этими зависимостями, может это поможет. Но я по прежнему не представляю как их в exe найти:
Это в wogsetup.cpp если что.
(This post was last modified: 20.02.2022 19:01 by wessonsm.)
03.02.2022 12:19
Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1349
Post: #1894

daemon_n, я имел ввиду не номера опций, а номера номеров в таблице. Сейчас, впрочем, уже не важно, так как адрес найден.


Создал новый глобальный мод: WoG Ultra Edition
03.02.2022 14:18
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #1895

Raistlin, номера номеров в таблице можно получить покликав вручную)


Image: widget.png?style=banner2

Новейший Heroes Launcher
03.02.2022 14:32
Visit this user's website Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 792
Post: #1896

Raistlin, какой адрес, если не секрет?
03.02.2022 15:04
Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1349
Post: #1897

daemon_n, не важно, откуда номер) Главное - что это константа, по которой можно искать. Хотя, судя по функции, в данном случае это бы не помогло.

wessonsm, его в твоё сообщение дописали.


Создал новый глобальный мод: WoG Ultra Edition
03.02.2022 15:07
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 792
Post: #1898

Увидел, спасибо!
03.02.2022 15:14
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 792
Post: #1899

(27.02.2022 23:11)XEPOMAHT Wrote:  Настройка ключевых слов - целиком на совести скриптёра, т.к. вог по-умолчанию всегда пишет туда 0.

XEPOMAHT, верно ли, что контрольные слова для каждого объекта пишутся в какую-то структуру в памяти или выделенную область памяти?
И не может ли случиться так, что выделенной области не хватит?
28.02.2022 11:45
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #1900

(28.02.2022 11:45)wessonsm Wrote:  верно ли, что контрольные слова для каждого объекта пишутся в какую-то структуру в памяти или выделенную область памяти?

Контрольное слово пишется в структуру клетки карты, память на которую выделяется исходя из размеров карты.

(28.02.2022 11:45)wessonsm Wrote:  И не может ли случиться так, что выделенной области не хватит?

Лимит контрольного слова - 32 бита памяти. Но там новые данные лучше не хранить, т.к. места там и так кот наплакал. SoD и так сжимает данные для доброй половины объектов, чтобы они туда вошли, а всё что не входит - записывается и храниться в дополнительных структурах, привязанных к индексам объектов на карте. Для новых объектов карты, естественно, могут быть новые форматы контрольных слов (например, в ERA+ данные новых объектов карт без проблем хранятся в контрольных словах и обрабатываются Тифоном). Для воговских объектов так же выделяется соответствующая память, но... она привязана к максимальному размеру карт, в итоге, тонна неиспользованных нулей пишется в сохранения (а Берсеркер пишет в сохранения ЕЩЁ БОЛЬШЕ нулей для совместимости с XXXL-картами), но особо конечно пользователь это не замечает, т.к. данные архивируются (но в памяти при загрузке сохранения так же будет мегабайты помойки из неиспользованных нулей).
28.02.2022 12:30
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 792
Post: #1901

XEPOMAHT, спасибо за подробное разъяснение!
28.02.2022 13:21
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #1902

XEPOMAHT, да вроде бы давно уже сохраняемые PO-данные под размер карты подстраиваются (но всегда с подземельем).

BasicPoSize := MapSize * MapSize * 2;
SquaresSize := BasicPoSize * sizeof(TSquare);

При старте/загрузке карты происходит пересчёт размера данных PO и соответствующий патчинг.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
28.02.2022 17:50
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 792
Post: #1903

У меня вопрос по заголовочному файлу era.h.
Компилятор (Visual Studio Express 2008) ругается на строку 303:
Code:
std::string tr (const char *key, const std::vector<std::string> params = {}) {
Code:
error C2143: синтаксическая ошибка: отсутствие ")" перед "{"
error C2059: синтаксическая ошибка: )
error C2059: синтаксическая ошибка: )
error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)

Что здесь может быть не так?
Была еще пара ошибок, но с ними я справился самостоятельно.
Осталась эта. Sorry
15.05.2022 21:31
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #1904

Древний компилятор не понимает то ли C++ 11, то ли 13-ый стандарт, когда можно давать векторам/дин.массивам значения по умолчанию в аргументах и при инициализации. Убери "= {}". Просто при вызове tr (аналог SN:T) нужно будет всегда передавать пустой список параметров, даже если их нет.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
15.05.2022 22:07
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 792
Post: #1905

Спасибо! В таком виде компилируется.
И еще, я правильно понимаю, что в строке 202
"typedef char* (__stdcall *ToStaticStr) (const char* Str);"
- это опечатка и должно быть
"typedef char* (__stdcall *TToStaticStr) (const char* Str);" ?
Просто хочу окончательно развеять сомнения.
15.05.2022 22:20
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group