| 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: 03/12/07 18:55    Sujet du message: Problème avec une compétence objet | 
				     | 
			 
			 
				
  | 
			 
			
				Bon ben vlà qu'les compétences objet font des siennes =P
 
 
Je code un cri de bataille pour l'un de mes héros, qui est sensé augmenter la force et l'agilité des héros alliés pour 20s, le bonus dépendant de l'intelligence.
 
 
J'ai donc créé une compétence objet en me basant sur la compétence objet "objet bonus caractéristiques du héros", et je lui ai mis une dizaine de lvl, de quoi prendre en compte tout les cas possibles.
 
 
Ensuite viens ce trigger :
 
 
 	  | Jass: | 	 		  function BattleCry_Conditions takes nothing returns boolean
 
    return GetSpellAbilityId() == 'A015'
 
endfunction
 
 
function BattleCry_Actions takes nothing returns nothing
 
    local group g = CreateGroup()
 
    local group gt = CreateGroup()
 
    local unit u = null
 
    local location l = GetUnitLoc(udg_Ravageur)
 
    local integer lvl = R2I(GetHeroInt(udg_Ravageur, true)/5)
 
    
 
    if lvl == 0 then
 
        set lvl = 1
 
    endif
 
    
 
    call GroupEnumUnitsInRangeOfLoc(g, l, 500, null)
 
    loop
 
        set u = FirstOfGroup(g)
 
    exitwhen u == null
 
        if (IsUnitAlly(u, GetOwningPlayer(udg_Ravageur))) and (GetUnitState(u, UNIT_STATE_LIFE) > 0) then
 
            call UnitAddAbility(u, 'A010')
 
            call SetUnitAbilityLevel(u, 'A010', lvl)
 
            call GroupAddUnit(gt, u)
 
        endif
 
        call GroupRemoveUnit(g, u)
 
    endloop
 
       
 
    
 
    call DestroyGroup(g)
 
    set g = null
 
    set lvl = 0
 
        
 
    call TriggerSleepAction(20)
 
    
 
    loop
 
        set u = FirstOfGroup(gt)
 
    exitwhen u == null
 
        call UnitRemoveAbility(u, 'A010')
 
        call GroupRemoveUnit(gt, u)
 
    endloop
 
    
 
    
 
    call DestroyGroup(gt)
 
    set gt = null
 
endfunction
 
 
//===========================================================================
 
function InitTrig_BattleCry takes nothing returns nothing
 
    set gg_trg_BattleCry = CreateTrigger(  )
 
    call TriggerRegisterAnyUnitEventBJ( gg_trg_BattleCry, EVENT_PLAYER_UNIT_SPELL_EFFECT )
 
    call TriggerAddCondition( gg_trg_BattleCry, Condition( function BattleCry_Conditions ) )
 
    call TriggerAddAction( gg_trg_BattleCry, function BattleCry_Actions )
 
endfunction | 	  
 
 
Le problème : le niveau de la compétence n'est jamais augmenté, il reste toujours à 1 =/
 
 
Jme suis dit que c'était ptet le cas de toutes les compétences objet, alors je l'ai transformée en compétence unité : même résultat. 
 
Ptet que c'est du à une erreur de codage qui m'aurait échappée, je sais pas du tout   si quelqu'un trouve le problème ça m'arrangerai ^^"
 
 
Et sinon :
 
 	  | Jass: | 	 		  
 
call DestroyGroup(gt)
 
    set gt = null | 	  
 
 
C'est inutile ? J'ai testé l'inverse ça fait un joli message d'erreur rouge (ça se conçoit ^^") _________________
  | 
			 
		  | 
	
	 
		| 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: 03/12/07 19:08    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				affiche le level:
 
 	  | Jass: | 	 		  | call BJDebugMsg ( I2S ( lvl ) ) | 	  
 
 
Tu es sûr d'avoir sépcifier le nombre de niveaux dans l'éditeur d'objet ?
 
 
sinon oui le set null est utile pour toutes les variables de type handle (et les sous classes de ce type ), sinon ca leak.
 
 
D'ailleurs je viens d'appendre un autre truc incroyable.
 
ca leak quand on met null en paramètre pour un boolexpr >.<
 
 
http://wc3campaigns.net/showthread.php?t=98114 _________________
 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: 03/12/07 19:38    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				J'ai rajouté ta ligne de code, et ça m'affiche bien 2 (le héros a 10 d'intell), sinon oui j'ai bien spécifié les 10 niveaux de la compétence =/
 
 
Et pour le leak des null tant pis jcompte pas me mettre au vjass avant les vac de noel x)
 
 
Mmh par contre j'ai une question : ya un champ pour la compétence que j'utilise => Masquer bouton true/false, elle est par défaut sur false donc je dois mal interpréter sa fonction (jpensais à montrer/masquer l'icone mais sur false on la voit pas donc bon --") _________________
  | 
			 
		  | 
	
	 
		| 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 | 
		 | 
	
	 
		  | 
	
		 
		  Serial Bigouden Membre actif
  
  Inscrit le: 31 Oct 2007 Messages: 142 Sujets: 23 Spécialité en worldedit: Boarf
  	
		
  | 
		 | 
	
	 
		| 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: 03/12/07 19:53    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				oui bien sûr si tu regardes le code tu vois que c'est cela.
 
 
T'as pas l'id plutôt du spell (Ctrl + D) ? _________________
 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: 03/12/07 19:59    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				Alx4 ^^ _________________
  | 
			 
		  | 
	
	 
		| 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: 03/12/07 20:03    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				ton option sert à ne pas voir la croix jaune sur l'unité.
 
sinon étant donné que les niveaux n'étaient pas prévu peut être que ca bug, et peut être que les effets se stockent, au lieu de set le level rajoute x fois la compétence pour voir _________________
 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: 03/12/07 21:24    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				J'ai remplacé un morceau de la fonction par ça :
 
 
 	  | Jass: | 	 		  call GroupEnumUnitsInRangeOfLoc(g, l, 500, null)
 
    loop
 
        set n = lvl
 
        set u = FirstOfGroup(g)
 
    exitwhen u == null
 
        if (IsUnitAlly(u, GetOwningPlayer(udg_Ravager))) and (GetUnitState(u, UNIT_STATE_LIFE) > 0) then
 
            call GroupAddUnit(gt, u)
 
            loop
 
                call UnitAddAbility(u, 'A010')
 
                set n = n - 1
 
            exitwhen n == 0
 
            endloop
 
        endif
 
        call GroupRemoveUnit(g, u)
 
    endloop | 	  
 
 
Mais ça marche toujours pas :/
 
Soit jme suis planté dans la fonction, soit ya un bug zarb :s _________________
  | 
			 
		  | 
	
	 
		| 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 | 
		 | 
	
	 
		  | 
	
		 
		  Serial Bigouden Membre actif
  
  Inscrit le: 31 Oct 2007 Messages: 142 Sujets: 23 Spécialité en worldedit: Boarf
  	
		
  | 
		
			
				 Posté le: 03/12/07 21:42    Sujet du message:  | 
				     | 
			 
			 
				
  | 
			 
			
				Mmh jviens de voir qu'en fait c'est exactement la même compétence que "bonus de caractéristiques" 'Aamk', jvais test en masquant le bouton ^^
 
 
EDIT: hé ho personne n'est parfait j'ai déjà vérifié que c'était pas A1x4 c'est suffisant xD
 
 
EDIT²: bon beh ça marche impecc ^^
 
Encore un bug qui échappe à tes filets ? >< _________________
  | 
			 
		  | 
	
	 
		| 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 | 
		 | 
	
	 
		  | 
	
		 
		 |