Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=74a2399e439ca06a8990cd79469b722cMédailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

Variables locales
Aller à la page 1, 2  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Autre -> GUI Helper
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2006
Sujets: 49

Médailles: 2 (En savoir plus...)
Ayane (Quantité : 1) Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 06/01/08 19:43    Sujet du message: Variables locales Citer

L'ajout de variables locales se divisent en plusieurs parties:
- Interface
- Compiler

Au niveau de l'interface ce sont les fichiers:
UI\TriggerData.txt
UI\TriggerStrings.txt
Qui sont modifiés afin d'ajouter avec les actions de catégories générales (tel que Set, comment, if/then/else, ...) l'action pour déclarer une variable locale.
Celle-ci prend un paramètre: on choisis parmis la liste de variable globale laquelle on veut déclarer locale.
NB: A la base il y avait deux paramètres: le type et le nom (entré au clavier), mais elle a été abandonné étant donné que WE ne gère pas le type AnyType.
En GUI cela donne par exemple:
Gui:
Trigger:
Local maVar
Set maVar = 5

Traduis en Jass cela donne
Jass:
call #VLR( udg_maVar )
set udg_maVar = 5


C'est alors qu'intervient le compileur:
Il parse le fichier war3map.j généré afin de récupéré premièrement les variables globales générés (udg: User Defined Global (quelque chose de ce genre)) c'est à dire leur nom, type, est déploiement, valeur par défaut. Ensuite il parse les fonctions afin de remplacer les
Jass:
call #VLR( udg_%nomvar% )

par
Jass:
local %type% [array] udl_%nomvar% [= %valeurDefaut%]

et il remplace toutes les occurrences par le nouveau nom de variable

ce qui résulte de notre exemple:
Jass:
local integer udl_maVar
set udl_maVar = 5


Vous avez donc les mêmes possibilités au niveau des variables locales qu'en Jass car vous pouvez en déclarer plusieurs et vous pouvez utilisez les variables locales déploiements.

Sources:
http://ayndlc.free.fr/guihelper/localvar/
_________________


Dernière édition par Ayane le 23/06/08 17:15; édité 2 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 06/01/08 21:13    Sujet du message: Citer

à la place de udl_, tea_ serait plus approprié nan ? Smile
Edit : Hmm en fait non tout dépendra du nom donné ...
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2006
Sujets: 49

Médailles: 2 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1) Ayane (Quantité : 1)

MessagePosté le: 06/01/08 22:18    Sujet du message: Citer

si udg signifie bien quelque chose d'approchant à User Defined Global, alors udl est le plus approprié: User Defined Local.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 07/01/08 21:23    Sujet du message: Citer

et c'est dispo ou pas encore ?
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2006
Sujets: 49

Médailles: 2 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1) Ayane (Quantité : 1)

MessagePosté le: 07/01/08 21:31    Sujet du message: Citer

Comme indiqué dans les nouvelles le système est fini, mais avant de le rendre disponible il faut que je finisse les systèmes nécessaires à l'intégration dans Grimoire.
En attendant je vais poster le code-source.
_________________


Dernière édition par Ayane le 07/01/08 22:08; édité 1 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 07/01/08 22:02    Sujet du message: Citer

euh question bête ca marchera avec grimoire ?
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2006
Sujets: 49

Médailles: 2 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1) Ayane (Quantité : 1)

MessagePosté le: 07/01/08 22:07    Sujet du message: Citer

Arf je me suis trompé, c'est incorporé dans Grimoire et non WE Helper.

J'ai ajouté le lien vers les fichiers sources.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 07/01/08 22:08    Sujet du message: Citer

: smiley de grand soulagement et de joie débordante
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2006
Sujets: 49

Médailles: 2 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1) Ayane (Quantité : 1)

MessagePosté le: 23/06/08 13:00    Sujet du message: Citer

