FANDOM


Ce qui est très appréciable dans World Of Warcraft c'est que l'interface est très facilement modifiable. Je dis très facilement, mais pas aussi simple que du click&click.

Pour une fois dans votre vie dans le monde de Warcraft, vous allez devoir faire fonctionner vos deux cerveaux ensemble(le créatif et le logique).



Les bases

Tous d'abord, pour créer une interface personnalisée, vous avez

  • Deux choix:
    • Créer vos addons
    • Utiliser des addons existant

Pour ma part, je vais vous apprendre à créer vos propres addons. (Non non, n'ayez pas peur, l'épreuve n'est pas insurmontable)



Un addon simple

Le principe pour créer un addon est très simple: Dans le dossier /Interface/Addons de World Of Warcraft, créez un dossier(celui qui va contenir tous les fichiers de votre addon)

Pour mon exemple, je vais l'appeler monaddon Cela me donne donc un dossier /Interface/Addons/monaddon

Dans ce dossier, vous allez devoir créer 3 fichiers

    • monaddon.toc
    • monaddon.xml
    • monaddon.lua



monaddon.toc

Dans ce fichiers vont se trouver toutes les informations relatives à votre addon. A savoir, la version de l'interface client, le nom de l'addon, une description de l'addon, etc. Chaque valeur doit s'écrire ## nom: valeur (exemple: ## Title: monaddon)

Important, le fichier doit aussi contenir la liste de tous les fichierss .xml utiles pour l'addon

Ainsi, pour mon fichier, j'aurai

  • monaddon.toc :
## Interface: 20003
## Author: Moua
## Version: 1.0
## Title: monaddon
## Title-frFR: monaddon
## Notes: Addon by Moua.
## Notes-frFR: Addon de Moua.
monaddon.xml



monaddon.xml

Le fichier .xml contient tous les éléments à afficher à l'écran ainsi qu'un lien vers le fichier .lua (qui sera la partie qui demandera le plus de réflexion)

Le fichier fonction sous forme de balise (pour ceux qui connaissent, c'est comme le html). La balise générale est une balise <Ui>, elle s'écrit de la manière suivante:

Balise Ui (principal)

<Ui xmlns="http://www.blizzard.com/wow/ui/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.blizzard.com/wow/ui/">

	//Ici sera trouveront les composants à afficher(frame, bouton, etc.)//

</Ui>

Pour cet addon, nous allons tout simplement créer un cadre qui nous affichera vos pseudo, niveau et vie.

Tout ce qui sera visuel dans notre addon sera regroupé dans un cadre, ici nous appelerons ce cadre, Frame.

Balise Frame (Cadre de la frame)

<Frame name="monaddonFrame" frameStrata="HIGH" toplevel="true" enableMouse="true"
movable="true" parent="UIParent">
	<Size><AbsDimension x="220" y="80"/></Size> //Taille de la Frame//

	<Anchors>
		//Ici, ce sera la position de la Frame//
	</Anchors>

	<Backdrop bgFile="Interface\TutorialFrame\TutorialFrameBackground"
			edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
		//Là ce sera le fond de la Frame//
	</Backdrop>

	<Layers>
		//Ici on mettra les Layers dans lesquels on mettra du texte//
	</Layers>

	<Frames>
		//Là on mettra la barre de Vie//
	</Frames>

	<Scripts>
		//C'est ici où on pourra programmera les action à effectuer//
	</Scripts>
</Frame>

Balise Anchors (la position de la Frame)

<Anchors>
	<Anchor point="TOP"> //Frame positionné par rapport au centre en haut du jeu//
		<Offset><AbsDimension x="0" y="0"/></Offset>
		//Décalée de (0;0) par rapport au centre en haut du jeu//
	</Anchor>
</Anchors>

point="TOP" permet de positier notre frame par rapport à son parent(dans ce cas, la fenêtre de WoW) point peut prendre diférentes valeurs

(TOPLEFT, TOP, TOPRIGHT, LEFT, CENTER, RIGHT, BOTTOMLEFT, BOTTOM, BOTTOMRIGHT)

Addon point


Balise Backdrop (le fond de la Frame)

<Backdrop bgFile="Interface\TutorialFrame\TutorialFrameBackground"
		edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
	<EdgeSize>
		<AbsValue val="16"/>
	</EdgeSize>
	<TileSize>
		<AbsValue val="32"/>
	</TileSize>
	<BackgroundInsets>
		<AbsInset left="5" right="5" top="5" bottom="5"/>
	</BackgroundInsets>
</Backdrop>

<EdgeSize> permet de régler l'épaisseur de la bordure

<TileSize> A étudier

<BackgroundInsets> left: espace entre le bord du cadre, et le début du fond(essayez de mettre une grosse valeur)


Balise Layers (contient des textes)

<Layers>
Les définitions de couche ne sont valides que sur les pages de l’espace de noms « Layer »
</Layers>

Balise Frames (contient des les barres(vie/mana))

<Frames>
	<Button name="Vie">//Ce sera tout ce qui concerne la barre de vie//
		<Size><AbsDimension x="200" y="20"/></Size>
		<Anchors>
			<Anchor point="TOP">
				<Offset><AbsDimension x="0" y="-36"/></Offset>
			</Anchor>
		</Anchors>
		<Layers>
			//Bordure de la barre//
Les définitions de couche ne sont valides que sur les pages de l’espace de noms « Layer »
			//Texte sur la barre//
Les définitions de couche ne sont valides que sur les pages de l’espace de noms « Layer »
		</Layers>
		<Frames>
			//Barre de vie en elle-même//
			<StatusBar name="VieBarre" inherits="TextStatusBar"
					framestrata="MEDIUM" enableMouse="true">
				<Size><AbsDimension x="192" y="16"/></Size>
				<Anchors>
					<Anchor point="TOPLEFT">
						<Offset><AbsDimension x="4" y="-2"/></Offset>
					</Anchor>
				</Anchors>
				<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
			</StatusBar>
		</Frames>
	</Button>
</Frames>

Balise Script (actions à effectuer)

<Scripts>
	<OnLoad>
		monaddon_OnLoad();
	</OnLoad>
	<OnEvent>
		monaddon_OnEvent(event);
	</OnEvent>
	<OnDragStart>
		monaddon_OnDragStart();
	</OnDragStart>
	<OnDragStop>
		monaddon_OnDragStart();
	</OnDragStop>
	<OnMouseUp>
		monaddon_OnDragStop();
	</OnMouseUp>
</Scripts>

monaddon.lua

Principe

C'est ici que va se trouver la partie réflexion. Vous allez faire fonctionner votre logique, alors que jusqu'à ici c'était votre créativité. Nous allons proceder de façon ordonnée, c'est à dire fonction par fonction.


monaddon_OnLoad()

function monaddon_OnLoad()
	//Pour réagir à certaines action (click d'un bouton, gain d'xp, gain de vie)//
	this:RegisterEvent("UNIT_HEALTH");
	this:RegisterEvent("UNIT_MAXHEALTH");
	this:RegisterEvent("UNIT_LEVEL");
	this:RegisterEvent("PLAYER_ENTERING_WORLD");
	this:RegisterForDrag("LeftButton");
	
	//Fonctions(ce sera à nous de les écrire)//
	charge_pseudo();
	charge_vie();
	
	//Afficher un message//
	DEFAULT_CHAT_FRAME:AddMessage("monaddon -- chargé");
end

monaddon_OnDragStart()

function monaddon_OnDragStart()
	monaddonFrame:StartMoving();
end

monaddon_OnDragStop()

function monaddon_OnDragStop()
	monaddonFrame:StopMovingOrSizing();
end

monaddon_OnEvent(event)

function monaddon_OnEvent(event)
 	if(event=="UNIT_LEVEL")then
		charge_pseudo();
	end
	charge_vie();
end

charge_pseudo()

function charge_pseudo()
	local pseudo = UnitName("player");
	local lvl    = UnitLevel("player");
	local txt    = pseudo .." (".. lvl ..")";
	PseudoText:SetText(txt);
end

charge_vie()

function charge_vie()
	local vie = UnitHealth("player");
	local maxi = UnitHealthMax("player");
	local txt = "(".. vie .."/".. maxi ..")";
	
	local thcolor = {0, 1, 0};
	local thbar = getglobal("VieBarre");
	thbar:SetStatusBarColor(thcolor[1], thcolor[2], thcolor[3]);
	thbar:SetMinMaxValues(0, maxi);
	thbar:SetValue(vie);
	
	VieText:SetText(txt);
end

Interférence d'un bloqueur de publicité détectée !


Wikia est un site gratuit qui compte sur les revenus de la publicité. L'expérience des lecteurs utilisant des bloqueurs de publicité est différente

Wikia n'est pas accessible si vous avez fait d'autres modifications. Supprimez les règles personnalisées de votre bloqueur de publicité, et la page se chargera comme prévu.

Sur le réseau FANDOM

Wiki au hasard