1. Melee Mapping contest #3 - Poll is up! Vote for the best 4v4 melee maps!
    Dismiss Notice
  2. The 30th edition of the Modeling Contest is finally up! The Portable Buildings need your attention, so come along and have a blast!
    Dismiss Notice
  3. We have a new contest going on right now! Join the 11th Music Contest! You are to make a Cinematic modern sound-track for this contest, so come and compete with other people for fun.
    Dismiss Notice

How to get your GUI spell approved

Discussion in 'Trigger (GUI) Editor Tutorials' started by Maker, Nov 24, 2011.

  1. Maker

    Maker

    Joined:
    Mar 6, 2006
    Messages:
    9,193
    Resources:
    17
    Maps:
    2
    Spells:
    14
    Tutorials:
    1
    Resources:
    17

    How to get your GUI spell approved



    Introduction


    When uploading a spell, it might not be clear what are the key points moderators look at when reviewing a spell. Often it takes several versions and reviews to get a spell approved. The first time a moderator takes a look at your spell, it might get rejected due to simple things.

    Uploading your spell in as complete stage as possible increases you chances to get your spell approved sooner.

    Triggers



    Leaks


    The spell must be leak free. The most common leaks are location leaks (position of...) and unit groups.
    Information about leaks and how to get rid of them here: http://www.hiveworkshop.com/forums/triggers-scripts-269/things-leak-35124/

    Multi-instanceability


    Also known as MUI. The spell must work with more than one unit using it at the same time. Always place two or more casters in your test map. If the ability is not passive, cast the spell with both units almost at the same time. The spell should work flawlessly.

    Systems to help you make MUI, pick your favourite:
    http://www.hiveworkshop.com/forums/spells-569/gui-unit-indexer-1-2-0-2-a-197329/
    http://www.hiveworkshop.com/forums/spells-569/gui-dynamic-indexing-template-144325/
    http://www.hiveworkshop.com/forums/trigger-gui-editor-tutorials-279/hashtables-mui-133407/
    http://www.hiveworkshop.com/forums/...orials-279/visualize-dynamic-indexing-241896/

    If you are using waits, there is a good chance your spell is not MUI and will get rejected. Use timers or a looping trigger instead.

    Example of a NON MUI spell using a wait:

    • Example
      • Events
        • Unit - A unit Starts the effect of an ability
      • Conditions
        • (Ability being cast) Equal to Animate Dead
      • Actions
        • Set unit = (Triggering unit)
        • Wait 2.00 seconds
        • Unit - Kill unit


    Efficiency


    Though efficiency is not that important in GUI, it can still make a difference between an approved an a rejected spell.

    Repeated function calls
    Whenever there is something inside brackets, it is a function call.
    • Unit - Kill (Triggering unit)
    Triggering unit is in brackets, so it calls a function. Repeated function calls should be avoided.

    Example

    • Untitled Trigger 018
      • Events
      • Conditions
      • Actions
        • Unit - Add Acid Bomb to (Triggering unit)
        • Hero - Set (Triggering unit) Hero-level to 2, Hide level-up graphics
        • Unit - Make (Triggering unit) Invulnerable
        • Unit - Kill (Triggering unit)

    ->
    • Untitled Trigger 018
      • Events
      • Conditions
      • Actions
        • Set u = (Triggering unit)
        • Unit - Add Acid Bomb to u
        • Hero - Set u Hero-level to 2, Hide level-up graphics
        • Unit - Make u Invulnerable
        • Unit - Kill u



    Triggers that are on for no reason
    These include looping triggers most often. Usually looping triggers shouldn't be on if there are no active instances of the spell. Make sure you turn them off.
    • Trigger - Turn off (*trigger*)

    Another example, if you detect the death of dummy units with a trigger, then turn off the trigger if there are no dummies in the map.

    Level support


    Abilities must support more than one level. For example you can increase the damage of the spell:
    • Unit - Cause (Triggering unit) to damage (Target unit of ability being cast), dealing (20.00 + (10.00 x (Real((Level of Storm Bolt for (Triggering unit)))))) damage...
    You shouold also use the ability level at the time of casting, if you have a periodic loop, you must store the ability level.

    Debugging tip


    Use debugging messages. If you are using triggers that turn off for example, place a debug message right before you turn the trigger off:
    Show

    • Game - Display to (All players) for 5.00 seconds the text: Debug message
    • Trigger - Turn off (This trigger)


    Use the Game - Display to... for debugging your spell. You can display the value of real and integers, unit types and so on, or just some string.

    Object editor



    Abilities


    Make sure the tooltips do not suck. Look at standard Blizzard abilities for reference. Try to use proper grammar.
    Make sure the hotkeys are correct and pay attention to the ability icon position.
    You should use active icons for active spells and passive icons for passive spells. Passive icons look like they are pressed down.
    Some might find "rainbow tooltips" annoying, so try to avoid using too many colours.

    If you are using Channel as the base ability, add about a second of Follow though time. During that time, the caster won't auto-attack, it will keep casting the ability. Adjust the time so that the caster has enough time to end the casting animation, but doesn't start another loop of the animation.

    Units


    If you are using a dummy, make sure it is set up correctly. Most common mistakes are giving it vision when it shouldn't and not setting it to Can't raise, does not decay.

    If your dummy unit has Locust ability, it doesn't need invulnerability ability since Locust makes it invulnerable.

    Dummy casters should have Art - Animation - Cast Point set to 0.000, so that they cast the ability instantly. of course, if you want delayed casting, you can adjust the value.

    Other



    Uploading


    The spell must have an in-game screenshot.
    Describe what your spell does in the description.
    Use a proper name for your ability. Include a version number. The version number should be 1.0 or at least close to it. if you upload v0.01, it signals that it might go through significant changes, so a moderator might skip it. Also, only completed abilities should be uploaded.
    It is a good idea to have a change log, so people can see what has been changed between version. Very useful when a moderator checks your spell.

    Test map


    Always add two or more units with your ability into the map so that the one who reviews your spell won't have to add units himself.
    Make sure you have included importing instructions in the map file.
    Put triggers that belong to your ability/system into one folder. Put unrelated triggers in other folder(s).
     
    Last edited by a moderator: Jan 18, 2014
  2. Maker

    Maker

    Joined:
    Mar 6, 2006
    Messages:
    9,193
    Resources:
    17
    Maps:
    2
    Spells:
    14
    Tutorials:
    1
    Resources:
    17
    I will add many more things tomorrow.

    You can suggest your own things to add.
     
  3. Marc Mamales

    Marc Mamales

    Joined:
    Dec 26, 2010
    Messages:
    450
    Resources:
    1
    Spells:
    1
    Resources:
    1
    Nice guide :thumbs_up:
     
  4. Chaosy

    Chaosy

    Joined:
    Jun 9, 2011
    Messages:
    10,410
    Resources:
    17
    Maps:
    1
    Spells:
    10
    Tutorials:
    6
    Resources:
    17
    nice tut wich alot will need to read even myself xd

    question does it matter how advanced a spell is to get approved?
     
  5. Adiktuz

    Adiktuz

    Joined:
    Oct 16, 2008
    Messages:
    9,674
    Resources:
    23
    Models:
    2
    Packs:
    1
    Maps:
    1
    Spells:
    16
    Tutorials:
    1
    JASS:
    2
    Resources:
    23
    not much, though too simple spells are normally rejected...
     
  6. Magtheridon96

    Magtheridon96

    Joined:
    Dec 12, 2008
    Messages:
    6,005
    Resources:
    26
    Maps:
    1
    Spells:
    8
    Tutorials:
    7
    JASS:
    10
    Resources:
    26
    You should also mention how using PolledWait/TriggerSleepAction is bad too.

    There are also cases when users do something like this:

    Trigger
    • If (x == 1) Then
      • do something with 'blarg'
    • else
      • If (x == 2) Then
        • do something with 'foo'
      • else
        • If (x == 3) Then
          • do something with 'aybabtu'
        • else
          • If (x == 4) Then
            • do something with 'banana'
          • else


    Instead, they should be saving 'blarg', 'foo', 'aybabtu', and 'banana' in an array:

    Other Trigger
    • Set array[1] = 'blarg'
    • Set array[2] = 'foo'
    • Set array[3] = 'aybabtu'
    • Set array[4] = 'banana'


    And do this instead:

    • Do something with array[x]


    I see this quite often, so I think it's worth mentioning.
     
  7. PurgeandFire

    PurgeandFire

    Code Moderator

    Joined:
    Nov 11, 2006
    Messages:
    7,415
    Resources:
    18
    Icons:
    1
    Spells:
    4
    Tutorials:
    9
    JASS:
    4
    Resources:
    18
    Obviously a nice tutorial and very useful as a linkback for spell submissions.

    Let me know when it is "finished" (in regards to post #2) by your standards and I'll approve it. (if it is already finished, then let me know since it is approvable in its current state as well)
     
  8. watermelon_1234

    watermelon_1234

    Joined:
    Nov 18, 2007
    Messages:
    1,066
    Resources:
    10
    Spells:
    9
    JASS:
    1
    Resources:
    10
    For the Triggers section, state that the user should only use arrays if they're actually going to use it as an array or like what Magtheridon96 stated, not to save variable space.

    For the Units section, I suggest saying that the user mostly only needs to create one dummy unit to cast an ability on multiple units. The exceptions would be for abilities that are channeling and a few other random ones like Impale.

    For the Test Map section, you could tell them to add different test units to allow better testing of the spell, like putting magic-immune units, flying units, mechanical units, etc.
     
  9. PurgeandFire

    PurgeandFire

    Code Moderator

    Joined:
    Nov 11, 2006
    Messages:
    7,415
    Resources:
    18
    Icons:
    1
    Spells:
    4
    Tutorials:
    9
    JASS:
    4
    Resources:
    18
    I'm going to approve this since it is already in an approvable state.
     
  10. Maker

    Maker

    Joined:
    Mar 6, 2006
    Messages:
    9,193
    Resources:
    17
    Maps:
    2
    Spells:
    14
    Tutorials:
    1
    Resources:
    17
    Sweet.
     
  11. maddeem

    maddeem

    Joined:
    Jan 1, 2011
    Messages:
    1,209
    Resources:
    5
    Maps:
    2
    Spells:
    3
    Resources:
    5
    Under the Other Category I would add that the triggers must be posted and in english.
    And perhaps mention originality, if a system/spell already exists there is no reason to create another.
    Credits for sure, like say someone used bribe's indexer, credits should be given. Also people shouldn't modify other's resources and repost it.

    Otherwise, great tutorial ;p
     
  12. PurgeandFire

    PurgeandFire

    Code Moderator

    Joined:
    Nov 11, 2006
    Messages:
    7,415
    Resources:
    18
    Icons:
    1
    Spells:
    4
    Tutorials:
    9
    JASS:
    4
    Resources:
    18
    I've decided to sticky this thread for prospective spell makers.
     
  13. Daffa the Mage

    Daffa the Mage

    Map Moderator

    Joined:
    Jan 30, 2013
    Messages:
    7,210
    Resources:
    22
    Packs:
    1
    Maps:
    8
    Spells:
    12
    Tutorials:
    1
    Resources:
    22
    Might want to add GPAG into reference, but optional.