D-Two - Documentation
  • Introduction
  • Liberté & Gratuité
  • Installation
  • Mises à jour
  • Dev - Application & Core
    • Introduction
    • Documentation
    • API
      • Components (View)
  • Dev - Plugins
    • Introduction
    • Créer un plugin
    • API
      • Events (Messages)
      • Base
      • View
      • Inputs
    • Tutorials
      • Multi Account
  • Dev - Theme
    • Introduction
  • Liste des Plugins
    • MultiAccount
    • WorldPathfinding
Powered by GitBook
On this page
  • Les couches du plugin
  • Créer un plugin Backend
  • Créer un plugin Frontend
  1. Dev - Plugins

Créer un plugin

Une fois avoir respecté tous les pré-requis et installé toutes les dépendances tu vas pouvoir développer ton premier plugin.

Les couches du plugin

Avant de commencer le développement d'un plugin pour DTwo, il est crucial de comprendre sa structure en deux couches distinctes : le backend et le frontend. Cette distinction aide à maintenir la clarté et la facilité de maintenance de l'application.

Un plugin backend concerne toutes les opérations qui se déroulent en arrière-plan. Cela inclut la logique de traitement des données, les interactions avec le serveur du jeu, et tout ce qui est relatif à la manipulation des informations sans interaction directe avec l'utilisateur.

Un plugin frontend, quant à lui, est responsable de l'interface utilisateur. Cela concerne tout ce que l'utilisateur peut voir et avec quoi il peut interagir, comme les boutons, les menus, et les affichages graphiques.

Lorsque vous développez un plugin qui nécessite des modifications à la fois du backend et du frontend, vous devez créer deux plugins distincts, chacun sous forme d'une bibliothèque de liens dynamiques (DLL) séparée :

  1. Plugin Backend (DLL) : Ce plugin gère toute la logique de fond, les opérations de données, et les interactions non-visuelles. Son objectif est de s'assurer que les fonctionnalités nécessaires sont traitées en arrière-plan sans interférer avec l'expérience utilisateur directe.

  2. Plugin Frontend (DLL) : Ce plugin est exclusivement dédié à l'interface utilisateur. Il doit être développé de manière à ne contenir aucune fonctionnalité de backend pour éviter les complications et les mélanges de responsabilités.

Il est impératif de maintenir une séparation claire entre ces deux aspects lors du développement des plugins pour DTwo. Cette approche non seulement simplifie le développement et la maintenance, mais assure également que les améliorations ou les corrections peuvent être effectuées de manière ciblée sans impact négatif sur l'autre partie du plugin.


Créer un plugin Backend

Créer la classe MyPlugin

Créer une classe MyPlugin.cs (nom au choix) qui hérite de "Plugin" (vous pouvez nommer la classer comme vous le souhaitez)

namespace Dtwo.Plugins.MyPlugin
{
	public class MyPlugin : Plugin
	{
		public MyPlugin (PluginInfos infos, Assembly assembly) : base(infos, assembly)
		{
			// Plugin is loaded
		}
	}
}

Intéragir avec les événements du jeu (dans la classe MyPlugin)

Un évent est appelé lorsqu'une fenêtre reçoit un paquet (un message), la méthode doit prendre le nom de cet évent (correspondant au nom du message), préfixe de "On" et être accompagné de l'attribut "[DofusEvent]". Les évents peuvent être hybrides (fonctionner avec toutes les versions du jeu, ou alors cibler une version en particulier). Dans le cas où vous souhaitez un event hybride, il faudra que le type de votre message correspondent au namespace "Dtwo.API.Hybride.Network.Messages".

// Importation du namespace hybride, les events seront hybrides
using Dtwo.API.Hybride.Network.Messages;

