online faq recherche accueil
 

Il y a 191 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
 Page :  1  2  3
Page Précédente 
Auteur
 Sujet :

concernant les effets

 
n°4587025
Maximaxou
rejoignez les fidèles du JASS
Posté le 21-11-2006 à 19:00:15  profilanswer
 

Bonjour,
J'aimerais savoir si, lorsque l'on crée un effet qui ne dure qu'une où deux secondes visuellement, celui-ci disparaît automatiquement, ou s'il faut le supprimer manuellement. (dsl pour les rimes)

n°4587026
kopaka
Rien à écrire sur ce champ...
Posté le 21-11-2006 à 20:28:14  profilanswer
 

:D
 
Peut tu donner ton exemple ? Tu parles des effets spéciaux c'est bien ca ?
Si oui il faut toujours les supprmier manuellement car sinon a force d'accumuler les effets la map peu lagger juqu'a planter warcraft.

n°4587028
Maximaxou
rejoignez les fidèles du JASS
Posté le 21-11-2006 à 21:41:37  profilanswer
 

Oui les effets spéciaux. Par exemple quand un personnage entre une région précise, l'effet empalement s'applique à cet endroit, et ce autant de fois qu'une unité entre ds cette région.

n°4587029
Maximaxou
rejoignez les fidèles du JASS
Posté le 21-11-2006 à 21:45:13  profilanswer
 

En fait, est-ce que ceci marche :
A: Créer l'effet
A: Supprimer l'effet
sans pause entre les deux ?
je viens de tester, les empalements se font bien, donc à priori ça marche...

n°4587033
Le vagabon​d
Posté le 22-11-2006 à 13:38:21  profilanswer
 

Mais tu as conscience que même si une unité touche l'empaleur il ne se passera rien.

n°4587038
Maximaxou
rejoignez les fidèles du JASS
Posté le 22-11-2006 à 19:06:21  profilanswer
 

Bien sûr, parce que je ne veux pas que ça se produise :p. C'est juste pour faire un effet de style.
En fait c ds un escape : ton perso glisse sur la glace et arrivé a un certain endroit, des pics se forment juste derrière le perso.
Si je voulais le tuer il suffirait de rajouter la commande kill(triggering unit)

n°4587049
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 22-11-2006 à 22:11:37  profilanswer
 

cela dépend des effets je pense.
Si tu en a plusieurs à détruire simultanément il faut passer impérativement par des variables

n°4587051
Maximaxou
rejoignez les fidèles du JASS
Posté le 22-11-2006 à 22:28:40  profilanswer
 

oui je sais, mais il y a un problème : dans le cas ou un trigger crée un effet qui dure 5 secondes par exemple, que tu dis :
_créer l'effet
_attendre 5 secondes
_détruire dernier effet
 
si ton trigger s'exécute plusieurs fois en moins de 5 secondes cela ne va pa fonctionner.
Et en passant par les variables je ne vois pas d'autre explication que créer un tableau, par exemple effet[], et de metr l'efffet juste créé dans effet[x] en incrémentant x à chaque exécution du trigger. Mais ceci ne va-t-il pas prendre trop de place en mémoire ?

n°4587053
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 22-11-2006 à 22:48:56  profilanswer
 

Trés juste ca fait plaisir de voir quelqu'un qui a un minimum de connaissance en programmation.  :hello:  
Tu peux procéder de cette manière, mais le mieux c'est d'utiliser une variable locale.
Je supposes que tu ne sais pas comment faire mais comme je n'ai plus le temps si personne ne t'a répondu correctement d'ici demain je le ferais

n°4587060
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 04:03:31  profilanswer
 

Merci, ça fait plaisir :). J'ai hâte d'entendre ton explication à propos de la variable locale :D.

n°4587061
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 04:03:52  profilanswer
 

Ah au fait j'oubliais... j'adore ton image ;).

n°4587065
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-11-2006 à 11:25:35  profilanswer
 

Déja il faut savoir que ce que tu fais de facon graphique c'est du gui (en sélectionnant dans des menus).
Le gui est une interface graphique générant du jass2 (langage de l'éditeur) mais souvent de façon plus lourde (fuites de mémoire, plus grand temps d'éxécution ....) que si tu le faisais toi même en jass.
Néammoins le grand avantage du gui c'est qu'il n'est pas nécessaire de connaitre le jass2 ni aucun autre langage de programmation d'ailleurs, et qu'il est trés facile à lire et à éditer.
 
Pour convertir un déclencheur en jass il faut faire ; edition -> convertir en texte personnalisé
Mais souvent on peut garder la structure du déclencheur en gui et rajouter des customs scripts, c'est à dire du jass
 
