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=c429ccb11bae276ab7c4b71a4cb2b0d0Mé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 en GUI
Aller à la page 1, 2  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Tutoriels
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...)
Rédacteur de tuto #1 (Quantité : 1) Ayane (Quantité : 1)

MessagePosté le: 29/08/07 20:30    Sujet du message: Variables locales en GUI Citer

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.

Gui:
Trigger:
Declencheur exemple
Collapse Evénements
Unité - A unit owned by Joueur 1 (Rouge) Meurt
Conditions
Collapse Actions
Custom script:   Local unit udg_MaVariableLocale
Set MaVariableLocale = (Dying unit)
Wait 2.00 seconds
Effet spécial - Create a special effect attached to the overhead of MaVariableLocale using AbilitiesSpellsOtherTalkToMeTalkToMe.mdl



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
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Gevans
Back


Inscrit le: 21 Aoû 2007
Messages: 1930
Sujets: 85

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

MessagePosté le: 29/08/07 20:31    Sujet du message: Citer

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
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail Visiter le site web du posteur MSN Messenger
 Keitaro_Ura
Floodozaurus


Inscrit le: 21 Aoû 2007
Messages: 2073
Sujets: 38
Spécialité en worldedit: Oui
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #2 (Quantité : 1)

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

Pour déclarer une variable joueur faut faire : local player udg_MaVariableLocale ?? et puis faire Set MaVariableLocale = (tel joueur).
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

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

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

MaVariableLocale est le nom de ta variable. A part ça, c'est tout bon.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Keitaro_Ura
Floodozaurus


Inscrit le: 21 Aoû 2007
Messages: 2073
Sujets: 38
Spécialité en worldedit: Oui
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #2 (Quantité : 1)

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

Ok.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 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...)
Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 14/09/07 20:11    Sujet du message: Citer

Mais si la variable possède un déploiement, comment on fait ?
_________________
Dessine moi un Bizzardbizzare ! Very Happy
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
 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...)
Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 15/09/07 07:53    Sujet du message: Citer

Gui:
Trigger:
Custom script:   local unit array u

_________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain »
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 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: 05/12/07 14:20    Sujet du message: Citer

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
Voir le profil de l'utilisateur Envoyer un message privé
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

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

MessagePosté le: 05/12/07 16:46    Sujet du message: Citer

L'image s'affiche bien, et Troll je te rapelle qu'avec les réels le bug n'aparaissait pas ! tudjuu...
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 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: 05/12/07 16:53    Sujet du message: Citer

Jass:
function Trig_test_Actions takes nothing returns nothing
    local real udg_r1
    local real udg_r2
    call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_003" )
    set udg_r1 = 1.00
    set udg_r2 = 2.00
    call DisplayTextToForce( GetPlayersAll(), R2S(udg_r1) )
    call DisplayTextToForce( GetPlayersAll(), R2S(udg_r2) )
endfunction

//===========================================================================
function InitTrig_test takes nothing returns nothing
    set gg_trg_test = CreateTrigger(  )
    call TriggerRegisterPlayerEventEndCinematic( gg_trg_test, Player(0) )
    call TriggerAddAction( gg_trg_test, function Trig_test_Actions )
endfunction


Mais je t'en prie mon cher Bantas, teste par toi même.
Pour l'image stun complot d'admin visant à me discréditer stou.
On me la fait pas l'extension a subitement changé par magie en .jpg

Pour le string extérieur je te laisse l'entière liberté, du genre :
"owned" Razz

Au fait cette technique ne fonctionne pas non plus pour les array (déploiement)
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

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

MessagePosté le: 05/12/07 19:26    Sujet du message: Citer

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
Voir le profil de l'utilisateur Envoyer un message privé
 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: 05/12/07 19:33    Sujet du message: Citer

ah mon avis le point avait les mêmes coordonnées X/Y stou
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

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

MessagePosté le: 05/12/07 20:20    Sujet du message: Citer

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
Voir le profil de l'utilisateur Envoyer un message privé
 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...)
Créateur de race (Quantité : 1) Grand décorateur (Quantité : 2)

MessagePosté le: 24/04/08 15:37    Sujet du message: Citer

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
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Ayane
Bot administrateur


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

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

MessagePosté le: 24/04/08 17:28    Sujet du message: Citer

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
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Tutoriels 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