June 19, 2013, 03:51:22 AM

Author Topic: [Tutorial] Coding Advanced Effects.  (Read 6351 times)

Offline AvasT

  • Brazilian
  • Watchdog
  • Level 7 Expert
  • *****
  • Posts: 1297
  • Ride BMX!
[Tutorial] Coding Advanced Effects.
« on: November 16, 2010, 05:27:43 PM »
Before you start learning the advanced effect coding, make sure you've learned everything about the basics of coding effects, otherwise you won't understand what we're teaching you.
If you still have doubts about the basic effects, go to this topic (http://warcraft-source.com/board/index.php/topic,8509.msg79907.html#new) and feel free to ask em.

This tutorial gonna be divided in three parts, so let's start:

*Part 1*
[Getting locations]
Basicly that's the same thing as getting locations on the basic effects, so for time-saving:
Depending on the type of effect that you'll use, you'll need to get the locations, maybe two or one, who knows. With the following command: es_getplayerlocation, this command requires 4 arguments:

X Coord
Y Coord
Z Coord
and
Userid


Counter-Strike:Source uses AXIS Coords, and WCS already has the variables related to coords setted (wcs_x1, wcs_y1, wcs_z1, wcs_x2, wcs_y2 and wcs_z2) so we really don't need to worry about that.

e.g.:es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 event_var(userid)

On a player_attacker skill this effect will be displayed in your victim, on an player_spawn on you

*Part 2*
[Creating Vector Strings]
Now it comes the "hard" part, actually not for me, but ok xD
You'll have to set two variables, one called vector1, and another called vector2.
Then we'll use the command es_createvectorstring to do it.

Example:
Only create the vector after getting locations!
es_createvectorstring vector1 wcs_x1 wcs_y1 wcs_z1
This creates an vector between the variables wcs_x1, wcs_y1 and wcs_z1, so now we can refer to em as vector1.
es_createvectorstring vector1 wcs_x2 wcs_y2 wcs_z2

Now that you've created the vector strings, you're good to go.
Important note:
If you already know how to use es_math commands, to tweak the positions, make sure that you use math before using the vectorstring, if so it will work, otherwise it won't.

*Part 3*
[Choosing the est_effects, and tweaks]
Now that you've done everything correctly, let's choose an syntax:

Here is the Syntax list:
Code: [Select]
est_Effect_01 - Armor Ricochet Effect
est_Effect_01 <player Filter> <delay> <model> <position "X Y Z"> <direction "X YZ">

est_Effect_02 - Beam Ent Point Effect
est_Effect_02 <player Filter> <delay> <model> <start ent> <start position "X Y Z"> <end ent> <end position "X Y Z"> <framerate> <life> <start width> <end width><fade distance> <amplitude> <R> <G> <B> <A> <speed>

est_Effect_03 - Beam Ents Effect
est_Effect_03 <player Filter> <delay> <model> <start ent> <end ent> <framerate><life><start width><end width><fade distance><amplitude><R><G><B><A><speed>

est_Effect_04 - Beam Follow Ent Effect
est_Effect_04 <player Filter> <delay> <model> <Follow ent> <life> <start width> <end width> <fade distance> <R> <G> <B> <A>

est_Effect_05 - Beam Laser Effect
est_Effect_05 <player Filter> <delay> <model> <start ent> <end ent> <framerate> <life> <start width> <end width> <fade distance> <amplitude> <R> <G> <B> <A> <speed>

est_Effect_06 - Beam Points Effect
est_Effect_06 <player Filter> <delay> <model> <start position "X Y Z"> <end position "X Y Z"> <framerate> <life> <start width> <end width> <fade distance> <amplitude> <R> <G> <B> <A> <speed>

est_Effect_07 - Beam Ring Ent Effect
est_Effect_07 <player Filter> <delay> <model> <start ent> <end ent> <framerate><life> <width> <spread> <amplitude> <R> <G> <B> <A> <speed>

est_Effect_08 - Beam Ring Ent Effect
est_Effect_08 <player Filter> <delay> <model> <center "X Y Z"> <Start Radius> <End Radius> <framerate> <life> <width> <spread> <amplitude> <R> <G> <B> <A> <speed> <flags>

est_Effect_09 - Beam Spline Effect
est_Effect_09 <player Filter> <delay> <model> <points> <rgPoints "X Y Z">

est_Effect_10 - Blood Sprite Effect
est_Effect_10 <player Filter> <delay> <model> <origin "X Y Z"> <direction "X Y Z"> <R> <G> <B> <A> <Size>

est_Effect_11 - Blood Stream Effect
est_Effect_11 <player Filter> <delay> <model> <origin "X Y Z"> <direction "X Y Z"> <R> <G> <B> <A> <Amount>

est_Effect_12 - Blood Stream Effect
est_Effect_12 <player Filter> <delay> <model> <origin "X Y Z"> <angle "Pitch YawRoll"> <Size "X Y Z"> <Velocity "X Y Z"> <Randomization> <count> <time> <flags>

est_Effect_13 - BSP Decal (perminately attach a sprite to an entity, use 0 for the world)
est_Effect_13 <player Filter> <delay> <decal> <origin "X Y Z"> <target entity index>

est_Effect_14 - Bubbles Effect
est_Effect_14 <player Filter> <delay> <model> <Min "X Y Z"> <Max "X Y Z"> <heigth> <count> <speed>

est_Effect_15 - Bubble Trail Effect
est_Effect_15 <player Filter> <delay> <model> <Min "X Y Z"> <Max "X Y Z"> <heigth> <count> <speed>

est_Effect_16 - Decal Effect
est_Effect_16 <player Filter> <delay> <model> <Position "X Y Z"> <Start "X Y Z"><entity index> <hitbox>

est_Effect_17 - Dust Effect
est_Effect_17 <player Filter> <delay> <Position "X Y Z"> <Direction "X Y Z"> <size> <speed>

est_Effect_18 - Dynamic Light Effect
est_Effect_18 <player Filter> <delay> <Position "X Y Z"> <R> <G> <B> <exponent> <radius> <time> <decay>

est_Effect_19 - Energy Splash Effect
est_Effect_19 <player Filter> <delay> <Position "X Y Z"> <Direction "X Y Z"> <Explosive>

est_Effect_20 - Energy Splash Effect
est_Effect_20 <player Filter> <delay> <model> <Position "X Y Z"> <scale> <framerate> <flags> <radius> <magnitude> [Normal "X Y Z"] [Material Type]

est_Effect_21 - Fizz Effect
est_Effect_21 <player Filter> <delay> <model> <entity> <density> <current>

est_Effect_22 - Guass Explosion Effect
est_Effect_22 <player Filter> <delay> <Position "X Y Z"> <Direction "X Y Z"> <type>

est_Effect_23 - Glow Sprite Effect
est_Effect_23 <player Filter> <delay> <model> <Position "X Y Z"> <life> <size> <brightness>

est_Effect_24 - Large Funnel Effect
est_Effect_24 <player Filter> <delay> <model> <Position "X Y Z"> <reversed>

est_Effect_25 - Metal Sparks Effect
est_Effect_25 <player Filter> <delay> <Position "X Y Z"> <Direction "X Y Z">

est_Effect_26 - Muzzle Flash Effect
est_Effect_26 <player Filter> <delay> <Position "X Y Z"> <Angle "Pitch Yaw Roll"> <scale> <type>

est_Effect_27 - Physics Prop Effect
est_Effect_27 <player Filter> <delay> <model> <subtype> <Position "X Y Z"> <Angle "Pitch Yaw Roll"> <Velocity "X Y Z"> <flags> <unknown>

est_Effect_28 - Player Decal Effect
est_Effect_28 <player Filter> <delay> <Position "X Y Z"> <playerindex> <entity>

est_Effect_29 - Project Decal Effect
est_Effect_29 <player Filter> <delay> <decal> <Position "X Y Z"> <Angle "Pitch Yaw Roll"> <distance>

est_Effect_30 - Show Line Effect
est_Effect_30 <player Filter> <delay> <Start "X Y Z"> <End "X Y Z">

est_Effect_31 - Smoke Effect
est_Effect_31 <player Filter> <delay> <model> <Position "X Y Z"> <scale> <framerate>

est_Effect_32 - Spark Effect
est_Effect_32 <Player Filter> <Delay> <Position "X Y Z"> <Magnitude> <Trail Length> <Direction "X Y Z">

est_Effect_33 - Sprite Effect
est_Effect_33 <Player Filter> <Delay> <model> <Position "X Y Z"> <size> <brightness>

est_Effect_34 - Sprite Spray Effect
est_Effect_34 <Player Filter> <Delay> <model> <Position "X Y Z"> <Direction "X YZ"> <speed> <noise> <count>

est_Effect_35 - World Decal Effect
est_Effect_35 <Player Filter> <Delay> <Decal> <Position "X Y Z">

Currently supported/working:
Code: [Select]
est_effect_01
est_effect_02
est_effect_03
est_effect_04
est_effect_05
est_effect_06
est_effect_07
est_effect_08
est_effect_09
est_effect_10
est_effect_11
est_effect_12
est_effect_13
est_effect_14
est_effect_18
est_effect_24

Important Note:
You might be wondering, why the hell there's an _ after the est_effect thing?
These are the advanced type of effects!

So until now we have:
Code: [Select]
es_xset vector1 0
es_xset vector2 0
es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 event_var(userid)
es_getplayerlocation wcs_x2 wcs_y2 wcs_z2 event_var(userid)
es_createvectorstring vector1 wcs_x1 wcs_y1 wcs_z1
es_createvectorstring vector2 wcs_x2 wcs_y2 wcs_z2

Now let's pick up and effect model:
I've choosed the est_effect_14, the bubble trail, which syntax is:
Code: [Select]
est_Effect_14 - Bubbles Effect
est_Effect_14 <player Filter> <delay> <model> <Min "X Y Z"> <Max "X Y Z"> <heigth> <count> <speed>
This one requires two vector, so two player locations.

Of course you may know what means delay, player filter, but i'll explain again:

Player Filter is who is going to see the effect, the currently working are:
Code: [Select]
#a : all
#d : dead
#t : terrorist
#ct : counter-terrorist
userid : specific player

Delay is the delay between each effect, after it runs, when it's going to appear;

And model is the sprite that you'll choose (Sprite list avalaible in the Basic Effect Coding)

So let's try it out:
Code: [Select]
es_xset vector1 0
es_xset vector2 0
es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 event_var(userid)
es_getplayerlocation wcs_x2 wcs_y2 wcs_z2 event_var(userid)
es_createvectorstring vector1 wcs_x1 wcs_y1 wcs_z1
es_createvectorstring vector2 wcs_x2 wcs_y2 wcs_z2
es est_effect_14 #a 0 sprites/lgtning.vmt server_var(vector1)[Vector 1] server_var(vector2)[Vector 2]

Now let's tweak it:

Code: [Select]
es_xset vector1 0
es_xset vector2 0
es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 event_var(userid)
es_getplayerlocation wcs_x2 wcs_y2 wcs_z2 event_var(userid)
es_createvectorstring vector1 wcs_x1 wcs_y1 wcs_z1
es_createvectorstring vector2 wcs_x2 wcs_y2 wcs_z2
es est_effect_14 #a 0 sprites/lgtning.vmt server_var(vector1)[Vector 1] server_var(vector2)[Vector 2]

This one uses: <height> <count> <speed>

Then we're gonna use
Code: [Select]
es_xset vector1 0
es_xset vector2 0
es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 event_var(userid)
es_getplayerlocation wcs_x2 wcs_y2 wcs_z2 event_var(userid)
es_createvectorstring vector1 wcs_x1 wcs_y1 wcs_z1
es_createvectorstring vector2 wcs_x2 wcs_y2 wcs_z2
es est_effect_14 #a 0 sprites/lgtning.vmt server_var(vector1)[Vector 1] server_var(vector2)[Vector 2] 1000<height> 50<count> 100<speed>

This will display 50 lightings with an speed of 100 in-game units.

So that's basicly all you should know, the initial vectors, end vectors and etc...
If you have any doubts, just ask here :)

