1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Find your way through the deepest dungeon in the 18th Mini Mapping Contest Poll.
    Dismiss Notice
  3. A brave new world lies beyond the seven seas. Join the 34th Modeling Contest today!
    Dismiss Notice
  4. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
Hive 3 Remoosed BETA - NOW LIVE. Go check it out at BETA Hive Workshop! Post your feedback in this new forum BETA Feedback.
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Kamehameha Version 4.50

Submitted by Dat-C3
This bundle is marked as approved. It works and satisfies the submission rules.
Yay with the help of deathismyfriend,PurgeandFire,BPower,Ceday,edo494 I finally got this spell fully fixed MUI leakless. Thank you, you guys. I would just like to give another special thanks to them because this spell would of been rejected without these guys.

I am kind of lame when it comes to placement and sometimes even the best needs help I would hope?

Special Thanks goes to MetaDeath for his unit-group lines as well original idea, without him I wouldn't be submitting this spell today.

A thanks also goes out to Ajijang2013 for inspiring me to submit this sooner.

Basically it creates a line of units every so few decimal seconds causing damage to anyone nearby this line.


Features to come:

More customize options for the spell. - Done
Better move function. - Done
Maybe a collision effect. - Done
Different versions of the spell in #1 post so people know how to make different kinds of beams without spamming triggers. - No idea when I will do this

If you want anything else/more suggest it down below in the comments.

