[Modèle] Comment développer un module

Le carré VIP, incontournable pour les connaisseurs

[Modèle] Comment développer un module

Messagepar ZDS » 02 Avr 2013, 23:27

Dans ce topic, l'équipe nAiO listera les différentes conditions à respecter pour développer votre propre module.

     1) Langage
Tout d'abord, le module doit être développé en AutoIt. C'est un langage simple et facile à comprendre, nous (l'équipe nAiO) le maîtrisons, et donc sommes capable de donner notre aval sur l'ajout de vos modules dans les releases officielles du nAiO. L'autre raison principale est que le langage AutoIt permet de FACILEMENT travailler sur les fenêtres à l'écran, d'émuler les envois de touches et de manipuler la souris; fonctionnalités indispensables pour que les connecteurs puissent marcher correctement.

     2) Structure
Le code-source d'un module a un point d'entrée qui porte son nom (aka "NomDuModule.au3"). Celui-ci peut se limiter à ce seul fichier, mais il est recommandé de séparer le code en plusieurs fichiers. Dans ce cas, les fichiers doivent respecter l'arborescence suivante :
  • NomDuModule.au3 : Point d'entrée, code principal
  • [ NomDuModule ] : Dossier de ressources
    • NomDuModule.ini : Données de configuration, volatile
    • NomDuModule.ico : Icone du module
    • NomDuModule.xml : Base de connaissances du module, statique
    • Compilation.au3 : Listing des ajouts pour la compilation
    • [ Images ] : Ressources graphiques du modules (interfaces, illustrations, ...)
    • [ Include ] : Autres sources nécessaires au fonctionnement du module
    • [ Langage ] : Fichiers de traductions pour l'internationalisation du module
    • [ ... ]
Cette structure est aussi valable pour les connecteurs. Il n'est pas indispensable de respecter cette structure, mais cela aide énormément (que ce soit vous pour coder, nous pour valider, et moi pour faire le packaging sans trop perdre de temps). La moindre des choses est de s'en approcher, ou de nous autoriser à modifier votre code pour qu'il s'y adapte si cela est possible (avec votre aval bien entendu, cela reste un travail d'équipe).

     3) Contenu
Le code source des modules doit avoir une entête commune dans son point d'entrée "NomDuModule.au3". Voici un exemple de début de code source, commençons par le wrapper de compilation :
Code: Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=NomDuModule\NomDuModule.ico
#AutoIt3Wrapper_outfile=NomDuModule.exe
#AutoIt3Wrapper_Res_Fileversion=1.0.0.1
#AutoIt3Wrapper_Res_Field=Nom (short)|Connexion
#AutoIt3Wrapper_Res_Field=Nom (long)|Connexion
#AutoIt3Wrapper_Res_Field=Version (short)|1.0a
#AutoIt3Wrapper_Res_Field=Version (long)|1.0.0.1
#AutoIt3Wrapper_Res_Field=Description|Module d'exemple pour le développement de modules
#AutoIt3Wrapper_Res_Field=Type|Module
#AutoIt3Wrapper_Res_Field=Auteur|Moi (Nom-Prénom ou Alias)
#AutoIt3Wrapper_Res_Field=Site|http://forum.naio.fr
#AutoIt3Wrapper_Res_SaveSource=n
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Language=1036
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Ensuite viennent les constantes de base du module, comme le nom, la version, le dossier de ressources, etc...
Code: Tout sélectionner
; Entête du module
Global Const _
   $MODULE_NOM = "NomDuModule", $MODULE_AUTEUR = "Moi", $MODULE_VERSION = "1.0a", $MODULE_DIR = @ScriptDir&"\"&StringRegExpReplace(@ScriptName, "\.[^\.]+$","")
Global Const _
   $DEBUG_MODE = (FileExists("debug.txt")=1)
Puis dans une région spécifique, l'appel aux librairies AutoIt communes, ou à leurs fonctions :
Code: Tout sélectionner
#Region Librairies AutoIt
#Include <WinAPI.au3>
#Include <GUIConstantsEx.au3>
;~ #Include <String.au3>
Func _HexToString($strHex)
   If StringLeft($strHex, 2) = "0x" Then Return BinaryToString($strHex)
   Return BinaryToString("0x" & $strHex)
EndFunc
#EndRegion
Et enfin, une région comprenant les appels aux librairies du nAiO, du module, ou des fonctions personnelles un peu généralistes :
Code: Tout sélectionner
#Region Librairies nAiO
#Include ".\NomDuModule\Compilation.au3"
Func si($cond, $true, $false)
   If $cond Then Return $true
   Return $false
EndFunc
Func min($a, $b)
   Return si($a<$b,$a,$b)
EndFunc
Func max($a, $b)
   Return si($a>$b,$a,$b)
EndFunc
#EndRegion
Une fois cette entête mise en place, vous pouvez commencer votre code.

     4) Règles
Les modules que vous développerez se doivent de respecter les CGUs d'Ankama Games, les CGUs de JeuxOnLine, et toutes les règles implicites et explicites définies par l'équipe nAiO. Ainsi, si vous développez un bot-suiveur ou un farmer (dont les actions se déroulent lors de la phase de jeu, et s'appliquent en partie ou en totalité au client de jeu Dofus), ce module sera hors-charte selon Ankama Games ou JeuxOnLine, et l'équipe nAiO ne pourra en aucun cas apporter son appui et son support à un tel programme. De plus, il est indispensable pour la sécurité des utilisateurs que les modules ne communiquent pas sur réseau, que ce soit de façon directe (TCP, UDP, ...) ou indirect (appel de page web, API ayant accès au réseau comme celle de Skype, etc...) sauf :
  • si c'est une nécessité fonctionnelle (par exemple pour un chat sécurisé entre guildes/mercenaires/serveurs),
  • si cette nécessité a été approuvée par l'équipe nAiO,
  • et si le moyen utilisé a été approuvé par l'équipe nAiO (vérifier que la sécurité est suffisante)
Pour plus d'informations à ce propos, contactez-nous.
Avatar de l’utilisateur
ZDS
Fondateur [Equipe nAiO]
 
Messages: 498

Retourner vers Coin des développeurs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité