• 🏆 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 Bullet/Arc Missile System v1.02

Well, this is Missile system WITH Arc that check Z axis changes and height between start and end points, that fix bug with hiting units from height or hiting units on height. Missiles dont repeat ground scales. It have traectory of triangle combined with arc. Distance is hypotinuse length. Some people may not understand how it calculates, because here need some knowlage of SINE COSINE HYPOTINUSE calculation.

153758-albums2624-picture29141.jpg


Story: long time ago I played Elimination Tournament. When I saw bullet traectory... shock... "how this guys do this?". About mounth ago I made something like this. This system meaby is a parody. But it is GUI and not JASS (I think creators of ET did it with JASS). If people have played ET or ET2 and they saw water that used theare, they know what it is model of platform with moving water texture. Why model and not warcraft water? Well, missile do some wierd things, it dont fly under water and suport water horizontaly. That is why they used model of water simulation.

Correct me if I am wrong. Have fun with system and dont be lazy to give credits.
  • BS Setings
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Shot!
    • Actions
      • Custom script: local real Hyp
      • Custom script: local real SINE
      • Custom script: local real COSINE
      • Custom script: local real End_Z
      • Custom script: local real Distance
      • Custom script: local real Height
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BS_Skip Equal to 0
        • Then - Actions
          • Trigger - Turn on BS Loop <gen>
        • Else - Actions
      • Set BS_Point[0] = (Position of (Triggering unit))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Target unit of ability being cast) Equal to No unit
        • Then - Actions
          • Set BS_Point[1] = (Target point of ability being cast)
        • Else - Actions
          • Set BS_Point[1] = (Position of (Target unit of ability being cast))
      • Set BS_Point[2] = (BS_Point[0] offset by 70.00 towards (Angle from BS_Point[0] to BS_Point[1]) degrees)
      • Set BS_MissileCount = 1
      • For each (Integer BS_MC) from 1 to BS_MissileCount, do (Actions)
        • Loop - Actions
          • Set BS_Skip = (BS_Skip + 1)
          • Set BS_Times = (BS_Times + 1)
          • Set BS_On[BS_Times] = True
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Set BS_Hero[BS_Times] = (Triggering unit)
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Set BS_Angle[BS_Times] = (Angle from BS_Point[0] to BS_Point[1])
          • Set BS_MaxDistance[BS_Times] = (Distance between BS_Point[2] and BS_Point[1])
          • Set BS_Distance[BS_Times] = BS_MaxDistance[BS_Times]
          • Set BS_Height[BS_Times] = 200.00
          • Set BS_Level[BS_Times] = (Level of Shot! for (Triggering unit))
          • Set BS_Damage[BS_Times] = (50.00 + (50.00 x (Real(BS_Level[BS_Times]))))
          • Set BS_Range[BS_Times] = 1500.00
          • Set BS_Colision[BS_Times] = 75.00
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- Change 60 to unit "height" (not flying) to make caster aim in head. --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Custom script: set udg_BS_StartZ[udg_BS_Times] = GetLocationZ(udg_BS_Point[0]) + 55
          • Custom script: set End_Z = GetLocationZ(udg_BS_Point[1]) + GetUnitFlyHeight(GetSpellTargetUnit())
          • Custom script: set Distance = DistanceBetweenPoints(udg_BS_Point[2],udg_BS_Point[1])
          • Custom script: if udg_BS_StartZ[udg_BS_Times] >= End_Z then
          • Custom script: set udg_BS_Up[udg_BS_Times] = false
          • Custom script: set End_Z = ( End_Z + GetRandomReal(40.00, 85.00) )
          • Custom script: set Height = ( udg_BS_StartZ[udg_BS_Times] - End_Z )
          • Custom script: else
          • Custom script: set udg_BS_Up[udg_BS_Times] = true
          • Custom script: set End_Z = ( End_Z + GetRandomReal(60.00, 85.00) )
          • Custom script: set Height = ( End_Z - udg_BS_StartZ[udg_BS_Times] )
          • Custom script: endif
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- Lets check if missile fly up or down. --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Custom script: set Hyp = SquareRoot(( ( Distance * Distance ) + ( Height * Height ) ))
          • Custom script: set SINE = ( Distance / Hyp )
          • Custom script: set COSINE = ( Height / Hyp )
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- HYPSpeed is hypotinuse movement per time interval. --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Custom script: set udg_BS_HYPSpeed[udg_BS_Times] = Hyp * 0.03
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- Because we know hypotinuse speed, SINE, COSINE, calculation of Height Speed and distance speed will calculate now. --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Custom script: set udg_BS_Speed[udg_BS_Times] = ( udg_BS_HYPSpeed[udg_BS_Times] * SINE )
          • Custom script: set udg_BS_SpeedZ[udg_BS_Times] = ( udg_BS_HYPSpeed[udg_BS_Times] * COSINE )
          • Unit - Create 1 Bullet for (Owner of BS_Hero[BS_Times]) at BS_Point[2] facing BS_Angle[BS_Times] degrees
          • Set BS_Missile[BS_Times] = (Last created unit)
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- In Object Data dummy unit have no movement type. Like that it will not change height when get close to trees and nautrial buildings. --------
          • -------- But it must to change height. Adding and Removing Storm Crown ability will help. --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Unit - Add Storm Crow Form to (Last created unit)
          • Unit - Remove Storm Crow Form from (Last created unit)
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- Cleaning leaks --------
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • Custom script: call RemoveLocation ( udg_BS_Point[0] )
      • Custom script: call RemoveLocation ( udg_BS_Point[1] )
      • Custom script: call RemoveLocation ( udg_BS_Point[2] )
  • BS Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer BS) from 1 to BS_Times, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BS_On[BS] Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BS_Range[BS] Less than or equal to 0.00
                • Then - Actions
                  • Unit - Kill BS_Missile[BS]
                  • Set BS_On[BS] = False
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • -------- Starting Recycling Indexes --------
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • BS Less than BS_Times
                    • Then - Actions
                      • Set BS_On[BS] = BS_On[BS_Times]
                      • Set BS_Missile[BS] = BS_Missile[BS_Times]
                      • Set BS_Hero[BS] = BS_Hero[BS_Times]
                      • Set BS_Range[BS] = BS_Range[BS_Times]
                      • Set BS_Speed[BS] = BS_Speed[BS_Times]
                      • Set BS_HYPSpeed[BS] = BS_HYPSpeed[BS_Times]
                      • Set BS_SpeedZ[BS] = BS_SpeedZ[BS_Times]
                      • Set BS_StartZ[BS] = BS_StartZ[BS_Times]
                      • Set BS_Parabola[BS] = BS_Parabola[BS_Times]
                      • Set BS_Height[BS] = BS_Height[BS_Times]
                      • Set BS_Distance[BS] = BS_Distance[BS_Times]
                      • Set BS_MaxDistance[BS] = BS_MaxDistance[BS_Times]
                      • Set BS_Damage[BS] = BS_Damage[BS_Times]
                      • Set BS_Angle[BS] = BS_Angle[BS_Times]
                      • Set BS_Colision[BS] = BS_Colision[BS_Times]
                      • Set BS_Level[BS] = BS_Level[BS_Times]
                      • Set BS_Up[BS] = BS_Up[BS_Times]
                    • Else - Actions
                  • Set BS = (BS - 1)
                  • Set BS_Times = (BS_Times - 1)
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • -------- End of Recycling Indexes --------
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • Set BS_Skip = (BS_Skip - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • BS_Skip Equal to 0
                    • Then - Actions
                      • Set BS_Times = 0
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
                  • Set BS_Point[3] = (Position of BS_Missile[BS])
                  • Set BS_Point[4] = (BS_Point[3] offset by BS_Speed[BS] towards BS_Angle[BS] degrees)
                  • Unit - Move BS_Missile[BS] instantly to BS_Point[4]
                  • Set BS_Distance[BS] = (BS_Distance[BS] - BS_Speed[BS])
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • -------- If missile comes to black areas around map, than range seted to zero. --------
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Playable map area) contains BS_Point[4]) Equal to False
                    • Then - Actions
                      • Set BS_Range[BS] = 0.00
                    • Else - Actions
                      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                      • -------- Missile traveled some range. Lets set remaining range. --------
                      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                      • Set BS_Range[BS] = (BS_Range[BS] - BS_HYPSpeed[BS])
                      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                      • -------- Need to check height of point where missile traveled to calculate debug height and make missile movement "real" --------
                      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                      • Custom script: set udg_BS_DebugZ[udg_BS] = GetLocationZ(udg_BS_Point[4])
                      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                      • -------- Height of missile will change at diferent way when it fly up/down. --------
                      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • BS_Up[BS] Equal to False
                        • Then - Actions
                          • Set BS_StartZ[BS] = (BS_StartZ[BS] - BS_SpeedZ[BS])
                        • Else - Actions
                          • Set BS_StartZ[BS] = (BS_StartZ[BS] + BS_SpeedZ[BS])
                      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                      • -------- Calculation of height that missile must have. --------
                      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                      • Set BS_Parabola[BS] = (((4.00 x BS_Height[BS]) / BS_MaxDistance[BS]) x ((BS_MaxDistance[BS] - BS_Distance[BS]) x (BS_Distance[BS] / BS_MaxDistance[BS])))
                      • Set BS_Debug[BS] = ((BS_StartZ[BS] - BS_DebugZ[BS]) + BS_Parabola[BS])
                      • Custom script: call SetUnitFlyHeight( udg_BS_Missile[udg_BS], udg_BS_Debug[udg_BS], 0.00 )
                      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                      • -------- Missile flying height is zero and it hit the ground. --------
                      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • BS_Debug[BS] Less than or equal to 0.00
                        • Then - Actions
                          • Set BS_Range[BS] = 0.00
                        • Else - Actions
                          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                          • -------- Not zero yet? Pick units to damage someone. --------
                          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                          • Set BS_Group[BS] = (Units within BS_Colision[BS] of BS_Point[4] matching (((((Matching unit) is A structure) Equal to False) and (((Matching unit) is Mechanical) Equal to False)) and (((((Matching unit) is Magic Immune) Equal to False) and (((Matching unit) is dead) Equal to Fa
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Number of units in BS_Group[BS]) Greater than 0
                            • Then - Actions
                              • Unit Group - Pick every unit in (Random 1 units from BS_Group[BS]) and do (Actions)
                                • Loop - Actions
                                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                                  • -------- I have seted height of unit to 85. It Must be diferent for units of diferent type. --------
                                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • ((Picked unit) is A flying unit) Equal to True
                                    • Then - Actions
                                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • BS_Debug[BS] Less than or equal to ((Current flying height of (Picked unit)) + 50.00)
                                          • BS_Debug[BS] Greater than or equal to (Current flying height of (Picked unit))
                                        • Then - Actions
                                          • Set BS_Range[BS] = 0.00
                                          • Unit - Cause BS_Hero[BS] to damage (Picked unit), dealing BS_Damage[BS] damage of attack type Spells and damage type Normal
                                        • Else - Actions
                                    • Else - Actions
                                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • And - All (Conditions) are true
                                            • Conditions
                                              • BS_Debug[BS] Less than or equal to 85.00
                                        • Then - Actions
                                          • Set BS_Range[BS] = 0.00
                                          • Unit - Cause BS_Hero[BS] to damage (Picked unit), dealing BS_Damage[BS] damage of attack type Spells and damage type Normal
                                        • Else - Actions
                            • Else - Actions
                          • Custom script: call DestroyGroup ( udg_BS_Group[udg_BS] )
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • -------- Kill leaks. --------
                  • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
                  • Custom script: call RemoveLocation ( udg_BS_Point[3] )
                  • Custom script: call RemoveLocation ( udg_BS_Point[4] )
            • Else - Actions
-Recycling added to better system performance
-Added arc traectory as well.


NOTE: System works now as bullet spell and Impact grenade spell.
To make it bullet like, change BS_Height to 0 in Setings and set HYPSpeed to number instead of Hypotinuse * 0.03 (it is calculation of speed to make flow of arc nicer. Change 0.03 to other number to make it faster of slower. Care with it.).

Keywords:
Missile, System, Bullet, Arc, Real, Smart, Hypotinuse, Sine, Cosine, Grenade, Impact
Contents

NFWar's Missile system v1.02 (Map)

Reviews
14:59, 6th Feb 2010 The_Reborn_Devil: Seems fair enough, but maybe add support for collision with trees and buildings? The triggers look ok too. Status: Approved Rating: Useful

Moderator

M

Moderator

14:59, 6th Feb 2010
The_Reborn_Devil:

Seems fair enough, but maybe add support for collision with trees and buildings? The triggers look ok too.

Status: Approved
Rating: Useful
 
TANGENT IS: X/Y. Hypotinuse IS: X2+Y2=A2

EDIT: Here is bullet system with JASS scripts. It is optimized (deleted 6 global variables, so it takes less memory space and work a bit faster).

  • BS Setings
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Shot!
    • Actions
      • Custom script: local real Hyp
      • Custom script: local real SINE
      • Custom script: local real COSINE
      • Custom script: local real End_Z
      • Custom script: local real Distance
      • Custom script: local real Height
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BS_Skip Equal to 0
        • Then - Actions
          • Trigger - Turn on BS Loop <gen>
        • Else - Actions
      • Set BS_Point[0] = (Position of (Triggering unit))
      • Set BS_Point[1] = (Target point of ability being cast)
      • Set BS_Point[2] = (BS_Point[0] offset by 70.00 towards (Angle from BS_Point[0] to BS_Point[1]) degrees)
      • Set BS_MissileCount = 1
      • For each (Integer BS_MC) from 1 to BS_MissileCount, do (Actions)
        • Loop - Actions
          • Set BS_Skip = (BS_Skip + 1)
          • Set BS_Times = (BS_Times + 1)
          • Set BS_On[BS_Times] = True
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Set BS_Hero[BS_Times] = (Triggering unit)
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Set BS_Angle[BS_Times] = (Angle from BS_Point[0] to BS_Point[1])
          • Set BS_Level[BS_Times] = (Level of Shot! for (Triggering unit))
          • Set BS_Damage[BS_Times] = ((Random real number between 150.00 and 200.00) + (50.00 x (Real(BS_Level[BS_Times]))))
          • Set BS_Range[BS_Times] = 1500.00
          • Set BS_Colision[BS_Times] = 75.00
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- Change 60 to unit "height" (not flying) to make caster aim in head. --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Custom script: set udg_BS_StartZ[udg_BS_Times] = GetLocationZ(udg_BS_Point[0]) + 55
          • Custom script: set End_Z = GetLocationZ(udg_BS_Point[1])
          • Custom script: set Distance = DistanceBetweenPoints(udg_BS_Point[2],udg_BS_Point[1])
          • Custom script: if udg_BS_StartZ[udg_BS_Times] >= End_Z then
          • Custom script: set udg_BS_Up[udg_BS_Times] = false
          • Custom script: set End_Z = ( End_Z + GetRandomReal(40.00, 85.00) )
          • Custom script: set Height = ( udg_BS_StartZ[udg_BS_Times] - End_Z )
          • Custom script: else
          • Custom script: set udg_BS_Up[udg_BS_Times] = true
          • Custom script: set End_Z = ( End_Z + GetRandomReal(60.00, 85.00) )
          • Custom script: set Height = ( End_Z - udg_BS_StartZ[udg_BS_Times] )
          • Custom script: endif
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- Lets check if missile fly up or down. --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Custom script: set Hyp = SquareRoot(( ( Distance * Distance ) + ( Height * Height ) ))
          • Custom script: set SINE = ( Distance / Hyp )
          • Custom script: set COSINE = ( Height / Hyp )
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- HYPSpeed is hypotinuse movement per time interval. --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Set BS_HYPSpeed[BS_Times] = 40.00
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- Because we know hypotinuse speed, SINE, COSINE, calculation of Height Speed and distance speed will calculate now. --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Custom script: set udg_BS_Speed[udg_BS_Times] = ( udg_BS_HYPSpeed[udg_BS_Times] * SINE )
          • Custom script: set udg_BS_SpeedZ[udg_BS_Times] = ( udg_BS_HYPSpeed[udg_BS_Times] * COSINE )
          • Unit - Create 1 Bullet for (Owner of BS_Hero[BS_Times]) at BS_Point[2] facing BS_Angle[BS_Times] degrees
          • Set BS_Missile[BS_Times] = (Last created unit)
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • -------- In Object Data dummy unit have no movement type. Like that it will not change height when get close to trees and nautrial buildings. --------
          • -------- But it must to change height. Adding and Removing Storm Crown ability will help. --------
          • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
          • Unit - Add Storm Crow Form to (Last created unit)
          • Unit - Remove Storm Crow Form from (Last created unit)
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • -------- Cleaning leaks --------
      • -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- --------
      • Custom script: call RemoveLocation ( udg_BS_Point[0] )
      • Custom script: call RemoveLocation ( udg_BS_Point[1] )
      • Custom script: call RemoveLocation ( udg_BS_Point[2] )
 

Attachments

  • Bullet System v1.01 (JASS UPGRADE).w3x
    58.7 KB · Views: 259
Last edited:
First of all if this isn't using Recycling indexing then no one should use it, looping is slow already, without recycling systems are extremely unefficent and shouldn't be generally used.

Also the whole system is just 1 big Trigonometry calculation :p

Ow, recycling coming soon. Also you are right I love geometry, so this system is fun for me.
Meaby I shuld Use some basic Jass knowlage to make locan variables in set trigger. like that I will reduce Global Variables count and spell will be "lighter" for PC.
 
... I don't know why people create such things with _GUI_ when you can do it better with jass / vjass.

cedi

1) I dont know Jass
2) GUI know every coder. Jass know only JASSers.
3) GUI still alive and using. Coders here are 2 groups: GUIers, JASSers.
I am GUIer. I dont have time to learn JASS.
4) Because I LOVE Geometry, This system is example of what GUI can do hard things like JASS. Dark Gandalf made insane hook spell and it is perfect example.

