|
Avec Warhammer Online, il est possible de créer ses propres Interfaces Personnalisées et ses propres Add-on. Cet article se propose de vous guider dans la création de votre propre Add-On en vous donnant les informations minimales pour y arriver. Attention, il est indispensable d'avoir un minimum de connaissances en Informatique pour comprendre comment cela fonctionne. Cet article n'a pas pour but de vous apprendre à programmer ni de vous apprendre les termes techniques. Afin de mieux comprendre l'article, vous devez avoir des connaissances en XML et dans le langage de script LUA. Des notions en anglais sont aussi indispensable si vous voulez vraiment avoir toutes les documentations nécessaires pour faire vos AddOns. Il est à noter que les informations de ce sujet peuvent évoluer à tous moment suivant le bon vouloir de Mythic. En effet, Mythic va certainement retirer, modifier ou ajouter des API pour répondre, éviter tout abus et aider la communauté. De plus, Mythic n'a toujours pas donné la documentation de l'API Warhammer Online. Il peut donc y avoir des erreurs dans cet article. Sommaire : Que peut-on faire avec un AddOn ?C'est certainement la question la plus importante pour beaucoup de personnes ! Les exemples étant plus parlant qu'un long discours, je vais donner quelques exemples des choses qui sont possible et impossible à faire. Les AddOn possible sont (liste non exhaustive) :
Comment s'organise un AddOn ?Tout d'abord, il faut savoir qu'un AddOn est composé :
Le premier de ces points concerne l'arborescence des fichiers et des répertoires. Votre AddOn doit respecter l'arborescence ci-dessous : Le second point concerne l'organisation du répertoire de votre AddOn : elle est pratiquement libre ! Les 3 seules choses obligatoires sont :
Le dernier point concerne la configuration générale des AddOns. Cette configuration se situe dans le fichier UserSetting.xml qui se trouve dans le répertoire <répertoire d'installation War>\user. Dans ce fichier si vous allez vers la fin, vous trouverez une ligne qui ressemble à cela (à quelques valeurs près) : Code:
<Interface global_ui_scale="0.755005" lock_action_bars="1" mouse_sensitivity="0.50" save_settings_per_character="false" warn_on_sell="false" warn_on_buy="false"> <MainUI path="Interface/Custom" enabled="false" /> <AddOns path="Interface/AddOns" /> </Interface> Les attributs de la balise Interface sont :
Attention il est à noter que pendant la bêta, les AddOns fournis par Mythic n'étaient pas sous cette arborescence. En effet, l'arborescence était <répertoire d'installation War>\user\interface\AllCharacters. Le fichier .modCe fichier permet d'indiquer le nom de l'Add-On, sa description et quels sont les fichiers à charger lors des différents événements possibles (entre autre). Il faut voir ce fichier comme le chef d'orchestre de votre AddOn. C'est grâce à ce fichier que tous les éléments de votre AddOn seront coordonnés. Le fichier .mod est basé sur une syntaxe XML. Un exemple de fichier .mod est indiqué ci-dessous (il n'y a pas toutes les balises et toutes les options possibles dans cet exemple): Code:
<?xml version="1.0" encoding="UTF-8"?> <ModuleFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UiMod name="MonScrollText" version="3.2" date="01/09/2008" > <Author name="Jion" email="jion Les balises disponiblesVoici l'arborescence valide pour les balises du fichier .mod (représentation graphique du schéma XSD): Les balises entourées en trait plein sont obligatoires. Les balises entourées en pointillé sont optionnelles. Signification des balisesModuleFile et UiMod Ce sont les 2 balises mères du fichier XML .mod. Ces 2 balises sont obligatoires pour avoir un fichier valide. La balise UiMod possède 3 attributs qui sont :
Code:
<?xml version="1.0" encoding="UTF-8"?> <ModuleFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UiMod name="MonScrollText" version="3.2" date="01/09/2008" > </UiMod> </ModuleFile> Author et Description La balise Author permet de spécifier des informations sur l'auteur de l'AddOn. Cette balise possède 2 attributs qui sont :
Cette balise possède 1 attribut qui est :
En reprenant mon exemple précédent, vous aurez quelque chose de ce genre : Code:
<?xml version="1.0" encoding="UTF-8"?> <ModuleFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UiMod name="MonScrollText" version="3.2" date="01/09/2008" > <Author name="Jion" email="jion Dependencies et Dependency La balise Dependencies va servir à indiquer les AddOns qui sont nécessaires au bon fonctionnement de votre AddOn. Ces AddOns seront chargés avant le votre : c'est en quelque sorte un pré-requis pour le bon fonctionnement de votre AddOn. Il est possible d'y mettre tous les AddOns même ceux proposés par défaut par Mythic. Chaque dépendance d'AddOn doit être indiqué par la balise Dependency. La balise Dependency possède 1 attribut qui est :
En reprenant mon exemple précédent, vous aurez quelque chose de ce genre si on suppose que vous avez besoin de l'AddOn Tic et de l'AddOn Tac: Code:
<?xml version="1.0" encoding="UTF-8"?> <ModuleFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UiMod name="MonScrollText" version="3.2" date="01/09/2008" > <Author name="Jion" email="jion Files et File La balise Files permet d'indiquer la liste des fichiers qui sont inclus dans votre AddOn. Cette balise permet de charger en mémoire tous les fichiers qui sont nécessaires au fonctionnement de votre AddOn. Lors du chargement en mémoire, il y a 2 possibilités :
La balise File possède 1 attribut qui est :
Code:
<?xml version="1.0" encoding="UTF-8"?> <ModuleFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UiMod name="MonScrollText" version="3.2" date="01/09/2008" > <Author name="Jion" email="jion SavedVariables et SavedVariable La balise SavedVariables va servir à indiquer toutes les variables que vous voulez sauvegarder. Cette balise est très importante car c'est grâce à elle que vous pourrez sauvegarder des informations et que votre AddOn pourra ré-utiliser ces informations lors de son prochain chargement. C'est avec ce procédé que l'on peut sauvegarder les paramètres utilisateurs de l'AddOn par exemple. Avec ce procédé, on ne peut sauvegarder que des variables globales LUA. Il est à noter que la variable peut être un tableau. Au sein de la balise SavedVariables, il faudra utiliser la balise SavedVariable pour indiquer les variables que vous souhaitez sauvegarder. Il faudra autant de balise SavedVariable que de variable à sauvegarder. La balise SavedVariable possède 1 attribut qui est :
Code:
<?xml version="1.0" encoding="UTF-8"?> <ModuleFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UiMod name="MonScrollText" version="3.2" date="01/09/2008" > <Author name="Jion" email="jion Le premier conseil concerne le nommage de vos variables. Je vous conseille de trouver une abréviation pour votre AddOn et de préfixer tous les noms de vos variables par cette abréviation suivi d'un underscore. Donc si je prend le nom de mon AddOn de l'exemple MonScrollText, l'abréviation serait mst. Si j'ai besoin d'avoir une variable nommé var alors je la nommerai mst_var. Pourquoi faire cela ? Tout simplement pour ne pas mélanger les variables entre les différents AddOn. Vu que certaines variables sont globales, cela évite d'entrer en conflit dans le cas où une autre personne aurait eu l'idée d'appeler une variable avec le même nom. Le deuxième conseil qui peut vous être utile et le fait d'utiliser des tableaux pour sauvegarder vos variables. D'une part cela vous simplifiera la gestion de votre fichier .mod et d'autre part cela permet de rassembler toutes les variables dans un même endroit. Le troisième conseil est de toujours vérifier la valeur de la variable ! Si la valeur est NIL c'est que la variable n'a jamais été renseigné/utilisé. Cela vous évitera bien des erreurs par la suite. OnInitialize, OnUpdate et OnShutdown Ces 3 balises servent à lancer des actions à certains moments spécifiques. Ce n'est pas vous qui décidez quand ces actions seront appelées mais le programme lui-même qui sait quand il doit appelé ces actions. La balise OnInitialize permet d'indiquer les actions à effectuer lors du chargement de votre AddOn (typiquement quand la personne active votre AddOn directement en jeu ou quand la personne se connecte avec son personnage). A l'inverse la balise OnShutdown permet d'indiquer les actions à effectuer lors de la fermeture de votre AddOn (typiquement quand la personne désactive votre AddOn directement en jeu ou quand la personne se déconnecte avec son personnage). La balise OnUpdate permet d'indiquer les actions à effectuer périodiquement. Pour indiquer les actions à faire, il existe 2 balises qui sont : CallFunction et CreateWindow. Vous pouvez utiliser autant de balises que nécessaires pour indiquer les actions à faire. La balise CallFunction permet d'appeler des fonctions LUA. Cette balise possède 1 attribut qui est :
La balise CreateWindow permet d'ajouter une action qui crée un fenêtre. Cette balise possède 2 attribut qui est :
Code:
<?xml version="1.0" encoding="UTF-8"?> <ModuleFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UiMod name="MonScrollText" version="3.2" date="01/09/2008" > <Author name="Jion" email="jion La liste des AddOns d'EA MythicComme indiqué dans la partie précédente, il est possible avec la balise Dependencies de spécifier les AddOns que l'on veut utiliser pour le bon fonctionnement de notre AddOn. Vu qu'il est possible d'inclure les AddOn de Mythic, voici la liste complète des AddOns par défaut du jeu :
Les fichiers XMLLes fichiers XML servent à décrire le template de vos fenêtres. Dans les API de Warhammer Online, il n'existe pas de fenêtre par défaut. Il y a seulement 2 fonctions que l'on peut utiliser : - CreateWindow(window, visible) - CreateWindowFromTemplate(src_window, template_window, parent_window) C'est cette deuxième fonction qui est le plus souvent utilisé. En effet, de cette façon on peut créer très rapidement plusieurs fenêtres ayant la même forme/propriété (par exemple, pour les warband au lieu de créer une grosse fenêtre, on en crée une par joueur) Les fichiers XML sont basés sur une syntaxe XML. Un exemple de fichier .xml est indiqué ci-dessous (il n'y a pas toutes les balises et toutes les options possibles dans cet exemple): Code:
<Interface xmlns:xsi="http://wutf-8.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../Interface.xsd"> <Scripts> <Script file="CleanGroupWindow.lua" /> </Scripts> <Windows> <Window name="CleanGroupWindow" skipinput="true" > <Size> <AbsPoint x="200" y="520" /> </Size> <Anchors> <Anchor point="bottomleft" relativePoint="topleft" relativeTo="CleanPlayerWindow"> <AbsPoint x="0" y="48" /> </Anchor> </Anchors> </Window> </Windows> </Interface> Les balises disponiblesVoici l'arborescence valide pour les balises du fichier .xml (représentation graphique du schéma XSD): Les balises entourées en trait plein sont obligatoires. Les balises entourées en pointillé sont optionnelles. Il est à noter aussi que certaines balises (par exemple EventHandlers) sont communes à plusieurs balises. De même, il est à noter que la balise Window peut contenir la balise Windows qui elle-même peut contenir la balise Window, etc... Attention, il existe apparemment d'autres balises depuis la création de ce diagramme. Je les ai ajouté dans la partie traitant des balises sans avoir modifier le schéma ci-dessus. Base du fichier XMLTous les fichiers XML doivent au minimum avoir le texte suivant : Code:
<?xml version="1.0" encoding="UTF-8"?> <Interface xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../Interface.xsd"> </Interface> Signification des balisesJe vais commencer ma description par les 3 conteneurs de bases qui sont : Windows, Scripts et Assets. Je continuerais pas les balises qui sont utilisées pour créer vos fenêtres. Windows Cette balise permet de décrire le template de vos fenêtres. Ces fenêtres étant chargées dans l'interface en jeu. Il est possible de faire des sous-fenêtre avec cette balise (en imbriquant les balises Windows) Cette balise ne prend aucun paramètre. Cette balise est utilisable dans la balise suivante : Interface. Scripts et Script La balise Scripts permet d'indiquer les script LUA dont vous avez besoin pour ce fichier XML. Ces scripts seront chargés au moment du chargement de votre fichier XML. Chaque script dont vous avez besoin devront être appeler à l'aide de la balise Script. La balise Scripts ne prend aucun paramètre. La balise Scripts est utilisable dans la balise suivante : Interface. La balise Script permet d'indiquer les scripts LUA dont vous avez besoin pour ce fichier XML. Ces scripts seront chargés au moment du chargement de votre fichier XML. Vous devez utiliser autant de balise Script que le nombre de fichiers dont vous avez besoin. La balise Script possède 1 paramètre qui est :
Il est à noter que l'utilisation de la balise Scripts n'est pas obligatoire. En effet, ilest possible de spécifier les scripts dont vous avez besoin de votre fichier .mod (voir la partie traitant du fichiers .mod pour plus de détails). Un exemple de l'utilisation de la balise Scripts est : Code:
<?xml version="1.0" encoding="UTF-8"?> <Interface xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../Interface.xsd"> <Scripts> <Script file="source/MonFichier.lua"/> </Scripts> </Interface> Assets Cette balise permettait de charger des textures et des icônes pour votre AddOn. Depuis la fin de la bêta, cette balise ne fonctionne plus (désactiver par Mythic ou un bug) : les textures sont bien chargées par le jeu mais c'est la texture "no texture" (en rose/violet) qui apparait dans le jeu ! Je décrit donc vite fait les différentes balises que l'on pouvait y trouver dès fois qu'un jour la balise Assets refonctionne. Cette balise pouvait contenir les balises suivantes : Icon, Texture et Slice. La balise Assets ne prend aucun paramètre. La balise Assets est utilisable dans la balise suivante : Interface. La balise Icon possède 3 paramètres qui sont :
La balise Icon est utilisable dans la balise suivante : Assets. La balise Texture possède 2 paramètres qui sont :
La balise Icon est utilisable dans la balise suivante : Assets. La balise Slice possède 5 paramètres qui sont :
La balise Slice est utilisable dans la balise suivante : Texture. Window La balise Window permet de définir une fenêtre. Cette fenêtre sera visible en jeu (contrairement à la balise Windows qui n'affiche rien en soit). La balise Window possède 9 paramètres qui sont :
La balise Window est utilisable dans la balise suivante : Windows. Size La balise Size permet d'indiquer la taille de la fenêtre parent. En général, elle est souvent utilisé en association avec la balise AbsPoint. La balise Size ne possède pas de paramètres. La balise Size est utilisable dans les balises suivantes : Window et les balises qui sont utilisables dans Window. AbsPoint La balise Window permet d'indiquer les valeurs x et y pour les balises qui en ont besoin (comme par exemple la balise Size). La balise AbsPoint possède 2 paramètres qui sont :
La balise AbsPoint est utilisable dans les balises suivantes : Size et Anchor. Anchors La balise Anchors permet de créer un conteneur de balise Anchor. Cela permet d'indiquer où la fenêtre sera positionné en jeu. Une fenêtre peut avoir une ou deux Anchors. S'il y en a un seul, la taille de la fenêtre est généralement fixe. Tandis que s'il y en a 2, la fenêtre sera redimensionné pour ajuster à l'Anchors. La deuxième solution étant utilisée principalement pour attacher une fenêtre à côté d'une autre fenêtre. La balise Anchors ne possède pas de paramètres.La balise Anchors est utilisable dans les balises suivantes : Window et les balises qui sont utilisables dans Window. Anchor La balise Anchor possède 3 paramètres qui sont :
La balise Anchor est utilisable dans la balise suivante : Anchors. EventHandlers Cette balise permet de définir des handlers. Pour plus de détails, vous pouvez aussi vous référer à la partie concernant le fichier .mod. La balise EventHandlers ne possède pas de paramètres.La balise EventHandlers est utilisable dans les balises suivantes : Window et les balises qui sont utilisables dans Window. EventHandler La balise EventHandler permet d'associer des fonctions LUA aux différents événements qui peuvent arriver dans le jeu. Pour plus de détails, vous pouvez aussi vous référer à la partie concernant le fichier .mod. La balise EventHandler possède 2 paramètres qui sont :
La balise EventHandler est utilisable dans la balise suivante : EventHandlers. A titre d'information, voici la liste des événements disponibles :
Sounds Cette balise permet de définir une liste de sons qui sera jouable. La balise Sounds ne possède pas de paramètres.La balise Sounds est utilisable dans les balises suivantes : Window et les balises qui sont utilisables dans Window. Sound La balise Sound permet d'associer un son aux différents événements qui peuvent arriver dans le jeu.. La balise Sound possède 2 paramètres qui sont :
La balise Sound est utilisable dans la balise suivante : Sounds. A titre d'information, voici la liste des événements disponibles :
Code:
<Sound event="OnShown" script="Sound.Play( Sound.WINDOW_OPEN )" /> <Sound event="OnHidden" script="Sound.Play( Sound.WINDOW_CLOSE )" /> La balise TexDims permet d'indiquer la portion que l'on doit utiliser sur une texture. La balise TexDims possède 2 paramètres qui sont :
La balise TexDims est utilisable dans la balise suivante : DynamicImage. TexCoords La balise TexCoords permet d'indiquer les coordonnées des différents images du bouton dans la texture. En effet, chaque état d'un boutton peut afficher une image différente pour ce bouton. La balise TexCoords ne possède pas de paramètres. Mais on peut indiquer la portion de texture à utiliser suivant l'état du bouton avec les 2 balises suivantes :
Color La balise Color permet de spécifier une couleur. La balise Color possède 4 paramètres qui sont :
La balise Color est utilisable dans la balise suivante : Label. CircleImage La balise CircleImage permet de spécifier des images qui sont modifié lorsqu'on les survole avec la souris. La taille de l'image ainsi que la texture (et la taille de la texture) pour l'image sont spécifiés par les balises Size et TexDims. La balise CircleImage possède 14 paramètres qui sont :
La balise CircleImage est utilisable dans la balise suivante : Windows. DynamicImage La balise DynamicImage permet de spécifier des images qui sont modifié lorsqu'on les survole avec la souris. La taille de l'image ainsi que la texture (et la taille de la texture) pour l'image sont spécifiés par les balises Size et TexDims. La balise DynamicImage possède 12 paramètres qui sont :
La balise DynamicImage est utilisable dans la balise suivante : Windows. HorizontalResizeImage La balise HorizontalResizeImage permet de spécifier les images qui sont utilisés pour les barre de status (par exemple la barre d'XP et de RP sur l'UI de base). Il faut utiliser la balise TexSlices pour spécifer les images de droite, de gauche et du centre. La balise HorizontalResizeImage possède 12 paramètres qui sont :
La balise HorizontalResizeImage est utilisable dans la balise suivante : Windows. Statusbar La balise StatusBar permet de créer une barre de status basique (même principe que la barre d'XP ou de RP de l'UI de base). La valeur courant de la barre ainsi que la valeur maximal sont spécifiés à l'aide d'appel aux API LUA. La balise StatusBar possède 13 paramètres qui sont :
La balise StatusBar est utilisable dans la balise suivante : Windows. Label La balise Label permet de définir une zone de texte basique. La valeur du texte est spécifié à l'aide d'appel aux API LUA. Cette balise peut utilisé les balises Size, Anchors et Color pour spécifier les attributs dont elle a besoin. La balise Label possède 15 paramètres qui sont :
La balise Label est utilisable dans la balise suivante : Windows. Button La balise Button permet de créer un boutton qui est utilisable avec la souris. La balise Button possède 15 paramètres qui sont :
La balise Button est utilisable dans la balise suivante : Windows. Les fichiers LUACes fichiers représentent le coeur de votre AddOn. C'est dans ces fichiers que vous indiquez tous les traitements que doivent faire votre AddOn. Les fichiers LUA servent à écrire des scripts LUA (d'où leur extension !). Je vous invite à lire le sujet des liens utiles. Si le besoin est réel, je ferais un tutoriel LUA en français. Exemple d'AutoLoot : la création de votre premier AddOnPour finir en beauté, vous allez créer votre propre AddOn ! Le but de cet AddOn sera d'avoir un AutoLoot sur votre personnage quand vous fouillez les corps. Cela vous parait compliquer ? Vous allez voir c'est tout simple ! Surtout si vous avez lu en entier cet article 1. Première étape : Choix du nom de votre AddOn Comme indiqué dans l'article, il faut choisir le nom de votre AddOn en premier lieu pour créer l'arborescence et les différents fichiers ! Histoire de faire très compliqué, le nom de notre AddOn sera.... AutoLoot. 2. Deuxième étape : Création de l'arborescence de l'AddOn Dans le répertoire des AddOn (par défaut <répertoire d'installation War>\Interface\AddOns), il faut créer un répertoire AutoLoot. 3. Troisième étape : Création du fichier AutoLoot.mod Dans le répertoire de votre AddOn, il faut créer un nouveau fichier texte ayant pour nom AutoLoot.mod. En reprenant la description du contenu d'un fichier .mod, je vais expliquer ce que l'on a besoin pour notre AddOn ou pas : - les balises ModuleFile et UiMod : obligatoire pour tous les fichiers donc pas de question à se poser. - les balises Author et UiMod : on va les remplir pour la postérité ! Vous pouvez bien sur mettre vos propres informations. - les balises Dependencies et Dependency : je veux que mon AddOn fonctionne tout seul et je n'ai pas besoin de choses spécifiques donc pas besoin de renseigner ces balises. - les balises Files et File : je vais avoir besoin d'un fichier LUA pour indiquer comment marche mon AddOn. Donc je les utiliserai pour indiquer mon fichier LUA - les balises SavedVariables et SavedVariable : je n'ai pas donner de configuration utilisateur possible et je n'ai pas besoin de sauvegarder des variables. Donc pas besoin de les renseigner. - les balises OnInitialize, OnUpdate et OnShutdown : j'aurais juste besoin de la balise OnInitialize (voir la quatrième étape pour plus de détails). Donc, le fichier AutoLoot.mod doit être rempli de cette façon : Code:
<?xml version="1.0" encoding="UTF-8"?> <ModuleFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UiMod name="AutoLoot" version="1.0" date="06/09/2008" > <Author name="Jion" email="jion Maintenant que l'on a renseigné le fichier AutoLoot.mod, on doit créer un fichier texte AutoLoot.lua au même endroit que le fichier AutoLoot.mod (vu ce que l'on a mis dans l'attribut name de la balise File). Les choses dont on a besoin pour faire fonctionner l'AddOn sont : - savoir quand la personne fouille un corps (et l'indiquer à notre AddOn) - ramassez tous les objets quand on a reçu l'information que le joueur fouille un corps. Cela vous parait compliquer ? C'est pourtant très simple à faire. En recherchant dans les API, on peut voir qu'il existe un événement SystemData.Events.INTERACT_SHOW_LOOT qui est déclenché lorsqu'un joueur fouille un corps. Il suffit donc de demander à War d'appeler notre AddOn quand cet événement se produit. De même, toujours en recherchant dans les API, on peut voir qu'il existe une fonction RegisterEventHandler qui permet d'indiquer à War quelle fonction il doit lancer quand un événement se produit. C'est pour cela qu'on a besoin lors de l'initialisation de notre AddOn de l'indiquer au programme War. D'où l'utilisation de la balise OnInitialize dans le fichier AutoLoot.mod ! Si on n'avais pas utilisé OnInitialize, on aurait eu aucun moyen de pouvoir enregistrer cet événement vu que notre AddOn n'aurait jamais été appelé par quelque chose (la balise OnInitialize permettant d'appeler des fonctions) Code:
function AutoLootInitialize() RegisterEventHandler("AutoLoot", SystemData.Events.INTERACT_SHOW_LOOT, "AutoLootOnShowLoot") end Maintenant, il ne reste plus qu'à créer cette fonction AutoLootOnShowLoot et le tour sera joué. En recherchant dans les API, on voit qu'il existe une méthode LootAllItems qui fait exactement ce que l'on recherche. Il suffit donc de l'appeler. Premier problème : Comment faire lorsque l'on fouille un coffre d'une QP qui n'autorise qu'un choix entre plusieurs objets ? Je suis sur que vous n'y aviez même pas pensé à ce problème ! Afin de faire simple, on ne fera rien si on est dans ce cas. Notre AddOn AutoLoot ne sera utilisé uniquement dans le cas où l'on n'a pas une fenêtre de choix de loot. Ainsi le joueur pourra choisir librement son loot lors d'une QP. Les API de War nous aide encore grâce à la fonction WindowGetShowing("ChooseOneLootWindow") qui permet de savoir si la fenêtre de loot est une fenêtre normal ou une fenêtre dans laquelle on doit faire un choix. Code:
function AutoLootOnShowLoot() if not WindowGetShowing("ChooseOneLootWindow") then LootAllItems() end end Code:
function AutoLootInitialize() RegisterEventHandler("AutoLoot", SystemData.Events.INTERACT_SHOW_LOOT, "AutoLootOnShowLoot") end function AutoLootOnShowLoot() if not WindowGetShowing("ChooseOneLootWindow") then LootAllItems() end end Il ne vous reste plus qu'à vous connecter en jeu pour tester votre premier AddOn. |
02/11/2008, 04h34 |
|
Documentation sur la création d'AddOn
Suivre |
|
Partager | Rechercher |
Suivre |
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|