Concernant les variables locales il y a 2 façons de procéder, voici l'exemple le plus simple :

Code :
  1. Evénements
  2.     Conditions
  3.     Actions
  4.         Custom script:   local effect effet_special
  5.         Effet spécial - Create a special effect at (Center of (Playable map area)) using buildings\undead\Slaughterhouse\Slaughterhouse.mdl
  6.         Set effet_special = (Last created special effect)
  7.         Wait 2.00 seconds
  8.         Effet spécial - Destroy effet_special


 
Pourquoi ca marche alors que je déclare une variable locale du type effet nommé effet_special et que je lui donnes aucune valeur  :heink:  
Parce que si une variable locale et une variable globale ont exactement le même nom dans une même fonction, c'est la variable locale qui est utilisée, même si l'on veut modifier la variable globale.
 
L'inconvénient de cette astuce est que cela ne marche que si tu créé pas d'autres fonctions entre la déclaration de la variable locale et l'utilisation de la variable globale.
En effet une variable locale n'est utilisable que dans sa fonction, et devient nulle à la fin de l'éxécution de la fonction contrairement à une variable globale
 
Ah oui j'oubliais pour déclarer une variable locale il faut faire :

Code :
  1. local TypeDeLavariable NomDeLaVariable


 
Tu peux lui attribuer directement une valeur en rajoutant = ...
 
Comment savoir le type de variable à utiliser ?
 
Il existe trois types de librairies qui sont dans la war3patch.mpq.
Utilises winmpq ou tout autre archiveur de Mopaq (format de compression de blizzou).
Il se peut que en ouvrant war3patch/mpq tu voies des fichiers unknown.....
C'est que le (listfile) n'est pas complet, il faut donc un télecharger un plus récent.
 
Personnellement j'utilises mpqmaster
Dans la catégorie Scripts trois fichiers sont trés intéressants :
Blizzard.j : contient toutes les fonction du gui
common.ai : contient toutes les fonctions pour l'intelligence artificielle
enfin le common.j : contient toutes les fonction natives du jass2.
En fait on pourrait se passer de la librairie blizzard.j car toutes les fonctions de blizzard.j sont faisables avec les fonction natives, mais dans ce cas il faudrait tout faire en jass  :sweat:  
 
Bref la liste des variables se trouve en début du fichier common.j
 
PS : Moi aussi mais certains ne l'aiment pas comme quoi les gôuts et les couleurs ...


Message édité par Troll-Brain le 23-11-2006 à 11:44:31
n°4587068
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 15:29:40  profilanswer
 

Merci pour ces explications claires et précises :). Cependant je bute sur quelques points :
    1) Ce que tu appelles "fonction" c'est un déclencheur ?
    2) Je ne comprends pas bien l'inconvénient de cette méthode :
          "L'inconvénient de cette astuce est que cela ne marche que si tu créé pas d'autres fonctions entre la déclaration de la variable locale et l'utilisation de la variable globale.  
En effet une variable locale n'est utilisable que dans sa fonction, et devient nulle à la fin de l'éxécution de la fonction contrairement à une variable globale  
 

n°4587069
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 15:31:28  profilanswer
 

Je ne comprends pas ce que tu veux dire par "créer d'autres fonctions entre la déclaration de la variable locale et l'utilisation de la variable globale".  

n°4587071
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-11-2006 à 15:48:17  profilanswer
 

c'est simple fait un déclencheur bidon avec plusieurs actions, convertis le en jass tu verras qu'il existera une fonction Trig_NomDeTonDéclencheur_Actions dans laquelle toutes tes actions seront répertoriées.
Maintenant fais edition annuler pour ravoir ce déclo en gui, rajoute un if then else multiple fonctions puis reconvertis le déclo en jass, tu verras que les fonction if then else seront en dehors de la fonction actions pricinipale.
 
Et comme une variable locale n'est utilisable que dans sa fonction cela ne marchera pas, que le if then else soit avant,aprés ou dans le set variable d'ailleurs, je me suis mal exprimé


Message édité par Troll-Brain le 23-11-2006 à 15:50:15
n°4587072
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 15:51:02  profilanswer
 

"Moi aussi mais certains ne l'aiment pas comme quoi les gôuts et les couleurs ..." --> tu n'aimes pas quoi ?

n°4587073
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-11-2006 à 15:52:07  profilanswer
 

