Skip to content

Commit c2d3c3c

Browse files
authored
Add new native rg_observer_find_next_player (#325)
1 parent f08c8b7 commit c2d3c3c

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

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

+12
Original file line numberDiff line numberDiff line change
@@ -1185,6 +1185,18 @@ native rg_disappear(const player);
11851185
*/
11861186
native rg_set_observer_mode(const player, const mode);
11871187

1188+
/*
1189+
* Call origin function CBasePlayer::Observer_FindNextPlayer()
1190+
* @note Player must be a valid observer (m_afPhysicsFlags & PFLAG_OBSERVER).
1191+
*
1192+
* @param player Player index.
1193+
* @param bReverse If bReverse is true, finding order will be reversed
1194+
* @param name Player name to find.
1195+
*
1196+
* @noreturn
1197+
*/
1198+
native rg_observer_find_next_player(const player, const bool:bReverse = false, const name[] = "");
1199+
11881200
/*
11891201
* Emits a death notice (logs, DeathMsg event, win conditions check)
11901202
*

reapi/include/cssdk/dlls/API/CSPlayer.h

+1
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ class CCSPlayer: public CCSMonster
9494
virtual void SendItemStatus() = 0;
9595
virtual void ReloadWeapons(CBasePlayerItem *pWeapon = nullptr, bool bForceReload = false, bool bForceRefill = false) = 0;
9696
virtual void Observer_SetMode(int iMode) = 0;
97+
virtual void Observer_FindNextPlayer(bool bReverse, const char *name = nullptr) = 0;
9798
virtual bool SelectSpawnSpot(const char *pEntClassName, CBaseEntity* &pSpot) = 0;
9899
virtual bool SwitchWeapon(CBasePlayerItem *pWeapon) = 0;
99100
virtual void SwitchTeam() = 0;

reapi/src/natives/natives_misc.cpp

+29
Original file line numberDiff line numberDiff line change
@@ -3242,6 +3242,34 @@ cell AMX_NATIVE_CALL rg_set_observer_mode(AMX* amx, cell* params)
32423242
return TRUE;
32433243
}
32443244

3245+
/*
3246+
* Call origin function CBasePlayer::Observer_FindNextPlayer()
3247+
* @note Player must be a valid observer (m_afPhysicsFlags & PFLAG_OBSERVER).
3248+
*
3249+
* @param player Player index.
3250+
* @param bReverse If bReverse is true, finding order will be reversed
3251+
* @param name Player name to find.
3252+
*
3253+
* @noreturn
3254+
*/
3255+
cell AMX_NATIVE_CALL rg_observer_find_next_player(AMX* amx, cell* params)
3256+
{
3257+
enum args_e { arg_count, arg_index, arg_bReverse, arg_name };
3258+
3259+
CHECK_ISPLAYER(arg_index)
3260+
3261+
CBasePlayer *pPlayer = UTIL_PlayerByIndex(params[arg_index]);
3262+
CHECK_CONNECTED(pPlayer, arg_index);
3263+
3264+
char nameBuf[MAX_PLAYER_NAME_LENGTH];
3265+
const char* name = getAmxString(amx, params[arg_name], nameBuf);
3266+
if (strcmp(name, "") == 0)
3267+
name = nullptr;
3268+
3269+
pPlayer->CSPlayer()->Observer_FindNextPlayer(params[arg_bReverse] != 0, name);
3270+
return TRUE;
3271+
}
3272+
32453273
/*
32463274
* Emits a death notice (logs, DeathMsg event, win conditions check)
32473275
*
@@ -3455,6 +3483,7 @@ AMX_NATIVE_INFO Misc_Natives_RG[] =
34553483
{ "rg_switch_best_weapon", rg_switch_best_weapon },
34563484
{ "rg_disappear", rg_disappear },
34573485
{ "rg_set_observer_mode", rg_set_observer_mode },
3486+
{ "rg_observer_find_next_player", rg_observer_find_next_player },
34583487
{ "rg_death_notice", rg_death_notice },
34593488
{ "rg_player_relationship", rg_player_relationship },
34603489

0 commit comments

Comments
 (0)