Skip to content

OverrideHelper

Emile NKZ edited this page Dec 15, 2024 · 7 revisions

Introduction

Cette méthode permet de remplacer dynamiquement une méthode définie dans une classe du jeu par une autre méthode, définie dans une classe de remplacement.
En utilisant cette méthode, vous acceptez les règles suivantes : Conditions D'utilisation.


Utilisation de la méthode OverrideMethod

Pour garantir une initialisation correcte, la méthode OverrideMethod doit être appelée lors du lancement de votre plugin.
Il est conseillé de créer une méthode InitOv() contenant tous vos appels de méthode, puis de l'appeler dans OnPluginInit() de votre plugin.

namespace OverrideExample
{
    public class OverrideExample : ModKit.ModKit
    {
        public OverrideExample(IGameAPI api) : base(api)
        {
            PluginInformations = new PluginInformations(AssemblyHelper.GetName(), "1.0.0", "MOD");
        }

        public override void OnPluginInit()
        {
            base.OnPluginInit();
            InitOv();  // Initialisation des remplacements
        }

        public void InitOv()
        {
            // Ajouter les appels à OverrideMethod ici
        }
    }
}

Étape 1 : Identifier la méthode à remplacer

Pour identifier la méthode cible à remplacer, utilisez l’Explorateur d’objets de Visual Studio (raccourci : Ctrl + Alt + J) et recherchez la méthode souhaitée.

Explorateur d'objets

Pour identifier les paramètres de la méthode cible à remplacer, faites un double clique sur cette méthode et faites défiler les méthodes pour trouver la méthode cible (Attention, le code du jeu est offusquée)

Parametres

Dans cet exemple, nous souhaitons remplacer la méthode PayDay de la classe SEconomy.

Dans l’explorateur d’objets, vous devez repérer le nom de la classe initiale, le nom de la méthode initiale et ses paramètres pour les reporter dans votre méthode de remplacement (sinon quoi cela ne fonctionnera pas) :

  • Nom de la classe : SEconomy
  • Nom de la méthode : PayDay
  • Paramètres de la méthode initiale : Player player

Étape 2 : Définir la méthode de remplacement

Créez une nouvelle classe contenant la méthode qui remplacera la méthode d'origine. Pour que tout fonctionne parfaitement, veuillez remettre exactement les mêmes paramètres. (Méthode originale : Player | Méthode de remplacement : Player) Appelez maintenant OverrideMethod dans la méthode initialement crée InitOv() en remplissant les paramètres demandés.

Paramètre Description Exemple
declaringClass Classe contenant la méthode originale typeof(SEconomy)
overridingClass Classe contenant la méthode de remplacement typeof(Overriding)
originalMethodName Nom de la méthode originale "PayDay"
overrideMethodName Nom de la méthode de remplacement "OV_PayDay"

Exemple de code complet

using Life;
using Life.Network;
using Life.Network.Systems;
using ModKit.Helper;
using ModKit.Interfaces;
using ModKit.Helper.OverrideHelper;
using Life.CharacterSystem;

namespace OverrideExample
{
    public class OverrideExample : ModKit.ModKit
    {
        public OverrideExample(IGameAPI api) : base(api)
        {
            PluginInformations = new PluginInformations(AssemblyHelper.GetName(), "1.0.0", "MOD");
        }

        public override void OnPluginInit()
        {
            base.OnPluginInit();
            InitOv();
        }

        public void InitOv()
        {
            OverrideHelper.OverrideMethod(
                typeof(SEconomy),  // Classe d'origine
                typeof(Overriding),  // Classe de remplacement
                "PayDay",  // Nom de la méthode originale
                "OV_PayDay" // Nom de la méthode de remplacement
            );
        }

        public class Overriding
        {
            private void OV_PayDay(Player player)
            {
                // Code personnalisé
                // Exemple : Envoi d’un message à un joueur
            }
        }
    }
}

Conditions d'utilisation & précautions

La Team Nova régie les règles lié à ’utilisation de la méthode OverrideMethod. En effet, elle est tolérée uniquement dans un cadre de développement de plugins. Toute utilisation nuisant à l’expérience des joueurs sur Nova-Life est strictement interdite.

En utilisant cette méthode, vous acceptez les conditions suivantes :

  1. Responsabilité

    • Vous assumez l’entière responsabilité des conséquences liées à l'utilisation de cette méthode.
    • L’équipe de développement de ModKit ne pourra être tenue responsable en cas d’utilisation abusive ou malveillante.
  2. Sanctions

    • Conformément aux règles de Nova-Life, toute modification portant atteinte à l’expérience des joueurs sera considérée comme une violation grave, passible d’un bannissement à vie du jeu.

(c.f screen en bas de la page)

Conditions-NL

📒 Wiki

🧱 AAMenu

🔗 ORM

⚡️ EventHelper

🚚 JobHelper

🌀 PointHelper

🎭 SkinHelper

📂 PanelHelper

✒️ TextFormattingHelper

💜 DiscordHelper

🌱 NetworkAreaHelper

🧰 CraftHelper

🚕 VehicleHelper

📡 ProximityHelper

⚙️ OverrideHelper

🧾 JsonHelper

📦 Utilitaires

Clone this wiki locally