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=ee14f84e29ca4ad52e4db55935131124Mé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

Je me mets un petit peu au Jass
Aller à la page Précédente  1, 2, 3, 4, 5, 6  Suivante
 
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
 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: 16/06/08 17:52    Sujet du message: Citer

The.gosu a écrit:
Région = forcement de forme rectangulaire ou carré


Le carré est un rectangle particulier. Razz
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Darkfeyt
Floodeur prématuré


Inscrit le: 22 Nov 2007
Messages: 677
Sujets: 27
Spécialité en worldedit: Jamais sortir ses projets ?


MessagePosté le: 16/06/08 18:49    Sujet du message: Citer

Son code est du Jass si je me trompe pas , et en Jass il y a une différence entre rect (qui lui est forcément en forme de réctangle) et région (qui lui peut avoir n'importe quelle forme puisque c'est un assemblage de plusieurs rect).
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail MSN Messenger
 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...)
Grand décorateur (Quantité : 2) Créateur de race (Quantité : 1)

MessagePosté le: 16/06/08 22:12    Sujet du message: Citer

Une question basique de chez basique, mais sur laquelle je bute comme un bouseux : comment détruire les texttags ?
J'ai fait ce qui suis :

Jass:
function TextTagBar takes integer valeur, integer max, unit u, real zOffset, real size, real transparency, real lifespan returns nothing
    local integer i = 0
    local texttag bar = CreateTextTag()
    local string s = "bla bla bla"

    call SetTextTagText(bar, s, size * 0.023 / 10)
    call SetTextTagPos(bar, GetUnitX(u) - (3 * max), GetUnitY(u), zOffset)
    call SetTextTagColor(bar, 100, 100, 255, R2I((100.0-transparency) * 2.55))
    call SetTextTagFadepoint(bar, lifespan)
    call SetTextTagLifespan(bar, lifespan + 0.5)
    call SetTextTagPermanent(bar, false)
   
    call DestroyTextTag(bar)
    set bar = null
endfunction


Mais le texttag ne s'affiche tout simplement pas. Donc comment le détruire après l'avoir affiché (ce qui est le but à un moment donné Rolling Eyes ) ?
J'ai essayé en GUI également, et à moins de mettre un wait, ce qui est très gênant puisqu'il arrête tout, ça ne fonctionne pas.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 16/06/08 22:25    Sujet du message: Citer

Utilise un timer.
_________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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: 16/06/08 22:53    Sujet du message: Citer

J'avais pensé au timer, mais est-ce que ça risque pas d'être trop lourd (comparé à ce que fait la fonction) ?
En plus si je fais appel à une autre fonction pour le timer, je vais devoir stocker le texttag à détruire à moins qu'il n'existe un moyen plus simple.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Deatrathias
Membre actif


Inscrit le: 24 Mai 2008
Messages: 108
Sujets: 3
Spécialité en worldedit: Un peu de tout mais surtout beaucoup de rien.


MessagePosté le: 16/06/08 22:54    Sujet du message: Citer

Si tu lui donne une durée de vie non permanente, il se détruira une fois expiré, pas besoin de le supprimer, c'est comme donner un temps limité à une unité.
_________________
ಠ_ಠ
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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: 16/06/08 23:00    Sujet du message: Citer

Tu parle du texttag ? Donc en ne faisant que ça, ça irait :

Jass:
    call SetTextTagLifespan(bar, lifespan + 0.5)
    call SetTextTagPermanent(bar, false)
   
    // plus besoin de ça ---> call DestroyTextTag(bar)
    // et ça, je dois le garder ? ---> set bar = null
endfunction

_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Deatrathias
Membre actif


Inscrit le: 24 Mai 2008
Messages: 108
Sujets: 3
Spécialité en worldedit: Un peu de tout mais surtout beaucoup de rien.


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

Oui, juste en lui mettant une durée de vie, ça suffit à le supprimer, pas besoin du DestroyTextTag.
Par contre il faut quand même nullifier la variable locale.
_________________
ಠ_ಠ
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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...)
Grand décorateur (Quantité : 2) Créateur de race (Quantité : 1)

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

Merci beaucoup d'avoir pris le temps de me répondre (surtout vu l'heure).

edit : Shocked
J'ai fait une map test pour le déclo en question. Et là j'ai remarquer un truc bizarre qui n'a rien à voir avec ma fonction mais avec un autre déclencheur que j'utilise pour montrer son utilisation :

Jass:
function Trig_Barre_Actions takes nothing returns nothing
    local integer vie = R2I(GetUnitState(udg_Ferme, UNIT_STATE_LIFE) * 20.00 / GetUnitState(udg_Ferme, UNIT_STATE_MAX_LIFE))
   
    //vérification pour le problème de calcul...
    if GetUnitState(udg_Ferme, UNIT_STATE_LIFE) >= 500 and vie <= 19 then
        set vie = 20
    endif
   
    // message de débug pour voir ce qui cloche...
    call DisplayTextToPlayer(Player(0), 0, 0, R2S(1000 * GetUnitState(udg_Ferme, UNIT_STATE_LIFE)))
    call TextTagBar(vie, 20, udg_Ferme, 50.0, 10.0, 0.0, 0.5)
