Но по сути картинка то не меняется т.е. мы своего героя не трогаем, движения чужих героев тоже не видим.
А обсчет их хода происходит быстрее.
Объявления | ||
---|---|---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: Как создать плагин для HD модаНо по сути картинка то не меняется т.е. мы своего героя не трогаем, движения чужих героев тоже не видим.
А обсчет их хода происходит быстрее. |
Re: Как создать плагин для HD модаЕсли я компилирую dll в режиме debug, то все ок.
Если в режиме release, то выходит ошибка, проблема в этой строке, вектор возвращается некорректный:
Почему так? Почему один и тот же код работает по-разному в Debug и Release? Debug ebp = 1662052; Release ebp = 1662340; Влияет только изменение "Code generation\Rintime library": Multi-threaded (/MT) - не работает, Multi-threaded Debug (/MTd) - работает. Обновлено: Разобрался, нужно сдвинуть на 4 байта, указатель на вектор, вот так работает:
|
|
Re: Как создать плагин для HD модаI don't understand the fine details behind debug mode but I know the stack adds a lot padding and there are a lot more things made so that code can be edited on the fly.
One thing for sure: debug mode changes the layout of std::vector Release vector looks something like:
But debug vector looks something like:
A debug vector more or less matches the VC6 std::vector layout which is what H3Vector emulates. H3Vector will always match h3 vector whether in debug or release, but std vector will only work in debug mode. However std::vector still does not know about the custom h3 allocator and that creates problems until it is taught to do so.
In theory it might be possible to define H3Vector with some conditional preprocessor magic but I have not explored that. EDIT Just added H3StdVector... it should work the same as std::vector. I checked VS2013+ and the vector format is consistent. For VS2008 this is impossible to do as size is 20~24 |
Re: Как создать плагин для HD модаDid I understand correctly, my solution with an offset of 4 bytes will work correctly in the release, but incorrectly in debug?
I can not use the option from H3API since for this I need to switch to a new headers, and this will take a lot of time. Also the main problem for me to use H3Vector is that I can’t see its values while debugging. |
|
Re: Как создать плагин для HD модаVS has replace all functionality)
99% of renames have gone through deprecation steps, which means when you compile you get errors with the named alternative, I updated all my codebases within a few minutes because of that. You can always copy the H3StdVector implementation but that also means getting the recent H3Allocator if you want to do things other than inspect. Or print to file/console... |
|
Re: Как создать плагин для HD модаAs it turns out, Visual Studio supports custom views of objects since VS2012.
Example for H3Vector Here is Natvis sample for H3Vector, using latest H3API version (member names are different on very very old versions)
This funny piece:
stands in for
because of XML I will look into providing Natvis file for common containers in the future... but for now to create a Natvis file: |
Re: Как создать плагин для HD модаА Как понять что мы находимся на экране города?
Вроде вот так получилось, верно?
|
Re: Как создать плагин для HD модаЕсли верить функции ShowTownScreen (sub_5BE610), то мы на экране города, если gAdvDisposeLevel > 0 (*(int*)0x699598 > 0).
Хотя нет, gAdvDisposeLevel > 0 ещё, когда мы в бою. А вот *(int*)0x6AA658 > 0 только на экране города. |
Re: Как создать плагин для HD модаА как можно понять что игрок нажал "Tab" и пишет сообщение?
А то если он это делает в городе и вводит символ "e", то открывается окно обмена между героями. |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4