#if defined _leader_included_ #endinput #endif #define _leader_included_ /** * Returns the current PRIMARY leader. * * @return Client index of the primary leader (-1 = no leader) */ native int Leader_CurrentLeader(); /** * Makes a client the PRIMARY leader. If another primary exists, they are * demoted to sub-leader. If the client is already a sub-leader, they are * promoted. * * @param client Client index to be set as primary leader */ native void Leader_SetLeader(int client); /** * Checks if a client is currently a leader (primary or sub-leader). * * @param client Client index to check * @return True if the client is a leader */ native bool Leader_Is(int client); /** * Returns the number of current leaders (primary + sub-leaders). * * @return Leader count */ native int Leader_GetLeaderCount(); /** * Returns the leader at the given roster index. * * @param index Roster index (0 = primary) * @return Client index, or -1 if no leader at that index */ native int Leader_GetLeader(int index); /** * Called after a client becomes a leader. * * @param client The new leader * @param primary True if they became the primary leader */ forward void Leader_OnLeaderAdded(int client, bool primary); /** * Called after a client stops being a leader. * * @param client The removed leader */ forward void Leader_OnLeaderRemoved(int client); /** * Called when the primary leader changes. * * @param oldLeader Previous primary (-1 = none) * @param newLeader New primary (-1 = none) */ forward void Leader_OnPrimaryChanged(int oldLeader, int newLeader); #if !defined LEADER3_CORE public SharedPlugin __pl_leader = { name = "leader", file = "Leader3.smx", #if defined REQUIRE_PLUGIN required = 1, #else required = 0, #endif }; #if !defined REQUIRE_PLUGIN public void __pl_leader_SetNTVOptional() { MarkNativeAsOptional("Leader_CurrentLeader"); MarkNativeAsOptional("Leader_SetLeader"); MarkNativeAsOptional("Leader_Is"); MarkNativeAsOptional("Leader_GetLeaderCount"); MarkNativeAsOptional("Leader_GetLeader"); } #endif #endif // LEADER3_CORE