Tutorial by: AvasT
« Last Edit: February 17, 2013, 05:03:36 PM by AvasT »




Quote
Never tell your password to anyone.
23:51 - MiB: Hi wife
23:51 - MiB: Imma slap you since you been naughty
23:51 - AvasT: Hi husband
23:51 - AvasT: Sure, on my ass
23:51 - MiB: Imma slap you with my big stick!
23:51 - AvasT: Ok
23:52 - MiB: *-*

Offline MiBShidobu

  • Level 7 Expert
  • *****
  • Posts: 1626
Re: [Tutorial Advanced] Coding Advanced Effects.
« Reply #1 on: November 16, 2010, 05:29:56 PM »
Remember, you can only make 64 per frame :P.

~MiB
Quote from: Tha Pwned
2:35 PM - La Muerte: pwned + forum = fail
2:36 PM - Tha Pwned: +1
2:36 PM - Tha Pwned: Don't quote

Offline AvasT

  • Brazilian
  • Watchdog
  • Level 7 Expert
  • *****
  • Posts: 1297
  • Ride BMX!
Re: [Tutorial Advanced] Coding Advanced Effects.
« Reply #2 on: November 16, 2010, 05:34:30 PM »
Yeees :D




Quote
Never tell your password to anyone.
23:51 - MiB: Hi wife
23:51 - MiB: Imma slap you since you been naughty
23:51 - AvasT: Hi husband
23:51 - AvasT: Sure, on my ass
23:51 - MiB: Imma slap you with my big stick!
23:51 - AvasT: Ok
23:52 - MiB: *-*

