• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

GUI Condition problem

Status
Not open for further replies.
Hi. I have a problem with a condition.

  • Attack
    • Events
      • Time - Attack_Timer[1] expires
      • Time - Attack_Timer[2] expires
      • Time - Attack_Timer[3] expires
      • Time - Attack_Timer[4] expires
      • Time - Attack_Timer[5] expires
      • Time - Attack_Timer[6] expires
      • Time - Attack_Timer[7] expires
      • Time - Attack_Timer[8] expires
      • Time - Attack_Timer[9] expires
      • Time - Attack_Timer[10] expires
      • Time - Attack_Timer[11] expires
      • Time - Attack_Timer[12] expires
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 12, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Integer A) Equal to (Player number of (Triggering player))
            • Then - Actions
              • Set Attack_Integer[(Integer A)] = 10
I don't know what to put in the place of
  • (Integer A) Equal to (Player number of (Triggering player))
to make this trigger work for all 12 players.
So, any ideas?
If you want the whole trigger, it is downwards :3





  • Attack
    • Events
      • Time - Attack_Timer[1] expires
      • Time - Attack_Timer[2] expires
      • Time - Attack_Timer[3] expires
      • Time - Attack_Timer[4] expires
      • Time - Attack_Timer[5] expires
      • Time - Attack_Timer[6] expires
      • Time - Attack_Timer[7] expires
      • Time - Attack_Timer[8] expires
      • Time - Attack_Timer[9] expires
      • Time - Attack_Timer[10] expires
      • Time - Attack_Timer[11] expires
      • Time - Attack_Timer[12] expires
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 12, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Integer A) Equal to (Player number of (Triggering player))
            • Then - Actions
              • Set Attack_Integer[(Integer A)] = 10
              • Set Attack_Boolean[(Integer A)] = True
              • Set Attack_Range[(Integer A)] = Weapon_Range[(Integer A)]
              • Set Attack_DamageMax[(Integer A)] = Weapon_DamageMax[(Integer A)]
              • Set Attack_DamageMin[(Integer A)] = Weapon_DamageMin[(Integer A)]
              • Set Attack_Damage[(Integer A)] = (Random integer number between Attack_DamageMin[(Integer A)] and Attack_DamageMax[(Integer A)])
              • Set Attack_Point[(Integer A)] = (Position of Character[(Integer A)])
              • Set Attack_Point[(Integer A)] = (Attack_Point[(Integer A)] offset by Attack_Range[(Integer A)] towards (Facing of Character[(Integer A)]) degrees)
              • Set Attack_Group[(Integer A)] = (Units within Attack_Range[(Integer A)] of Attack_Point[(Integer A)] matching ((Matching unit) Not equal to Character[(Integer A)]))
              • Unit Group - Pick every unit in Attack_Group[(Integer A)] and do (Actions)
                • Loop - Actions
                  • Set Attack_Target[(Integer A)] = (Picked unit)
                  • Set FellBoolean[(Player number of (Owner of Attack_Target[(Integer A)]))] = True
                  • Set Attack_Damage[(Integer A)] = (Random integer number between Attack_DamageMin[(Integer A)] and Attack_DamageMax[(Integer A)])
                  • Set Attack_Damage[(Integer A)] = (Attack_Damage[(Integer A)] - (Custom value of Attack_Target[(Integer A)]))
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Attack_Damage[(Integer A)] Less than 0
                    • Then - Actions
                      • Set Attack_Damage[(Integer A)] = 0
                    • Else - Actions
                  • Set Attack_Point[((Integer A) + 24)] = (Position of Attack_Target[(Integer A)])
                  • Animation - Play Attack_Target[(Integer A)]'s stand hit animation
                  • Unit - Cause Character[(Integer A)] to damage Attack_Target[(Integer A)], dealing (Real(Attack_Damage[(Integer A)])) damage of attack type Chaos and damage type Normal
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Attack_Damage[(Integer A)] Equal to 0
                    • Then - Actions
                      • Floating Text - Create floating text that reads Blocked! above Attack_Target[(Integer A)] with Z offset 0.00, using font size 10.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
                      • Set Attack_Text[(Integer A)] = (Last created floating text)
                    • Else - Actions
                      • Floating Text - Create floating text that reads (String(Attack_Damage[(Integer A)])) above Attack_Target[(Integer A)] with Z offset 0.00, using font size 10.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
                      • Set Attack_Text[(Integer A)] = (Last created floating text)
                  • Set Attack_Text[(Integer A)] = (Last created floating text)
                  • Floating Text - Change Attack_Text[(Integer A)]: Disable permanence
                  • Floating Text - Change the fading age of Attack_Text[(Integer A)] to 0.01 seconds
                  • Floating Text - Change the lifespan of Attack_Text[(Integer A)] to 1.00 seconds
              • Custom script: call RemoveLocation(udg_Attack_Point[bj_forLoopAIndex])
              • Custom script: call RemoveLocation(udg_Attack_Point[bj_forLoopAIndex - 12])
              • Custom script: call RemoveLocation(udg_Attack_Point[bj_forLoopAIndex - 24])
            • Else - Actions
 
Level 3
Joined
May 15, 2012
Messages
61
Yeah, this is a problem i recently running in cause of the missing timer comparison -.-

To your problem: For this trigger, there is no triggering player, because the timers do not belong to anyone. The game "owns" them.

Its not pretty, but you could create 12 (!) single triggers like this (every trigger with another number):

  • Events
    • Time - Timer[1] expires
  • Actions
    • Set temp_variable to 1
    • Trigger - Run trigger YourTrigger
Then you could call your trigger with the temp_variable containing the player number you want to launch it for.

As i said, it's not very pretty, but i never found another solution for this.
 
Level 8
Joined
Sep 18, 2011
Messages
195
If you can use custom scripts use this:
( just as how people use GetLocalPlayer() )

  • Actions
    • For each (Integer A) from 1 to 12, do (Actions)
      • Loop - Actions
        • Custom script: if udg_Attack_Timer[bj_forLoopAIndex] == GetExpiredTimer() then
        • Custom script: set udg_Temp_Index = bj_forLoopAIndex
        • Custom script: endif
    • Player - Add 1000 to (Player(Temp_Index)) Current gold
I will test it right now
edit: DOESN'T WORK
- Timer arrays don't work

The solution is to create a real variable and subtract from it, with a loop trigger. like what Vladadamm said
 
Status
Not open for further replies.
Top