• 🏆 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!

Event Missle System v1.0

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Description :
Making missle based spells will be now easier with Event Missle System. It gives you a free hand on custom unit missle manipulation allowing you to check it step by step.


  • Missle Run
    • Events
    • Conditions
    • Actions
      • Set EMS_Recycle[EMS_Index2] = False
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • EMS_MissleCollusion[EMS_Index2] Equal to False
        • Then - Actions
          • Unit - Turn collision for EMS_Missle[EMS_Index2] Off
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • EMS_Index2 Equal to 1
        • Then - Actions
          • Trigger - Turn on Missle Periodic <gen>
        • Else - Actions
  • Missle Periodic
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer EMS_Index1) from 1 to EMS_Index2, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • EMS_Recycle[EMS_Index1] Equal to False
              • (EMS_Missle[EMS_Index1] is alive) Equal to True
            • Then - Actions
              • Set EMS_LeakPoint1 = (Position of EMS_Missle[EMS_Index1])
              • Set EMS_LeakPoint2 = (EMS_LeakPoint1 offset by EMS_Speed[EMS_Index1] towards (Angle from EMS_LeakPoint1 to EMS_TargetPoint[EMS_Index1]) degrees)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • EMS_AutoFacing[EMS_Index1] Equal to False
                • Then - Actions
                  • Unit - Move EMS_Missle[EMS_Index1] instantly to EMS_LeakPoint2, facing (Facing of EMS_Missle[EMS_Index1]) degrees
                • Else - Actions
                  • Unit - Move EMS_Missle[EMS_Index1] instantly to EMS_LeakPoint2, facing (Angle from EMS_LeakPoint1 to EMS_TargetPoint[EMS_Index1]) degrees
              • Set EMS_EVENT_Index = EMS_Index1
              • Set EMS_EVENT = 1.00
              • Set EMS_EVENT = 0.00
              • Custom script: call RemoveLocation(udg_EMS_LeakPoint1)
              • Custom script: call RemoveLocation(udg_EMS_LeakPoint2)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • EMS_MissleCollusion[EMS_Index1] Equal to False
                • Then - Actions
                  • Unit - Turn collision for EMS_Missle[EMS_Index1] On
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • EMS_MissleRemove[EMS_Index1] Equal to True
                • Then - Actions
                  • Unit - Remove EMS_Missle[EMS_Index1] from the game
                • Else - Actions
              • Set EMS_ID[EMS_Index1] = EMS_ID[EMS_Index2]
              • Set EMS_AbilityCast[EMS_Index1] = EMS_AbilityCast[EMS_Index2]
              • Set EMS_Caster[EMS_Index1] = EMS_Caster[EMS_Index2]
              • Set EMS_Missle[EMS_Index1] = EMS_Missle[EMS_Index2]
              • Set EMS_MissleCollusion[EMS_Index1] = EMS_MissleCollusion[EMS_Index2]
              • Set EMS_MissleRemove[EMS_Index1] = EMS_MissleRemove[EMS_Index2]
              • Set EMS_Speed[EMS_Index1] = EMS_Speed[EMS_Index2]
              • Set EMS_TargetUnit[EMS_Index1] = EMS_TargetUnit[EMS_Index2]
              • Set EMS_TargetPoint[EMS_Index1] = EMS_TargetPoint[EMS_Index2]
              • Set EMS_AutoFacing[EMS_Index1] = EMS_AutoFacing[EMS_Index2]
              • Set EMS_Recycle[EMS_Index1] = EMS_Recycle[EMS_Index2]
              • Set EMS_Index1 = (EMS_Index1 - 1)
              • Set EMS_Index2 = (EMS_Index2 - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • EMS_Index2 Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
Note:
*This system is MUI ( multi unit instanceable)

Visit xnoobsmokex.webs.com for other systems

Keywords:
Event Missle System noob_smoke king_drift_alex xnoob_smokex
Contents

Events Missle System v1.0 (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 00:51, 23rd Aug 2012 Magtheridon96: This system relies on the user handling the indexing by himself. It shouldn't do that, no matter how simple the indexing is. It should do the indexing...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

00:51, 23rd Aug 2012
Magtheridon96: This system relies on the user handling the indexing by himself.
It shouldn't do that, no matter how simple the indexing is.
It should do the indexing on it's own in the Missile Run trigger.

The user would just set some system non-array variables like this:
  • Set MissileSpeed = 3
  • Set MissileTarget = foo
  • Set MissileSource = bar
  • Set MissileBlaBla = foo bar
  • Trigger - Execute Missile Run <gen> (ignoring conditions)
And then the MissileRun trigger would get a new index by increasing the size variable, and then set all the data into the arrays, and finally start the periodic missile movement trigger if needed.
 
Level 25
Joined
Jun 5, 2008
Messages
2,572
The keywords are odd...

Other than that you should probably implement more stuff into this, i don't want to show off or anything, but you could take a look at my missile system if you would like to implement X/Y/Z arcs into this:
link

Other than that i asume this uses dynamic recycling, if not you can check the one hanky uses or again look at the code of my system.

This could be further optimized by using coordinates and not locations (take a look at my periodic trigger, again :p).

Other than that i guess it's okay, but you shouldn't use a missile system to move the caster, just saying.
Sorry for bringing up my resource in your resource thread, but it's easier than me writing a ton of text to explain what i mean.
 
Top