From d9a9ae43e2c0b137ff2e4ec8c0e0ce12f92b359b Mon Sep 17 00:00:00 2001 From: Celio Lozatto Date: Wed, 14 Aug 2024 16:16:46 -0300 Subject: [PATCH] Implementation of new Natives --- reapi/src/natives/natives_misc.cpp | 128 ++++++++++++++++++++++++++++- 1 file changed, 127 insertions(+), 1 deletion(-) diff --git a/reapi/src/natives/natives_misc.cpp b/reapi/src/natives/natives_misc.cpp index 50300b9..604947c 100644 --- a/reapi/src/natives/natives_misc.cpp +++ b/reapi/src/natives/natives_misc.cpp @@ -3345,6 +3345,122 @@ cell AMX_NATIVE_CALL rg_send_death_message(AMX *amx, cell *params) return TRUE; } +cell AMX_NATIVE_CALL rg_player_traceattack(AMX* amx, cell* params) +{ + enum args_e { arg_count, arg_index, arg_attacker, arg_damage, arg_dir, arg_trace, arg_dmg_type }; + + CHECK_ISPLAYER(arg_index); + CHECK_ISENTITY(arg_attacker); + + CBasePlayer* pPlayer = UTIL_PlayerByIndex(params[arg_index]); + CHECK_CONNECTED(pPlayer, arg_index); + + pPlayer->TraceAttack(args[arg_attacker], args[arg_damage], args[arg_dir], args[arg_trace], args[arg_dmg_type]); + return TRUE; +} + +cell AMX_NATIVE_CALL rg_player_takedamage(AMX* amx, cell* params) +{ + enum args_e { arg_count, arg_index, arg_inflictor, arg_attacker, arg_damage, arg_dmg_type }; + + CHECK_ISPLAYER(arg_index); + CHECK_ISENTITY(arg_inflictor); + CHECK_ISENTITY(arg_attacker); + + CBasePlayer* pPlayer = UTIL_PlayerByIndex(params[arg_index]); + CHECK_CONNECTED(pPlayer, arg_index); + + return pPlayer->TakeDamage(args[arg_attacker], args[arg_inflictor], args[arg_damage], args[arg_dmg_type]); +} + +cell AMX_NATIVE_CALL rg_player_takehealth(AMX* amx, cell* params) +{ + enum args_e { arg_count, arg_index, arg_health, arg_dmg_type }; + + CHECK_ISPLAYER(arg_index); + + CBasePlayer* pPlayer = UTIL_PlayerByIndex(params[arg_index]); + CHECK_CONNECTED(pPlayer, arg_index); + + return pPlayer->TakeHealth(args[arg_health], args[arg_dmg_type]); +} + +cell AMX_NATIVE_CALL rg_player_killed(AMX* amx, cell* params) +{ + enum args_e { arg_count, arg_index, arg_attacker, arg_gib }; + + CHECK_ISPLAYER(arg_index); + CHECK_ISENTITY(arg_attacker); + + CBasePlayer* pPlayer = UTIL_PlayerByIndex(params[arg_index]); + CHECK_CONNECTED(pPlayer, arg_index); + + pPlayer->Killed(args[arg_attacker], args[arg_gib]); + return TRUE; +} + +cell AMX_NATIVE_CALL rg_player_addpoints(AMX* amx, cell* params) +{ + enum args_e { arg_count, arg_index, arg_score, arg_allow_negative_score }; + + CHECK_ISPLAYER(arg_index); + + CBasePlayer* pPlayer = UTIL_PlayerByIndex(params[arg_index]); + CHECK_CONNECTED(pPlayer, arg_index); + + pPlayer->AddPoints(args[arg_score], args[arg_allow_negative_score]); + return TRUE; +} + +cell AMX_NATIVE_CALL rg_is_player_alive(AMX* amx, cell* params) +{ + enum args_e { arg_count, arg_index }; + + CHECK_ISPLAYER(arg_index); + + CBasePlayer* pPlayer = UTIL_PlayerByIndex(params[arg_index]); + CHECK_CONNECTED(pPlayer, arg_index); + + return pPlayer->IsAlive(); +} + +cell AMX_NATIVE_CALL rg_is_player_net_client(AMX* amx, cell* params) +{ + enum args_e { arg_count, arg_index }; + + CHECK_ISPLAYER(arg_index); + + CBasePlayer* pPlayer = UTIL_PlayerByIndex(params[arg_index]); + CHECK_CONNECTED(pPlayer, arg_index); + + return pPlayer->IsNetClient(); +} + +cell AMX_NATIVE_CALL rg_get_player_gun_position(AMX* amx, cell* params) +{ + enum args_e { arg_count, arg_index, arg_out }; + + CHECK_ISPLAYER(arg_index); + + CBasePlayer* pPlayer = UTIL_PlayerByIndex(params[arg_index]); + CHECK_CONNECTED(pPlayer, arg_index); + + args[arg_out].vector() = pPlayer->GetGunPosition(); + return TRUE; +} + +cell AMX_NATIVE_CALL rg_is_player_bot(AMX* amx, cell* params) +{ + enum args_e { arg_count, arg_index }; + + CHECK_ISPLAYER(arg_index); + + CBasePlayer* pPlayer = UTIL_PlayerByIndex(params[arg_index]); + CHECK_CONNECTED(pPlayer, arg_index); + + return pPlayer->IsBot(); +} + AMX_NATIVE_INFO Misc_Natives_RG[] = { { "rg_set_animation", rg_set_animation }, @@ -3460,6 +3576,16 @@ AMX_NATIVE_INFO Misc_Natives_RG[] = { "rg_send_death_message", rg_send_death_message }, + { "rg_player_traceattack", rg_player_traceattack }, + { "rg_player_takedamage", rg_player_takedamage }, + { "rg_player_takehealth", rg_player_takehealth }, + { "rg_player_killed", rg_player_killed }, + { "rg_player_addpoints", rg_player_addpoints }, + { "rg_is_player_alive", rg_is_player_alive }, + { "rg_is_player_net_client", rg_is_player_net_client }, + { "rg_get_player_gun_position", rg_get_player_gun_position }, + { "rg_is_player_bot", rg_is_player_bot }, + { nullptr, nullptr } }; @@ -3748,4 +3874,4 @@ void RegisterNatives_Misc() g_amxxapi.AddNatives(Misc_Natives_RG); g_amxxapi.AddNatives(Misc_Natives_RH); -} +} \ No newline at end of file