Вопрос Как детектить мисс по дамаг реджекшину

Начинающий
Статус
Оффлайн
Регистрация
18 Мар 2021
Сообщения
68
Реакции[?]
29
Поинты[?]
1K
Знаю, что как то через m_totalHitsOnServer, расскажите по подробнее как
 
Начинающий
Статус
Оффлайн
Регистрация
18 Мар 2021
Сообщения
68
Реакции[?]
29
Поинты[?]
1K
Сравнить сколько хотел выбить и сколько выбил?
Если человек с годмодом то не будет писаться сколько ты выбил дамаг а будет просто мисс по резольверу. А нужно, чтобы он понимал когда дамаг не засчитан и не писал вронг лога
 
Забаненный
Статус
Оффлайн
Регистрация
14 Июл 2023
Сообщения
21
Реакции[?]
5
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Трахов
Пользователь
Статус
Оффлайн
Регистрация
6 Фев 2020
Сообщения
490
Реакции[?]
87
Поинты[?]
2K
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
самый простой способ
/// client.dll -> 55 8B EC 8B 55 08 83 EC 1C F6 42 1C 01
C++:
bool __cdecl hooks::engine::msgfunc_report_hit::fn( c_cs_usr_msg_report_hit& msg ) {
    if ( !msg.m_pos_x || !msg.m_pos_y || !msg.m_pos_z || !msg.m_time_stamp )
        return original( msg );

    const auto shot = shots->get_last_shot( );
    if ( !shot )
        return original( msg );

    shot->m_server_info.m_hit_confirmed = true;

    original( msg );
}
in shot listener
C++:
c_game_trace trace;
interfaces::m_trace_system->clip_ray_to_entity( ray_t( shot.m_src, shot.m_server_info.m_impact_pos ), MASK_SHOT_PLAYER, shot.m_target.m_player, &trace );

if ( shot.m_server_info.m_damage < 0 ) {
    if ( trace.m_hit_entity == shot.m_target.m_player ) {
        if ( !shot.m_server_info.m_hit_confirmed ) {
            missed_due_to_resolver
        }
        else {
            missed_due_to_damage_rejection
        }
    }
}
проверка по player_hurt + сколько должен был выбить и выбил в итоге.
если у человека godmode эвент player_hurt не вызывается
 
Последнее редактирование:
Участник
Статус
Онлайн
Регистрация
27 Фев 2019
Сообщения
1,123
Реакции[?]
391
Поинты[?]
46K
самый простой способ
/// client.dll -> 55 8B EC 8B 55 08 83 EC 1C F6 42 1C 01
C++:
bool __cdecl hooks::engine::msgfunc_report_hit::fn( c_cs_usr_msg_report_hit& msg ) {
    if ( !msg.m_pos_x || !msg.m_pos_y || !msg.m_pos_z || !msg.m_time_stamp )
        return original( msg );

    const auto shot = shots->get_last_shot( );
    if ( !shot )
        return original( msg );

    shot->m_server_info.m_hit_confirmed = true;

    original( msg );
}
in shot listener
C++:
c_game_trace trace;
interfaces::m_trace_system->clip_ray_to_entity( ray_t( shot.m_src, shot.m_server_info.m_impact_pos ), MASK_SHOT_PLAYER, shot.m_target.m_player, &trace );

if ( shot.m_server_info.m_damage < 0 ) {
    if ( trace.m_hit_entity == shot.m_target.m_player ) {
        if ( !shot.m_server_info.m_hit_confirmed ) {
            missed_due_to_resolver
        }
        else {
            missed_due_to_damage_rejection
        }
    }
}
если у человека godmode эвент player_hurt не вызывается
Ты бы указал, что MASK_SHOT_PLAYER - это MASK_SHOT_HULL | CONTENTS_HITBOX
 
Забаненный
Статус
Оффлайн
Регистрация
14 Июл 2023
Сообщения
21
Реакции[?]
5
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
primordial
Пользователь
Статус
Оффлайн
Регистрация
4 Сен 2020
Сообщения
361
Реакции[?]
128
Поинты[?]
42K
ну а ваще можно тупо сделать так, m_totalHitsOnClient != m_totalHitsOnServer -> damage_rejected
тогда после одного миса по реджекту, все следующие тоже будут по нему, т.к. они уже не будут равны
 
Сверху Снизу