Mon Premier Addon

From ESOUI Wiki

Jump to: navigation, search

Premier pas pour créer Mon premier Addon: (traduction de la page [1])

Dans MyFirstAddon.txt entrez le code suivant :

## Title: Rockin Addon
## APIVersion: 100003

MyFirstAddon.lua
MyFirstAddon.xml

Maintenant si vous relancez en jeu votre Interface ( /reloadui dans le canal de discussion ) et que dans le menu d'option ( Echap ) vous selectionnez "Extention" vous allez voir le gestionnaire d'addon qui contiendra votre Addon. Par contre il ne fait pas grand choses pour l'instant.

On va lui rajouter quelques chose de basique, un compteur qui se met à jour à chaque frame.

Ouvrez le fichier XML et entrer le code suivant :

<GuiXml>
    <Controls>
        <TopLevelControl name="MyFirstAddon">
            <Dimensions x="200" y="42" />
            <Anchor point="CENTER" />
 
            <OnUpdate>
                MyFirstAddOnUpdate()
            </OnUpdate>
 
            <Controls>
                <Backdrop name="$(parent)BG" inherits="ZO_ThinBackdrop" />
                <Label name="$(parent)Counter" font="ZoFontWindowTitle" color="CFDCBD" wrapMode="ELLIPSIS" verticalAlignment="CENTER" text="Counter: ">
                    <AnchorFill />
                </Label>
            </Controls>
        </TopLevelControl>
    </Controls>
</GuiXml>

Maintenant on ouvre le fichier LUA et on entre le code suivant :

local counter = 1
 
function MyFirstAddOnUpdate()
    MyFirstAddonCounter:SetText(string.format("Counter: %d", counter))
    counter = counter + 1
end

Maintenant si vous relancez l'IU, vous devriez voir apparaitre au centre de l'écran un compteur qui s'incrémente rapidement. Bravo, vous avez fait votre premier Addon qui fait quelqechose! Bon Ok ça sert à rien. Mais chaque chose en son temps jeune Padawan !

Ajoutons un peu d'Interactivité

Pour un minimum d'interactivité, on va changer le compteur pour qu'il puisse revenir à zero en cliquant dessus.

On commence par le fichier XML, en y ajoutant une condition 'OnMouseDown' qui appellera la fonction MyFirstAddonReset()

<GuiXml>
    <Controls>
        <TopLevelControl name="MyFirstAddon" mouseEnabled="true">
            <Dimensions x="200" y="42" />
            <Anchor point="CENTER" />
 
            <OnUpdate>
                MyFirstAddOnUpdate()
            </OnUpdate>
 
            <OnMouseDown>
                MyFirstAddOnReset()
            </OnMouseDown>
 
            <Controls>
                <Backdrop name="$(parent)BG" inherits="ZO_ThinBackdrop" />
                <Label name="$(parent)Counter" font="ZoFontWindowTitle" color="CFDCBD" wrapMode="ELLIPSIS" verticalAlignment="CENTER" text="Counter: ">
                    <AnchorFill />
                </Label>
            </Controls>
        </TopLevelControl>
    </Controls>
</GuiXml>

Et donc dans le code LUA, on ajoute la fonction MyFirstAddonReset() où l'on se contente simplement de mettre la variable counter à 0 :

local counter = 1
 
function MyFirstAddOnUpdate()
    MyFirstAddonCounter:SetText(string.format("Counter: %d", counter))
    counter = counter + 1
end
 
function MyFirstAddOnReset()
    counter = 0
end

Et voilà, on reset l'IU et on test le résultat en cliquant sur le compteur au centre : à chaque clic sur le compteur, il se remet à zero et repart immédiatement.

Vous pouvez rendre ce compteur mobile en ajoutant l'attribut suivant dans l'element TopLevelControl :

movable="true"

Voilà, Bon Codage ^^

merci aux contributeurs Anglais/Américains/Autres pour avoir posé les bases ! Amis Français, n’hésitez pas à corriger/ajouter ou contactez moi !

Personal tools
Namespaces
Variants
Actions
Menu
Wiki
Toolbox