Tyman2007
Ya Rly >.
- Reaction score
- 74
Well.. I attempted to make a system to help out someone, but unfortunately I think I missed the nail a bit far.. The system doesn't work at all.
What this system is supposed to do is count how much damage is done through a set amount of time. E.G. Unit will deal around 400 damage in 8 seconds, and in 1 second, the damage is reduced because part of that damage was 9 seconds ago, if that makes any sense.
No damage is counted, and I'm not too great with vJass... I actually fail quite hard at it This uses the GUI friendly damage detection system.
Trigger that sets which second we are currently at:
Well that's the GUI trigger that checks which second we're at as well as setting everyone's custom values..
and there's the other trigger which counts the damage, adds it up, then sends it through a global. This system is pretty ugly I know, but I'm still starting (even though I've been at vJass for a year =/ )
What this system is supposed to do is count how much damage is done through a set amount of time. E.G. Unit will deal around 400 damage in 8 seconds, and in 1 second, the damage is reduced because part of that damage was 9 seconds ago, if that makes any sense.
No damage is counted, and I'm not too great with vJass... I actually fail quite hard at it This uses the GUI friendly damage detection system.
Trigger that sets which second we are currently at:
Trigger:
- Set Var
- Events
- Time - Every 1.00 seconds of game time
- Conditions
- Actions
- Set g = (Units in (Playable map area))
- Unit Group - Pick every unit in g and do (Actions)
- Loop - Actions
- Set CV2 = (Custom value of (Picked unit))
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- CV2 Equal to (==) 0
- Then - Actions
- Set index = (index + 1)
- Unit - Set the custom value of (Picked unit) to index
- Else - Actions
- If - Conditions
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- Integer[CV2] Equal to (==) (2 + ((Level of Animate Dead for (Picked unit)) x 2))
- Then - Actions
- Set Integer[CV2] = 1
- Set b = True
- Else - Actions
- Set Integer[CV2] = (Integer[CV2] + 1)
- If - Conditions
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- rfd Equal to (==) True
- Then - Actions
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- sw Equal to (==) (2 + ((Level of Animate Dead for (Picked unit)) x 2))
- Then - Actions
- Else - Actions
- Set sw = (sw + 1)
- If - Conditions
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Else - Actions
- If - Conditions
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- b Equal to (==) True
- Then - Actions
- Set rfd = True
- Else - Actions
- If - Conditions
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Set CV2 = (Custom value of (Picked unit))
- Loop - Actions
- Custom script: call DestroyGroup(udg_g)
- Events
Well that's the GUI trigger that checks which second we're at as well as setting everyone's custom values..
JASS:
scope DT initializer Init
private struct Data
real array Dmg[8]
endstruct
private function Actions takes nothing returns nothing
local Data d = Data.create()
local integer CV = GetUnitUserData(udg_GDD_DamageSource)
local integer index = 0
local integer mindex = GetUnitAbilityLevel(udg_GDD_DamageSource, 039;AUan039;)
local integer sw = udg_sw
local integer sw2 = udg_Integer[CV]
set d.Dmg[mindex] = d.Dmg[mindex] + udg_GDD_Damage
set udg_Real4[mindex] = 0
set sw2 = sw2 - 1
if sw > 0 then
loop
exitwhen sw == 0
set sw = sw - 1
set sw2 = sw2 - 1
if sw2 < 1 then
set sw2 = 8
endif
set d.Dmg[sw2] = 0
endloop
endif
loop
exitwhen index > mindex
set index = index + 1
set udg_Real4[mindex] = udg_Real4[mindex] + d.Dmg[index]
endloop
endfunction
//===========================================================================
private function Init takes nothing returns nothing
local trigger trig = CreateTrigger()
call TriggerRegisterVariableEvent( trig, "udg_GDD_Event", EQUAL, 0 )
call TriggerAddAction( trig, function Actions )
endfunction
endscope
and there's the other trigger which counts the damage, adds it up, then sends it through a global. This system is pretty ugly I know, but I'm still starting (even though I've been at vJass for a year =/ )