Offline Rioux.

  • Level 7 Expert
  • *****
  • Posts: 194
  • Keep Working :)
Re: [Tutorial Advanced] Coding Advanced Effects.
« Reply #3 on: November 16, 2010, 06:27:30 PM »
Hahahahaha i think we made a good joob thanks AvasT :)

Offline Jhonam

  • Level 7 Expert
  • *****
  • Posts: 1171
Re: [Tutorial Advanced] Coding Advanced Effects.
« Reply #4 on: November 16, 2010, 06:34:19 PM »
But vector1 not working yet....
I - Russian, and that says it all...

Offline AvasT

  • Brazilian
  • Watchdog
  • Level 7 Expert
  • *****
  • Posts: 1297
  • Ride BMX!
Re: [Tutorial Advanced] Coding Advanced Effects.
« Reply #5 on: November 16, 2010, 06:42:26 PM »
Have you setted it?




Quote
Never tell your password to anyone.
23:51 - MiB: Hi wife
23:51 - MiB: Imma slap you since you been naughty
23:51 - AvasT: Hi husband
23:51 - AvasT: Sure, on my ass
23:51 - MiB: Imma slap you with my big stick!
23:51 - AvasT: Ok
23:52 - MiB: *-*

Offline Jhonam

  • Level 7 Expert
  • *****
  • Posts: 1171
