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

Missile System v1.0

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: gorillabull
[TD] Missile System [/TD]

[TD] SAMPLE IMAGES [/TD]

Sample One

Sample Two

216436-albums5956-picture63282.jpg
216436-albums5956-picture63283.jpg


[TD] CHANGELOGS: [/TD]
[TD]v1.0 - Initial Release
[/TD]

[TD] Credits: [/TD]
[TD]- Hanky
[/TD]

MS Start

MS Loop

  • MS Start
    • Events
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • MS_Index_Size Equal to 0
        • Then - Actions
          • Trigger - Turn on MS Loop <gen>
        • Else - Actions
      • Set MS_Index_Size = (MS_Index_Size + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • MS_Index_Size Greater than MS_Max_Index
        • Then - Actions
          • Set MS_Index[MS_Index_Size] = MS_Index_Size
          • Set MS_Max_Index = MS_Index_Size
        • Else - Actions
      • Set MS_Current_Index = MS_Index[MS_Index_Size]
      • Set MS_Unit[MS_Current_Index] = MSC_Unit
      • Set MS_Player[MS_Current_Index] = MSC_Player
      • Set MS_Angle[MS_Current_Index] = MSC_Angle
      • Set MS_Distance[MS_Current_Index] = MSC_Distance
      • Set MS_Max_Distance[MS_Current_Index] = MSC_Max_Distance
      • Set MS_Max_Height[MS_Current_Index] = MSC_Max_Height
      • Set MS_Move_Speed[MS_Current_Index] = MSC_Move_Speed
      • Set MS_Damage[MS_Current_Index] = MSC_Damage
      • Set MS_AoE[MS_Current_Index] = MSC_AoE
      • Set MS_Collision[MS_Current_Index] = MSC_Collision
      • Set MS_Start_Height[MS_Current_Index] = MSC_Start_Height
      • Set MS_Attack_Type[MS_Current_Index] = MSC_Attack_Type
      • Set MS_Damage_Type[MS_Current_Index] = MSC_Damage_Type
      • Custom script: set udg_Temp_Real[1] = GetLocationZ(udg_Temp_Point2)
      • Custom script: set udg_Temp_Real[2] = GetLocationZ(udg_Temp_Point3)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • MSC_Strike_Ground Equal to True
        • Then - Actions
          • Set MS_Fly_Speed[MS_Current_Index] = (((Temp_Real[1] - Temp_Real[2]) - MS_Start_Height[MS_Current_Index]) / (((MS_Distance[MS_Current_Index] x 0.03) / MS_Move_Speed[MS_Current_Index]) / 0.03))
        • Else - Actions
          • Set MS_Fly_Speed[MS_Current_Index] = ((Temp_Real[1] - Temp_Real[2]) / (((MS_Distance[MS_Current_Index] x 0.03) / MS_Move_Speed[MS_Current_Index]) / 0.03))
      • Set MS_Start_Location_Z[MS_Current_Index] = Temp_Real[2]
      • Set MS_Current_Height[MS_Current_Index] = MS_Start_Height[MS_Current_Index]
      • Set MS_Current_Height2[MS_Current_Index] = (MS_Current_Height[MS_Current_Index] - MS_Fly_Speed[MS_Current_Index])
      • Set MS_Current_Distance[MS_Current_Index] = 0.00
      • Unit - Create 1 Missile Dummy for MS_Player[MS_Current_Index] at Temp_Point3 facing MS_Angle[MS_Current_Index] degrees
      • Set MS_Missile[MS_Current_Index] = (Last created unit)
      • Unit - Turn collision for MS_Missile[MS_Current_Index] Off
      • Unit - Move MS_Missile[MS_Current_Index] instantly to Temp_Point3
      • Custom script: if UnitAddAbility(udg_MS_Missile[udg_MS_Current_Index], 'Arav') and UnitRemoveAbility(udg_MS_Missile[udg_MS_Current_Index], 'Arav') then
      • Custom script: endif
  • MS Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer MS_Loop) from 1 to MS_Index_Size, do (Actions)
        • Loop - Actions
          • Set MS_Current_Index = MS_Index[MS_Loop]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • And - All (Conditions) are true
                • Conditions
                  • MS_Current_Distance[MS_Current_Index] Less than MS_Max_Distance[MS_Current_Index]
                  • MS_Current_Height[MS_Current_Index] Less than MS_Max_Height[MS_Current_Index]
                  • MS_Current_Height[MS_Current_Index] Greater than 0.00
            • Then - Actions
              • Set Temp_Point = (Position of MS_Missile[MS_Current_Index])
              • Set Temp_Point2 = (Temp_Point offset by MS_Move_Speed[MS_Current_Index] towards MS_Angle[MS_Current_Index] degrees)
              • Custom script: set udg_Temp_Real[1] = GetLocationZ(udg_Temp_Point2)
              • Set MS_Current_Height[MS_Current_Index] = (MS_Current_Height2[MS_Current_Index] + (MS_Start_Location_Z[MS_Current_Index] - Temp_Real[1]))
              • Set MS_Current_Height2[MS_Current_Index] = (MS_Current_Height2[MS_Current_Index] + MS_Fly_Speed[MS_Current_Index])
              • Animation - Change MS_Missile[MS_Current_Index] flying height to MS_Current_Height[MS_Current_Index] at 0.00
              • Unit - Move MS_Missile[MS_Current_Index] instantly to Temp_Point2, facing MS_Angle[MS_Current_Index] degrees
              • Set MS_Current_Distance[MS_Current_Index] = (MS_Current_Distance[MS_Current_Index] + MS_Move_Speed[MS_Current_Index])
              • Set Temp_Group = (Units within MS_Collision[MS_Current_Index] of Temp_Point2 matching ((((Matching unit) belongs to an ally of MS_Player[MS_Current_Index]) Equal to False) and ((((Matching unit) is dead) Equal to False) and (((Matching unit) is A flying unit) Equal to False))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in Temp_Group) Greater than 0
                • Then - Actions
                  • Set MS_Current_Distance[MS_Current_Index] = MS_Distance[MS_Current_Index]
                • Else - Actions
              • Custom script: call DestroyGroup(udg_Temp_Group)
              • Custom script: call RemoveLocation(udg_Temp_Point)
              • Custom script: call RemoveLocation(udg_Temp_Point2)
            • Else - Actions
              • Set Temp_Point = (Position of MS_Missile[MS_Current_Index])
              • Custom script: set bj_wantDestroyGroup = true
              • Unit Group - Pick every unit in (Units within MS_AoE[MS_Current_Index] of Temp_Point matching ((((Matching unit) belongs to an ally of MS_Player[MS_Current_Index]) Equal to False) and ((((Matching unit) is dead) Equal to False) and (((Matching unit) is A flying unit) Equal to False)))) and do (Actions)
                • Loop - Actions
                  • Unit - Cause MS_Unit[MS_Current_Index] to damage (Picked unit), dealing MS_Damage[MS_Current_Index] damage of attack type MS_Attack_Type[MS_Current_Index] and damage type MS_Damage_Type[MS_Current_Index]
              • Custom script: call RemoveLocation(udg_Temp_Point)
              • Unit - Kill MS_Missile[MS_Current_Index]
              • Set MS_Index[MS_Loop] = MS_Index[MS_Index_Size]
              • Set MS_Index[MS_Index_Size] = MS_Current_Index
              • Set MS_Index_Size = (MS_Index_Size - 1)
              • Set MS_Loop = (MS_Loop - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • MS_Index_Size Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                  • Skip remaining actions
                • Else - Actions

Keywords:
Missile, Flying, Explode, System.
Contents

Missile System v1.0 (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 18:04, 19th Dec 2012 Maker: You need to make something very special to get a missile system approve. Look at the already existing missile systems for reference. Note that we don't need...

Moderator

M

Moderator

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

18:04, 19th Dec 2012
Maker: You need to make something very special to get a missile system approve.
Look at the already existing missile systems for reference.
Note that we don't need multiple similar resources.
Feel free to PM me for any questions you may have.
 
Level 33
Joined
Apr 24, 2012
Messages
5,113
MultiPlayer instancable.

This is just a buggy for units,but perfect for players.
Missile system must be MUI because it uses units.


Ok ill review this:

first,Use an arc method,because your's is ugly
second,put the point Temp_Point outside the loop if block,so that you just create one.
third,Do you have any dummy remover trigger?
fourth,use vexorian's dummy.mdx.Why?because users dont need to create so many dummies just to use different models.Dummy mdx is just like a colorless model,w/c allows you to attach SFX to the dummy,making it the main model of the dummy.

Overall,needs fix.
 
Top