Straight-Shot arrow movement.

Azeroc

New Member
Reaction score
1
Right, I need formula which would set height of my dummy missile depending on cliff level, to create straight shot. Like now it does like this...


1038q52.jpg


It doesn't go straight. I need formula for height changing so it would go straightly (like a bullet), like this example.

okvj8k.jpg



TRIGGERS


Trigger:
  • MISSILES Arrow Launch
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Shoot!
    • Actions
      • For each (Integer A) from 1 to 1, do (Actions)
        • Loop - Actions
          • Set Temp_Unit[0] = (Triggering unit)
          • Set Temp_Loc[0] = (Position of Temp_Unit[0])
          • Set Temp_Loc[1] = (Target point of ability being cast)
          • -------- ------------------------------------------------------------------------------ --------
          • Unit - Create 1 Dummy - Arrow for (Owner of Temp_Unit[0]) at Temp_Loc[0] facing ((Angle from Temp_Loc[0] to Temp_Loc[1]) + (Random real number between -3.00 and 3.00)) degrees
          • -------- ------------------------------------------------------------------------------ --------
          • -------- Setting Variables for Dummy --------
          • -------- ------------------------------------------------------------------------------ --------
          • Set MISSILES_ArrowSource = (Triggering unit)
          • Set MISSILES_ArrowStartLoc = (Position of MISSILES_ArrowSource)
          • Set MISSILES_ArrowEndLoc = (Target point of ability being cast)
          • Set MISSILES_ArrowRange = (Distance between MISSILES_ArrowStartLoc and MISSILES_ArrowEndLoc)
          • Set MISSILES_ArrowHeight = 70.00
          • Set MISSILES_ArrowMiddleReach = (MISSILES_ArrowRange / 2.00)
          • Set MISSILES_ArrowSpeed = (MISSILES_ArrowRange / (25.00 + (Random real number between -5.00 and 5.00)))
          • -------- ------------------------------------------------------------------------------ --------
          • -------- Saving them --------
          • -------- ------------------------------------------------------------------------------ --------
          • Hashtable - Save Handle OfMISSILES_ArrowSource as (Key arrow_source) of (Key (Last created unit)) in Table_MissileMove
          • Hashtable - Save Handle OfMISSILES_ArrowStartLoc as (Key arrow_startloc) of (Key (Last created unit)) in Table_MissileMove
          • Hashtable - Save Handle OfMISSILES_ArrowEndLoc as (Key arrow_endloc) of (Key (Last created unit)) in Table_MissileMove
          • Hashtable - Save MISSILES_ArrowRange as (Key arrow_range) of (Key (Last created unit)) in Table_MissileMove
          • Hashtable - Save MISSILES_ArrowMiddleReach as (Key arrow_midreach) of (Key (Last created unit)) in Table_MissileMove
          • Hashtable - Save MISSILES_ArrowHeight as (Key arrow_height) of (Key (Last created unit)) in Table_MissileMove
          • Hashtable - Save MISSILES_ArrowSpeed as (Key arrow_speed) of (Key (Last created unit)) in Table_MissileMove
          • -------- ------------------------------------------------------------------------------ --------
          • -------- Adding to Missile Movement Group (Arrow Type Group) --------
          • Unit Group - Add (Last created unit) to MISSILES_ArrowGroup
          • -------- ------------------------------------------------------------------------------ --------
          • Custom script: call RemoveLocation(udg_Temp_Loc[0])
          • Custom script: call RemoveLocation(udg_Temp_Loc[1])

