Skip to content

EventHelper

Aarnow edited this page Apr 14, 2024 · 7 revisions

Introduction

EventHelper permet d'accéder plus facilement à certains événements qui ne sont pas nécessairement disponible depuis la classe "Plugin".

Getting Started

Nous allons commencer par créer une classe dans un nouveau fichier.
Cette classe va hériter de ${\color{LimeGreen}\normalsize{\textsf{ModKit.Helper.Events}}}$
C'est dans ce fichier que nous allons inscrire nos événements.

using Life;

namespace MyPlugin
{
    public class MyEvents : ModKit.Helper.Events
    {
        public MyEvents(IGameAPI api) : base(api)
        {
        }
    }
}

Activer vos événements

Pour que les événements de notre classe ${\color{LimeGreen}\normalsize{\textsf{MyEvents}}}$ soient captés, nous devons ajouter une propriété à notre fichier principale qui sera du type de ${\color{LimeGreen}\normalsize{\textsf{MyEvents}}}$.
N'oublions pas de lui donner une valeur en l'instanciant dans notre constructeur.

namespace Myplugin
{
    public class Myplugin: ModKit.ModKit
    {        
        private readonly MyEvents _events;
      
        public Myplugin(IGameAPI api) : base(api)
        {
            PluginInformations = new PluginInformations(AssemblyHelper.GetName(), "1.0.0", "Aarnow");
            _events = new MyEvents(api);
        }

        public override void OnPluginInit()
        {
            base.OnPluginInit();
            _events.Init(Nova.server);
            ModKit.Internal.Logger.LogSuccess($"{PluginInformations.SourceName} v{PluginInformations.Version}", "initialisé");
        }
    }
}

Inscrire un événement

Imaginons que vous voulez envoyer un message en console toute les minutes.
Il suffit d'override l'événement ${\color{NavyBlue}\normalsize{\textsf{OnMinutePassed()}}}$ et d'y développer votre logique.

public class MyEvents : ModKit.Helper.Events
{
    public MyEvents(IGameAPI api) : base(api)
    {
    }

    public override void OnMinutePassed()
    {
        Console.WriteLine("Une minte vient de s'écouler"); 
    }
}

Liste des événements

Cette liste peut évoluer dans le temps.
Pour chaque événement, vous avez un petit exemple de manière à l'illustrer.

public class Events : ModKit.Helper.Events
{
    public Events(IGameAPI api) : base(api)
    {
    }

    public override void OnPlayerConsumeAlcohol(Player player, int itemId, float alcoholValue)
    {
        Console.WriteLine($"{player.GetFullName()} vient de boire {alcoholValue} degré d'alcool.");
    }

    public override void OnPlayerSpawnCharacter(Player player)
    {
        Console.WriteLine($"Un joueur vient de se connecter: {player.character.Firstname} {player.character.Lastname}");
    }

    public override void OnPlayerConnect(Player player)
    {
        Console.WriteLine($"Un joueur s'apprête à venir en ville: {player.conn.connectionId}");
    }

    public override void OnPlayerDisconnect(NetworkConnection conn)
    {
        Console.WriteLine($"Un joueur vient de se déconnecter: {conn.connectionId}");
    }

    public override void OnPlayerInput(Player player, KeyCode key, bool onUI)
    {
        Console.WriteLine($"{player.GetFullName()} vient d'appuyer sur la touche {key}");
    }

    public override void OnHourPassed()
    {
        Console.WriteLine($"1 heure vient de passer");
    }

    public override void OnMinutePassed()
    {
        Console.WriteLine($"1 minute vient de passer");
    }

    public override void OnPlayerMoney(Player player, double amount, string reason)
    {
        Console.WriteLine($"l'argent du joueur {player.GetFullName()} vient d'être modifié de {amount}€ pour la raison: {reason}");
    }

    public override void OnPlayerReceiveItem(Player player, int itemId, int slotId, int number)
    {
        Console.WriteLine($"le joueur {player.GetFullName()} vient de reçevoir {number} fois l'item ID {itemId} à l'emplacement {slotId} de son inventaire");
    }

    public override void OnPlayerDropItem(Player player, int itemId, int slotId, int number)
    {
        Console.WriteLine($"le joueur {player.GetFullName()} vient de déposer {number} fois l'item ID {itemId} au sol.");
    }

    public override void OnPlayerUseCommand(Player player, SChatCommand command)
    {
        Console.WriteLine($"le joueur {player.GetFullName()} vient d'executer la commande: {command.fullCommandName}");
    }

    public override void OnPlayerBuyTerrain(Player player, int terrainId, double price)
    {
        Console.WriteLine($"le joueur {player.GetFullName()} vient d'acheter le terrain n°{terrainId} pour {price}€");
    }

    public override void OnPlayerSellDrugs(Player player, int number, int price)
    {
        Console.WriteLine($"le joueur {player.GetFullName()} vient de vendre {number} cannabis pour {price}€");
    }

    public override void OnPlayerConsumeDrug(Player player)
    {
        Console.WriteLine($"le joueur {player.GetFullName()} vient de consommer du cannabis");
    }

    public override void OnPlayerDeath(Player player)
    {
        Console.WriteLine($"le joueur {player.GetFullName()} vient de tomber dans le coma");
    }

    public override void OnPlayerKillPlayer(Player killer, Player killed)
    {
        Console.WriteLine($"le joueur {killer.GetFullName()} vient de tuer {killed.GetFullName()}");
    }

    public override void OnPlayerDamagePlayer(Player fromPlayer, Player toPlayer, int damage)
    {
        Console.WriteLine($"le joueur {fromPlayer.GetFullName()} vient de frapper {toPlayer.GetFullName()} à hauteur de {damage} dégâts");
    }

    public override void OnPlayerChangeVehiclePlate(Player player, LifeVehicle vehicle, string oldPlate, string newPlate)
    {
        Console.WriteLine($"le joueur {player.GetFullName()} vient de modifier la plaque du véhicule n°{vehicle.vehicleId} immatriculé {oldPlate} en {newPlate}");
    }

    public override void OnPlayerChangeVehicleColor(Player player, LifeVehicle vehicle, string oldColor, string newColor)
    {
        Console.WriteLine($"le joueur {player.GetFullName()} vient de modifier la couleur du véhicule n°{vehicle.vehicleId} anciennement {oldColor} en {newColor}");
    }
}

📒 Wiki

🧱 AAMenu

🔗 ORM

⚡️ EventHelper

🚚 JobHelper

🌀 PointHelper

🎭 SkinHelper

📂 PanelHelper

✒️ TextFormattingHelper

💜 DiscordHelper

🌱 NetworkAreaHelper

🧰 CraftHelper

🚕 VehicleHelper

📡 ProximityHelper

⚙️ OverrideHelper

🧾 JsonHelper

📦 Utilitaires

Clone this wiki locally