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

Bug du pré-compilateur de JassHelper

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Autre
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 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: 26/05/10 22:03    Sujet du message: Bug du pré-compilateur de JassHelper Citer

Salut.

Alors voilà, j'avais une ambition toute simple, c'était de faire une map de test pour voir si un filtre gardait en mémoire les addresses ou les valeurs des variables et voilà t'y pas que le JassHelper me fait un truc bizzare.
Sans plus attendre, le code :
Secret:

Jass:
function FilterUnit takes nothing returns boolean
    return GetUnitTypeId(GetFilterUnit())==udg_a
endfunction
function machinGo takes nothing returns nothing
    call BJDebugMsg(I2S(GetTriggerEvalCount(GetTriggeringTrigger())))
endfunction
function Trig_gnap_Actions takes nothing returns nothing
    local trigger t=CreateTrigger()
    local region r=CreateRegion()
    call RegionAddRect(r,gg_rct_a)
    set udg_a='hfoo'
    call TriggerRegisterEnterRegion(t,r,Filter(FilterUnit))
    call TriggerAddAction(t,function machinGo)
    set udg_a='hkni'
endfunction

//===========================================================================
function InitTrig_gnap takes nothing returns nothing
    set gg_trg_gnap = CreateTrigger(  )
    call TriggerRegisterPlayerChatEvent( gg_trg_gnap, Player(0), "go", true )
    call TriggerAddAction( gg_trg_gnap, function Trig_gnap_Actions )
endfunction


Et JassHelper me modifie ça lors de l'enregistrement en :
Secret:

Jass:
function FilterUnit takes nothing returns boolean
    return GetUnitTypeId(GetFilterUnit()) == udg_a
endfunction
function machinGo takes nothing returns nothing
    call BJDebugMsg(I2S(GetTriggerEvalCount(GetTriggeringTrigger())))
endfunction
function Trig_gnap_Actions takes nothing returns nothing
    local trigger t=CreateTrigger()
    local region r=CreateRegion()
    call RegionAddRect(r , gg_rct_a)
    set udg_a = 'hfoo'
    call TriggerRegisterEnterRegion(t , r , Filter((1))) // <- Bug ici !!
    call TriggerAddAction(t , function machinGo)
    set udg_a = 'hkni'
endfunction

//===========================================================================
function InitTrig_gnap takes nothing returns nothing
    set gg_trg_gnap = CreateTrigger()
    call TriggerRegisterPlayerChatEvent(gg_trg_gnap , Player(0) , "go" , true)
    call TriggerAddAction(gg_trg_gnap , function Trig_gnap_Actions)
endfunction


Et du coup, il me fait remarquer innocemment qu'il y a une erreur Rolling Eyes . Donc j'aimerai savoir qu'est-ce qui le pousse à me faire ça...

Merci d'avance.

EDIT : j'avais oublié le "function" dans le filtre comme un boulet Very Happy .
La bizzarerie de la situation m'a fait oublié de vérifier mon code.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 28/05/10 15:04    Sujet du message: Citer

Vu que tu as un précompilateur, voici la version Vjass, juste pour le fun.

Jass:

scope Gnap initializer init

globals
    private integer UnitId
    private integer TriggerCount
endglobals

private function FilterUnit takes nothing returns boolean
    return GetUnitTypeId(GetFilterUnit()) == UnitId 
endfunction

private function machinGo takes nothing returns nothing
    set TriggerCount = TriggerCount  + 1
    call BJDebugMsg(I2S(TriggerCount ))
endfunction

private function Conditions takes nothing returns boolean
    local trigger t=CreateTrigger()
    local region r=CreateRegion()
    call RegionAddRect(r , gg_rct_a)
    set UnitId = 'hfoo'
    call TriggerRegisterEnterRegion(t , r , Filter((function FilterUnit))) // <- Bug ici !!
    call TriggerAddAction(t , function machinGo)
    set UnitId = 'hkni'
    return false
endfunction

public function init takes nothing returns nothing
    local trigger t = CreateTrigger()
    set TriggerCount  = 0
    call TriggerRegisterPlayerChatEvent(t, Player(0) , "go" , true)
    call TriggerAddCondition(t, Condition(function Conditions))
endfunction

endscope

_________________
Revenir en haut
 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: 28/05/10 16:26    Sujet du message: Citer

Merci de me pousser à me convertir Razz .
J'ai encore du mal avec la syntaxe vJass mais je commence à connaitre les mots-clés.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 28/05/10 17:19    Sujet du message: Citer

Ca n'est pas compliqué du tout.

Scope = comme un déclencheur que tu mets où tu veux et que le compileur placera en dernier dans le code de la carte.

Library: scope, sauf que tu dois préciser quelles autres libraries elle doit utiliser. Et l'initialiser doit être en fonction privée.

Jass:
scope blabla initializer init
public function init blabla
endfunction
endscope


Jass:
library blabla initializer init needs (ou requires) library1, library 2 ...
private function init blabla
endfunction
endlibrary


Ce qui permet à la library d'être placée sous celles dont elle a besoin dans le code de la carte par le compileur. En gros, hein=)

Et tes variables globales, tu les déclares dans

Jass:
globals

endglobals


en tête de scope/library.

et plus besoin de udg_machintruc
_________________
Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Autre 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