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

Simple Projectile System (SPS) Version 1.3

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: Rangerdeaths
This system is created by me, Flood (The_Flood @ B-Net).

I've reworked alot of things in version 1.3 and I'll add new things in the future. I'll just have to post this version because I've redone alot of things.

I tried to create a very easy and simple projectile system with many options with GUI and I think it went out really good. It's easy to understand, learn and use. You can create a new projectile spell in less then 1 minute, I'll add more options if I get any ideas. :)

What can this system do?

Well, you can modify a projectile very easy, changing alot of easy options like:
> CheckZ (Added in version 1.2) wich detects Z locations.
> ChangeHitTargets: Damage only enemies, damage enemies and friendly units or damage enemies and heal friendly units.
> Allow your projectile to destroy trees in it's way.
> Modify your projectiles model, size, speed.
> Add a TailEffect to your projectile to make it more eyecandy.
> Allow your projectile to knockback enemies, with a nice designed knockback system I've created, allowing you to change the knockback options.
> And more!


Please, rate and comment, and tell me any buggs if you find any and of course, tell me something that I may add to improve this system, more options? Thanks. :D

This system is 100% MUI.


Changelog

Version 1.0:
-> Initial Release

Version 1.1:
-> Added a new option: TailEffect [This allow you to create a tail looking effect after your projectile.]

Version 1.2
-> Added a new option: CheckZ [This allow you to GetLocationZ of your projectiles. With this activated the projectiles is affected by the terrain, a cliff with more height then your projectile will destroy your projectile. This also makes your projectiles move nicer.]

Version 1.2b
-> Added a new BETA option: ProjectileBounce [This will make your projectile bounce on wall and cliffs. Works kinda nice if you have the CheckZ option enabled, but. The ProjectileBounce option isn't fully working, it's glitching and moves weird sometimes. I really need feedback on how to improve this option.]

Version 1.2c
-> Reworked the GUI code alittle.

Version 1.3
-> Removed and reworked alot of variables.
-> Reworked the Spell Loop trigger.
-> Removed the CheckPathing function because the CheckZ function is alot better.
-> Reworked the targets allows function, you can now put a number to easily choose the targets your projectile can hit.
-> The Knockback system reworked alot, I removed 2 options here, the first one was the KBNiceEffect function, this one is ALWAYS active now. The second one was the KBCheckPathing function, this is also ALWAYS active now, but will only active if the knockbacked unit is a ground unit.
-> Added trigger comments in the Test Spell 1 trigger, explaining everything.



Keywords:
Simple, Projectile, System, GUI, Spell, Ability, Easy, Medium, Hard,
Contents

Simple Projectile System (SPS) V1.3 (Map)

Reviews
18:42, 8th Dec 2009 TriggerHappy: Review for Simple Projectile System (SPS) Version Projectiles in GUI... not a good mix. You need to make the destructables range configurable per instance. A static 100 isn't nice. This isn't very...

Moderator

M

Moderator

18:42, 8th Dec 2009
TriggerHappy:


Review for Simple Projectile System (SPS) Version

Projectiles in GUI... not a good mix.
  • You need to make the destructables range
    configurable per instance. A static 100 isn't nice.
  • This isn't very flexible, compared to most jass
    projectile systems. I admit it's probably one of the best
    GUI ones, but that doesn't mean much.
  • I'm guessing after about 15 projectiles, this will start to
    lag.

The only way I am going to approve this is if enough GUI users
think this is useful and vote for approval. Until then, rejected.


Status

Rejected
 
Level 25
Joined
Jun 5, 2008
Messages
2,572
Don't like it when i have to bring the bad stuff out on the open but i feel i have to.

-innefficent by the means of triggering, the triggering is fine, the indexing method isn't good for SYSTEM, it is good for spells for Systems it sucks.
-The trail would be good if it would allow the users to make trails in the same Z as the missile, this way it is simply creating special effect at missile X/Y
-The Z function is nice though i doubt it's usage, perhaps adding a Z bounce function?
-considered adding parabola into your system? many spells use parabolic movement
-adding knockback is nice though i think you are overburdening the spells with multiple system usage.
-too much complex? i mean sure the more options the better but you do know that people must set up ~30 settings to use the system?
-no trigger comments about what you did and how, that is annoying and makes other spell makers tough to understand what is what
-maybe remove the Spell prefix from the variables and use MS as missile system?
-adding arcs may be good but your system is overcomplicated as it is now :p

Hope you find this helpfull, if you don't understand why this way of making system is bad feel free to ask but i would suggest you to either make this in JASS/vJASS or use better indexing (Hanky's is good).
EDIT:
Flood said:
This is a SYSTEM, allowing you to create projectiles, with just a few mouseclicks.
More like hundred mouse clicks :p
But you are getting better.
 
Level 19
Joined
Aug 16, 2007
Messages
881
Don't like it when i have to bring the bad stuff out on the open but i feel i have to.

