You cannot directly use std::vector on H3 stack or structures, they are not the same format, that's the issue in your first 3 snippets.
Show the hooking address and code please, I have no clue otherwise)
Объявления |
---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
|
Re: RMG SODYou cannot directly use std::vector on H3 stack or structures, they are not the same format, that's the issue in your first 3 snippets.
Show the hooking address and code please, I have no clue otherwise) |
Re: RMG SOD
|
Re: RMG SODВот разобранные параметры функции:
|
|
Re: RMG SODCode looks correct if you replace std::vector by H3Vector.
Game isn't crashing on me, just RMG is failing silently. That probably means this code is making things impossible to be generated according to some requirement somewhere, so more generations are needed. This worked for me about half the time. There are some things not yet in H3API there but it's same logic... only difference is I remove fewer tiles.
|
Re: RMG SODХочу сделать размещение указанных зон только в подземелье.
Функцию отвечающую за это нашел 0x53B250:
Делаю такой хук:
Т.е. первые 8 зон шаблона, хочу разместить на поверхности, а остальные в подземелье. Получаю вылет вот здесь 0053C059 (деление на 0): Понимать бы что делает этот кусок кода. Я понимаю, что этот хук не панацея т.к. он лишь разрешает ставить зону в подземелье, но где-то еще есть код, который именно решает ставить или нет, вот где он?
|
Re: RMG SODА что означает такой код, он довольно часто встречается, например в 0053BE85:
а2 = это аргумент с типом _RMGGenZone_, а4 - локальная переменна, которая судя по всему является адресом вектора. Не понимаю смысла - берем старший байт от адреса _RMGGenZone_ и получаем адрес вектора, как? |
Re: RMG SODРазобрался как управлять расположением зоны:
Хочу теперь добавить возможность этой настройки в файле шаблона. |
|
Re: RMG SODWow, that's pretty awesome work!
Any intents to share your findings in the future?
This is compiler optimization which normally happens when (in this case, byte) variables are defined; compiler will decide what is no longer needed and temporarily use these to store other values. If a4 is the start of a vector/string or other std:: container, then that is how they used to be coded back in the 90s.
The allocator is quite useless in h3's case, it just fills in a random value because of the constructors. |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7