Posted Triggers

  • Events
    • Map initialization
  • Conditions
  • Actions
    • -------- This is here to let the system know to destroy trees or not with this spell --------
    • Set KillTrees = True
    • -------- This is the order ID of the spell, shouldn't need to be changed. --------
    • Set kameorder99 = (Order(flare))
    • -------- This is your ability/spell --------
    • Set kame = Kamehameha
    • -------- This is the Attack Type --------
    • Set kameatktype = Spells
    • -------- This is the Damage Type and this one ignores armor --------
    • Set kamedmgtype = Universal
    • -------- This is the special effect that pops up when a unit gets hit by the spell --------
    • Set kamesfxoncollide = Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
    • -------- This is what your beam/projectiles will look like --------
    • Set kamemissilesfx = Abilities\Weapons\SpiritOfVengeanceMissile\SpiritOfVengeanceMissile.mdl
    • -------- This sets your explosion effects --------
    • Set kamefinaleffect = Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
    • Set kamefinaleffect2 = Objects\Spawnmodels\NightElf\NEDeathMedium\NEDeath.mdl
    • -------- We do this to enable it to work better then 0.03 and to be more precise. --------
    • Custom script: set udg_kametimer = 0.03125
    • -------- This is how you can add events through GUI/Triggering --------
    • Trigger - Add to kameloop <gen> the event (Time - Every kametimer seconds of game time)


  • Events
    • Unit - A unit Starts the effect of an ability
  • Conditions
    • (Ability being cast) Equal to Kamehameha
  • Actions
    • -------- Setting the index to make the entire spell work --------
    • Set kameindex99 = (kameindex99 + 1)
    • -------- --------
    • -------- Creating and setting the unit groups because the GUI version doesn't work correctly --------
    • Custom script: set udg_kamegroup99[udg_kameindex99] = CreateGroup()
    • -------- --------
    • -------- This identifes the caster --------
    • Set kameu99[kameindex99] = (Triggering unit)
    • -------- --------
    • Set kamelevel[kameindex99] = (Level of kame for kameu99[kameindex99])
    • -------- --------
    • -------- This is how much your damage gets multiplied at the final explosion --------
    • -------- Set it to 1 if you don't want any bonus explosion damage --------
    • Set kameendmultiplier[kameindex99] = 4.00
    • -------- --------
    • -------- This identifes the player --------
    • Set kameplayer[kameindex99] = (Owner of kameu99[kameindex99])
    • -------- --------
    • -------- This is your damage --------
    • Set kamedmg[kameindex99] = (25.00 + ((Real(kamelevel[kameindex99])) x 50.00))
    • -------- --------
    • -------- This is the current speed your beam/spell moves at per 0.03 seconds --------
    • Set kamespeed[kameindex99] = (10.00 + ((Real(kamelevel[kameindex99])) x 10.00))
    • -------- --------
    • -------- This is the size of the projectile at the front of the beam --------
    • Set kammainbeamsize[kameindex99] = (200.00 + ((Real(kamelevel[kameindex99])) x 100.00))
    • -------- --------
    • -------- This is the area where units get hit by the spell --------
    • Set kameAoE[kameindex99] = (150.00 + ((Real(kamelevel[kameindex99])) x 20.00))
    • -------- --------
    • -------- This is the entire beam size besides the front --------
    • Set kamesize[kameindex99] = (200.00 + ((Real(kamelevel[kameindex99])) x 100.00))
    • -------- --------
    • -------- This helps clean a leak --------
    • Set kamep = (Position of kameu99[kameindex99])
    • -------- --------
    • -------- This sets where you targeted the ground with so it'll know when to stop/explode at that point --------
    • Set kamecastp99[kameindex99] = (Target point of ability being cast)
    • -------- --------
    • -------- This creates the front part of the beam --------
    • Unit - Create 1 Dummy for kameplayer[kameindex99] at kamep facing (Angle from kamep to kamecastp99[kameindex99]) degrees
    • Set kamedummyu99[kameindex99] = (Last created unit)
    • -------- This adds the effect of a blue beam --------
    • Special Effect - Create a special effect attached to the origin of kamedummyu99[kameindex99] using Abilities\Weapons\SpiritOfVengeanceMissile\SpiritOfVengeanceMissile.mdl
    • Set kamesfx99[kameindex99] = (Last created special effect)
    • -------- --------
    • -------- This is to set it's size and height so it isn't in the ground --------
    • Animation - Change kamedummyu99[kameindex99]'s size to (kammainbeamsize[kameindex99]%, 100.00%, 100.00%) of its original size
    • Animation - Change kamedummyu99[kameindex99] flying height to 75.00 at 0.00
    • -------- --------
    • Custom script: call RemoveLocation(udg_kamep)
    • -------- --------
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • kameindex99 Equal to 1
      • Then - Actions
        • -------- Don't forget to turn this on when imported into your map --------
        • Trigger - Turn on kameloop <gen>
      • Else - Actions
    • -------- --------


  • Events
  • Conditions
  • Actions
    • -------- All the stuff that is easily changeable is already in kameinit and kamecast for you --------
    • -------- Only edit stuff here once you understand what is what if even only a little --------
    • -------- Some knowledge is better then going into it with nothing --------
    • -------- --------
    • For each (Integer kameloop99) from 1 to kameindex99, do (Actions)
      • Loop - Actions
        • -------- This checks where your front beam is --------
        • Set kamep = (Position of kamedummyu99[kameloop99])
        • -------- --------
        • -------- Destroys trees in the path of the beam only if the value is set to true --------
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • KillTrees Equal to True
          • Then - Actions
            • Destructible - Pick every destructible in (Region centered at kamep with size (kameAoE[kameloop99], kameAoE[kameloop99])) and do (Actions)
              • Loop - Actions
                • Set ISD_d = (Picked destructible)
                • Trigger - Run system <gen> (checking conditions)
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • ISD_boolean Equal to True
                  • Then - Actions
                    • Set ISD_d = (Picked destructible)
                    • Destructible - Kill ISD_d
                    • Set ISD_d = No destructible
                  • Else - Actions
          • Else - Actions
        • -------- The conditions are doing a distance check to see if the beam arrived at its explsion point --------
        • -------- It also is checking to make sure your caster is still focusing the spell --------
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • (Distance between kamep and kamecastp99[kameloop99]) Greater than or equal to 20.00
            • (Current order of kameu99[kameloop99]) Equal to kameorder99
          • Then - Actions
            • -------- This sets the radius to damage units within --------
            • Set kamedmggroup = (Units within kameAoE[kameloop99] of kamep)
            • Unit Group - Pick every unit in kamedmggroup and do (Actions)
              • Loop - Actions
                • Set kamepickedu = (Picked unit)
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • (kamepickedu is dead) Not equal to True
                    • (kamepickedu is hidden) Not equal to True
                    • (kamepickedu belongs to an enemy of kameplayer[kameloop99]) Equal to True
                  • Then - Actions
                    • Unit - Cause kameu99[kameloop99] to damage kamepickedu, dealing kamedmg[kameloop99] damage of attack type kameatktype and damage type kamedmgtype
                    • -------- This sets the collide effect as well makes sure it doesn't lag too badly --------
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • (Random integer number between 1 and 2) Equal to 1
                      • Then - Actions
                        • Special Effect - Create a special effect attached to the chest of kamepickedu using kamesfxoncollide
                        • Special Effect - Destroy (Last created special effect)
                      • Else - Actions
                  • Else - Actions
                • Set kamepickedu = No unit
            • -------- We can't forget to get rid of the group leak --------
            • Custom script: call DestroyGroup(udg_kamedmggroup)
            • -------- This creates the entire beam besides the front --------
            • Set kamedumdumindexer99 = (kamedumdumindexer99 + 1)
            • Unit - Create 1 Dummy for (Owner of kameu99[kameloop99]) at kamep facing (Angle from kamep to kamecastp99[kameloop99]) degrees
            • Set kamequickunit = (Last created unit)
            • Unit - Change ownership of kamequickunit to Neutral Victim and Retain color
            • Player - Set Neutral Victim handicap to (100.00 + (Real(kamedumdumindexer99)))%
            • Unit - Change ownership of kamequickunit to kameplayer[kameloop99] and Retain color
            • Player - Set Neutral Victim handicap to 100.00%
            • Unit Group - Add kamequickunit to kamegroup99[kameloop99]
            • Special Effect - Create a special effect attached to the origin of kamequickunit using kamemissilesfx
            • Set kame2sfx99[(Integer((Max life of kamequickunit)))] = (Last created special effect)
            • Animation - Change kamequickunit's size to (kamesize[kameloop99]%, 100.00%, 100.00%) of its original size
            • Animation - Change kamequickunit flying height to 75.00 at 0.00
            • Set kamequickunit = No unit
            • -------- --------
            • -------- This sets the radius to damage units within all of the beam --------
            • Unit Group - Pick every unit in kamegroup99[kameloop99] and do (Actions)
              • Loop - Actions
                • Set kamepickedu2 = (Picked unit)
                • Set kamep3 = (Position of kamepickedu2)
                • Set kamedmggroup = (Units within kameAoE[kameloop99] of kamep3)
                • Unit Group - Pick every unit in kamedmggroup and do (Actions)
                  • Loop - Actions
                    • Set kamepickedu = (Picked unit)
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • (kamepickedu is dead) Not equal to True
                        • (kamepickedu is hidden) Not equal to True
                        • (kamepickedu belongs to an enemy of kameplayer[kameloop99]) Equal to True
                      • Then - Actions
                        • Unit - Cause kameu99[kameloop99] to damage kamepickedu, dealing kamedmg[kameloop99] damage of attack type kameatktype and damage type kamedmgtype
                        • -------- This sets the collide effect as well makes sure it doesn't lag too badly --------
                        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • (Random integer number between 1 and 2) Equal to 1
                          • Then - Actions
                            • Special Effect - Create a special effect attached to the chest of kamepickedu using kamesfxoncollide
                            • Special Effect - Destroy (Last created special effect)
                          • Else - Actions
                      • Else - Actions
                    • Set kamepickedu = No unit
                • Custom script: call RemoveLocation(udg_kamep3)
                • Set kamepickedu2 = No unit
                • Custom script: call DestroyGroup(udg_kamedmggroup)
            • -------- --------
            • -------- This is how we move a beam --------
            • Set kamep2 = (kamep offset by kamespeed[kameloop99] towards (Angle from kamep to kamecastp99[kameloop99]) degrees)
            • Custom script: call SetUnitX ( udg_kamedummyu99[udg_kameloop99] , GetLocationX(udg_kamep2))
            • Custom script: call SetUnitY ( udg_kamedummyu99[udg_kameloop99] , GetLocationY(udg_kamep2))
            • Custom script: call RemoveLocation(udg_kamep2)
            • -------- --------
          • Else - Actions
            • -------- Finishing/explosion effects --------
            • Special Effect - Create a special effect at kamep using kamefinaleffect
            • Special Effect - Destroy (Last created special effect)
            • Special Effect - Create a special effect at kamep using kamefinaleffect2
            • Special Effect - Destroy (Last created special effect)
            • -------- --------
            • -------- Destroys trees within the blast radius only if the value was set to true --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • KillTrees Equal to True
              • Then - Actions
                • Destructible - Pick every destructible in (Region centered at kamep with size ((kameAoE[kameloop99] x 2.00), (kameAoE[kameloop99] x 2.00))) and do (Actions)
                  • Loop - Actions
                    • Set ISD_d = (Picked destructible)
                    • Trigger - Run system <gen> (checking conditions)
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • ISD_boolean Equal to True
                      • Then - Actions
                        • Set ISD_d = (Picked destructible)
                        • Destructible - Kill ISD_d
                        • Set ISD_d = No destructible
                      • Else - Actions
              • Else - Actions
            • -------- Explosion damage --------
            • Set kamedmggroup = (Units within kameAoE[kameloop99] of kamep)
            • Unit Group - Pick every unit in kamedmggroup and do (Actions)
              • Loop - Actions
                • Set kamepickedu = (Picked unit)
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • (kamepickedu is dead) Not equal to True
                    • (kamepickedu is hidden) Not equal to True
                    • (kamepickedu belongs to an enemy of kameplayer[kameloop99]) Equal to True
                  • Then - Actions
                    • Unit - Cause kameu99[kameloop99] to damage kamepickedu, dealing (kamedmg[kameloop99] x kameendmultiplier[kameloop99]) damage of attack type kameatktype and damage type kamedmgtype
                    • -------- This sets the collide effect as well makes sure it doesn't lag too badly --------
                    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      • If - Conditions
                        • (Random integer number between 1 and 2) Equal to 1
                      • Then - Actions
                        • Special Effect - Create a special effect attached to the chest of kamepickedu using kamesfxoncollide
                        • Special Effect - Destroy (Last created special effect)
                      • Else - Actions
                  • Else - Actions
                • Set kamepickedu = No unit
            • Custom script: call DestroyGroup(udg_kamedmggroup)
            • -------- --------
            • -------- So the caster isn't stuck --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • (Current order of kameu99[kameloop99]) Equal to kameorder99
              • Then - Actions
                • Unit - Order kameu99[kameloop99] to Stop
              • Else - Actions
            • -------- --------
            • -------- Gets rid of the dummy unit --------
            • Unit - Kill kamedummyu99[kameloop99]
            • -------- --------
            • -------- Gets rid of the rest of the beam --------
            • Unit Group - Pick every unit in kamegroup99[kameloop99] and do (Actions)
              • Loop - Actions
                • Custom script: call DestroyEffect( udg_kame2sfx99[R2I(GetUnitStateSwap(UNIT_STATE_MAX_LIFE, GetEnumUnit()))] )
                • Unit - Add a 1.00 second Generic expiration timer to (Picked unit)
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • kamedumdumindexer99 Greater than 1000
              • Then - Actions
                • Set kamedumdumindexer99 = 0
              • Else - Actions
            • -------- --------
            • Custom script: call DestroyEffect(udg_kamesfx99[udg_kameindex99])
            • -------- Just nulling up some handles --------
            • Set kamedummyu99[kameloop99] = kamedummyu99[kameindex99]
            • Set kamedummyu99[kameindex99] = No unit
            • -------- --------
            • Set kamespeed[kameloop99] = kamespeed[kameindex99]
            • -------- --------
            • Set kameu99[kameloop99] = kameu99[kameindex99]
            • Set kameu99[kameindex99] = No unit
            • -------- --------
            • Set kameplayer[kameloop99] = kameplayer[kameindex99]
            • Custom script: set udg_kameplayer[udg_kameindex99] = null
            • -------- --------
            • Custom script: call RemoveLocation(udg_kamecastp99[udg_kameloop99])
            • Set kamecastp99[kameloop99] = kamecastp99[kameindex99]
            • -------- --------
            • Custom script: call DestroyGroup(udg_kamegroup99[udg_kameloop99])
            • Set kamegroup99[kameloop99] = kamegroup99[kameindex99]
            • Custom script: set udg_kamegroup99[udg_kameindex99] = null
            • -------- --------
            • -------- --------
            • Set kameindex99 = (kameindex99 - 1)
            • Set kameloop99 = (kameloop99 - 1)
            • -------- --------
            • -------- Turning the trigger off if nobodys casting so we don't cause extra lags --------
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • kameindex99 Equal to 0
              • Then - Actions
                • Set kamedumdumindexer99 = 0
                • Trigger - Turn off (This trigger)
              • Else - Actions
            • -------- --------
        • -------- Cleans up location at the top --------
        • Custom script: call RemoveLocation(udg_kamep)
        • -------- --------