-innefficent by the means of triggering, the triggering is fine, the indexing method isn't good for SYSTEM, it is good for spells for Systems it sucks.
-The trail would be good if it would allow the users to make trails in the same Z as the missile, this way it is simply creating special effect at missile X/Y
-The Z function is nice though i doubt it's usage, perhaps adding a Z bounce function?
-considered adding parabola into your system? many spells use parabolic movement
-adding knockback is nice though i think you are overburdening the spells with multiple system usage.
-too much complex? i mean sure the more options the better but you do know that people must set up ~30 settings to use the system?
-no trigger comments about what you did and how, that is annoying and makes other spell makers tough to understand what is what
-maybe remove the Spell prefix from the variables and use MS as missile system?
-adding arcs may be good but your system is overcomplicated as it is now :p

Hope you find this helpfull, if you don't understand why this way of making system is bad feel free to ask but i would suggest you to either make this in JASS/vJASS or use better indexing (Hanky's is good).
EDIT:

More like hundred mouse clicks :p
But you are getting better.


Thanks for the feedback!

First of all, I don't understand why the indexing method isn't good for a system.

I'll try fix so the specialeffects will be created at the same Z location, but I doubt I know how to do it, because you'll have to use JASS?

The Z function is good, if you, for example, use a rocket projectile that will explode when it hits cliffs or mountains and I think the bounce function will work nicely togheter with the Z function.

And I tried to add parabola in the system, but this caused a bug in the system, I think the loop overloaded and skipped alot of actions, so I had to remove it.

I maybe overburdening some things, I may reduce this in some way.

I'll try reduce all settings into lesser variables, make it less complex.

I've added a Read Me? Explaining everything?

About the Spell_ prefix, I can change that if that makes any difference.

I've no idea how to add arcs in a system, because I've never used it, I don't even know the math for it.

I'll update this system with your feedback and try making it less complex and more user friendly.

Thanks again :)



Ok, I've update this system to version 1.3!
 
Last edited:
Level 4
Joined
Jun 1, 2009
Messages
87
hey bro great update! going to DL it now n see the changes myself. one thing i found annoying in your previous version was when i tried to base it off a spell say shockwave, it would stop the projectile in its path when it hits a target.

the damage still carry through in a line but the projectile would get destoried, i think what i did was in the loop trigger, instead of checking the distance to 0, i setted it to -300.

but sometimes it is still inaccurate.


Besides that part i am a fan of ur system!
 
Level 25
Joined
Jun 5, 2008
Messages
2,572
Here is why this indexing method is bad for systems.
I think you know how loops work, now you use periodic loops and i won't explain what loops are.
Now with the loop in the periodic trigger increasing every time you use the system it is going to get more and more harder for the CPU.
Even if you don't do anything in one loop cause of a condition, the computer still checks the condition leading in unnecesary processing and making the system more and more laggy.
After casting a spell about ~400 times it should get really lagy, even earlier if you have a slower computer.
Now also using this indexing allows users to even supras the 8000 integer limit when it comes to arrays.
That means cause the indexes aren't recycling or decreasing it is possible to reach maximum array size with even 1 hero :p
You should really use an indexing method that has dynamic index recycling.
If you want i can rework your indexing a bit so that it uses it, making this system far more efficent than now.
Hope this doesn't sound like advertisement but if you are interested more about dynamic indexes and index recycling you could check the tutorial i wrote about mine indexing method which is highly efficent and really suitable for systems(if you want the arc function feel free to check my missile system and take it).
Gl and this is a great improvement from your previous work! +rep
 
Level 19
Joined
Aug 16, 2007
Messages
881
hey bro great update! going to DL it now n see the changes myself. one thing i found annoying in your previous version was when i tried to base it off a spell say shockwave, it would stop the projectile in its path when it hits a target.

the damage still carry through in a line but the projectile would get destoried, i think what i did was in the loop trigger, instead of checking the distance to 0, i setted it to -300.

but sometimes it is still inaccurate.


Besides that part i am a fan of ur system!

Thanks! Hm, probably can I add an option that allow you to pick if the projectile will get destroyed on hit or not.


Here is why this indexing method is bad for systems.
I think you know how loops work, now you use periodic loops and i won't explain what loops are.
Now with the loop in the periodic trigger increasing every time you use the system it is going to get more and more harder for the CPU.
Even if you don't do anything in one loop cause of a condition, the computer still checks the condition leading in unnecesary processing and making the system more and more laggy.
After casting a spell about ~400 times it should get really lagy, even earlier if you have a slower computer.
Now also using this indexing allows users to even supras the 8000 integer limit when it comes to arrays.
That means cause the indexes aren't recycling or decreasing it is possible to reach maximum array size with even 1 hero :p
You should really use an indexing method that has dynamic index recycling.
If you want i can rework your indexing a bit so that it uses it, making this system far more efficent than now.
Hope this doesn't sound like advertisement but if you are interested more about dynamic indexes and index recycling you could check the tutorial i wrote about mine indexing method which is highly efficent and really suitable for systems(if you want the arc function feel free to check my missile system and take it).
Gl and this is a great improvement from your previous work! +rep

Well, what I think that the system can't be laggy, because the loop integers are reseted, then the system will start over at 0. I'll check your tutorial and see if I may learn something new! :) I really appreciate your help! Thanks. +rep for you 2.

Edit: Oh, couldn't rep you again.. :(
 
Top