Trigger:
  • MISSILES Missile Movement 0x05
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in MISSILES_ArrowGroup and do (Actions)
        • Loop - Actions
          • -------- ----------------------------------- Loading Variables------------------------------------------- --------
          • Set MISSILES_ArrowSource = (Load (Key arrow_source) of (Key (Picked unit)) in Table_MissileMove)
          • Set MISSILES_ArrowStartLoc = (Load (Key arrow_startloc) of (Key (Picked unit)) in Table_MissileMove)
          • Set MISSILES_ArrowEndLoc = (Load (Key arrow_endloc) of (Key (Picked unit)) in Table_MissileMove)
          • Set MISSILES_ArrowHeight = (Load (Key arrow_height) of (Key (Picked unit)) from Table_MissileMove)
          • Set MISSILES_ArrowMiddleReach = (Load (Key arrow_midreach) of (Key (Picked unit)) from Table_MissileMove)
          • Set MISSILES_ArrowRange = (Load (Key arrow_range) of (Key (Picked unit)) from Table_MissileMove)
          • Set MISSILES_ArrowSpeed = (Load (Key arrow_speed) of (Key (Picked unit)) from Table_MissileMove)
          • -------- ------------------------------------------------------------------------------ --------
          • Set Temp_Unit[0] = (Picked unit)
          • Set Temp_Loc[0] = (Position of Temp_Unit[0])
          • Set Temp_Loc[1] = (Temp_Loc[0] offset by MISSILES_ArrowSpeed towards (Facing of (Picked unit)) degrees)
          • -------- ------------------------------------------------------------------------------ --------
          • -------- Height Changing and Moving --------
          • -------- ------------------------------------------------------------------------------ --------
          • Animation - Change (Picked unit) flying height to MISSILES_ArrowHeight at 1000.00
          • Unit - Move (Picked unit) instantly to Temp_Loc[1]
          • -------- ------------------------------------------------------------------------------ --------
          • Custom script: call RemoveLocation(udg_Temp_Loc[1])
          • -------- ------------------------------------------------------------------------------ --------
          • -------- Hitting --------
          • -------- ------------------------------------------------------------------------------ --------
          • Set Temp_UGroup[0] = (Units within 500.00 of Temp_Loc[0])
          • Set MISSILE_ArrowDummyHandle = (Picked unit)
          • Unit Group - Pick every unit in Temp_UGroup[0] and do (Actions)
            • Loop - Actions
              • Set Temp_Loc[1] = (Position of (Picked unit))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Current flying height of Temp_Unit[0]) Less than or equal to (Real((Point-value of (Picked unit))))
                  • ((Region centered at Temp_Loc[1] with size ((Mana of (Picked unit)), (Mana of (Picked unit)))) contains Temp_Unit[0]) Equal to True
                  • ((Owner of (Picked unit)) is an enemy of (Owner of Temp_Unit[0])) Equal to True
                  • ((Picked unit) is dead) Equal to False
                • Then - Actions
                  • Set Temp_Loc[1] = (Temp_Loc[0] offset by MISSILES_ArrowSpeed towards (Facing of (Picked unit)) degrees)
                  • Unit - Cause Temp_Unit[0] to damage (Picked unit), dealing 50.00 damage of attack type Pierce and damage type Normal
                  • Special Effect - Create a special effect attached to the chest of (Picked unit) using Objects\Spawnmodels\Orc\Orcblood\BattrollBlood.mdl
                  • Unit - Kill Temp_Unit[0]
                  • -------- Removing/Cleaning --------
                  • Hashtable - Clear all child hashtables of child (Key MISSILE_ArrowDummyHandle) in Table_MissileMove
                  • Unit Group - Remove Temp_Unit[0] from MISSILES_ArrowGroup
                  • Custom script: call RemoveLocation(udg_Temp_Loc[1])
                • Else - Actions
              • Custom script: call RemoveLocation(udg_Temp_Loc[1])
          • Custom script: call DestroyGroup(udg_Temp_UGroup[0])
          • -------- ------------------------------------------------------------------------------ --------
          • -------- If hit in ground. --------
          • -------- ------------------------------------------------------------------------------ --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • MISSILES_ArrowHeight Less than or equal to 10.00
            • Then - Actions
              • Unit - Kill (Picked unit)
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in Table_MissileMove
              • Unit Group - Remove (Picked unit) from MISSILES_ArrowGroup
            • Else - Actions
          • -------- ------------------------------------------------------------------------------ --------
          • -------- Saving Everything for next loop. --------
          • -------- ------------------------------------------------------------------------------ --------
          • Hashtable - Save Handle OfMISSILES_ArrowSource as (Key arrow_source) of (Key (Picked unit)) in Table_MissileMove
          • Hashtable - Save Handle OfMISSILES_ArrowStartLoc as (Key arrow_startloc) of (Key (Picked unit)) in Table_MissileMove
          • Hashtable - Save Handle OfMISSILES_ArrowEndLoc as (Key arrow_endloc) of (Key (Picked unit)) in Table_MissileMove
          • Hashtable - Save (MISSILES_ArrowRange - MISSILES_ArrowSpeed) as (Key arrow_range) of (Key (Picked unit)) in Table_MissileMove
          • Hashtable - Save MISSILES_ArrowMiddleReach as (Key arrow_midreach) of (Key (Picked unit)) in Table_MissileMove
          • Hashtable - Save (MISSILES_ArrowHeight - 2.00) as (Key arrow_height) of (Key (Picked unit)) in Table_MissileMove
          • Hashtable - Save MISSILES_ArrowMidPart as (Key arrow_midpart) of (Key (Picked unit)) in Table_MissileMove
          • -------- ------------------------------------------------------------------------------ --------
          • Custom script: call RemoveLocation(udg_Temp_Loc[0])



One good fellow in THW said that some friend of his gave him this script which is used in Elimination Tournament (and such dummy missile movement I need as in that Elim Tournament).
JASS:
 z = Sin(Atan2(Z,maxDist))*DistanceTraveled


But I don't know where to put it in my trigger so my dummy actually changes height equal to that formula.

I also got few mini-questions:
1. What is "Sin"?
2. What is "Atan"?


*sigh* Some day I should start learning JASS, it would make world editor stuff making for me sooo easier xD
 

Nenad

~Choco Coronet~ Omnomnom
Reaction score
137
Sin=Sin of an angle, use a calculator to determine, or a unit Circle, this is in radians
Atan=This is basically the Degrees of the angle or 1/Sin/Cos x)

I've got no idea how to make the spell though x)
 
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