| Voir le sujet précédent :: Voir le sujet suivant   | 
	
	 
	
		| Auteur | 
		Message | 
	
		 
		  Serial Bigouden Membre actif
  
  Inscrit le: 31 Oct 2007 Messages: 142 Sujets: 23 Spécialité en worldedit: Boarf
  	
		
  | 
		
			
				 Posté le: 06/11/07 19:57    Sujet du message: Petites question diverses | 
				     | 
			 
			 
				
  | 
			 
			
				J'ai plusieurs petites questions qui me turlupinent en ce moment ^^"
 
 
Tout d'abord, parlons chaines d'ordre... Quand on regarde les chaines d'ordre des sorts de type "flèches", on voit que ces chaines d'ordres sont étrangement assez différentes pour chaque sort.
 
 
Petit exemple : pour le sort flèches enflammées, les chaines sont :
 
 
Activer : Aucun
 
Utiliser/Allumer : flamingarrows
 
Désactiver : Aucun
 
Off : unflamingarrows
 
 
Alors que pour le sort flèches de glace, qui semble pourtant être un sort qui fonctionne exactement de la même façon, il n'y a par défaut aucune chaine d'ordre, pour aucun des 4 champs cités ci-dessus oO
 
 
C'est plutot embetant quand on essaye de controler par déclo l'utilisation de tels sorts (j'ai pas encore testé si le fait de donner une chaine d'ordre inutilisé permettait de le faire, d'ailleurs j'aimerais aussi savoir quelle valeur concrète ont les chaine d'ordre quand elles sont attribuées à des compétences avec lesquelles elles n'ont rien à voir, et si avoir deux compétences utilisant la même chaine d'ordre  sur la même unité engendre des problèmes).
 
 
Deuxième problème, moins prise de tête : alors que j'ai enfin décidé de mettre quelques couleurs (pas trop flashy quand même) dans la description des sorts, je me rends compte que le code utilisé pour définir les couleurs n'est pas composé de 6 chiffres mais de 8 oO
 
J'aimerais donc savoir quel code de couleur il faut utiliser ^^"
 
 
Voilà ça sera tout pour le moment    
 
 
Merci d'avence ^^ _________________
  | 
			 
		  | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		  Bantas Anomalie floodiforme
  
  Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
  Médailles: 1 (En savoir plus...) 	
		
  | 
		 | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		  Serial Bigouden Membre actif
  
  Inscrit le: 31 Oct 2007 Messages: 142 Sujets: 23 Spécialité en worldedit: Boarf
  	
		
  | 
		
			
				 Posté le: 06/11/07 21:55    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				Merci bien pour les couleurs ^^"
 
 
Sinon pour mon premier problème je parle je parle mais j'oublie la question c'est malin x)
 
 
En clair (j'espère) j'aimerais savoir si pour controler l'action de passer la compétence en lancement automatique au moyen des chaines d'ordre, on peut donner à la compétence (qui à la base n'a aucune chaine d'ordre, comme flèches de glace) une chaine inutilisée par l'unité, et s'y réferer dnas le déclencheur.
 
 
Pis tant qu'à faire à quoi sert la chaine d'ordre Activer vu que la chaine Utiliser/Allumer semble remplir le même role ? _________________
  | 
			 
		  | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		  Bantas Anomalie floodiforme
  
  Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
  Médailles: 1 (En savoir plus...) 	
		
  | 
		 | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		  Magus Membre a fort taux de post
  
  Inscrit le: 13 Oct 2007 Messages: 994 Sujets: 25 Spécialité en worldedit: Codeur
  	
		
  | 
		
			
				 Posté le: 06/11/07 23:23    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				Activer et Desactiver servent pour des sorts que l'ont peut désactiver nous-même (exemple : Defendre des fantassins). _________________
 - 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 | 
		 | 
	
	 
		  | 
	
		 
		  Serial Bigouden Membre actif
  
  Inscrit le: 31 Oct 2007 Messages: 142 Sujets: 23 Spécialité en worldedit: Boarf
  	
		
  | 
		
			
				 Posté le: 09/11/07 16:50    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				Ok merci pour la précision ^^
 
 
Sinon j'ai une autre question qui n'a rien à voir avec le reste :
 
 
Je suis en train de me mettre au Jass (ça fait tout drole *-*) et je me demandais si une variable locale était toujours valable dans une fonction appelée dans la fonction principale ? _________________
  | 
			 
		  | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		  Troll-Brain Ri1kamoua
  
  Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...) 	
		
  | 
		
			
				 Posté le: 09/11/07 16:54    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				une variable locale n'est n'utilisable qu'au sein de sa fonction.
 
