Вопрос СGCClient::DispatchSOUpdated и CDOTAGameAccountPlus

Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
303
Реакции[?]
108
Поинты[?]
57K
Оформил всё в точности как в https://yougame.biz/threads/242900/post-2518552, но дело в том, что vfunc по индексу 1 у CDOTAGameAccountPlus возвращает 2012, а не 1, соответственно апдейт ничего не делает. В дебаггере даже сравнил с оригинальным вызовом, отличий нет(ну кроме собственно шейред объекта)
Это я что-то делаю не так, или способ пофиксили?
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
672
Реакции[?]
106
Поинты[?]
69K
У меня кстати так же само было и такая же проблема хз че делать братан)
 
Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
303
Реакции[?]
108
Поинты[?]
57K
У меня кстати так же само было и такая же проблема хз че делать братан)
Ну у меня там хоть краша с __debugbreak не было
В принципе если надумаю ченжер, то всё равно пригодится, но ведь как-то всё-таки можно это сделать
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
672
Реакции[?]
106
Поинты[?]
69K
Ну у меня там хоть краша с __debugbreak не было
В принципе если надумаю ченжер, то всё равно пригодится, но ведь как-то всё-таки можно это сделать
у меня тупо нихуя не происходит
 
Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
303
Реакции[?]
108
Поинты[?]
57K
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
326
Реакции[?]
24
Поинты[?]
12K
Оформил всё в точности как в https://yougame.biz/threads/242900/post-2518552, но дело в том, что vfunc по индексу 1 у CDOTAGameAccountPlus возвращает 2012, а не 1, соответственно апдейт ничего не делает. В дебаггере даже сравнил с оригинальным вызовом, отличий нет(ну кроме собственно шейред объекта)
Это я что-то делаю не так, или способ пофиксили?
Не знаю, поможет ли это как, но последний раз что я делал что-то с ченджером я оставил у себя в записях такое:

C++:
enum EEconTypeID
{
    k_EEconTypeItem = 1,
    k_CEconGameAccountClient = 7,
    k_CDOTAGameAccountClient = 0x7D2,
    k_CDOTAGameHeroFavorites = 0x7D7,
    k_ECDOTAMapLocationState = 0x7D8,
    k_ECDOTAPlayerChallenge = 0x7DA,
    k_CDOTAGameAccountPlus = 0x7DC, <---- 2012
 
Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
303
Реакции[?]
108
Поинты[?]
57K
Не знаю, поможет ли это как, но последний раз что я делал что-то с ченджером я оставил у себя в записях такое:

C++:
enum EEconTypeID
{
    k_EEconTypeItem = 1,
    k_CEconGameAccountClient = 7,
    k_CDOTAGameAccountClient = 0x7D2,
    k_CDOTAGameHeroFavorites = 0x7D7,
    k_ECDOTAMapLocationState = 0x7D8,
    k_ECDOTAPlayerChallenge = 0x7DA,
    k_CDOTAGameAccountPlus = 0x7DC, <---- 2012
Хм, ну энумом я это не думал делать
Я из FindCDOTAGameAccountPlus отревёрсил штуку с поиском его SO по этому typeId
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
в мейн треде вызываете? если нет то перенесите вызов в мейн тред(через хуки хуйни в мейн треде)
 
Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
303
Реакции[?]
108
Поинты[?]
57K
в мейн треде вызываете? если нет то перенесите вызов в мейн тред(через хуки хуйни в мейн треде)
Ах вот оно чё, опять пару забытых слов из прочитанного всё мне ломают
Кстати, вот что заметил: после выхода из игры оно магическим образом сохранилось и при перезаходе появился дота плюс
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
Ах вот оно чё, опять пару забытых слов из прочитанного всё мне ломают
Кстати, вот что заметил: после выхода из игры оно магическим образом сохранилось и при перезаходе появился дота плюс
CDOTAGCClientSystem::SaveSerializedSOCache
xref "cache_%u_%u.soc"
кеш(шмотки хуётки дотаплюсы и всё такое) хранится в файле на диске можешь сам такой файл поискать там вроде синтаксис cache_<STEAMID>_<CACHETYPE>.soc(или может наоборот кештайп а потом стимайди)
 
Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
303
Реакции[?]
108
Поинты[?]
57K
CDOTAGCClientSystem::SaveSerializedSOCache
xref "cache_%u_%u.soc"
кеш(шмотки хуётки дотаплюсы и всё такое) хранится в файле на диске можешь сам такой файл поискать там вроде синтаксис cache_<STEAMID>_<CACHETYPE>.soc(или может наоборот кештайп а потом стимайди)
Спасибо, звучит интересно
После вызова в мейн-треде заработало(ну а собственно чего бы и не повесить апдейт на постоянно вызывающуюся мейн-функцию)
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
Спасибо, звучит интересно
После вызова в мейн-треде заработало(ну а собственно чего бы и не повесить апдейт на постоянно вызывающуюся мейн-функцию)
серьёзную логику всегда в любой игре надо вызывать в контексте главного треда/в безопасном месте(которое синхронизованно уже игрой) из соображений синхронизации - банально ты взял ентити, пытаешься получить ее хп, а тут параллельно на другом ядре процессора эту энтити к хуям удаляют и тд и потом ты пизды вместо хп получаешь - такие дела синхронизировать надо, и условно брать хп только когда ты уверен что никто параллельно сущность не удалит
 
Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
303
Реакции[?]
108
Поинты[?]
57K
серьёзную логику всегда в любой игре надо вызывать в контексте главного треда/в безопасном месте(которое синхронизованно уже игрой) из соображений синхронизации - банально ты взял ентити, пытаешься получить ее хп, а тут параллельно на другом ядре процессора эту энтити к хуям удаляют и тд и потом ты пизды вместо хп получаешь - такие дела синхронизировать надо, и условно брать хп только когда ты уверен что никто параллельно сущность не удалит
С этими проблемами я знаком, всё-таки АбилитиESP рисуется в кадрах ImGui, а апдейтится в кадрах доты, нахватался я этих крашей с неинициализированными полями...
Что ж, в таком случае ещё раз большое спасибо за поставку этого прелестного дотаплюс анлокера
 
Сверху Снизу