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...)
Posté le: 21/03/10 12:48 Sujet du message:
Apocalypse a écrit:
J'utilise ces variables pour le système d'orbites.
Hein ? Je ne les vois pas dans cette library.
Citation:
La solution la plus rapide serait d'utiliser AutoIndex, je suis en train de me dire. Je me trompe?
Je ne sais pas, faut que je regarde le code, mais à priori je dirais nan car c'est un type d'unité et non pas une unité particulière que l'on doit traiter, nan ? _________________
J'ai tenté une nouvelle version en textmacro, avec un hashtable pour pouvoir récupérer les variables stockées par la textmacro (or et bois).
Sauf que ça ne fonctionne pas ingame: les BJDebug renvoient des valeurs d'unités pour l'ID du caster incroyablement grandes, et , par suite, or et bois = 0. _________________
private function WaitForEffect takes nothing returns nothing
local timer t = GetExpiredTimer()
local str dat = GetTimerData(t)
call DestroyEffect(dat.e)
call ReleaseTimer(t)
call dat.destroy()
endfunction
private function RecycleBuilding takes nothing returns nothing
local integer casterId = GetUnitTypeId(SpellEvent.CastingUnit)
local integer randomGold = R2I(GetRandomReal(0.25,1.00)*LoadInteger(HashT,casterId,GOLD_INDEX))
local integer randomLumber = R2I(GetRandomReal(0.25,1.00)*LoadInteger(HashT,casterId,LUMBER_INDEX))
local timer t = NewTimer()
local str dat = str.create()
call BJDebugMsg("id="+I2S(casterId))
call BJDebugMsg("gold="+I2S(LoadInteger(HashT,casterId,GOLD_INDEX)))
call BJDebugMsg("lumber="+I2S(LoadInteger(HashT,casterId,LUMBER_INDEX)))
private function RecycleUnit takes nothing returns nothing
local integer casterId = GetUnitTypeId(SpellEvent.TargetUnit)
local integer randomGold = R2I(GetRandomReal(0.25,1.00)*LoadInteger(HashT,casterId,GOLD_INDEX))
local integer randomLumber = R2I(GetRandomReal(0.25,1.00)*LoadInteger(HashT,casterId,LUMBER_INDEX))
local timer t = NewTimer()
local str dat = str.create()
call BJDebugMsg("id="+I2S(casterId))
call BJDebugMsg("gold="+I2S(LoadInteger(HashT,casterId,GOLD_INDEX)))
call BJDebugMsg("lumber="+I2S(LoadInteger(HashT,casterId,LUMBER_INDEX)))
private function init takes nothing returns nothing
call RegisterSpellCastResponse(RECYCLE_BUILDING,RecycleBuilding)
call RegisterSpellCastResponse(RECYCLE_UNIT,RecycleUnit)
set HashT = InitHashtable()
call SetCostVariables()
endfunction
endlibrary
Mais sinon utiliser une hashtable rien que pour cela semble to much.
Tu peux simplement utiliser 2 Table, une pour le gold et une pour le lumber avec pour référence l'id de l'unité
Jass:
private Table GoldTable
private Table LumberTable
set GoldTable = Table.create()
set LumberTable = Table.create()
//! textmacro t__RecycleSystem_Init takes UNIT_TYPE , UNIT_GOLD, UNIT_LUMBER
set GoldTable[$UNIT_TYPE$] = $UNIT_GOLD$
set LumberTable[$UNIT_TYPE$] = $UNIT_LUMBER$
//! endtextmacro
Toutes les heures sont au format GMT + 1 Heure Aller à la page Précédente1, 2
Page 2 sur 2 La question posée dans ce topic a été résolue !
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