D'ailleurs on ne peut imbriquer des fonctions l'une dans l'autre non ? _________________
 Le violet, c'est moche.  | 
			 
		  | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		  Gevans Back
  
  Inscrit le: 21 Aoû 2007 Messages: 1930 Sujets: 85
  Médailles: 2 (En savoir plus...) 	
		
  | 
		
			
				 Posté le: 09/11/07 16:55    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				Je pense qu'il voulait demander si on pouvait faire 
 
function machin
 
{
 
local x
 
call truc(x)
 
}
 
 
Et je dirais que oui dans ce cas. _________________
 Si vous recherchez quelque chose, il y a de très grandes chances que vous trouviez la réponse ici alors jetez y un oeil. 
 
Topic indispensable | 
			 
		  | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		  Troll-Brain Ri1kamoua
  
  Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...) 	
		
  | 
		
			
				 Posté le: 09/11/07 16:59    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				c'est même certain si c'est bien ce qu'il voulait dire. _________________
 Le violet, c'est moche.  | 
			 
		  | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		  Serial Bigouden Membre actif
  
  Inscrit le: 31 Oct 2007 Messages: 142 Sujets: 23 Spécialité en worldedit: Boarf
  	
		
  | 
		
			
				 Posté le: 09/11/07 17:02    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				Beh en fait c'est presque ça ^^"
 
 
J'ai un if dans ma fonction principale, et pour vérifier la condition, je fais appel à une autre fonction mais la variable locale ne fait malheureusement pas partie des arguments de cette fonction, donc je me demandais si dans ce cas ça pouvais fonctionner (j'ai l'impression que non ><).
 
 
Si ça peut pas marcher à la limite je pourrais remplir les conditions en copiant collant le contenu de la fonction ^^" (si ça marche aussi ><) _________________
  | 
			 
		  | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		  Troll-Brain Ri1kamoua
  
  Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...) 	
		
  | 
		 | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		  Bantas Anomalie floodiforme
  
  Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
  Médailles: 1 (En savoir plus...) 	
		
  | 
		 | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		  Troll-Brain Ri1kamoua
  
  Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...) 	
		
  | 
		
			
				 Posté le: 09/11/07 17:10    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				ou passer par une globale, tout dépend de ce que tu veux faire.
 
si la fonction doit servir pour d'autres fonctions toussa toussa _________________
 Le violet, c'est moche.  | 
			 
		  | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		  Serial Bigouden Membre actif
  
  Inscrit le: 31 Oct 2007 Messages: 142 Sujets: 23 Spécialité en worldedit: Boarf
  	
		
  | 
		
			
				 Posté le: 09/11/07 17:11    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				Je copie tout le trigger, fraichement converti en texte ^^"
 
 
Pour faire simple, ma question sera : quelles variables puis-je passer en local ? 
 
 
 	  | Jass: | 	 		  function Trig_ManaDrain_Copier_Conditions takes nothing returns boolean
 
    if ( not ( GetSpellAbilityId() == 'A00Q' ) ) then
 
        return false
 
    endif
 
    return true
 
endfunction
 
 
function Trig_ManaDrain_Copier_Func004Func002Func001002003001 takes nothing returns boolean
 
    return ( GetOwningPlayer(GetFilterUnit()) == Player(11) )
 
