Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.phpMé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

Variable et événement / Déplacement région

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 ptitcool
Membre actif


Inscrit le: 06 Nov 2007
Messages: 184
Sujets: 17
Spécialité en worldedit: Faire lagger


MessagePosté le: 21/11/10 01:16    Sujet du message: Variable et événement / Déplacement région Citer

Salut salut !

Bon j'ai deux problèmes

Le premier :

J'ai deux déclencheurs :

Gui:
Trigger:
Mine activation
Evénements
Conditions
Collapse Actions
Effet spécial - Destroy MineEffect
Déclencheur - Turn on Mine declenche <gen>
Set MinePoint = (Random point in Apparition monstres <gen>)
Région - Center Mine <gen> on MinePoint
Effet spécial - Create a special effect at (Center of Mine <gen>) using unitscreepsGoblinLandMineGoblinLandMine.mdl
Set MineEffect = (Last created special effect)


Gui:
Trigger:
Mine declenche
Collapse Evénements
Unité - A unit enters Mine <gen>
Collapse Conditions
(Owner of (Triggering unit)) Différent de Joueur 12 (Marron)
Collapse Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
((Triggering unit) is Un héros) Egal à  TRUE
Collapse Alors - Actions
Unité - Set life of (Triggering unit) to ((Vie of (Triggering unit)) - ((Vie Max of (Triggering unit)) x 0.20))
Unité - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) - ((Mana Max of (Triggering unit)) x 0.20))
Collapse Sinon - Actions
Unité - Kill (Triggering unit)
Effet spécial - Destroy MineEffect
Effet spécial - Create a special effect at MinePoint using war3mapImportedNewMassiveEX.mdx
Effet spécial - Destroy (Last created special effect)
Custom script:   call RemoveLocation(udg_MinePoint)
Déclencheur - Turn off (This trigger)


Dans le premier je déplace la région Mine mais apparemment ce déplacement n'est pas pris en compte dans l'événement du second trigger. J'ai fais quelques test et la région est bien déplacée mais l'événement du déclencheur utilise la position initiale de la région. J'aimerai savoir comment corriger ça.


Le second :

Est ce possible d'utiliser une variable dans un événement ? Si oui comment ?

Merci
_________________
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


Ma petite arena
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 soraiku
Membre récent


Inscrit le: 13 Avr 2008
Messages: 89
Sujets: 11
Spécialité en worldedit: Un peu de tout


MessagePosté le: 21/11/10 04:27    Sujet du message: Citer

Citation:
Est ce possible d'utiliser une variable dans un événement ? Si oui comment ?


Non il ne me semble pas que ce soit possible, mais avec les conditions tu peux utiliser la variable pour vérifier si c'est la bonne valeur. Non?

Après pour ton déclencheur pourquoi ne pas stocker les nouvelles positions de la région dans des variables ?

Un peu comme ça:

Gui:
Trigger:
Actions
Set X = (Position of (Triggering unit))
Set Yregion = (Center of (Playable map area))


J'ignore si ça te sera utile par contre ... désolé.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Crowolf
Animateur


Inscrit le: 21 Avr 2008
Messages: 1607
Sujets: 81
Spécialité en worldedit: Utiliser le travail des autres
Médailles: 3 (En savoir plus...)
Grand décorateur (Quantité : 2) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 21/11/10 11:04    Sujet du message: Citer

Salut, lorsque tu fais "Set MinePoint" tu stockes le point qui représente le centre de ta région, pas le centre de ta région.
Il faut que tu redéfinisses le point que tu vas utiliser.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 ptitcool
Membre actif


Inscrit le: 06 Nov 2007
Messages: 184
Sujets: 17
Spécialité en worldedit: Faire lagger


MessagePosté le: 21/11/10 11:44    Sujet du message: Citer

soraiku :
Les deux questions sont liées. Si je peux pas utiliser de variable dans mes événements la variable sera inutile. Surtout qu'avec les région on peut pas faire l'équivalent de :
Gui:
Trigger:
Déclencheur sans titre 001
Collapse Evénements
Unité - A unit Meurt
Collapse Conditions
(Unit-type of (Triggering unit)) Egal à  variable

Enfin il me semble.

Crowolf a écrit:
Salut, lorsque tu fais "Set MinePoint" tu stockes le point qui représente le centre de ta région, pas le centre de ta région.
Il faut que tu redéfinisses le point que tu vas utiliser.

Désolé mais je ne comprend ni le probleme ni la solution. Le point ne me sert qu'à déplacer la région donc je vois pas à quoi ça peut servir de stocker le centre de la région.
_________________
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


Ma petite arena
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 21/11/10 12:44    Sujet du message: Citer

Comme je suis de bonne humeur, je vais tout t'expliquer comment ça marche et je n'omettrai aucun détail technique ennuyeux Twisted Evil . Bonne lecture.

