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

Soucis de spawn unité

 
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
 Mainguet
Membre honoraire


Inscrit le: 16 Juil 2010
Messages: 298
Sujets: 17
Spécialité en worldedit: Faire compliqué quand il peut faire facile.


MessagePosté le: 17/07/10 21:30    Sujet du message: Soucis de spawn unité Citer

Bonsoir a tous! Alors ceci est mon second problème en deux jours (qui dit mieux? Ah j'ai une main au fond... bref)

Alors j'ai confectionné une série de commande pour, dans ma carte, rajouter en jeu des monstres ( dotés de la capacité "Aloc" ) et de pouvoir les supprimer lorsque l'envie m'en prend à l'aide d'un groupe d'unités

Et me voila avec un souci: Mon système ne marche tout simplement pas:

Au fait, il s'agit d'un slide et donc le hero_j est la seule unité controlable c'est pour ca que un coup je cherche l'unité qui a reçu l'action etc (à nettoyer je sais)

Ajout d'une unité mobile douée de la capacité "Aloc" (unité destinée a effectuer une patrouille lorsqu'elle spawn)

Système:
Premier clic droit:

Secret:

Jass:
function Trig_create_monster_1_Actions takes nothing returns nothing

    local location point_order = GetOrderPointLoc()

    set udg_monster_patrol[0] = point_order
   
    call RemoveLocation( point_order )
    set point_order = null
   
    call DisableTrigger( GetTriggeringTrigger() )
   
    call PauseUnitBJ( true, GetTriggerUnit() )
    call IssueImmediateOrder( udg_hero_j[0], "stop" )
    call PauseUnitBJ( false, GetTriggerUnit() )
    call TriggerSleepAction( 0.10 )
   
    call EnableTrigger( gg_trg_create_monster_2 )
endfunction

//===========================================================================
function InitTrig_create_monster_1 takes nothing returns nothing
    set gg_trg_create_monster_1 = CreateTrigger(  )
    call DisableTrigger( gg_trg_create_monster_1 )
    call TriggerRegisterPlayerUnitEventSimple( gg_trg_create_monster_1, Player(0), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER )
    call TriggerAddAction( gg_trg_create_monster_1, function Trig_create_monster_1_Actions )
endfunction



Second:
Secret:

Jass:
function Trig_create_monster_2_Actions takes nothing returns nothing

    set udg_monster_patrol[1] = GetOrderPointLoc()
   

    call DisableTrigger( GetTriggeringTrigger() )
   

   
    call CreateUnitAtLoc(Player(PLAYER_NEUTRAL_AGGRESSIVE), udg_garde, udg_monster_patrol[0], 0.00)
    call IssuePointOrderLocBJ( GetLastCreatedUnit(), "patrol", udg_monster_patrol[1] )

    call GroupAddUnit ( udg_added_monsters, GetLastCreatedUnit() )
   
    call PauseUnitBJ( true, GetTriggerUnit() )
    call IssueImmediateOrder( udg_hero_j[0], "stop" )
    call PauseUnitBJ( false, GetTriggerUnit() )
   
   
    call RemoveLocation(udg_monster_patrol[0])
    call RemoveLocation(udg_monster_patrol[1])
   
   
    call TriggerSleepAction( 0.10 )
    call EnableTrigger( gg_trg_create_monster_1 )
endfunction

//===========================================================================
function InitTrig_create_monster_2 takes nothing returns nothing
    set gg_trg_create_monster_2 = CreateTrigger(  )
    call DisableTrigger( gg_trg_create_monster_2 )
    call TriggerRegisterPlayerUnitEventSimple( gg_trg_create_monster_2, Player(0), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER )
    call TriggerAddAction( gg_trg_create_monster_2, function Trig_create_monster_2_Actions )
endfunction




Dans les deux déclencheurs du système, les méthodes sont différentes car j'ai presque tout essayé sans réussir...




Après modifications, j'en arrive a la déduction que le problème viens des local... (j'ai fait un trigger en gui l'ai converti en jass et jusque la il marchait... mais après avoir essayé de mettre des locales pour pouvoir éviter un leak, tout plantait. Donc le problème viens de là. Seul soucis, comment faire pour utiliser les locales? Merci de m'aider a répondre à cette question Smile
_________________
Le naab? C'est moi!

Jass:
call KillUnit(Mainguet)
// même le KillUnit me semble faux


Naab un jour... naab toujours!!!


Dernière édition par Mainguet le 18/07/10 14:12; édité 1 fois
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: 18/07/10 11:58    Sujet du message: Citer

Quand tu fais set variablePoint = autreVariablePoint tu ne créés pas de nouveau point, tu transmets juste sa référence à la variable autreVariablePoint.

Donc quand tu détruits variablePoint, autreVariablePoint pointe alors sur une location détruite.
Ta variable locale est sans intérêt ici d'ailleurs.
Tu ne semble pas avoir compris ce qu'était un leak et l'intérêt des variables local.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Mainguet
Membre honoraire


Inscrit le: 16 Juil 2010
Messages: 298
Sujets: 17
Spécialité en worldedit: Faire compliqué quand il peut faire facile.


MessagePosté le: 18/07/10 13:54    Sujet du message: Citer

J'ai compris qu'un leak arrivait lorsque par exemple l'on créait une unité à un point tel point d'ailleurs qui n'est jamais libéré de la mémoire par warcraft
a par si l'on crée un "pointeur" vers ce point pour permettre de le "supprimer" et eviter ainsi un leak de mémoire. Par contre, je ne cache pas que je suis débutant en jass.

Et je me suis aussi rendu compte que l'un des deux étaient inutiles. Par contre, je n'avais pas saisi que mettre set variablePoint = autreVariablePoint ne donne pas la valeure de la seconde à la première mais ne fait que créer un pointeur du premier au second. Ça me fait déjà des connaissances de plus en jass Surprised .

Merci pour cette réponse. Je m'endormirais moins bête ce soir Smile
_________________
Le naab? C'est moi!

Jass:
call KillUnit(Mainguet)
// même le KillUnit me semble faux


Naab un jour... naab toujours!!!
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Profet (Quantité : 1)

MessagePosté le: 18/07/10 14:45    Sujet du message: Citer

-> Leak Smile
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 Mainguet
Membre honoraire


Inscrit le: 16 Juil 2010
Messages: 298
Sujets: 17
Spécialité en worldedit: Faire compliqué quand il peut faire facile.


MessagePosté le: 18/07/10 15:18    Sujet du message: Citer

Merci pour ce "lien" profet (j'ai déjà lu ce tutoriel là) ça ne me fera pas de mal de le relire attentivement (plus que la première fois car je ne m'étais même pas rendu compte que ça ne servais a rien de "nullifier" une globale...)
_________________
Le naab? C'est moi!

Jass:
call KillUnit(Mainguet)
// même le KillUnit me semble faux


Naab un jour... naab toujours!!!
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: 18/07/10 17:31    Sujet du message: Citer

Mainguet a écrit:
Merci pour ce "lien" profet (j'ai déjà lu ce tutoriel là) ça ne me fera pas de mal de le relire attentivement (plus que la première fois car je ne m'étais même pas rendu compte que ça ne servais a rien de "nullifier" une globale...)


En fait si ca sert à se préserver d'un leak très très très mineur quand l'handle associé est détruit et que les variables qui pointent dessus ne sont pas nullifiés "en même temps" (même thread).
Mais bon tu peux admettre que ca ne leak pas :p
_________________
Le violet, c'est moche.
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
La question posée dans ce topic a été résolue !

 
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