Player State Change Callbacks#

Player state change callbacks fire when players transition between different zone states (PvP, PvE, Raid, SafeZone).

Interface#

class PlayerStateChangeCallback
{
    void OnPlayerEnteredPvP(PlayerBase player) {}
    void OnPlayerExitedPvP(PlayerBase player) {}
    void OnPlayerEnteredPvE(PlayerBase player) {}
    void OnPlayerExitedPvE(PlayerBase player) {}
    void OnPlayerEnteredRaid(PlayerBase player) {}
    void OnPlayerExitedRaid(PlayerBase player) {}
    void OnPlayerEnteredSafeZone(PlayerBase player) {}
    void OnPlayerExitedSafeZone(PlayerBase player) {}
}

Registration#

Server-side only:

// In your mod's MissionServer.c file
modded class MissionServer
{
    override void OnInit()
    {
        super.OnInit();
        
        // Create and register the callback
        MyStateCallback myCallback = new MyStateCallback();
        PlayerZoneController.RegisterPlayerStateChangeCallback(myCallback);
    }
}

// Define your callback class
class MyStateCallback : PlayerStateChangeCallback
{
    override void OnPlayerEnteredPvP(PlayerBase player)
    {
        if (!player)
            return;
        
        // Your custom logic here
        // Example: Enable PvP-specific features
        Print("[MyMod] Player entered PvP zone");
    }
    
    override void OnPlayerExitedPvP(PlayerBase player)
    {
        if (!player)
            return;
        
        // Your custom logic here
    }
    
    // Implement all other methods...
}

Use Cases#