Keywords:
tal,tal0n,dat,dat-c3,c3,kame,kamehameha,ha,hame,fail,pro,epic,lol,fun,1337,hax,o.o
Contents

Just another Warcraft III Kamehameha (Map)

Reviews
Moderator
21:53, 14th Jul 2014 BPower: Looks ok to me. Approved.
  1. Dat-C3

    Dat-C3

    Joined:
    Mar 15, 2012
    Messages:
    2,569
    Resources:
    10
    Models:
    1
    Maps:
    5
    Spells:
    3
    Tutorials:
    1
    Resources:
    10
    Glad you understand Ajijang2013, good luck. Also sounds like a indexing issue.
     
  2. Ajijang2013

    Ajijang2013

    Joined:
    Apr 16, 2014
    Messages:
    12
    Resources:
    0
    Resources:
    0
    Dude, how did you maintain the speed of the missle? Mine is everytime I cast the spell the head's speed is increasing as I cast the speed again and again.
     
  3. Ajijang2013

    Ajijang2013

    Joined:
    Apr 16, 2014
    Messages:
    12
    Resources:
    0
    Resources:
    0
    Dat-C3, my spell got a problem when I cast the spell, when the the one head is travelling when the second head is arrived at it's destination.. the second orb removed and the first one is not. Why? can you help me or anyone can help me?
     
  4. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,549
    Resources:
    23
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    5
    JASS:
    3
    Resources:
    23
    • -------- This creates the entire beam besides the front --------
    • Unit - Create 1 Dummy for (Owner of kameu99[kameloop99]) at kamep facing (Angle from kamep to kamecastp99[kameloop99]) degrees
    • Unit Group - Add (Last created unit) to kamegroup99[kameloop99]
    • Special Effect - Create a special effect attached to the origin of (Last created unit) using kamemissilesfx
    • Animation - Change (Last created unit)'s size to (kamesize[kameloop99]%, 100.00%, 100.00%) of its original size
    • Animation - Change (Last created unit) flying height to 75.00 at 0.00

    ^I think you know what I wanna say here. :p
    use varible!

    Maybe you can think of a boolean in config that allows user to destroy trees with kamehameha. yes/no :prazz:

    I've also stated it in Haley's kamehameha. I think doing a condition to prevent passing it higher cliff levels would be cool. So it would immediatly exploode then.
    (or configurable at least)

    I dont think following is really needed in your deindex part:
    • Set kamespeed[kameindex99] = 0.00
    • Set kameplayer[kameindex99] = Neutral Passive


    • -------- So the caster isn't stuck --------
    • Unit - Order kameu99[kameloop99] to Stop

    Could you explain, please? With this the unit will ignore the 1st move order, if user aborts casting.

    Else I think code looks ok and clean. Might be useful. :thumbs_up:
     
  5. Dat-C3

    Dat-C3

    Joined:
    Mar 15, 2012
    Messages:
    2,569
    Resources:
    10
    Models:
    1
    Maps:
    5
    Spells:
    3
    Tutorials:
    1
    Resources:
    10
    Heh, thanks. =)

    If you tell me the line of setting a real to current Z/terrain height then I might add something extra. otherwise I will make it so it doesn't fly around cliffs.

    Edit: If you noticed, I tried to make a terri-bad indexing system for them dummies. Kind of failed however I don't want to use someone else's work for this. I might change my mind soon if I can't find a solution though.
     
    Last edited: May 21, 2014
  6. BPower

    BPower

    Joined:
    Mar 18, 2012
    Messages:
    1,709
    Resources:
    21
    Spells:
    15
    Tutorials:
    1
    JASS:
    5
    Resources:
    21
    The tooltip is so-so and could need an improvement.

    • Set kamepickedu = No unit
    move this line out of the ForGroup loop. Below this loop you use "last created unit" multiple times. Here you could use your the unit variable, because variable lookups are faster than function calls.

    • Set kamespeed[kameindex99] = 0.00
    This doesn't do anything.
    • Set kameplayer[kameindex99] = Neutral Passive
    Delete this line aswell.

    • Custom script: if udg_kamegroup99[udg_kameindex99] == null then
    • //......
    • Custom script: set udg_kamegroup99[udg_kameindex99] = null

    The first condition is always true because you null the group in the end. So it's a needless check.
     
  7. Dat-C3

    Dat-C3

    Joined:
    Mar 15, 2012
    Messages:
    2,569
    Resources:
    10
    Models:
    1
    Maps:
    5
    Spells:
    3
    Tutorials:
    1
    Resources:
    10
    I'll fix it either today or tomorrow, thanks.

    EDIT: Time for the fixed version, hopefully it is approvable now. =) Let me know if you find anything else wrong with it.
     
    Last edited: Jun 29, 2014
  8. nhocklanhox6

    nhocklanhox6

    Joined:
    Feb 12, 2012
    Messages:
    335
    Resources:
    28
    Models:
    6
    Spells:
    21
    Tutorials:
    1
    Resources:
    28
    Not very effective, I guess.

    • -------- We do this to enable it to work better then 0.03 and to be more precise. --------
    • Custom script: set udg_kametimer = 0.03125
    • -------- This is how you can add events through GUI/Triggering --------
    • Trigger - Add to kameloop <gen> the event (Time - Every kametimer seconds of game time)


    Since you're using timer to run period trigger, you need to do this way:

    • Countdown Timer - Start kametimer as a Repeating timer that will expire in Period seconds


    instead of
    • Trigger - Turn on kameloop <gen>


    and

    • Countdown Timer - Pause kametimer


    imstead of
    • Trigger - Turn off (This trigger)


    I've test about this thing and I realize:
    Timer keep running even I turned period trigger off.
    This thing very hurt CPU and RAM you know, specifically is CPU, CPU keep high level when timer keep running. CPU Hot (Also drain more battery) => Performance decrease => Slow down computer. So it's very important thing. You really need to fix it.

    If you want proof, just tell me.

    Forgot something?
    • Set kameorder99 = (Order(flare))


    <=>

    • (Distance between kamep and kamecastp99[kameloop99]) Greater than or equal to 20.00
    • (Current order of kameu99[kameloop99]) Equal to (Order(flare))


    This is unsafe.

    • Unit - Set life of kamequickunit to (Real(kamedumdumindexer99))
      • Unit Group - Add kamequickunit to kamegroup99[kameloop99]
      • Special Effect - Create a special effect attached to the origin of kamequickunit using kamemissilesfx
      • Set kame2sfx99[(Integer((Life of kamequickunit)))] = (Last created special effect)


    You really need to do another way instead of get Life of kamequickunit and put it as a index.

    GUI version and this are the same.

    • -------- Creating and setting the unit groups because the GUI version doesn't work correctly --------
    • Custom script: set udg_kamegroup99[udg_kameindex99] = CreateGroup()


    you're wrong about this
    GUI version perfecly fine to use it, but keep it in mind, do not destroy it if you want to use it as a Entrie Unit Group.

    GUI is more cooler I guess, because even it's destroyed, it still can be use as a normal group but it can ONLY be used for
    • Unit Group - Pick every unit in Group and do (Actions)
      • Loop - Actions


    Proof: Simply
    hook
    native
    CreateGroup
    , and then create a variable as UnitGroup.

    • Set kamereal1 = (X of kamep2)
      • Custom script: call SetUnitX ( udg_kamedummyu99[udg_kameloop99] , udg_kamereal1 )
      • Set kamereal1 = (Y of kamep2)
      • Custom script: call SetUnitY ( udg_kamedummyu99[udg_kameloop99] , udg_kamereal1 )


    =>
    • Custom script: call SetUnitX ( udg_kamedummyu99[udg_kameloop99] , GetLocationX(kamep2))
    • Custom script: call SetUnitY ( udg_kamedummyu99[udg_kameloop99] , GetLocationY(kamep2))


    Don't get more useless space.

    • Animation - Change kamequickunit's size to (kamesize[kameloop99]%, 100.00%, 100.00%) of its original size
      • Animation - Change kamequickunit flying height to 75.00 at 0.00


    You can just simply do it via Object Unit Editor.

    I think this can be used as a spell global variable
    • Angle from kamep to kamecastp99[kameloop99])
    since your dummy or some stuffs still created from a same angle.

    • Custom script: call DestroyEffect(udg_kame2sfx99[R2I(GetUnitStateSwap(UNIT_STATE_LIFE, GetEnumUnit()))] )


    Even this is unsafe, but use
    GetUnitState
    instead of
    GetUnitStateSwap
    :)..

    Sorry, no offence


    Although I named variable very bad >.<, but I still have a good variables presentation than your (Lower case, Upper case, etc..)
    2/5
     
  9. Dat-C3

    Dat-C3

    Joined:
    Mar 15, 2012
    Messages:
    2,569
    Resources:
    10
    Models:
    1
    Maps:
    5
    Spells:
    3
    Tutorials:
    1
    Resources:
    10
    I'll see about it, sure give low ratings all you want. Only petty people care for that, I am submitting stuff to help the community as well people. Since there is not a single Kamehameha approved yet well... yeah.
    Lil Note
    Well I decided try my luck and use my courage to get at least one Kamehameha approved even if it disgraces me. =)

    Thanks for the post I guess, hopefully someone can comment on this and see if your claims are correct.

    Edit: Didn't want to say this however I barely understood your post, could you try editing it a bit?

    For example the lower case and upper case variable presentation, what does that even mean?

    Sure you can do flying height through object editor, but I believe in one dummy unit(Unless slowing down the animation of the effect) only so yeah about that in my opinion your wrong. Shouldn't rely on object editor functions, we did that years ago. Most of what you have said is rather wrong or just silly unless you can provide more evidence.

    I was kind of testing unit life, I will see what I can do to fix that.

    Almost forgot, try using a unit group array in GUI.

    Edit2: Just tested timer vs every seconds and every seconds is faster, it doesn't run when turned off either because if it did then it would trigger the actions wouldn't it?
     
    Last edited: Jun 30, 2014
  10. GywGod133

    GywGod133

    Joined:
    Jul 16, 2012
    Messages:
    630
    Resources:
    3
    Maps:
    1
    Spells:
    1
    Tutorials:
    1
    Resources:
    3
    • -------- Finishing/explosion effects --------
    • Special Effect - Create a special effect at kamep using kamefinaleffect
    • Special Effect - Destroy (Last created special effect)
    • Special Effect - Create a special effect at kamep using kamefinaleffect2
    • Special Effect - Destroy (Last created special effect)


    in every 0.03125 sec, you create sfx in a point you have leaks
    so maybe you just use tempoint here hehehe
     
  11. Dat-C3

    Dat-C3

    Joined:
    Mar 15, 2012
    Messages:
    2,569
    Resources:
    10
    Models:
    1
    Maps:
    5
    Spells:
    3
    Tutorials:
    1
    Resources:
    10
    Nope :grin:
     
  12. nhocklanhox6

    nhocklanhox6

    Joined:
    Feb 12, 2012
    Messages:
    335
    Resources:
    28
    Models:
    6
    Spells:
    21
    Tutorials:
    1
    Resources:
    28
    Ahaha, depending on you :) and you are throwing water in my face.

    Yup!, timer is faster than trigger timer but it's not about faster or not :). I just noticed you:

    Replace:
    • Trigger - Turn on kameloop <gen>
    with
    • Countdown Timer - Start kametimer as a Repeating timer that will expire in Period seconds

    and this
    • Trigger - Turn off (This trigger)
    with this:
    • Countdown Timer - Pause kametimer


    Trigger doesn't run when it turned off, but
    timer
    keep running,
    timer
    just have a job is execute, system ordered
    timer
    to do that and never stop even run for nothing until
    • Countdown Timer - Pause kametimer
    is called!.

    No, they gives you a rating for two reasons:

    - Resources quality (Inclued presentation, code, performance, optimizer, etc..)
    - Resources very pretty

    You should care about the first one to improve your experience since you're trying to become a programmer :).

    You really should listen more to the opinions of others :).

    What do you mean anway?.

    Why one dummy?, you can do that with all dummies you have!. Blizzard will do it for you than you do it manually :).

    Since I have told you about this thing!, is this your style?.

    • Set kameu99[kameindex99] = (Triggering unit)

    =>
    • Set KM_Caster[KM_Index] = (Triggering unit)


    • Set kameatktype = Spells

    =>
    • Set KM_ATTACK_TYPE = Spells


    This will look more readable. Don't forget you're submiting this to the public :).
     
  13. GywGod133

    GywGod133

    Joined:
    Jul 16, 2012
    Messages:
    630
    Resources:
    3
    Maps:
    1
    Spells:
    1
    Tutorials:
    1
    Resources:
    3
    o_O opps im something wrong

    i dont see your RemoveLocation( udg_kamep)
    in front lol

    in the end of your Loop Trigger lol
    idk if two point leaks can be remove it easy by RemoveLocation( udg_kamep) same var
     
  14. Dat-C3

    Dat-C3

    Joined:
    Mar 15, 2012
    Messages:
    2,569
    Resources:
    10
    Models:
    1
    Maps:
    5
    Spells:
    3
    Tutorials:
    1
    Resources:
    10

    Well it is just you kind of did the same, I barely understood you and I really want to know what is right because we both know WC3 works a little different then everything else. Sorry, Should of said it better I suppose.

    How did you find this out? Like I really want you to show me proof, I never noticed it. Does it use up more RAM because it isn't noticeable in-game. Not to mention no mod has told me this.

    Well rating from people is different then rating from officials which is kind of true in the real world since you want your boss to like it or the person you made the code for instead of random people. . .
    Not to mention not many people rate fairly on here including you. I documented every single little thing with tips and even some more instructions so nobody could go wrong without knowing something at least.
    Lol that one was funny, since when did this matter for code-based resources? Sure it is a nice visual bonus, but I didn't know everyone was into gigantic visuals for spells because you don't want spells blocking the gameplay of peoples maps when they use your spell unless it is a cinematic or boss spell.

    Yeah I do care, its more of I don't usually care for capitals, which is bad of me. I will consider changing it, so far yeah lot of people complain about my style of variable presentation... =)
    Thanks again, I didn't mean to offend you. Really appreciate the help, it is just I can't believe the timer thing without like a way to test it or something... Could you get a Mod to agree with you?
    I don't like it when people rate my stuff really low, but at least I am able to handle it and see what to do to improve. Constructive critcism I think it might be called?

    More dummies means more work for the person who wants to use your spell. Unless I am slowing down the special effect of the dummy it is not needed.
    The public could learn to read better... hehe =)
     
  15. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,549
    Resources:
    23
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    5
    JASS:
    3
    Resources:
    23
    I agree that it doesn't stop the timer. PeriodicEvent still runs in background, but without evaluating the trigger.
    how anyone could test it

    • Create 2 triggers with same periodic event
    • Let both trigger display a message
    Logically they both will always display thier message at same time.

    Now for the test turn off one of these triggers, and turn it on again after (any) time. You will recognize that even after the temporary <TurnedOff> status, the messages again will display at the exactly same time.
    So the reason for this is obviously that the timer in background was not stopped.

    It's sure a small optimization to work with timer and pause/start, but I don't think it's really noticeable or really a big deal for a GUI-system.
     
  16. nhocklanhox6

    nhocklanhox6

    Joined:
    Feb 12, 2012
    Messages:
    335
    Resources:
    28
    Models:
    6
    Spells:
    21
    Tutorials:
    1
    Resources:
    28
    Sorry about this. Just a habit, CPU goes with RAM, so I use both, just skip those things about RAM.

    Sound like very funny!
    Why do I have to go through them while it is only my own opinion?. Skip or not depending on you, not a big deal for me.

    Let's force 6 timers run with 0.00 seconds to see the different.

    [​IMG]
    CPU: 9.60
    [​IMG]
    CPU: 5.86

    As IcemanBo said, not a big deal for GUI-System.
     
    Last edited: Jul 1, 2014
  17. Dat-C3

    Dat-C3

    Joined:
    Mar 15, 2012
    Messages:
    2,569
    Resources:
    10
    Models:
    1
    Maps:
    5
    Spells:
    3
    Tutorials:
    1
    Resources:
    10
    I see, thank you.
     
  18. BPower

    BPower

    Joined:
    Mar 18, 2012
    Messages:
    1,709
    Resources:
    21
    Spells:
    15
    Tutorials:
    1
    JASS:
    5
    Resources:
    21
    This could be configurable.
    • Special Effect - Create a special effect attached to the origin of kamedummyu99[kameindex99] using Abilities\Weapons\SpiritOfVengeanceMissile\SpiritOfVengeanceMissile.mdl


    • Custom script: call DestroyEffect( udg_kame2sfx99[R2I(GetUnitStateSwap(UNIT_STATE_MAX_LIFE, GetEnumUnit()))] )
    --> GetUnitStateSwap should be the function GetUnitState instead.
     
  19. Dat-C3

    Dat-C3

    Joined:
    Mar 15, 2012
    Messages:
    2,569
    Resources:
    10
    Models:
    1
    Maps:
    5
    Spells:
    3
    Tutorials:
    1
    Resources:
    10
    Will update it as soon as I can, thanks BPower.
     
  20. Mythic

    Mythic

    Media Manager

    Joined:
    Apr 24, 2012
    Messages:
    8,276
    Resources:
    144
    Models:
    122
    Icons:
    6
    Skins:
    1
    Maps:
    5
    Spells:
    6
    Reforged HD Icons:
    1
    Tutorials:
    3
    Resources:
    144
    A good way to test MUI-ness is 0 second CDs. It also helps in the test map since if it's around 10, it lowers the moral of the tester.

    Nice spell though.