je parlais de mon avatar (moi aussi je l'adores)
Si c'est ta seule question je supposes que tu a parfaitement compris le reste ^^


Message édité par Troll-Brain le 23-11-2006 à 15:52:27
n°4587074
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 16:00:24  profilanswer
 

non là chui dans ma période brainstorming :p
Les questions risquent d'arriver après ^^

n°4587075
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-11-2006 à 16:03:29  profilanswer
 

au fait pour me citer utilise les balises code sa sera plus clair [ code] ton texte [/code] sans aucun espace


Message édité par Troll-Brain le 23-11-2006 à 16:03:41
n°4587076
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 16:13:16  profilanswer
 

Pour essayer de comprendre, j'ai fais comme tu ma dis, avec un exemple, le voici : (les actions sont faites o pif)
 
http://forum.judgehype.com/mesimages/20024/essai.JPG
 
le code jass qui lui correspond est le suivant :
 

Citation :

function Trig_essai_Func002C takes nothing returns boolean
    if ( not ( udg_all_is_dead == true ) ) then
        return false
    endif
    return true
endfunction
 
function Trig_essai_Actions takes nothing returns nothing
    set udg_n = 5
    if ( Trig_essai_Func002C() ) then
        call KillUnit( udg_ts_persos[udg_n] )
        call TriggerSleepAction( 2 )
    else
        call SetPlayerName( Player(0), "TRIGSTR_082" )
    endif
endfunction
 
//===========================================================================
function InitTrig_essai takes nothing returns nothing
    set gg_trg_essai = CreateTrigger(  )
    call TriggerAddAction( gg_trg_essai, function Trig_essai_Actions )
endfunction


 
Les actions du if sont dans la même fonction que les actions, seule la condition du if est dans une autre fonction.
Donc à priori si je ne me trompe pas, tu as tort... donc je dois me tromper :o.

n°4587077
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-11-2006 à 16:17:45  profilanswer
 

justement la conition est en dehors donc si tu utilises cette astuce et que tu mets en condition la variable globale cela ne sera pas bon, donc les actions ne seront pas lancées correctement


Message édité par Troll-Brain le 23-11-2006 à 16:19:10
n°4587078
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 16:19:01  profilanswer
 

Au fait, pourquoi le code généré crée une fonction de type booléen pour les conditions du if, au lieu d'insérer directement les conditions dans le if ?
c'est-à-dire, pourquoi ne pas faire plutot ceci :
 

Citation :

function Trig_essai_Actions takes nothing returns nothing  
    set udg_n = 5  
    if ( udg_all_is_dead () ) then  
        call KillUnit( udg_ts_persos[udg_n] )  
        call TriggerSleepAction( 2 )  
    else  
        call SetPlayerName( Player(0), "TRIGSTR_082" )  
    endif  
endfunction


 
PS : merci pour l'info sur les balises code

n°4587079
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-11-2006 à 16:20:22  profilanswer
 

parce que c'est du gui et que comme je te l'ai expliqué c'est parfois lourd  :D  
tu pourrais tout à fait faire cela en jass.
 
Mais pour eviter ce problème il suffit de faire X if/then/else avec la même conditions pour X actions à affectuer


Message édité par Troll-Brain le 23-11-2006 à 16:22:38
n°4587080
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 16:22:19  profilanswer
 

oui mais si tu utilises ta variable dans les actions du if uniquement (et pas dans les conditions), alors dans ce cas, il n'y aura pas de problème.
Et dans le cas où l'on en a besoin dans les conditions, ne peut-on pas insérer manuellement ces conditions, directement dans le if de la fonction des actions ? (je ne sais pas si je suis très clair...)

n°4587081
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-11-2006 à 16:25:07  profilanswer
 

Maximaxou a écrit :

oui mais si tu utilises ta variable dans les actions du if uniquement (et pas dans les conditions), alors dans ce cas, il n'y aura pas de problème.


Oui mais c'est rarement le cas quand même ......
 

Maximaxou a écrit :

Et dans le cas où l'on en a besoin dans les conditions, ne peut-on pas insérer manuellement ces conditions, directement dans le if de la fonction des actions ? (je ne sais pas si je suis très clair...)


En effet je vois pas trop où tu veux en venir...


Message édité par Troll-Brain le 23-11-2006 à 16:25:27
n°4587082
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 16:25:36  profilanswer
 

Donc une fois une map entièrement finie, il serait utile de convertir le gui en jass et de rechercher des simplifications de programmation possibles, et de les effectuer manuellement, n'est-ce-pas ?

n°4587084
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-11-2006 à 16:29:36  profilanswer
 

je penses que wc3mapoptimiser le fait déjà mais j'ai jamais vraiment essayé, et cela me semble plutôt dur a réaliser, il vaut mieux directement penser en jass ^^
sinon je n'ai toujours pas compris ta question.

n°4587085
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 16:29:40  profilanswer
 

Je veux dire, mettre dans le if les conditions directement, sans appeler une fonction extérieure, afin que la variable que l'on veut locale, soit utilisée dans la fonction Trig_essai_Actions seulement et non dans la fonction Trig_essai_Func002C.

n°4587086
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 16:31:03  profilanswer
 

Euh oui, ça semble assez balèze à faire en effet ^^. Mais que Wc3 Map optimizer le fasse, c'est parfé ça :p.

n°4587087
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-11-2006 à 16:32:34  profilanswer
 

bah oui je t'ait dit que tu pouvais le faire en jass, un if then else il suffit de rajouter toutes les actions que tu veux.
Et si tu veux garder la structure en gui tout de même trés pratique tu fais cela avec des custom scripts.
Concernant wc3map... ce n'est qu'une hypothése j'ai vu une option dans ce style mais peut être cela s'appliquait aux déclos déja en jass


Message édité par Troll-Brain le 23-11-2006 à 16:34:12
n°4587088
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 16:33:00  profilanswer
 

Sinon, j'ai un autre problème : pourquoi ne peut-on pas utiliser de variable dans les évènements ? Le peut-on en jass ?

n°4587089
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-11-2006 à 16:36:18  profilanswer
 

même pas besoin il existe la fonction délencheur-add new event, c'est dans les actions.
Pourquoi l'on ne peut pas directement ? Encore une fois c'est le gui powa
Par contre attention cela n'aura surement l'effet désiré, en fait ca prend la valeur de la variable à l'instant T, mais si par la suite ta variable change l'événement aura toujours our référence l'ancienne valeur, ca doit être pour cela que cela n'a pas été prévu afin de ne pas induire en erreur


Message édité par Troll-Brain le 23-11-2006 à 16:39:26
n°4587090
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 16:38:51  profilanswer
 

whaa génial merci :)))
Euh sinon, tu n'aurais pas une idée pour mon problème d'unité qui meurt sur un terrain de type précis ?
 