1) On ne peut pas mettre de variable en évènement : au début d'une partie, un script est lancé pour initialiser les déclencheurs. En clair, cela rajoute les évènements au déclencheur qui ne les possèdent pas automatiquement. Comme ce script est lancé avant le lancement de n'importe quel déclencheur, donc la plupart des variables ont encore leur valeur de base ("Pas d'unité" pour les unités, par exemple).
De plus, les évènements utilisent les valeurs des variables, et pas les variables elles-mêmes (c-à-d que si tu changes la valeur de la variable avec l'action "Set variable" (Move region devrait donc marcher) après avoir donné l'évènement, ça ne changera pas l'évènement).
Voilà pourquoi on ne peut pas mettre de variable en évènement : c'est inutile.

Cependant, tu as une action magique :
Gui:
Trigger:
Déclencheur - Add to TRIGGER the event EVENT

Dès que tu as fixé la valeur de ta variable, tu peux l'utiliser (et cette fois, tu pourras y mettre tes variables). N'oublie pas que l'évènement ne changera pas si tu utilises "Set" sur ta variable après coup.

2) Tu modifies ta région sans utiliser de "Set" mais ça ne marche pas : Le problème, c'est que ce n'est pas ta région qui est utilisé pour l'évènement, mais autre chose.
D'abord, les régions en GUI s'appellent des rect en jass. Ensuite, il existe aussi des régions en jass, qui ne sont donc pas les mêmes choses. Une région jass est un ensemble de "points" (c-à-d des petites rects de 32x32) qui peuvent former n'importe quelle figure géométrique, et pas seulement les rectangles.
Donc ton évènement utilise une région jass basé sur ta rect. Peut-être que tu comprendras mieux avec le code :
Jass:
function TriggerRegisterEnterRectSimple takes trigger trig, rect r returns event
    local region rectRegion = CreateRegion()
    call RegionAddRect(rectRegion, r)
    return TriggerRegisterEnterRegion(trig, rectRegion, null)
endfunction

C'est ce qui se passe lorsque tu utilises l'action "Add event (unit enters region)" (ou lorsque que tu mets cet évènement directement sur un déclencheur).
Donc changer la rect ne change pas la région créée pour l'évènement. Tu dois modifier directement la région.
Tu as 2 solutions :
- Ou bien tu utilises l'action "Add event" à chaque fois que tu changes ta rect de place (mais il faudra vérifier, d'une façon ou d'une autre, que ce ne sont pas les précédents évènements qui s'activent, parce qu'il ne disparaîtront pas (en plus, la condition "Is unit in region" bug et ne marcherait pas si les régions se chevauchent)).
- Ou bien tu fais le minimum de jass nécessaire pour pouvoir modifier ta région jass. Il te faut le JNGP pour ça (parce que tu ne peux pas déclarer une variable de type région jass en GUI) et faire ceci :
Dans la partie "Custom Script" de ta map, tu tapes ces 3 lignes :
Jass:
globals
    region MyRegion = null
endglobals
C'est la déclaration d'une globale de région que tu ne peux pas faire sans le JNGP.
Ensuite, tu retires l'évènement "A unit enters Mine <gen>" de ton déclencheur puisqu'on créera manuellement l'évènement.
En initialisation, tu créés tes variables et tu mets tout en place :
Gui:
Trigger:
-------- Création de la région correspondant à  la rect --------
Custom script:   set MyRegion = CreateRegion()
Custom script:   call Region AddRect(MyRegion, gg_rct_Mine)
-------- On initie l'évènement --------
Custom script:   call TriggerRegisterEnterRegion(gg_trg_Mine_declenche declenche, MyRegion, null)

Jusque là, on n'a rien fait de plus que ce que WE fait automatiquement. Mais on va pouvoir modifier la région en même temps que la rect, maintenant. A chaque fois que tu modifieras ta rect, tu pourras donc mettre ça :
Gui:
Trigger:
-------- On enlève les points de l'ancienne rect --------
Custom script:   call RegionClearRect(MyRegion, gg_rct_Mine)
-------- On modifie la rect --------
Set MinePoint = (Random point in Apparition monstres <gen>)
Région - Center Mine <gen> on MinePoint
-------- On ajoute la nouvelle rect à la région --------
Custom script:   call Region AddRect(MyRegion, gg_rct_Mine)


En bonus, je te met la liste des fonctions que tu peux utiliser pour les régions jass :
Secret:

Jass:
native CreateRegion             takes nothing returns region
native RemoveRegion             takes region whichRegion returns nothing // Pour le leak

native RegionAddRect            takes region whichRegion, rect r returns nothing
native RegionClearRect          takes region whichRegion, rect r returns nothing

native RegionAddCell           takes region whichRegion, real x, real y returns nothing  // Un pavé de 32x32
native RegionAddCellAtLoc      takes region whichRegion, location whichLocation returns nothing
native RegionClearCell         takes region whichRegion, real x, real y returns nothing
native RegionClearCellAtLoc    takes region whichRegion, location whichLocation returns nothing

native IsUnitInRegion               takes region whichRegion, unit whichUnit returns boolean  // Non buggés, contrairement à leurs cousins pour les rects.
native IsPointInRegion              takes region whichRegion, real x, real y returns boolean
native IsLocationInRegion           takes region whichRegion, location whichLocation returns boolean