endfunction
 
 
function Trig_ManaDrain_Copier_Func004Func002Func001002003002 takes nothing returns boolean
 
    return ( GetUnitStateSwap(UNIT_STATE_LIFE, GetFilterUnit()) >= 1.00 )
 
endfunction
 
 
function Trig_ManaDrain_Copier_Func004Func002Func001002003 takes nothing returns boolean
 
    return GetBooleanAnd( Trig_ManaDrain_Copier_Func004Func002Func001002003001(), Trig_ManaDrain_Copier_Func004Func002Func001002003002() )
 
endfunction
 
 
function Trig_ManaDrain_Copier_Func004Func002Func003Func004Func001C takes nothing returns boolean
 
    if ( not ( GetUnitStateSwap(UNIT_STATE_MANA, udg_ManaDrainCurrentTarget) > udg_ManaDrainManaDrained ) ) then
 
        return false
 
    endif
 
    if ( not ( ( GetUnitStateSwap(UNIT_STATE_MAX_MANA, udg_Manavore) - GetUnitStateSwap(UNIT_STATE_MANA, udg_Manavore) ) > udg_ManaDrainManaDrained ) ) then
 
        return false
 
    endif
 
    return true
 
endfunction
 
 
function Trig_ManaDrain_Copier_Func004Func002Func003Func004C takes nothing returns boolean
 
    if ( not ( GetLocationX(udg_ManaDrainPositionOfTarget) == GetLocationX(GetUnitLoc(udg_ManaDrainCurrentTarget)) ) ) then
 
        return false
 
    endif
 
    if ( not ( GetLocationY(udg_ManaDrainPositionOfTarget) == GetLocationY(GetUnitLoc(udg_ManaDrainCurrentTarget)) ) ) then
 
        return false
 
    endif
 
    return true
 
endfunction
 
 
function Trig_ManaDrain_Copier_Func004Func002C takes nothing returns boolean
 
    if ( not ( udg_ManavoreChanneling == true ) ) then
 
        return false
 
    endif
 
    return true
 