I - Russian, and that says it all...

Offline Rioux.

  • Level 7 Expert
  • *****
  • Posts: 194
  • Keep Working :)
Re: [Tutorial Advanced] Coding Advanced Effects.
« Reply #7 on: November 16, 2010, 07:02:53 PM »
For me works perfectly :)

Offline Jhonam

  • Level 7 Expert
  • *****
  • Posts: 1171
Re: [Tutorial Advanced] Coding Advanced Effects.
« Reply #8 on: November 16, 2010, 07:06:42 PM »
For me works perfectly :)
Yes,
This not working:

Code: [Select]
block stone
{
  es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid)
  es_createvectorstring vector1 server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1)
  es est_effect_14 #a 0 models\props_wasteland\rockgranite03b.mdl server_var(vector1) server_var(vector1) 200 30 900
  es est_effect_08 #a 0 sprites/lgtning.vmt server_var(vector1) 20 80 1 2 100 400 3 128 64 12 255 10 1
}

Because no defined var vector1

Should be:

Code: [Select]
block stone
{
  es_xset vector1 0
  es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid)
  es_createvectorstring vector1 server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1)
  es est_effect_14 #a 0 models\props_wasteland\rockgranite03b.mdl server_var(vector1) server_var(vector1) 200 30 900
  es est_effect_08 #a 0 sprites/lgtning.vmt server_var(vector1) 20 80 1 2 100 400 3 128 64 12 255 10 1
}
I - Russian, and that says it all...

