Глобальные слушатели

Как подписаться на глобальные слушатели.

Добавление слушателя

Глобальные слушатели бывают разных видов, поэтому для них нет общей регистрации, они должны быть зарегистрированы в OnStart вашего плагина (или где угодно) с использованием различных методов регистрации. Полный список слушателей событий можно найти в разделе Listeners, как показано ниже.

using System;
using System.Numerics;
using Plugify;
using static s2sdk.s2sdk;

public unsafe class Sample : Plugin
{
    public void OnPluginStart()
    {
        OnEntitySpawned_Register(OnEntitySpawnedCallback);
    }

    public void OnPluginEnd()
    {
        OnEntitySpawned_Unregister(OnEntitySpawnedCallback);
    }

    private static void OnEntitySpawnedCallback(int entityHandle)
    {
        string className = GetEntityClassname(entityHandle);
        if (className != "smokegrenade_projectile") return;
        // Изменяет цвет дымовой гранаты на случайный цвет каждый раз.
        QueueTaskForNextFrame(OnEntitySpawnedCallback_Post, [entityHandle]);
    }

    private static void OnEntitySpawnedCallback_Post(object[] data) {
        int entityHandle = data[0] as int;
        Vector3 smokeColor = new Vector3(
            Random.Shared.NextSingle() * 255.0f
            Random.Shared.NextSingle() * 255.0f
            Random.Shared.NextSingle() * 255.0f
        );
        SetEntSchemaVector3D(entityHandle, 'CSmokeGrenadeProjectile', 'm_vSmokeColor', smokeColor, true, 0);
        PrintToServer($"Smoke grenade spawned with color {smokeColor}");
    }
}

Полный список глобальных слушателей можно найти здесь