PS : dsl pour toutes ces quesions je suis un noob

n°4587091
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 16:41:42  profilanswer
 

hm mais si l'on génère tous les évènements avec cette action dont tu me parles, il n'y aura rien dans les évènements, et le declo ne s'exécutera jamais, si ?

n°4587092
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-11-2006 à 16:42:21  profilanswer
 

Maximaxou a écrit :

whaa génial merci :)))
Euh sinon, tu n'aurais pas une idée pour mon problème d'unité qui meurt sur un terrain de type précis ?


Il n'y a pas d'autre facon de faire par contre tu peux éviter les fuites de mémoire.
 

Maximaxou a écrit :

PS : dsl pour toutes ces quesions je suis un noob


 
Crois moi tu es au dessus de la moyenne, ne t'inquiète pas ...
 
PS: Regarde le message d'en haut avant de me remercier
 

n°4587093
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 16:42:45  profilanswer
 

je suis bête, il suffit de mettre l'action d'ajout d'évènements, dans un autre évènement, qui s'exécutera à l'initialisation de la map...

n°4587094
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-11-2006 à 16:44:13  profilanswer
 

Maximaxou a écrit :

hm mais si l'on génère tous les évènements avec cette action dont tu me parles, il n'y aura rien dans les évènements, et le declo ne s'exécutera jamais, si ?


tu fais un déclo sans événement et tu le rajoutes via un autre trigger par la suite, il n'y a pas de problme quand un des événements sera vrai le déclo se lancera même si à l'origine il n'avait aucun événement
 

n°4587095
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 16:48:43  profilanswer
 

hm dis-moi si je me trompe mais... lorsque l'on ajoute un évènement contenant une ou des variables à un trigger, l'évènement créé ne prendra pas en compte l'adresse de la variable mais sa valeur, et ceci selon moi parce qu'un trigger doit pouvoir s'exécuter très rapidement (je ne sais pas comment fonctionne les évènnements mais j'en ai une vague idée, vraie ou fausse), or s'il devait récuppérer la valeur contenue à l'adresse d'une variable à chaque fois, cela poserait des problèmes.

n°4587096
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-11-2006 à 16:52:53  profilanswer
 

l'action d'ajout d'évènement me sera grandement utile, par exemple pour simplifier ceci :
http://forum.judgehype.com/mesimages/20024/cmd.JPG
 
Etant donné que je dispose d'une variable joueurs[n] pour n allant de 0 à 10 (joueurs[0]=j_rouge, joueurs[1]=j_bleu), avec un for ce sera vite fait :).

n°4587097
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-11-2006 à 16:53:19  profilanswer
 

il ne le fait qu'une fois au moment de rajouter l'événement c'est d'ailleurs pour ca que même si la valeur de la variable change cela ne change rien pour l'événement


Message édité par Troll-Brain le 23-11-2006 à 16:59:45
 Page :  1  2  3
Page Précédente 

Aller à :
Ajouter une réponse