Offline AvasT

  • Brazilian
  • Watchdog
  • Level 7 Expert
  • *****
  • Posts: 1297
  • Ride BMX!
Re: [Tutorial Advanced] Coding Advanced Effects.
« Reply #9 on: November 16, 2010, 07:10:31 PM »
That's exactly what i said --'

Did you put in svar.txt the variable vector1?
Or setted it?




Quote
Never tell your password to anyone.
23:51 - MiB: Hi wife
23:51 - MiB: Imma slap you since you been naughty
23:51 - AvasT: Hi husband
23:51 - AvasT: Sure, on my ass
23:51 - MiB: Imma slap you with my big stick!
23:51 - AvasT: Ok
23:52 - MiB: *-*

Offline Jhonam

  • Level 7 Expert
  • *****
  • Posts: 1171
Re: [Tutorial Advanced] Coding Advanced Effects.
« Reply #10 on: November 16, 2010, 07:11:51 PM »
That's exactly what i said --'

Did you put in svar.txt the variable vector1?
Or setted it?

I understud it, sorry)
I - Russian, and that says it all...

Offline svave

  • Level 0 Beginner
  • Posts: 15
  • Wcsmod cool!!
Re: [Tutorial Advanced] Coding Advanced Effects.
« Reply #11 on: January 26, 2011, 12:19:59 PM »
hello please help here is my effect it but it on the new mod does not work help me fix it (worked before).

Code: [Select]
sfx = "es es_xgetplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid);es_xmath wcs_z1 + 15;es est_effect 7 #a 0 sprites/smoke.vmt server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) 100 10;es_delayed 0.5 es es_xgetplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid);es_xmath wcs_z1 + 20;es est_effect 7 #a 0 sprites/smoke.vmt server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) 100 10;es_delayed 1 es es_xgetplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid);es_xmath wcs_z1 + 30;es est_effect 7 #a 0 sprites/smoke.vmt server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) 100 10;es_delayed 15 es es_xgetplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid);es_xmath wcs_z1 + 55;es est_effect 7 #a 0 sprites/smoke.vmt server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) 100 10"

Offline tintinibar

  • Level 7 Expert
  • *****
  • Posts: 172
Re: [Tutorial Advanced] Coding Advanced Effects.
« Reply #12 on: February 11, 2011, 08:53:26 PM »
I need help with #24. On my test script I get purple checkerboards no matter what I do:
Code: [Select]
block load
{
es_xsetinfo est24 "1.2"
    es_makepublic est24 "1.2"
}
block unload
{
es_xsetinfo est24 0
}
event player_jump