I made recycling. Working on optimizing it with locan variables.
 
Why not add function where will bullet explode(remove,die) if come to close desctrutibles. This is idea, if you want to use that.

I am using this in map I am working on. Well, GUI dont know how much hight is tree. So you need to have ALL trees with same variation and same scale. Just like units: worker is small and short, Stone Giant is huge. So head for those 2 units is not on same heights. It means what this system is a bit complicated and some settings user must to do.
 
Level 9
Joined
Sep 28, 2004
Messages
365
... I don't know why people create such things with _GUI_ when you can do it better with jass / vjass.

cedi

To people who don't know why others create GUI system:
1. GUI is user friendly and known to more people.
2. JASS/vJASS is not. People who know JASS can use JASS system, leave GUI system to GUI users.
3. You also need to have most of the external lib which is pain in the ... to import.
4. Why import so many things when i only want to use a simple system?
5. GUI is also better because i don't need 3rd party software to help me do my things correctly.

On topic, this is a pretty cool system [: I like it! +Rep!
 
Level 13
Joined
Jun 9, 2009
Messages
1,129
I am using this in map I am working on. Well, GUI dont know how much hight is tree. So you need to have ALL trees with same variation and same scale. Just like units: worker is small and short, Stone Giant is huge. So head for those 2 units is not on same heights. It means what this system is a bit complicated and some settings user must to do.
That isn't problem for me, im using this system for my map, that i will play in LAN.
 
Level 5
Joined
Dec 8, 2008
Messages
102
GUI isnt that bad lol, if you use a DIR index system and a single periodic event, even missile systems can handle about 100 missiles at the same time , Jass is always better but it will not change anything if your map doesnt have 300 missiles at the same time

this is a good system for gui cause the missiles fly in a correct way and its not bad triggered

+rep for your work : )