endfunction

//===========================================================================
function InitTrig_Barre takes nothing returns nothing
    set gg_trg_Barre = CreateTrigger(  )
    call TriggerRegisterTimerEvent( gg_trg_Barre, 0.50, true )
    call TriggerAddAction( gg_trg_Barre, function Trig_Barre_Actions )
endfunction


La première vérification n'a pas suffit et pour cause, le message de débug m'affichait à intervalle de temps réguliers la vie de la ferme.
Alors que je l'avais réparé complètement et qu'au début ça m'affichait 500,000.00 au bout de 20 secondes, voilà que la valeur diminue et passe à 499,999.906, puis 2~3 sec. plus tard 499,999.875, etc. diminuant progressivement.
J'ai pas poussé le test jusqu'à voir si la valeur finissait par se stabiliser mais c'est space.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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...)
Grand décorateur (Quantité : 2) Créateur de race (Quantité : 1)

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

Me revoilà, encore avec une question (à croire qu'à part ça et des blagues à 2 balles j'ai rien d'autres... Very Happy ) ça concerne encore indirectement les textes flottants. Je m'essaye à une fonction pour afficher les dégâts comme ceux des coups critiques.
La fonction qui affiche fonctionne (!) normalement, mais le trigger qui y fait appel, je sais pas dire si quelque chose y cloche.

Le voici :

Jass:
function Trig_degatbis_Actions takes nothing returns nothing
    local real damage = GetEventDamage()
    local unit target = GetTriggerUnit()
   
    call DisplayTextToPlayer(Player(0), 0, 0, "Text Tag - " + R2S(damage)) // débug
    call TextTagDamage(damage, target, 50.0, 96.0, 90.0, 10, 0, 0.75) // affiche les dégats
    call DestroyTrigger(GetTriggeringTrigger())
endfunction

//===========================================================================
function Trig_degat_Actions takes nothing returns nothing
    local unit target = GetTriggerUnit()
    local trigger trg_degatbis = CreateTrigger()

    call DisplayTextToPlayer(Player(0), 0, 0, "Action") // débug
    call TriggerRegisterUnitEvent( trg_degatbis, target, EVENT_UNIT_DAMAGED )
    call TriggerAddAction( trg_degatbis, function Trig_degatbis_Actions )
endfunction

//===========================================================================
function InitTrig_degat takes nothing returns nothing
    set gg_trg_degat = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_degat, EVENT_PLAYER_UNIT_ATTACKED )
    call TriggerAddAction( gg_trg_degat, function Trig_degat_Actions )
endfunction


Je vous saurais gré de m'éclairer à son sujet.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


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

Et donc si une unité se fais attaquer plusieurs fois il y aura plusieurs déclencheur d'affichage ?
_________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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: 17/06/08 22:20    Sujet du message: Citer

En gros ce que je veux c'est afficher (en faisant appel à la fonction TextTagDamage) les dégâts de chaque attaque portée contre chaque unité.

Et comme je sais pas récupérer les dégâts reçus par une unité quelconque, je me suis dit que j'allais détecter d'abord les unités attaqués, puis créer à chaque fois un déclencheur pour récupérer les dégâts reçus.

Dans la pratique, ça fonctionne, avec une dizaine d'ennemis qui se tatannent la gueule, leurs dégâts s'affichent comme il faut.

Mais est-ce la bonne solution, est-elle propre, n'y a-t-il pas meilleure méthode ? Voilà mes interrogations.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


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

Ta solution est sur la bonne voie. Mais il ne faut pas créer de déclencheur pour une unité s'il existe déjà.
De plus, ton déclencheur leak.
_________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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...)
Grand décorateur (Quantité : 2) Créateur de race (Quantité : 1)

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

[Master] a écrit:
Ta solution est sur la bonne voie. Mais il ne faut pas créer de déclencheur pour une unité s'il existe déjà.
De plus, ton déclencheur leak.


Je t'avoue que, si tu n'y vois pas d'inconvénient, je ne suis pas contre plus de détail. Rolling Eyes
Par exemple, comment ne créer qu'un seul déclencheur par unité et faire qu'il ne s'active que quand celle-ci est attaquée ? Et où est-ce qu'il leak ?
Tu m'aiderais beaucoup si tu voulais bien répondre à ces questions.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


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

Oh punaise j'avais pas vu que tu détruisais le déclencheur a chaque fois. Pour le leak il faut que tu mettes tes variables locales sur null.

Pour le reste ta solution est fiable comme elle est. Si tu veux pousser plus il faudrait ne pas détruire le déclencheur et surtout ne pas le créer s'il existe déjà. Tu peux utiliser un gamecache pour te rappeler de quel déclencheur a déjà été créé.
_________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi.
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 -> Aide sur les déclencheurs Toutes les heures sont au format GMT + 1 Heure
Aller à la page Précédente  1, 2, 3, 4, 5, 6  Suivante
Page 4 sur 6

 
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