Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 29/08/07 20:30 Sujet du message: Variables locales en GUI |
|
|
Rectificatif du tutorial dût aux mises à jours:
Suite aux mises à jours de WC3 cette méthode ne fonctionne plus que pour une seule variable locale.
I/ Qu'est-ce qu'une variable locale?
Le GUI utilise des variables globales, qui sont donc utilisables dans toute la carte.
Or il existe les variables locales, qui elles ne sont utilisables que dans la fonction dans laquelle est déclarée. Dans le GUI cela veut dire dans vos actions.
II/ Quel est son intérêt
Concrètement si vous avez une action qui met un certain temps à s'exécuter, par exemple avec un wait et que vous avez une valeur à stoquer:
si vous stoquez votre valeur dans une variable globale, le problème est que lors de l'exécution on arrive au wait, si ce même déclencheur vient à être exécuter entre temps alors il va changer la valeur de notre variable! ce qui peut-ête assez embêtant.
Avec une variable locale, la variable ne sera accessible que par la fonction dans laquelle elle a été déclarée. Donc vous ne rencontrez pas le problème énoncé ci-dessus.
III/ Comment l'utiliser en GUI?
Le GUI n'est conçu que pour des variables globales, et on ne peut théoriquement utiliser les variables locales qu'en Jass.
Mais il existe une astuce qui permet de le faire, seule la déclaration de la variable est à faire en Jass.
Ceci n'est qu'un exemple d'utilisation:
On veut que lorsqu'une meurt on affiche un point d'exclamation au dessus de celle-ci après deux secondes.
On va stoquer l'unité dans une variable locale.
On déclare la variable avec le GUI
NB: celle-ci est donc une variable globale
Puis au début de nos actions on va déclarer notre variable locale avec le même nom, sauf qu'on rajoute le préfixe "udg_"
Syntaxe: local [type] udg_[nom] <= [valeur_défaut]>
<>: optionelle
[]: donnée à préciser
Ce qui donnera dans notre cas
local unit udg_MaVariableLocale
NB: Les variables doivent toujours être déclarées avant tout autres actions.
Je vous laisse comprendre par vous même pourquoi ça fonctionne, c'est de l'astuce et non du hasard.
Et pour clôturer voici la liste des types de variables (de la version 1.20)
type event extends handle // a reference to an event registration
type player extends handle // a single player reference
type widget extends handle // an interactive game object with life
type unit extends widget // a single unit reference
type destructable extends widget
type item extends widget
type ability extends handle
type buff extends ability
type force extends handle
type group extends handle
type trigger extends handle
type triggercondition extends handle
type triggeraction extends handle
type timer extends handle
type location extends handle
type region extends handle
type rect extends handle
type boolexpr extends handle
type sound extends handle
type conditionfunc extends boolexpr
type filterfunc extends boolexpr
type unitpool extends handle
type itempool extends handle
type race extends handle
type alliancetype extends handle
type racepreference extends handle
type gamestate extends handle
type igamestate extends gamestate
type fgamestate extends gamestate
type playerstate extends handle
type playerscore extends handle
type playergameresult extends handle
type unitstate extends handle
type aidifficulty extends handle
type eventid extends handle
type gameevent extends eventid
type playerevent extends eventid
type playerunitevent extends eventid
type unitevent extends eventid
type limitop extends eventid
type widgetevent extends eventid
type dialogevent extends eventid
type unittype extends handle
type gamespeed extends handle
type gamedifficulty extends handle
type gametype extends handle
type mapflag extends handle
type mapvisibility extends handle
type mapsetting extends handle
type mapdensity extends handle
type mapcontrol extends handle
type playerslotstate extends handle
type volumegroup extends handle
type camerafield extends handle
type camerasetup extends handle
type playercolor extends handle
type placement extends handle
type startlocprio extends handle
type raritycontrol extends handle
type blendmode extends handle
type texmapflags extends handle
type effect extends handle
type effecttype extends handle
type weathereffect extends handle
type terraindeformation extends handle
type fogstate extends handle
type fogmodifier extends handle
type dialog extends handle
type button extends handle
type quest extends handle
type questitem extends handle
type defeatcondition extends handle
type timerdialog extends handle
type leaderboard extends handle
type multiboard extends handle
type multiboarditem extends handle
type trackable extends handle
type gamecache extends handle
type version extends handle
type itemtype extends handle
type texttag extends handle
type attacktype extends handle
type damagetype extends handle
type weapontype extends handle
type soundtype extends handle
type lightning extends handle
type pathingtype extends handle
type image extends handle
type ubersplat extends handle
Et les principales correspondances:
booléen: boolean
entier: integer
réel: real
chaîne (de texte): string
unité: unit
On peut après utiliser notre variable en GUI comme d'habitude à la différence qu'elle est locale et ne peut donc pas être modifier par un autre groupe d'actions. _________________
Dernière édition par Ayane le 07/02/08 23:24; édité 2 fois |
|
Revenir en haut |
|
|
Gevans Back
Inscrit le: 21 Aoû 2007 Messages: 1930 Sujets: 85
Médailles: 2 (En savoir plus...)
|
Posté le: 29/08/07 20:31 Sujet du message: |
|
|
Ajout de Troll Brain :
Voici la correspondance entre le type de variable en gui et celle en jass:
integer // Capacite = 0
attacktype // Type_d_attaque = null
boolean // Booleen = false
integer // Enchantement = 0
camerasetup // Objet_camera = null
weapontype // Son_combat = null
damagetype // Type_de_degats = null
destructable // Destructible = null
integer // Type_destructible = 0
defeatcondition // Conditions_de_defaite = null
dialog // Dialogue = null
button // Bouton_de_dialogue = null
effecttype // Type_d_effet = null
texttag // Texte_flottant = null
gamecache // Cache_du_jeu = null
gamespeed // Vitesse_du_jeu = null
image // Image = null
integer // Type_d_image = 0
integer // Entier = 0
item // Objet = null
itemtype // Classe_d_objet = null
integer // Type_objet = 0
leaderboard // Panneau_de_commandes = null
lightning // Foudre = null
string // Type_d_eclairage = ""
multiboard // Multitable = null
integer // Ordre = 0
player // Joueur = null
playercolor // Couleur_Joueur = null
force // Groupe_joueur = null
location // Point = null
pathingtype // Type_de_chemin = null
quest // Quete = null
questitem // Exigence_quete = null
race // Race = null
real // Reel = 0
rect // Region = null
sound // Son = null
soundtype // Type_de_son = null
effect // Effet_special = null
string // Chaine = ""
integer // Type_tech = 0
terraindeformation // Deformation_terrain = null
integer // Forme_du_terrain = 0
integer // Type_de_terrain = 0
timer // Compteur = null
timerdialog // Fenetre_compteur = null
trigger // Declencheur = null
ubersplat // Ubersplat = null
string // Type_ubersplat
unit // Unite = null
group // Groupe_unite = null
integer // Type_unite = 0
fogmodifier // Modificateur_de_visibilite = null
weathereffect // Effet_meteo = null _________________
Si vous recherchez quelque chose, il y a de très grandes chances que vous trouviez la réponse ici alors jetez y un oeil.
Topic indispensable |
|
Revenir en haut |
|
|
Keitaro_Ura Floodozaurus
Inscrit le: 21 Aoû 2007 Messages: 2073 Sujets: 38 Spécialité en worldedit: Oui Médailles: 1 (En savoir plus...)
|
Posté le: 29/08/07 22:01 Sujet du message: |
|
|
Pour déclarer une variable joueur faut faire : local player udg_MaVariableLocale ?? et puis faire Set MaVariableLocale = (tel joueur). _________________
|
|
Revenir en haut |
|
|
Bantas Anomalie floodiforme
Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
Médailles: 1 (En savoir plus...)
|
Posté le: 29/08/07 22:09 Sujet du message: |
|
|
MaVariableLocale est le nom de ta variable. A part ça, c'est tout bon. _________________
|
|
Revenir en haut |
|
|
Keitaro_Ura Floodozaurus
Inscrit le: 21 Aoû 2007 Messages: 2073 Sujets: 38 Spécialité en worldedit: Oui Médailles: 1 (En savoir plus...)
|
Posté le: 29/08/07 22:42 Sujet du message: |
|
|
Ok. _________________
|
|
Revenir en haut |
|
|
super_mouton Floodozaurus
Inscrit le: 21 Aoû 2007 Messages: 2072 Sujets: 51 Spécialité en worldedit: Harceller vos maps de critiques !! ';..;' Médailles: 1 (En savoir plus...)
|
|
Revenir en haut |
|
|
Rommstein60 MODÉRATEUR À LA RETRAITE
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
|
Posté le: 15/09/07 07:53 Sujet du message: |
|
|
Gui: | Trigger: Custom script: local unit array u |
_________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain » |
|
Revenir en haut |
|
|
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...)
|
Posté le: 05/12/07 14:20 Sujet du message: |
|
|
Précise bien que l'on ne peut utiliser cette astuce qu'une seule fois par fonction.
Le lien de l'image est valide mais impossible de l'afficher.
Les .bmp ne sont plus autorisés peut être _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
Bantas Anomalie floodiforme
Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
Médailles: 1 (En savoir plus...)
|
Posté le: 05/12/07 16:46 Sujet du message: |
|
|
L'image s'affiche bien, et Troll je te rapelle qu'avec les réels le bug n'aparaissait pas ! tudjuu... _________________
|
|
Revenir en haut |
|
|
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...)
|
|
Revenir en haut |
|
|
Bantas Anomalie floodiforme
Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
Médailles: 1 (En savoir plus...)
|
Posté le: 05/12/07 19:26 Sujet du message: |
|
|
C'est étrange, pourtant le sort qui nous a fait découvrir ce bug marchait.. go le télécharger (c'est dans heroes of lost ages) _________________
|
|
Revenir en haut |
|
|
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...)
|
Posté le: 05/12/07 19:33 Sujet du message: |
|
|
ah mon avis le point avait les mêmes coordonnées X/Y stou _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
Bantas Anomalie floodiforme
Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
Médailles: 1 (En savoir plus...)
|
Posté le: 05/12/07 20:20 Sujet du message: |
|
|
Arf, flute, tu avais fait le déclo pour moi à l'époque et tu n'avais pas utilisé cette technique mais des vrais variables locales...
Owned tu m'as. _________________
|
|
Revenir en haut |
|
|
Rhadamante Petit flooder
Inscrit le: 28 Aoû 2007 Messages: 1457 Sujets: 24 Spécialité en worldedit: Bêêh hé hé hé ! Médailles: 3 (En savoir plus...)
|
Posté le: 24/04/08 15:37 Sujet du message: |
|
|
J'ai une question à propos des variables locales, il est écrit qu'on ne peut en utiliser qu'une seule en GUI avec cette technique, mais est-ce qu'il existe un autre moyen d'en utiliser plusieurs ? Il me semblait qu'il y avait un moyen.
Et si ce n'est pas le cas, est-ce qu'il y a une contre-indication à faire un déclencheur entièrement en GUI, puis à le convertir en texte personnalisé, afin d'y changer les noms des variables de sorte à en faire des locales (supprimer les "udg_" en gros) ? _________________
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 24/04/08 17:28 Sujet du message: |
|
|
On pouvait en utiliser plusieurs dans les anciennes versions de WarcraftIII, maintenant on ne peut en avoir qu'une en GUI.
En Jass tu peux en mettre autant que tu le veux. _________________
|
|
Revenir en haut |
|
|
|