EDIT: forgot, you could make a single Jass function which takes all arguments used by the system and set it to globals, this is useful because then users can create missiles with a single line :D, its really easy to Create, but if you cant make it yourself, i can help you,
 
You could make a single Jass function which takes all arguments used by the system and set it to globals, this is useful because then users can create missiles with a single line :D, its really easy to Create, but if you cant make it yourself, i can help you,

I dont got it. I dont know JASS, just messing up with some things.
I had some experiance with Programming with indexes in Pascal, so I can easy make Jass IF in GUI.
Explain better your words. Do you want to JASS out this system better?
I need it mostly GUI, but made JASS optimization to make spell smaller.
Upgrade with JASS lines is easy to understand, so I sugest GUI users to try out Jass upgraded version.

Question: If I convert this system to custom text, it will work faster?
I dont saw any periodic event in JASS coding.
 
Level 5
Joined
Dec 8, 2008
Messages
102
I meant, you could make a function that takes all worths and set them to globals
function bla takes unit x, real y, real speed usw returns nothing
set udg_speed = speed
...
...
call TriggerExecute( yourtrigger )
endfunction

so you only have to write a single custom script to create a missile, this could look like this:
JASS:
call CreateMissile( unit, 800, 700, angle ) for example will then move the missile 800 distances with speed 700 towards angle, got what i mean? its the same thing like setting them manually to globals, but with a function you make it more user friendly
 
