Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

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

  • Автор темы Автор темы ghooost
  • Дата начала Дата начала
Сравнить сколько хотел выбить и сколько выбил?
Если человек с годмодом то не будет писаться сколько ты выбил дамаг а будет просто мисс по резольверу. А нужно, чтобы он понимал когда дамаг не засчитан и не писал вронг лога
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
самый простой способ
/// client.dll -> 55 8B EC 8B 55 08 83 EC 1C F6 42 1C 01
C++:
Expand Collapse Copy
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++:
Expand Collapse Copy
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 не вызывается
 
Последнее редактирование:
самый простой способ
/// client.dll -> 55 8B EC 8B 55 08 83 EC 1C F6 42 1C 01
C++:
Expand Collapse Copy
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++:
Expand Collapse Copy
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
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ну а ваще можно тупо сделать так, m_totalHitsOnClient != m_totalHitsOnServer -> damage_rejected
тогда после одного миса по реджекту, все следующие тоже будут по нему, т.к. они уже не будут равны
 
Назад
Сверху Снизу