{
es_set model1 0
es_set model2 0
es_set model3 0
es_set model4 0
es_set model5 0
es_set model6 0
es_set model7 0
es_set model8 0
es_set model9 0
es_set model10 0
es_set model11 0
es_set model12 0
es_set model13 0
es_set model14 0
es_set model15 0
es_set model16 0
es_set model17 0
es_set model18 0
es_set model19 0
es_set model20 0
es_set rnum 0
es_rand rnum 0 20
es_precachemodel model1 "sprites/crystal_beam1.vmt"
es_precachemodel model2 "sprites/lgtning.vmt"
es_precachemodel model3 "sprites/blueglow1.vmt"
es_precachemodel model4 "sprites/physring1.vmt"
es_precachemodel model5 "sprites/orangelight1.vmt"
es_precachemodel model6 "sprites/smoke.vmt"
es_precachemodel model7 "effects/blueblacklargebeam.vmt"
es_precachemodel model8 "effects/fluttercore.vmt"
es_precachemodel model9 "effects/prisonmap_disp.vmt"
es_precachemodel model10 "effects/fleck_wood1.vmt"
es_precachemodel model11 "effects/flame01.vmt"
es_precachemodel model12 "sprites/laser.vmt"
es_precachemodel model13 "effects/fire_cloud2.vmt"
es_precachemodel model14 "effects/fleck_cement1.vmt"
es_precachemodel model15 "effects/fleck_cement2.vmt"
es_precachemodel model16 "effects/fleck_glass2.vmt"
es_precachemodel model17 "effects/hydragutbeamcap.vmt"
es_precachemodel model18 "effects/spark.vmt"
es_precachemodel model19 "effects/slime1.vmt"
es_precachemodel model20 "effects/splashwake1.vmt"
//es_set x1 0
//es_set y1 0
//es_set z1 0
es_set x2 0
es_set y2 0
es_set z2 0
//es_xset v2 0
es_xset v1 0
es_getplayerlocation x2 y2 z2 event_var(userid)
es_createvectorstring v1 server_var(x2) server_var(y2) server_var(z2)
//es_getplayerlocation x1 y1 z1 event_var(userid)
//es_createvectorstring v2 server_var(x1) server_var(y1) server_var(z1)
if (server_var(rnum) equalto 1) then est_effect_24 #a 0.1 server_var(model1) server_var(v1) 1
if (server_var(rnum) equalto 2) then est_effect_24 #a 0.1 server_var(model2) server_var(v1) 1
if (server_var(rnum) equalto 3) then est_effect_24 #a 0.1 server_var(model3) server_var(v1) 1
if (server_var(rnum) equalto 4) then est_effect_24 #a 0.1 server_var(model4) server_var(v1) 1
if (server_var(rnum) equalto 5) then est_effect_24 #a 0.1 server_var(model5) server_var(v1) 1
if (server_var(rnum) equalto 6) then est_effect_24 #a 0.1 server_var(model6) server_var(v1) 1
if (server_var(rnum) equalto 7) then est_effect_24 #a 0.1 server_var(model7) server_var(v1) 1
if (server_var(rnum) equalto 8) then est_effect_24 #a 0.1 server_var(model8) server_var(v1) 1
if (server_var(rnum) equalto 9) then est_effect_24 #a 0.1 server_var(model9) server_var(v1) 1
if (server_var(rnum) equalto 10) then est_effect_24 #a 0.1 server_var(model10) server_var(v1) 1
if (server_var(rnum) equalto 11) then est_effect_24 #a 0.1 server_var(model11) server_var(v1) 1
if (server_var(rnum) equalto 12) then est_effect_24 #a 0.1 server_var(model12) server_var(v1) 1
if (server_var(rnum) equalto 13) then est_effect_24 #a 0.1 server_var(model13) server_var(v1) 1
if (server_var(rnum) equalto 14) then est_effect_24 #a 0.1 server_var(model14) server_var(v1) 1
if (server_var(rnum) equalto 15) then est_effect_24 #a 0.1 server_var(model15) server_var(v1) 1
if (server_var(rnum) equalto 16) then est_effect_24 #a 0.1 server_var(model16) server_var(v1) 1
if (server_var(rnum) equalto 17) then est_effect_24 #a 0.1 server_var(model17) server_var(v1) 1
if (server_var(rnum) equalto 18) then est_effect_24 #a 0.1 server_var(model18) server_var(v1) 1
if (server_var(rnum) equalto 19) then est_effect_24 #a 0.1 server_var(model19) server_var(v1) 1
if (server_var(rnum) equalto 20) then est_effect_24 #a 0.1 server_var(model20) server_var(v1) 1
es_msg #green server_var(rnum)
}

Offline tintinibar

  • Level 7 Expert
  • *****
  • Posts: 172
Re: [Tutorial Advanced] Coding Advanced Effects.
« Reply #13 on: February 23, 2011, 12:52:00 AM »
anyone?

Offline Hypa

  • Level 7 Expert
  • *****
  • Posts: 352
  • Blubb
Re: [Tutorial Advanced] Coding Advanced Effects.
« Reply #14 on: March 20, 2011, 12:33:54 AM »
great Tutorial, finally i found a task for my graphfuc calculator from school^^
AWESOME STUFF HERE

If you need help contact me:
Steam: LiteLive
E-Mail: hypakiller@hotmail.de
or here on this Forum.

Supported Languages are German English Spanish