Level 10
Joined
May 19, 2008
Messages
176
I know only 3 or so bj's which are truely useful and these are all floating text functions... ( for example the calculate size or the calc velocity function ... )

And much bj's result in ubber strange errors ( look at the map cruiser command ... ).

For these people who thinks gui is as good as jass they should remake the spell in my signatur ... have fun.

cedi
 
Level 19
Joined
Feb 4, 2009
Messages
1,313
only unitgroup enumerations and "move unit to point" in GUI suck
everything else is like a few percent slower and does not really matter

this system is really awesome and I was thinking about exactly the same thing for a few days already
if you add arc movement for x/y and z-facing this system will become the best of its kind (in GUI of cause but who cares about JASS in GUI systems)

5/5 + rep
 
The 1 thing I know already:
Trees are patching flying unit height and it doesnt count as height at all o_O so if you shot in flying unit that is above the tree, missile will go under about 100-150 towards with Z axis. Remove the tree, dont move unit and try again. Missile will fly better. To fix this, set flyover height of tree to 0 :p

Also this is hapening to flying units if they are on very angled ground like in picture 2.

What is on picture 3? I cant understand :/
 
Level 19
Joined
Feb 4, 2009
Messages
1,313
The 1 thing I know already:
Trees are patching flying unit height and it doesnt count as height at all o_O so if you shot in flying unit that is above the tree, missile will go under about 100-150 towards with Z axis. Remove the tree, dont move unit and try again. Missile will fly better. To fix this, set flyover height of tree to 0 :p

