Skip to content

Commit 4757ba6

Browse files
authored
API: Add new natives rg_trace_line and rg_trace_hull (#352)
1 parent 2d64248 commit 4757ba6

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed

reapi/extra/amxmodx/scripting/include/reapi_gamedll.inc

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1245,3 +1245,32 @@ native rg_send_death_message(const pKiller, const pVictim, const pAssister, cons
12451245
* @noreturn
12461246
*/
12471247
native rg_player_takedamage_impulse(const player, const attacker, const Float:flKnockbackForce, const Float:flVelModifier);
1248+
1249+
/*
1250+
* Fires a trace line between two origins, retrieving the end point and entity hit.
1251+
*
1252+
* @param vecStart Start position
1253+
* @param vecEnd End position
1254+
* @param ignoreMonsters Entity ignore type
1255+
* @param ignoreEntity Entity index that trace will ignore, NULLENT if trace should not ignore any entities
1256+
* @param ptr Traceresult pointer, use Fakemeta's create_tr2 to instantiate one
1257+
* @param traceFlags Additional trace flags, see FTRACE_* constants on cssdk_const.inc
1258+
*
1259+
* @noreturn
1260+
*/
1261+
native rg_trace_line(Float:vecStart[3], Float:vecEnd[3], const ignoreMonsters, const ignoreEntity, const ptr, const traceFlags = 0);
1262+
1263+
/*
1264+
* Fires a trace hull on a specified origin or between two origins.
1265+
*
1266+
* @param vecStart Start position
1267+
* @param vecEnd End position
1268+
* @param ignoreMonsters Entity ignore type
1269+
* @param hullNumber Hull type
1270+
* @param ignoreEntity Entity index that trace will ignore, NULLENT if trace should not ignore any entities
1271+
* @param ptr Traceresult pointer, use Fakemeta's create_tr2 to instantiate one
1272+
* @param traceFlags Additional trace flags, see FTRACE_* constants on cssdk_const.inc
1273+
*
1274+
* @noreturn
1275+
*/
1276+
native rg_trace_hull(Float:vecStart[3], Float:vecEnd[3], const ignoreMonsters, const hullNumber, const ignoreEntity, const ptr, const traceFlags = 0);

reapi/src/natives/natives_misc.cpp

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3416,6 +3416,60 @@ cell AMX_NATIVE_CALL rg_player_takedamage_impulse(AMX *amx, cell *params)
34163416
return TRUE;
34173417
}
34183418

3419+
/*
3420+
* Fires a trace line between two origins, retrieving the end point and entity hit.
3421+
*
3422+
* @param vecStart Start position
3423+
* @param vecEnd End position
3424+
* @param ignoreMonsters Entity ignore type
3425+
* @param ignoreEntity Entity index that trace will ignore, NULLENT if trace should not ignore any entities
3426+
* @param ptr Traceresult pointer, use Fakemeta's create_tr2 to instantiate one
3427+
* @param traceFlags Additional trace flags, see FTRACE_* constants on cssdk_const.inc
3428+
*
3429+
* @noreturn
3430+
*/
3431+
cell AMX_NATIVE_CALL rg_trace_line(AMX *amx, cell *params)
3432+
{
3433+
enum args_e { arg_count, arg_vec_start, arg_vec_end, arg_ignore_monsters, arg_ignore_entity, arg_trace, arg_trace_flags };
3434+
3435+
edict_t* pEntityIgnore = edictByIndexAmx(params[arg_ignore_entity]);
3436+
3437+
CAmxArgs args(amx, params);
3438+
3439+
gpGlobals->trace_flags = args[arg_trace_flags];
3440+
g_pengfuncsTable->pfnTraceLine(args[arg_vec_start], args[arg_vec_end], args[arg_ignore_monsters], pEntityIgnore, args[arg_trace]);
3441+
3442+
return TRUE;
3443+
}
3444+
3445+
/*
3446+
* Fires a trace hull on a specified origin or between two origins.
3447+
*
3448+
* @param vecStart Start position
3449+
* @param vecEnd End position
3450+
* @param ignoreMonsters Entity ignore type
3451+
* @param hullNumber Hull type
3452+
* @param ignoreEntity Entity index that trace will ignore, NULLENT if trace should not ignore any entities
3453+
* @param ptr Traceresult pointer, use Fakemeta's create_tr2 to instantiate one
3454+
* @param traceFlags Additional trace flags, see FTRACE_* constants on cssdk_const.inc
3455+
*
3456+
* @noreturn
3457+
*/
3458+
cell AMX_NATIVE_CALL rg_trace_hull(AMX *amx, cell *params)
3459+
{
3460+
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 };
3461+
3462+
edict_t* pEntityIgnore = edictByIndexAmx(params[arg_ignore_entity]);
3463+
3464+
CAmxArgs args(amx, params);
3465+
3466+
gpGlobals->trace_flags = args[arg_trace_flags];
3467+
g_pengfuncsTable->pfnTraceHull(args[arg_vec_start], args[arg_vec_end], args[arg_ignore_monsters], args[arg_hull_number], pEntityIgnore, args[arg_trace]);
3468+
gpGlobals->trace_flags = 0;
3469+
3470+
return TRUE;
3471+
}
3472+
34193473
AMX_NATIVE_INFO Misc_Natives_RG[] =
34203474
{
34213475
{ "rg_set_animation", rg_set_animation },
@@ -3532,6 +3586,8 @@ AMX_NATIVE_INFO Misc_Natives_RG[] =
35323586

35333587
{ "rg_send_death_message", rg_send_death_message },
35343588
{ "rg_player_takedamage_impulse", rg_player_takedamage_impulse },
3589+
{ "rg_trace_line", rg_trace_line },
3590+
{ "rg_trace_hull", rg_trace_hull },
35353591

35363592
{ nullptr, nullptr }
35373593
};

0 commit comments

Comments
 (0)