From 1185044cdeaaa5da4fad8d6288f30c7fee06c289 Mon Sep 17 00:00:00 2001 From: GLoOoccK <155241167+GLoOoccK@users.noreply.github.com> Date: Mon, 19 May 2025 12:00:17 -0300 Subject: [PATCH 1/3] Update natives_misc.cpp --- reapi/src/natives/natives_misc.cpp | 56 ++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/reapi/src/natives/natives_misc.cpp b/reapi/src/natives/natives_misc.cpp index de49e9e0..b4ca106f 100644 --- a/reapi/src/natives/natives_misc.cpp +++ b/reapi/src/natives/natives_misc.cpp @@ -3416,6 +3416,60 @@ cell AMX_NATIVE_CALL rg_player_takedamage_impulse(AMX *amx, cell *params) return TRUE; } +/* +* Fires a trace line between two origins, retrieving the end point and entity hit. +* +* @param vecStart Start position +* @param vecEnd End position +* @param ignoreMonsters Entity ignore type +* @param ignoreEntity Entity index that trace will ignore, NULLENT if trace should not ignore any entities +* @param ptr Traceresult pointer, use Fakemeta's create_tr2 to instantiate one +* @param traceFlags Additional trace flags, see FTRACE_* constants on cssdk_const.inc +* +* @noreturn +*/ +cell AMX_NATIVE_CALL rg_trace_line(AMX *amx, cell *params) +{ + enum args_e { arg_count, arg_vec_start, arg_vec_end, arg_ignore_monsters, arg_ignore_entity, arg_trace, arg_trace_flags }; + + edict_t* pEntityIgnore = edictByIndexAmx(params[arg_ignore_entity]); + + CAmxArgs args(amx, params); + + gpGlobals->trace_flags = args[arg_trace_flags]; + TRACE_LINE(args[arg_vec_start], args[arg_vec_end], args[arg_ignore_monsters], pEntityIgnore, args[arg_trace]); + + return TRUE; +} + +/* +* Fires a trace hull on a specified origin or between two origins. +* +* @param vecStart Start position +* @param vecEnd End position +* @param ignoreMonsters Entity ignore type +* @param hullNumber Hull type +* @param ignoreEntity Entity index that trace will ignore, NULLENT if trace should not ignore any entities +* @param ptr Traceresult pointer, use Fakemeta's create_tr2 to instantiate one +* @param traceFlags Additional trace flags, see FTRACE_* constants on cssdk_const.inc +* +* @noreturn +*/ +cell AMX_NATIVE_CALL rg_trace_hull(AMX *amx, cell *params) +{ + enum args_e { arg_count, arg_vec_start, arg_vec_end, arg_ignore_monsters, arg_hull_number, arg_ignore_entity, arg_trace, arg_trace_flags }; + + edict_t* pEntityIgnore = edictByIndexAmx(params[arg_ignore_entity]); + + CAmxArgs args(amx, params); + + gpGlobals->trace_flags = args[arg_trace_flags]; + TRACE_HULL(args[arg_vec_start], args[arg_vec_end], args[arg_ignore_monsters], args[arg_hull_number], pEntityIgnore, args[arg_trace]); + gpGlobals->trace_flags = 0; + + return TRUE; +} + AMX_NATIVE_INFO Misc_Natives_RG[] = { { "rg_set_animation", rg_set_animation }, @@ -3532,6 +3586,8 @@ AMX_NATIVE_INFO Misc_Natives_RG[] = { "rg_send_death_message", rg_send_death_message }, { "rg_player_takedamage_impulse", rg_player_takedamage_impulse }, + { "rg_trace_line", rg_trace_line }, + { "rg_trace_hull", rg_trace_hull }, { nullptr, nullptr } }; From c42eb235269b04d1321f08a7966280b4f2189c6d Mon Sep 17 00:00:00 2001 From: GLoOoccK <155241167+GLoOoccK@users.noreply.github.com> Date: Mon, 19 May 2025 12:01:02 -0300 Subject: [PATCH 2/3] Update reapi_gamedll.inc --- .../scripting/include/reapi_gamedll.inc | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/reapi/extra/amxmodx/scripting/include/reapi_gamedll.inc b/reapi/extra/amxmodx/scripting/include/reapi_gamedll.inc index 4a891573..88150298 100644 --- a/reapi/extra/amxmodx/scripting/include/reapi_gamedll.inc +++ b/reapi/extra/amxmodx/scripting/include/reapi_gamedll.inc @@ -1245,3 +1245,32 @@ native rg_send_death_message(const pKiller, const pVictim, const pAssister, cons * @noreturn */ native rg_player_takedamage_impulse(const player, const attacker, const Float:flKnockbackForce, const Float:flVelModifier); + +/* +* Fires a trace line between two origins, retrieving the end point and entity hit. +* +* @param vecStart Start position +* @param vecEnd End position +* @param ignoreMonsters Entity ignore type +* @param ignoreEntity Entity index that trace will ignore, NULLENT if trace should not ignore any entities +* @param ptr Traceresult pointer, use Fakemeta's create_tr2 to instantiate one +* @param traceFlags Additional trace flags, see FTRACE_* constants on cssdk_const.inc +* +* @noreturn +*/ +native rg_trace_line(Float:vecStart[3], Float:vecEnd[3], const ignoreMonsters, const ignoreEntity, const ptr, const traceFlags = 0); + +/* +* Fires a trace hull on a specified origin or between two origins. +* +* @param vecStart Start position +* @param vecEnd End position +* @param ignoreMonsters Entity ignore type +* @param hullNumber Hull type +* @param ignoreEntity Entity index that trace will ignore, NULLENT if trace should not ignore any entities +* @param ptr Traceresult pointer, use Fakemeta's create_tr2 to instantiate one +* @param traceFlags Additional trace flags, see FTRACE_* constants on cssdk_const.inc +* +* @noreturn +*/ +native rg_trace_hull(Float:vecStart[3], Float:vecEnd[3], const ignoreMonsters, const hullNumber, const ignoreEntity, const ptr, const traceFlags = 0); From 599b30b8c3710727aba25978e640573a47b4ed59 Mon Sep 17 00:00:00 2001 From: GLoOoccK <155241167+GLoOoccK@users.noreply.github.com> Date: Mon, 19 May 2025 14:47:31 -0300 Subject: [PATCH 3/3] Update natives_misc.cpp --- reapi/src/natives/natives_misc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reapi/src/natives/natives_misc.cpp b/reapi/src/natives/natives_misc.cpp index b4ca106f..fc1eca24 100644 --- a/reapi/src/natives/natives_misc.cpp +++ b/reapi/src/natives/natives_misc.cpp @@ -3437,7 +3437,7 @@ cell AMX_NATIVE_CALL rg_trace_line(AMX *amx, cell *params) CAmxArgs args(amx, params); gpGlobals->trace_flags = args[arg_trace_flags]; - TRACE_LINE(args[arg_vec_start], args[arg_vec_end], args[arg_ignore_monsters], pEntityIgnore, args[arg_trace]); + g_pengfuncsTable->pfnTraceLine(args[arg_vec_start], args[arg_vec_end], args[arg_ignore_monsters], pEntityIgnore, args[arg_trace]); return TRUE; } @@ -3464,7 +3464,7 @@ cell AMX_NATIVE_CALL rg_trace_hull(AMX *amx, cell *params) CAmxArgs args(amx, params); gpGlobals->trace_flags = args[arg_trace_flags]; - TRACE_HULL(args[arg_vec_start], args[arg_vec_end], args[arg_ignore_monsters], args[arg_hull_number], pEntityIgnore, args[arg_trace]); + g_pengfuncsTable->pfnTraceHull(args[arg_vec_start], args[arg_vec_end], args[arg_ignore_monsters], args[arg_hull_number], pEntityIgnore, args[arg_trace]); gpGlobals->trace_flags = 0; return TRUE;