Also this is hapening to flying units if they are on very angled ground like in picture 2.

What is on picture 3? I cant understand :/

the ground and trees fucks up the height of flying units as you found out already
no real way around it
ground units with storm crow form and changed height aren't influenced though

the hp bar is very buggy so I'm not that suprised of such things happening
I once had 5 full hp bars stuck in the center of my screen for a whole game
and if you can see a unit which would have its health bar outside of the screen it will glitch the bar somewhere else

example for x/y-arc:
http://www.hiveworkshop.com/forums/spells-569/missile-system-arcs-gui-kingz-v1-4-a-122845/?prev=search%3Dmissile%2520system%26d%3Dlist%26r%3D20
example for z-facing:
http://www.hiveworkshop.com/forums/...543/?prev=search=missile%20system&d=list&r=20
maybe it can be done easier with another kind of dummy (for example you can set a unit's bone facing to any 3d point and with custom script you are not limited to head and chest bone)

edit:
and of cause you can look at Anachron's system just below me which can do pretty much everything
maybe you should ask for permission though
 
Last edited:
Level 10
Joined
Feb 20, 2008
Messages
448
I am using this in my map and i saw few things that would help noob like me :)

Documentation on how it work : how change variable to do such things exemple a bullet or a grenade...... first time i open my eyes bleed and i got scared & close it*when it was first release* i learned about formula and now im not and i know how it work,

Mind making it Engine ? so we only call variable to make it work ?


xcept those few things i can say very pro : poeple should use it more :)
 
Top