Inscrit le: 12 Nov 2011 Messages: 1062 Sujets: 107 Spécialité en worldedit: Inactif(Enfin presque) Médailles: 1 (En savoir plus...)
Posté le: 07/11/13 17:31 Sujet du message: array + struct
C'est incompatible ? Parce que il me demande de mettre un [size] pour les arrays:
Secret:
Jass:
private struct PD
=> unit array o //The little orbs
unit b //The big one
unit c //The caster
=> lightning array l //The lightnings
=> real array a //The angles
real r //The rotation
real s //The speed
real f //The falling speed
real t //The timer
integer m //The amount of little orbs, lightnings, angles
real g //The grow
real d //The distance
real AoE //The AoE
real D //The damage
endstruct
Et du coup ben, je me demande comment on fait, est-ce que je met 0 ? Est-ce qu'il faut utiliser une autre méthode ? Est-ce qu'il faut que je mette un truc comme [VariableTotalementInutileQuisIncrementAChaqueInstance] ? _________________
Inscrit le: 12 Nov 2011 Messages: 1062 Sujets: 107 Spécialité en worldedit: Inactif(Enfin presque) Médailles: 1 (En savoir plus...)
Posté le: 07/11/13 17:44 Sujet du message:
Une taille fixe ou maximale ? Parce que si c'est fixe, ça va me poser problème(puisque ça dépend du nombre d'instances simultanées), si c'est max, j'ai juste à mettre 8191 (ou plus) parce qu'il y a peu de chance que la valeur soit atteinte.
Edit: Oups, désolé Tir, j'ai pas vu ton post(enfin si, mais après avoir posté celui-là). _________________
Inscrit le: 12 Nov 2011 Messages: 1062 Sujets: 107 Spécialité en worldedit: Inactif(Enfin presque) Médailles: 1 (En savoir plus...)
Posté le: 07/11/13 19:50 Sujet du message:
Voilà, j'ai essayé et comment dire, ce n'est pas comme si il ne se passait rien, c'est plus comme si les valeurs à array "refusaient" d'avoir autre chose que 0.00 même lorsqu'on leur assigne. (J'ai testé avec des BJDebugMsg, instance.a vaut 0.00 en permanence.)
La partie importante:
Secret:
Jass:
[...]
private struct PD
unit array o[16] //The little orbs (must be at least equal to the maximal amount of orbs, BaseAmount + LevelAmount * MaxLevel
unit b //The big one
unit c //The caster
lightning array l[16] //The lightnings (same as the orbs
real array a[16] //The angles same as the orbs
real r //The rotation
real s //The speed
real f //The falling speed
real t //The timer
real h //The maxheight
integer m //The amount of little orbs, lightnings, angles
real g //The grow
real d //The distance
real AoE //The AoE
real D //The damage
player p //The owner
endstruct
private function Loop takes nothing returns nothing
endfunction
private function Cast takes nothing returns boolean
local PD instance = PD.create()
local real x1 = GetUnitX( GetTriggerUnit() )
local real x2 = GetSpellTargetX()
local real y1 = GetUnitY( GetTriggerUnit() )
local real y2 = GetSpellTargetY()
local integer level = GetUnitAbilityLevel( GetTriggerUnit(), Ability() )
local integer loopA = 0
local real a
local real b
set Amount = Amount + 1
set instance.p = GetOwningPlayer( GetTriggerUnit() )
set instance.c = GetTriggerUnit()
set instance.s = Speed( level )
set instance.D = Damage( level )
set instance.AoE = AoE( level )
set instance.g = Grow( level )
set instance.m = Orbs( level )
set instance.t = EffectTimer( )
set instance.f = Falling( level )
set instance.r = Rotation( level )
set instance.d = Distance( level )
set instance.h = MaxHeight( level )
set instance.b = CreateUnit( instance.p, BigOrbType(), x2, y2, 0.00 )
call SetUnitFlyHeight( instance.b, instance.h, 0.00 )
set a = (360.00 / I2R( instance.m ) )
set b = a
loop
exitwhen loopA > instance.m
set instance.a[loopA] = a
set x1 = ( x2 + instance.d ) * a
set y1 = ( y2 + instance.d ) * a
call CreateUnit( instance.p, OrbsType(), x1, y1, 0.00 )
set instance.o[loopA] = GetLastCreatedUnit()
set a = a + b
if a > 360.00 then
set a = a - 360.00
endif
set loopA = loopA + 1
endloop
return true
endfunction
//Initializer
private function InitPD takes nothing returns nothing
local trigger cast = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( cast, Condition( function Cast ) )
endfunction
/*****************************************************
********HOW MUCH DAMAGE THE SPELL WILL DEAL:**********
*****************************************************/
private function Damage takes integer level returns real
return 250.00 + ( 100.00 * I2R( level ) )
endfunction
/*****************************************************
***********HOW BIG THE AREA OF EFFECT IS:*************
*****************************************************/
private function AoE takes integer level returns real
return 300.00 + ( 100.00 * I2R( level ) )
endfunction
/*****************************************************
**************HOW FAST THE ORBS ROTATE:***************
*****************************************************/
private function Rotation takes integer level returns real
return 1.00 + ( 1.00 * I2R( level ) )
endfunction
/*****************************************************
*************HOW HIGH THE BIG ORB IS:*****************
*****************************************************/
private function MaxHeight takes integer level returns real
return 200.00 + ( 200.00 * I2R( level ) )
endfunction
/*****************************************************
**********HOW FAR FROM THE BO THE SO ARE:*************
*****************************************************/
private function Distance takes integer level returns real
return 500.00 + ( 200.00 * I2R( level ) )
endfunction
/*****************************************************
**************HOW FAST THE SO MOVES:******************
*****************************************************/
private function Speed takes integer level returns real
return 5.00 + ( 5.00 * I2R( level ) )
endfunction
/*****************************************************
*************HOW FAST THE BIG ORB GROWS:**************
*****************************************************/
private function Grow takes integer level returns real
return 1.00 + ( 0.50 * I2R( level ) )
endfunction
/*****************************************************
*************HOW FAST THE BIG ORB FALLS:**************
*****************************************************/
private function Falling takes integer level returns real
return 10.00 + ( 5.00 * I2R( level ) )
endfunction
/*****************************************************
***************HOW MUCH SO THERE IS:******************
*****************************************************/
private function Orbs takes integer level returns integer
return 4 + ( 4 * level )
endfunction
/*****************************************************
********HOW OFTEN THE GROW EFFECT APPEARS:************
*****************************************************/
private function EffectTimer takes nothing returns real
return 0.09
endfunction
/*****************************************************
************HOW THE NOVA EFFECT LOOKS:****************
*****************************************************/
private function EndEffect takes nothing returns string
return "Model\\EarthNova.mdx"
endfunction
/*****************************************************
************HOW THE GROW EFFECT LOOKS:****************
*****************************************************/
private function GrowEffect takes nothing returns string
return "Abilities\\Spells\\NightElf\\ManaBurn\\ManaBurnTarget.mdl"
endfunction
/*****************************************************
*********WHERE THE GROW EFFECT IS ATTACHED:***********
*****************************************************/
private function GrowAttachement takes nothing returns string
return "chest"
endfunction
/*****************************************************
***********HOW THE DAMAGE EFFECT LOOKS:***************
*****************************************************/
private function DamageEffect takes nothing returns string
return "Abilities\\Spells\\Other\\AcidBomb\\BottleMissile.mdl"
endfunction
/*****************************************************
*********WHERE THE DAMAGE EFFECT IS ATTACHED:*********
*****************************************************/
private function DamageAttachement takes nothing returns string
return "overhead"
endfunction
/*****************************************************
*************HOW THE LIGHTNINGS LOOKS:****************
*****************************************************/
private function LightningType takes nothing returns string
return "DRAL"
endfunction
/*****************************************************
*************THE SMALL ORBS RAWCODE:******************
*****************************************************/
private function OrbsType takes nothing returns integer
return 'hfoo'
endfunction
/*****************************************************
***************THE BIG ORB RAWCODE:*******************
*****************************************************/
private function BigOrbType takes nothing returns integer
return 'h002'
endfunction
/*****************************************************
***********HOW OFTEN THE TIMER WILL "TICK":***********
*****************************************************/
private function Interval takes nothing returns real
return 0.03
endfunction
//The spell
private struct PD
unit array o[16] //The little orbs (must be at least equal to the maximal amount of orbs, BaseAmount + LevelAmount * MaxLevel
unit b //The big one
unit c //The caster
lightning array l[16] //The lightnings (same as the orbs
real array a[16] //The angles same as the orbs
real r //The rotation
real s //The speed
real f //The falling speed
real t //The timer
real h //The maxheight
integer m //The amount of little orbs, lightnings, angles
real g //The grow
real d //The distance
real AoE //The AoE
real D //The damage
player p //The owner
endstruct
private function Loop takes nothing returns nothing
endfunction
private function Cast takes nothing returns boolean
local PD instance = PD.create()
local real x1 = GetUnitX( GetTriggerUnit() )
local real x2 = GetSpellTargetX()
local real y1 = GetUnitY( GetTriggerUnit() )
local real y2 = GetSpellTargetY()
local integer level = GetUnitAbilityLevel( GetTriggerUnit(), Ability() )
local integer loopA = 0
local real a
local real b
set Amount = Amount + 1
set instance.p = GetOwningPlayer( GetTriggerUnit() )
set instance.c = GetTriggerUnit()
set instance.s = Speed( level )
set instance.D = Damage( level )
set instance.AoE = AoE( level )
set instance.g = Grow( level )
set instance.m = Orbs( level )
set instance.t = EffectTimer( )
set instance.f = Falling( level )
set instance.r = Rotation( level )
set instance.d = Distance( level )
set instance.h = MaxHeight( level )
set instance.b = CreateUnit( instance.p, BigOrbType(), x2, y2, 0.00 )
call SetUnitFlyHeight( instance.b, instance.h, 0.00 )
set a = (360.00 / I2R( instance.m ) )
set b = a
loop
exitwhen loopA > instance.m
set instance.a[loopA] = a
set x1 = ( x2 + instance.d ) * a
set y1 = ( y2 + instance.d ) * a
call CreateUnit( instance.p, OrbsType(), x1, y1, 0.00 )
set instance.o[loopA] = GetLastCreatedUnit()
set a = a + b
if a > 360.00 then
set a = a - 360.00
endif
set loopA = loopA + 1
endloop
return true
endfunction
//Initializer
private function InitPD takes nothing returns nothing
local trigger cast = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( cast, Condition( function Cast ) )
endfunction
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