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 |
|
 |
|