[DofusEvent]
// Dans ce cas, PartyJoinMessage vient du namespace Dtwo.API.Hybride
public void OnPartyJoinMessage(DofusWindow dofusWindow, PartyJoinMessage message)
{
    // Une fenêtre vient de recevoir le message "OnPartyJoinMessage", ça veut
    //    dire qu'un personnage vient de rejoindre le groupe appartenant
    //    à cette fenêtre.
}

A savoir que dans votre plugin, vous un évent sera appelé pour CHAQUE fenêtre le recevant. Par exemple, dans le cas de 'OnPartyJoinMessage', si plusieurs fenêtres (personnages) appartiennent au même groupe, l'évent sera appelé autant de fois que vous avez de personnage dans ce groupe. Il est important de prendre cela en compte lorsque vous souhaitez que les itérations dans votre méthode ne soient exécutées qu'une seule pendant l'évent.

Compiler / Publier le plugin

  • Faites un clic droit sur votre projet > Compiler, puis rendez-vous dans le dossier où la dll a été créée.

  • Dans le dossier "plugins" de l'application (compilée), créer un dossier qui aura le même nom que votre plugin, exemple : "MyPlugin", et mettez-y la dll, et toutes les dll nécessaires à la compilation (autre que les dll Dtwo)

  • Créer un fichier json dans le même dossier, portant le même nom que votre dll, suffixé de ".infos" (ex : Dtwo.Plugins.MyPlugin.Infos.json)

Vous pouvez lancer l'application et tester ! Vous pouvez debug le plugin en lançant l'application via visual studio en debug.

Aller plus loin

TODO

Créer un plugin Frontend

Dans la majorité des cas (et c'est fortement conseillé), votre plugin "frontend" est accompagné d'un plugin "backend", vous n'aurez pas à vous soucier des évents, et actions à effectuer en jeu; mais seulement la partie interface utilisateur.

Créer la classe MyPluginView

Créer la classe MyPluginView.cs qui hérite de "PluginView", il est conseillé de préfixé par le nom du plugin "frontend", et suffixer par "view".

namespace Dtwo.Plugins.MyPlugin.View
{
	public class MultiAccount_ViewPlugin : ViewPlugin
	{
		public MultiAccount_ViewPlugin(Plugins.PluginInfos infos, Assembly assembly) : base(infos, assembly)
		{
			// Plugin is loaded
		}
	}
}

Créer une page

Faites un clic droit sur votre "projet > Ajouter un Element > Razor component", nommez votre classe "MainPage" (donnez lui le nom que vous souhaitez)

@inherits Dtwo.API.View.ViewPluginPage;
@using Dtwo.API.View.Components;

<DtwoText>Hello World</DtwoText>
<DtwoButton OnClicked="(args) => OnClick()">Click me</DtwoButton>

@code {
    private void OnClick()
    {
        LogManager.Log("Hello World");
    }
}

Référencer la page dans l'application

Une fois la page créée, il faut la référencer dans l'app, dans votre fichier MyPluginView.cs :

public override Dictionary<string, Page> Pages => new Dictionary<string, Page>()
{
	{ 
		"MyPlugin",
		new Page(
		  type:typeof(MainPage),
		  route:"MyPlugin",
		  title:"My Plugin",
		  showInNavbar:true,
		  needSelectedAccount:false)
	}
};

Compiler / Publier le plugin

Mêmes opérations que pour un plugin backend, en veillant à respecter les conventions de nommage. Dans le cas où vous avez du contenu inclut dans wwwrootvous devrez l'inclure dans le wwrootde l'app (wwwroot/plugins/<Nom de votre Plugin>)

Aller plus loin

TODO

PreviousIntroductionNextAPI

Last updated 11 months ago

Dans le cas où vous souhaitez cibler une version en particulier, vous devrez utiliser le namespace correspond à la version de jeu "Dtwo.API.<VersionDeJeu>.AnkamaGames.Dofus.Network.Messages" Pour connaitre la liste de tous les évents rendez-vous .

La liste des components est disponible

sur cette page
ici