endfunction
 
 
function Trig_ManaDrain_Copier_Actions takes nothing returns nothing
 
    set udg_ManavoreChanneling = true
 
    call TriggerExecute( gg_trg_CanalisationOn )
 
    set udg_LoopManaDrain = 1
 
    loop
 
        exitwhen udg_LoopManaDrain > 2
 
        set udg_ManaDrainManaDrained = ( I2R(GetHeroStatBJ(bj_HEROSTAT_INT, udg_Manavore, true)) / 3.00 )
 
        if ( Trig_ManaDrain_Copier_Func004Func002C() ) then
 
            set udg_ManaDrainGroupTarget = GetUnitsInRangeOfLocMatching(( 200.00 + ( 10.00 * I2R(GetHeroStatBJ(bj_HEROSTAT_INT, udg_Manavore, true)) ) ), GetUnitLoc(udg_Manavore), Condition(function Trig_ManaDrain_Copier_Func004Func002Func001002003))
 
            set udg_ManaDrainNumberOfTarget = CountUnitsInGroup(udg_ManaDrainGroupTarget)
 
            set bj_forLoopAIndex = 1
 
            set bj_forLoopAIndexEnd = udg_ManaDrainNumberOfTarget
 
            loop
 
                exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
 
                set udg_ManaDrainCurrentTarget = GroupPickRandomUnit(udg_ManaDrainGroupTarget)
 
                set udg_ManaDrainPositionOfTarget = GetUnitLoc(udg_ManaDrainCurrentTarget)
 
                call TriggerSleepAction( ( 1.00 / I2R(udg_ManaDrainNumberOfTarget) ) )
 
                if ( Trig_ManaDrain_Copier_Func004Func002Func003Func004C() ) then
 
                    if ( Trig_ManaDrain_Copier_Func004Func002Func003Func004Func001C() ) then
 
                        call SetUnitManaBJ( udg_ManaDrainCurrentTarget, ( GetUnitStateSwap(UNIT_STATE_MANA, udg_ManaDrainCurrentTarget) - udg_ManaDrainManaDrained ) )
 
                        call SetUnitManaBJ( udg_Manavore, ( GetUnitStateSwap(UNIT_STATE_MANA, udg_Manavore) + udg_ManaDrainManaDrained ) )
 
                        set udg_ManaDrainTotalManaDrained = ( udg_ManaDrainTotalManaDrained + udg_ManaDrainManaDrained )
 
                        call CreateTextTagLocBJ( ( "-" + I2S(R2I(udg_ManaDrainManaDrained)) ), GetUnitLoc(udg_ManaDrainCurrentTarget), 10.00, 10, 0.00, 0.00, 100.00, 10.00 )
 
                        call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
 
                        call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 96.00, 90 )
 
                        call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 2.00 )
 
                        call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 4.00 )
 
                    else
 
                    endif
 
                else
 
                    call DoNothing(  )
 
                endif
 
                call GroupRemoveUnitSimple( udg_ManaDrainCurrentTarget, udg_ManaDrainGroupTarget )
 
                set bj_forLoopAIndex = bj_forLoopAIndex + 1
 
            endloop
 
            set udg_LoopManaDrain = 1
 
        else
 
            set udg_LoopManaDrain = 2
 
        endif
 
        call CreateTextTagLocBJ( ( "+" + I2S(R2I(udg_ManaDrainTotalManaDrained)) ), GetUnitLoc(udg_Manavore), 10.00, 10, 0.00, 0.00, 100.00, 10.00 )
 
        call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
 
        call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 96.00, 90 )
 
        call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 2.00 )
 
        call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 4.00 )
 
        set udg_ManaDrainTotalManaDrained = 0.00
 
        set udg_LoopManaDrain = udg_LoopManaDrain + 1
 
    endloop
 
endfunction
 
 
//===========================================================================
 
function InitTrig_ManaDrain_Copier takes nothing returns nothing
 
    set gg_trg_ManaDrain_Copier = CreateTrigger(  )
 
    call TriggerAddCondition( gg_trg_ManaDrain_Copier, Condition( function Trig_ManaDrain_Copier_Conditions ) )
 
    call TriggerAddAction( gg_trg_ManaDrain_Copier, function Trig_ManaDrain_Copier_Actions )
 
endfunction
 
 | 	 
  _________________
  | 
			 
		  | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		  Troll-Brain Ri1kamoua
  
  Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...) 	
		
  | 
		
			
				 Posté le: 09/11/07 17:14    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				déjà tu pourrais nettoyer l'usine à gaz produite par le gui.
 
 	  | Jass: | 	 		      if ( not ( GetSpellAbilityId() == 'A00Q' ) ) then
 
        return false
 
    endif
 
    return true  | 	  
 
 
donne le même résultat : 	  | Jass: | 	 		  | return GetSpellAbilityId() == 'A00Q' | 	  
 
 
au lieu du  utiliser tout simplement les fonctions avec un  entre elles
 
 
Si ton déclencheur avait un événement du genre une unité est attaqué, tu pourrais utiliser les diiférents GetXUnit() dans toutes les fonctions.
 
Sinon dans ton exemple, tu ne peux en effet utiliser directement une varaiable locale déclarée dans le fonction actions de ton trigger.
 
 
tu passes donc comme tu l'as fait par une variable globale ou comme l'a dit Bantas tu rajoutes un  dans ta fonction secondaire _________________
 Le violet, c'est moche. 
  Dernière édition par Troll-Brain le 09/11/07 17:22; édité 1 fois | 
			 
		  | 
	
	 
		| Revenir en haut | 
		 | 
	
	 
		  | 
	
		 
		 |