Le parseur a été testé sur plusieurs situations (c'était déjà le cas mais quelques bogues ont été trouvés et corrigés).

Voici un exemple de l'entrée et du résultat:

war3map.w3j: ce qui est généré par l'éditeur
Code:
// Teste du VLR

globals

    const boolean defaultBool = true

    // Déclaration des globales GUI
    string udg_myVar1 = "dada le cheval"
    integer array udg_myVar2

endglobals


// Fonction actions d'un déclencheur GUI
function a takes nothing returns nothing
    call #VLR(udg_myVar1)
    call #VLR(udg_myVar2)

    set udg_myVar1 = "Hello world!!! héhé"

    set udg_myVar2[0] = 0
    set udg_myVar2[1] = udg_myVar2[0] + 5

    set udg_myVar1 = udg_myVar1 + "udg_myVar1"

endfunction


globals
    boolean udg_myBool = defaultBool
endglobals


function b takes nothing returns nothing
    call #VLR(udg_myBool)

    set udg_myVar1 = "dodo"
    set udg_myBool = true
endfunction



Le script qui en résulte une fois passé dans le parseur
Code:
//-> Code modified by VLR
// Teste du VLR

globals

    const boolean defaultBool = true

    // Déclaration des globales GUI
    string udg_myVar1 = "dada le cheval"
    integer array udg_myVar2

endglobals


// Fonction actions d'un déclencheur GUI
function a takes nothing returns nothing
    local string udl_myVar1 = "dada le cheval"
    local integer array udl_myVar2

    set udl_myVar1 = "Hello world!!! héhé"

    set udl_myVar2[0] = 0
    set udl_myVar2[1] = udl_myVar2[0] + 5

    set udl_myVar1 = udl_myVar1 + "udl_myVar1"

endfunction


globals
    boolean udg_myBool = defaultBool
endglobals


function b takes nothing returns nothing
    local boolean udl_myBool = defaultBool

    set udg_myVar1 = "dodo"
    set udl_myBool = true
endfunction

_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Profet (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 23/06/08 13:54    Sujet du message: Citer

Est il nécessaire de déclarer une variable globale ayant le meme nom pour utiliser les variables locales dans les actions ?
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2006
Sujets: 49

Médailles: 2 (En savoir plus...)
Ayane (Quantité : 1) Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 23/06/08 14:28    Sujet du message: Citer

Oui, je n'ais pas trouvé de solution plus simple, autrement il faudrait crocheter l'interface afin de pouvoir choisir une variable locale et que cela génère le code Jass approprié, chose complexe.
A la place il s'agit juste d'une action ajoutée qui fait choisir une variable, cette action génère en Jass un appel à la fonction #VLR (qui n'existe pas). Le parseur interprête les déclaration de variables globales (commençant par udg_) afin de récupérer le type, le nom, la valeur par défaut, ...; lorsqu'il tombe sur une ligne call #VLR, il la remplace par la déclaration locale puis va ensuite renommer toutes les occurrences de l'ancien nom de variable par le nouveau jusqu'à ce qu'il tombe sur un endfunction. Le fonctionnement est donc assez simple et ne pose pas vraiment de soucis à l'utilisateur.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Profet (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 23/06/08 15:01    Sujet du message: Citer

C'est vachement moins intéressant du coup ;(
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 23/06/08 16:46    Sujet du message: Citer

Est ce que comme le plugin de de UMSWE tu utilises les fichiers UI\TriggerData.txt et UI\TriggerStrings.txt originaux ou est il nécessaire que ces fichiers soient dans un dossier UI à la racine de warcraft3 ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2006
Sujets: 49

Médailles: 2 (En savoir plus...)
Ayane (Quantité : 1) Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 23/06/08 17:23    Sujet du message: Citer

Justement je voulais faire que cela se serve des TriggerData.txt et TriggerStrings.txt originaux et que je n'ais que les ajouts à déterminer. J'allais donc coder quelque chose pour cela (comme dit dans quelques postes), lorsque j'ai vu que pour Umswe il l'avait recodé en Lua et qu'ils utilisaient ce système. Donc actuellement j'analyse le code de umswe pour faire de même.

@Profet: Pourquoi est-ce beaucoup moins intéressant?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 23/06/08 17:57    Sujet du message: Citer

Je crois que Profet ne sait plus à quoi ressemble le gui Razz
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Autre -> GUI Helper Toutes les heures sont au format GMT + 1 Heure
Aller à la page 1, 2  Suivante
Page 1 sur 2

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com