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