C++ Grab local_player in cs2 whitout updating it everytime after a new cs update

Участник
Статус
Оффлайн
Регистрация
6 Апр 2021
Сообщения
343
Реакции[?]
216
Поинты[?]
122K
C++:
for (int i = 1; i <= 64; ++i) {
    c_cs_player_controller* p_player_local = i::ent_system::get_base_entity<c_cs_player_controller>(i);
    auto local_player = p_player_local->is_local_player_controller();
}

// put this where u have m_pawn / c_cs_player_controller
schema(is_local_player_controller, "CBasePlayerController", "m_bIsLocalPlayerController", bool);
 
Участник
Статус
Оффлайн
Регистрация
21 Сен 2019
Сообщения
594
Реакции[?]
250
Поинты[?]
23K
C++:
for (int i = 1; i <= 64; ++i) {
    c_cs_player_controller* p_player_local = i::ent_system::get_base_entity<c_cs_player_controller>(i);
    auto local_player = p_player_local->is_local_player_controller();
}

// put this where u have m_pawn / c_cs_player_controller
schema(is_local_player_controller, "CBasePlayerController", "m_bIsLocalPlayerController", bool);
Во первых найс репост с UC без кредитов, во вторых это гетто способ.
C++:
// credits https://www.unknowncheats.me/forum/3712663-post199.html (no ad)
ctx::local_player = SIG("client.dll", "48 8B 0D ? ? ? ? 48 85 C9 74 29 B2 01")
                          .absolute()
                          .cast<sdk::c_cs_player_controller **>();

// dereference local_player pointer when you need it
// credits "wok-csgo 2.1"
fw::sdk::c_cs_player_controller *c_local_player::operator->() const { return *m_data.m_local; }
ctx::local_player->m_iTeamNum()
 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
6 Апр 2021
Сообщения
343
Реакции[?]
216
Поинты[?]
122K
Во первых найс репост с UC без кредитов, во вторых это гетто способ.
C++:
// credits https://www.unknowncheats.me/forum/3712663-post199.html (no ad)
ctx::local_player = SIG("client.dll", "48 8B 0D ? ? ? ? 48 85 C9 74 29 B2 01")
                          .absolute()
                          .cast<sdk::c_cs_player_controller **>();

// dereference local_player pointer when you need it
// credits "wok-csgo 2.1"
fw::sdk::c_cs_player_controller *c_local_player::operator->() const { return *m_data.m_local; }
ctx::local_player->m_iTeamNum()
yeah that works like that too
 
external lover
Пользователь
Статус
Оффлайн
Регистрация
19 Фев 2018
Сообщения
267
Реакции[?]
43
Поинты[?]
6K
Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,180
Реакции[?]
314
Поинты[?]
152K
Pa$$ter
Пользователь
Статус
Оффлайн
Регистрация
9 Июн 2020
Сообщения
241
Реакции[?]
83
Поинты[?]
12K
Глобалварс в котором лежит локал плеер контроллер: просто существует
 
              ru p2cs > all                      
Разработчик
Статус
Оффлайн
Регистрация
19 Авг 2016
Сообщения
1,580
Реакции[?]
1,963
Поинты[?]
134K
Pa$$ter
Пользователь
Статус
Оффлайн
Регистрация
9 Июн 2020
Сообщения
241
Реакции[?]
83
Поинты[?]
12K
GetLocalPlayerController/GetLocalPlayerPawn лежащие в EngineClient: да да пошли мы нахуй
я экстернал, поэтому вообще не подумал даже о них, а так да. а вообще, что угодно лишь бы не итерация по контроллерам чтобы найти локал. плюс, если уж на то пошло, глобалварсы всегда лежат в одном месте, т.е. один дереф даже в интернале, по идее будет проще чем вызов рандомных функций в которые валв потом рандомно по рофлу добавят ретаддр чек или ещё какой нибудь мусор, имхо.
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
глобалварсы всегда лежат в одном месте
Глобалварсы лежат внутри CNetworkGameClient, который перевыделяется при каждом коннекте.
Поэтому откуда гарантия что он лежит по одному и тому же адресу?
Глобалварс в котором лежит локал плеер контроллер
В глобалварсах этого нет, сама структурка очень маленькая.
То что вы читаете индекс локальной сущности вообще из m_SplitScreenClients, который идет после глобалварсов, внутри того же CNetworkGameClient
 
Сверху Снизу