Failure of a System

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 :p 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
            • 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)
            • 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)
              • Else - Actions
            • 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
      • Custom script: call DestroyGroup(udg_g)


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, 'AUan')
    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 =/ )
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top