👉👈 Contact Details (optional)
pornhub.com
🤔 What happened?
Привет древние греки!
Так-как половину переводчиков языков блевотно и некорректно переводят мои сообщения с десяток языков которых я знаю - я буду писать на русском так-как хорошо его выучил, заранее извиняюсь если это не соответствует правилам создания issue в ReGameDll.
Сам баг заключается в проверке хита(удара) ножом и регистрация луча попадания в игрока.
Посмотрите внимательно на следующий код -
|
BOOL CKnife::Stab(BOOL fFirst) |
|
{ |
|
BOOL fDidHit = FALSE; |
|
TraceResult tr; |
|
Vector vecSrc, vecEnd; |
|
|
|
UTIL_MakeVectors(m_pPlayer->pev->v_angle); |
|
|
|
vecSrc = m_pPlayer->GetGunPosition(); |
|
vecEnd = vecSrc + gpGlobals->v_forward * KnifeStabDistance(); |
|
|
|
#ifdef REGAMEDLL_ADD |
|
gpGlobals->trace_flags = FTRACE_KNIFE; |
|
#endif |
|
UTIL_TraceLine(vecSrc, vecEnd, dont_ignore_monsters, m_pPlayer->edict(), &tr); |
|
|
|
if (tr.flFraction >= 1.0f) |
|
{ |
|
#ifdef REGAMEDLL_ADD |
|
gpGlobals->trace_flags = FTRACE_KNIFE; |
|
#endif |
|
UTIL_TraceHull(vecSrc, vecEnd, dont_ignore_monsters, head_hull, m_pPlayer->edict(), &tr); |
|
#ifdef REGAMEDLL_ADD |
|
// We manually reset it because Engine doesn't unlike TraceLine |
|
gpGlobals->trace_flags = 0; |
|
#endif |
|
|
|
if (tr.flFraction < 1.0f) |
|
{ |
|
// Calculate the point of intersection of the line (or hull) and the object we hit |
|
// This is and approximation of the "best" intersection |
|
CBaseEntity *pHit = CBaseEntity::Instance(tr.pHit); |
|
|
|
if (!pHit || pHit->IsBSPModel()) |
|
{ |
|
FindHullIntersection(vecSrc, tr, VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX, m_pPlayer->edict()); |
|
} |
|
|
|
// This is the point on the actual surface (the hull could have hit space) |
|
vecEnd = tr.vecEndPos; |
|
} |
|
} |
Происходит трассировка TraceLine, дальше происходит проверка по TraceHull и HullIntersection, этот код рабочий, но немного вызывает вопросы в практике.
Если вы на карте "35hp_2" встанете повыше на рампу(наклонную поверхность), противник встанет чуть ниже вас, если вы нацелитесь на него при этом у вас viewangles.x (по высоте) будет 0.f (намного выше головы) (force_centerview), то при ударе вы попадете в врага, хотя ваша биссектриса огромная. Но если вы запрыгнете на голову противника и стоя попытаетесь ударить смотря вниз в противника, то удар не зарегистрируется, хотя биссектриса намного меньше чем в первом случае, это уже вызывает вопросы (касательно регистрации удара по BBox (bounding box)).
Также, если противник будет стоять на два метре выше чем вы, вы подойдёте вплотную к стенке, повернетесь задом, прыгните и ударите пкмом, то ваш удар зарегистрирует, хотя смотря ровно на врага оно не зарегистрирует, в первом варианте биссектриса всё ещё больше чем во втором, хотя регистрация есть.
На проблему с лаг-компенсацией или "удар сносит ветром" это не особо похоже, противник стоит и не двигается (drop-пакетов быть не может), здесь прямая атака от одного игрока которая не понятным образом регистрируется через HullIntersection.
Упоминать другие баги с регистрацией по HullIntersection я не могу, так-как это будут использовать читеры.
⚠️ Meta-information
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.14.0.857-dev
Build date: 19:52:21 Mar 27 2025 (4002)
Build from: https://github.com/rehlds/ReHLDS/commit/89958d3
ReGameDLL version: 5.28.0.0-dev
Build date: 18:47:07 Feb 04 2026
Build from:
Metamod-r v1.3.0.149, API (5:13)
Metamod-r build: 11:31:17 Apr 23 2024
Metamod-r from: https://github.com/theAsmodai/metamod-r/commit/603a257
MyArena-Hosting
📄 Relevant log output
👉👈 Contact Details (optional)
pornhub.com
🤔 What happened?
Привет древние греки!
Так-как половину переводчиков языков блевотно и некорректно переводят мои сообщения с десяток языков которых я знаю - я буду писать на русском так-как хорошо его выучил, заранее извиняюсь если это не соответствует правилам создания issue в ReGameDll.
Сам баг заключается в проверке хита(удара) ножом и регистрация луча попадания в игрока.
Посмотрите внимательно на следующий код -
ReGameDLL_CS/regamedll/dlls/wpn_shared/wpn_knife.cpp
Lines 465 to 506 in 4dddce6
Происходит трассировка TraceLine, дальше происходит проверка по TraceHull и HullIntersection, этот код рабочий, но немного вызывает вопросы в практике.
Если вы на карте "35hp_2" встанете повыше на рампу(наклонную поверхность), противник встанет чуть ниже вас, если вы нацелитесь на него при этом у вас viewangles.x (по высоте) будет 0.f (намного выше головы) (force_centerview), то при ударе вы попадете в врага, хотя ваша биссектриса огромная. Но если вы запрыгнете на голову противника и стоя попытаетесь ударить смотря вниз в противника, то удар не зарегистрируется, хотя биссектриса намного меньше чем в первом случае, это уже вызывает вопросы (касательно регистрации удара по BBox (bounding box)).
Также, если противник будет стоять на два метре выше чем вы, вы подойдёте вплотную к стенке, повернетесь задом, прыгните и ударите пкмом, то ваш удар зарегистрирует, хотя смотря ровно на врага оно не зарегистрирует, в первом варианте биссектриса всё ещё больше чем во втором, хотя регистрация есть.
На проблему с лаг-компенсацией или "удар сносит ветром" это не особо похоже, противник стоит и не двигается (drop-пакетов быть не может), здесь прямая атака от одного игрока которая не понятным образом регистрируется через HullIntersection.
Упоминать другие баги с регистрацией по HullIntersection я не могу, так-как это будут использовать читеры.
📄 Relevant log output