native TriggerRegisterEnterRegion takes trigger whichTrigger, region whichRegion, boolexpr filter returns event  // Y'a pas de fonction pour les rects, sinon, ce serait trop simple ^^'.
native TriggerRegisterLeaveRegion takes trigger whichTrigger, region whichRegion, boolexpr filter returns event

constant native GetTriggeringRegion takes nothing returns region // En réponse évènement.


Et voilà ! Simple comme bonjour. Je tiens à préciser quand même que ces deux problèmes viennent du GUI, puisqu'en jass, on ajoute les évènements quand on veut et on utilise les régions plus facilement.
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 ptitcool
Membre actif


Inscrit le: 06 Nov 2007
Messages: 184
Sujets: 17
Spécialité en worldedit: Faire lagger


MessagePosté le: 21/11/10 13:16    Sujet du message: Citer

Merci beaucoup pour le roman ^^. Je comprends mieux maintenant. Par contre j'ai deux question :
Où est ce que je peux télécharger le JNGP (j'ai trouvé un tuto sur hiveworshop mais faut s'inscrire pour télécharger) ?
Comment on ajoute du custom script à une map ?
_________________
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


Ma petite arena
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 21/11/10 13:30    Sujet du message: Citer

Tu as la liste des outils utiles ici -> http://worldedit.free.fr/forum/viewtopic.php?t=148&start=0 (Gevans ne post plus assez, tout le monde ne voit pas sa signature toutes les 2 secondes Razz ).

Pour les custom scripts, t'a l'action "Custom script" (tout en haut de la liste des actions) qui permet de juste rentrer une ligne de code en GUI.
Sinon, tu peux passer à la vitesse supérieure et utiliser soit la partie Custom Script Code (tu sélectionnes l'icône de map au-dessus des déclencheurs), soit l'option "convertir en texte personnalisé" sur ton déclencheur pour le transformer en jass.
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 ptitcool
Membre actif


Inscrit le: 06 Nov 2007
Messages: 184
Sujets: 17
Spécialité en worldedit: Faire lagger


MessagePosté le: 21/11/10 13:33    Sujet du message: Citer

J'ai le même lien mais quand je clic sur download j'ai une erreur comme quoi il est indisponible.
_________________
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


Ma petite arena
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 21/11/10 13:51    Sujet du message: Citer

Ben essaies de chercher sur Google ou attends que le serveur ne soit plus saturé.
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 ptitcool
Membre actif


Inscrit le: 06 Nov 2007
Messages: 184
Sujets: 17
Spécialité en worldedit: Faire lagger


MessagePosté le: 21/11/10 15:27    Sujet du message: Citer

Bon j'ai trouvé un autre lien pour le JNGP.
Par contre le
Jass:
globals
    region MyRegion = null
endglobals

je dois le mettre avec 3 action custom script ou c'est à un autre endroit ?

EDIT : Et euh comment je fais pour jouer à une map que j'ai modifié avec le JNGP ?
_________________
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


Ma petite arena
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 21/11/10 15:56    Sujet du message: Citer

Tu peux le mettre n'importe où : le JNGP le rajoutera automatiquement dans la déclaration des variables globales.

Tu peux jouer avec le W3 normal lorsque t'as modifié une map avec le JNGP. Par contre, il faut décocher l'option "Reinventing the craft" et sauvegarder avant d'utiliser "Tester map".
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 ptitcool
Membre actif


Inscrit le: 06 Nov 2007
Messages: 184
Sujets: 17
Spécialité en worldedit: Faire lagger


MessagePosté le: 21/11/10 16:09    Sujet du message: Citer

Quand je compile et qu'il y a une erreur il est sensé se passer quoi ? Parce que quand j'enregistre JassHelper plante à l'étape "error found, please wait" et je suis obligé d'appeler mon pote Ctrl+alt+suppr.
_________________
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


Ma petite arena
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 21/11/10 16:16    Sujet du message: Citer

Ça ne devrait pas planter, ça devrait te montrer tes erreurs après 3/4 secondes. Tu as quelle version de jasshelper? Essaies de mettre la globale dans la partie "Custom script code" mais ça devrait marcher n'importe où...
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 ptitcool
Membre actif


Inscrit le: 06 Nov 2007
Messages: 184
Sujets: 17
Spécialité en worldedit: Faire lagger


MessagePosté le: 21/11/10 16:33    Sujet du message: Citer

J'ai la version 0.9.1.2
Pour l'instant j'ai ma global tout en haut de mon trigger Mine declenche que j'ai convertis en JASS.

EDIT : j'ai mis la version 0.A.2.B et ça plante plus, j'ai plus qu'à corriger les erreurs.

EDIT 2 : erreur corrigé, j'ai pu tester ma map ... maintenant il se pase plus rien !
_________________
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


Ma petite arena
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 ptitcool
Membre actif


Inscrit le: 06 Nov 2007
Messages: 184
Sujets: 17
Spécialité en worldedit: Faire lagger


MessagePosté le: 21/11/10 17:45    Sujet du message: Citer

CA MARCHE ! YAHOO !

J'avais pas viré l'événement de Mine declenche.

Merci beaucoup Tirlititi
_________________
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


Ma petite arena
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 -> Aide sur les déclencheurs Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
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