Вопрос Как понять попал ли локальный игрок?

  • Автор темы Автор темы ObamaDva
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
15 Ноя 2024
Сообщения
3
Реакции
0
Я решил сделать хитсаунды, но мне нужно понять когда локальный игрок попал. Как понять когда игрок выстрелил я знаю, а как понять попал или не попал я хз. Я думаю что это можно сделать через нанесенный дамаг, а как его получить я не знаю
 
Используй эвент bullet_impact, сделай проверку что attacker это локальный игрок и victim(userid) это не локальный игрок
 
Я решил сделать хитсаунды, но мне нужно понять когда локальный игрок попал. Как понять когда игрок выстрелил я знаю, а как понять попал или не попал я хз. Я думаю что это можно сделать через нанесенный дамаг, а как его получить я не знаю
через эвент player_hurt
 
report hit можно заюзать
 
если кто то хочет сделать через CCSUsrMsg_ReportHit
44 8B 41 10 33 D2 41 F6 C0 0F 74 2F 41 8B C0 24 01 F6 D8 48 1B D2 83 E2 05 41 F6 C0 02 48 8D 42 05 48 0F 44 C2 41 F6 C0 04 48 8D 50 05 48 0F 44 D0 41 F6 C0 08 74 04 48 83 C2 05 4C 8D 41 14 E9 ? ? ? ? CC CC CC CC CC CC CC CC CC CC CC CC 8B 41 14 @client.dll

Hit_t:
Expand Collapse Copy
// я не уверен что вальв исправили сплит этой хуйни в кс2(да и мне лень чекать)
// поэтому прилагаю еще одну струткуру с ксго
struct Hit_t { // кс2 может быть
    std::byte   pad0[ 8u ]{};
    sdk::vec3_t m_pos{};
    float       m_time{};
};

struct Hit_t { // ксго
    std::byte   pad0[ 8u ]{};
    sdk::vec2_t m_pos{};
    float       m_time{};
    float       m_z{};
};
 
Самый легкий способ известный мне
c++:
Expand Collapse Copy
void Hitdetect(uintptr_t localplayer) noexcept {

    if (localplayer == 0)

    return;

    uintptr_t pBulletServices = *(uintptr_t*)(localplayer + C_CSPlayerPawn::m_pBulletServices);

    if (!pBulletServices)

        return;

    static int hit = 0;

    int totalHits = *(int*)(pBulletServices + CCSPlayer_BulletServices::m_totalHitsOnServer);



    if (totalHits != hit) {

        std::cout << "Hit detected, total hits: " << totalHits << std::endl;

        hit = totalHits;

    }

}
 
Самый легкий способ известный мне
c++:
Expand Collapse Copy
void Hitdetect(uintptr_t localplayer) noexcept {

    if (localplayer == 0)

    return;

    uintptr_t pBulletServices = *(uintptr_t*)(localplayer + C_CSPlayerPawn::m_pBulletServices);

    if (!pBulletServices)

        return;

    static int hit = 0;

    int totalHits = *(int*)(pBulletServices + CCSPlayer_BulletServices::m_totalHitsOnServer);



    if (totalHits != hit) {

        std::cout << "Hit detected, total hits: " << totalHits << std::endl;

        hit = totalHits;

    }

}
ну как будто костыль, может в игре есть уже готовое?
 
Назад
Сверху Снизу