1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. The 18th Icon Contest is ON! Choose any ingame unit and give him/her Hero abilities. Good luck to all.
    Dismiss Notice
  5. The Secrets of Warcraft 3 have revealed interesting works. The RESULTS for Abelhawk's Mini-Mapping Contest #15 have come out!
    Dismiss Notice
  6. Contestants are to create a scene set in the Stone Age. Come and see what you can come up with. We wish you the best of luck!
    Dismiss Notice
  7. Colour outside the lines! Techtree Contest #13 is a go. The contest is optionally paired.
    Dismiss Notice
  8. Night Rider gained several songs for his journey. The poll for the 12th Music Contest has started. Check it out!
    Dismiss Notice
  9. Greetings cerebrates, our Swarm needs new spawners that will have numerous children. Join the HIVE's 31st Modeling Contest - Spawners and Spawned! The contest is optionally paired.
    Dismiss Notice
  10. Join other hivers in a friendly concept-art contest. The contestants have to create a genie coming out of its container. We wish you the best of luck!
    Dismiss Notice
  11. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Talent Jui

Submitted by Tasyen
This bundle is marked as pending. It has not been reviewed by a staff member yet.

What is Talent Jui


Talent Jui is the 3. edition of my resource Talent. It offers a choice talent system similar to heroes of the storm. On levels you decided, heroes/units can pick one talent from a group of choices (tier) specially defined for that unitTyped. This system works for any amount of units at the same time. But one player can only obeserve talents of one unit at one time. Talent Jui provides a custom created dialog (which can be slightly customized) to perform the choices from the player perspective. Choices and tiers are created using jass/GUI. Cause of using the frame natives, Talent Jui does not need any object Editor data to manage itself.
This system also includes an easy way to create unlearning/reseting choices.

How to install


  • Make sure World Editor generates unknown variables in Preferences is set.
  • Copy the Talent Folder.
  • update references inside Talent Init
  • export
    • war3mapImported\TalentBox.fdf
      war3mapImported\TalentBox.toc
    • import them into your map
  • Installed

How to Use


You have to feed the talent data with choices and tiers for unitTypes that shall use talent. Also your choices needs to activade code/triggers when they were picked. Talent provides 2 ways to handle that: events or code binding. Checkout the examples included in the map for that.

Lua version

The Lua Version has differences to the jass Version outside of beeing not jass. In the jass Version Level 0 was a valid Level for a Tier. The Lua Version starts with Level 1. It has a different api when not using the GUI triggers. The Trigger binding is gone, Lui calls binded functions instead of Triggers. Each Choice is a table, one can attach data to it like to any table. Cause it is dangerous to execute stuff in the root (crash wise and garbage collector wise) The Lua Version starts a 0.0s timer after it passed registered so named "unitSheetsFunctions" are called which should be the Custom Unit Talent Trees (checkout the Hero Demos). UnitSheetsFunctions are only relevant when using Lua directly. When using GUI, it is not important.

ChangeLog:
1.32.00
Improved the Dialog for allied shared Units.
Improved Level Boxes and Page switching.
fixed a bug with the Reset Button will be disable on Level not beeing the current selection.
One can now alter the space between Choice, the Bottom and the top.
Added an boolean array to disable the reset button as long that boolean is true.
Added udg_Talent__UnitCode inside Events binded Code it is the unitType beeing used by udg_Talent__Unit.
The Choice-Description fuses now with the Bottom and Right of the Choice Frame.
Fixed a glitch with disabled Reset Button.
Non Talent Users Show now a Box with the title reading "No Talent User".
Added a Lua Version​

Requiers Warcraft 3 1.31+

Keywords: SkillTree, Talents, masteries, hots like, hero progress, 1 of 3, 1 of 2, 1 of many.
Previews
Contents

Talent Jui 1.32 (Map)

Talent Lui 1.32 (Map)

  1. Devalut

    Devalut

    Joined:
    Feb 9, 2009
    Messages:
    770
    Resources:
    2
    Spells:
    2
    Resources:
    2
  2. blink

    blink

    Joined:
    Mar 6, 2012
    Messages:
    54
    Resources:
    2
    Models:
    2
    Resources:
    2
    wth I didn't know there was an ExecuteFunc() function. Thanks for this!
     
  3. Pyrogasm

    Pyrogasm

    Joined:
    Feb 27, 2007
    Messages:
    2,664
    Resources:
    1
    Spells:
    1
    Resources:
    1
    Don’t use ExecuteFunc if you can avoid it. Use .execute() or .evaluate() instead. You can read about them in the JASSHelper manual.
     
  4. blink

    blink

    Joined:
    Mar 6, 2012
    Messages:
    54
    Resources:
    2
    Models:
    2
    Resources:
    2
    I see, thanks! I was using triggers (executing them) before to execute an "action" for my custom missiles and planned to use ExecuteFunc()/.execute(). Is it better to just stick with triggers?
     
  5. Pyrogasm

    Pyrogasm

    Joined:
    Feb 27, 2007
    Messages:
    2,664
    Resources:
    1
    Spells:
    1
    Resources:
    1
    Both the . functions use triggers internally afaik. There’s no real functional difference between what you described and using them except they allow the triggers to run in a new thread. If you try to run too many triggers in a row using your method it’s possible to hit the op limit and threadcrash.

    ExecuteFunc with an invalid function name will crash the game.
     
  6. Shaeam

    Shaeam

    Joined:
    Aug 11, 2010
    Messages:
    266
    Resources:
    1
    Maps:
    1
    Resources:
    1
    This is an absolutely fantastic system, I'm very eager to use this for a project I'm working on... That being said; I'd love to know how to disable the UI (and function) of talent resets. I don't actually want my Heroes to be able to swap talents on the fly (or, really -- at all), I'd very much love to get rid of the UI so that it cannot be done. I toggled off the

    "constant function TalentBoxUseUnlearnButton takes nothing returns boolean
    return false"

    bit... But there's a weird UI glitch with the UI where it's still trying to show up.
     
  7. Chaosy

    Chaosy

    Joined:
    Jun 9, 2011
    Messages:
    10,600
    Resources:
    18
    Maps:
    1
    Spells:
    11
    Tutorials:
    6
    Resources:
    18
    As a web developer I am rather annoyed by the fact that the body panel (the one beneath the title) kinda collides with the bottom border of the parent.

    For my sanity please put a bit of space there. Preferably so that it is symmetric.

    Dope idea though, super promising. Huge fan.
     
  8. Tasyen

    Tasyen

    Joined:
    Jul 18, 2010
    Messages:
    1,211
    Resources:
    16
    Tools:
    2
    Maps:
    2
    Spells:
    7
    Tutorials:
    4
    JASS:
    1
    Resources:
    16
    Thanks for that Feedback. The glitch happens cause the Tooltip-Frame of that button was created even when the reset button is not created.

    Might be better without the border and background for the description.
    Not bordeed 1.jpg not bordered 2.jpg Not bordered 3.jpg

    Edit: Might also be good to change the border and background of the Level Buttons to the same as other ones so the do not stand out so much.
    Not bordered 4.jpg

    Or another Idea is fusing the Borders.
    Bordered 1.jpg Bordered 2.jpg
     
    Last edited: Jul 31, 2019
  9. Chaosy

    Chaosy

    Joined:
    Jun 9, 2011
    Messages:
    10,600
    Resources:
    18
    Maps:
    1
    Spells:
    11
    Tutorials:
    6
    Resources:
    18
    Whatever you prefer is an upgrade.
     
  10. Uncle

    Uncle

    Joined:
    Aug 10, 2018
    Messages:
    290
    Resources:
    0
    Resources:
    0
    Sorry if this is too much to ask but I was wondering if anyone could help me out here.

    So basically, I'm just trying to create simple Text Boxes. I saw this system and figured I could read it and learn how to do it myself. Unfortunately, I'm
    struggling a bit. I managed to mess around with the System and hide the Talent Show button and create a Text Box using this:
    Code (Lua):

    local fh = BlzCreateFrame("TalentBoxTextArea", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0, 0)
    BlzFrameSetSize(fh, 0.22, 0.22)
    BlzFrameSetAbsPoint(fh, FRAMEPOINT_TOPRIGHT, 0.8, 0.5)
    BlzFrameSetText(fh, "Text goes here")
    BlzFrameSetEnable(fh, true)
     
    But there's so much extra stuff going on that I don't need. Basically, I want to know what part of the Talent code do I need if I only wanted to make text boxes like in the code above.
    In other words, I don't want all of the extra stuff that comes with the system (so nothing Talent related), I just want the above code^ to work so I can create simple Text Boxes.

    Also, great system. I'll keep trying to wrap my head around it but I'm new to this stuff.
     
  11. Tasyen

    Tasyen

    Joined:
    Jul 18, 2010
    Messages:
    1,211
    Resources:
    16
    Tools:
    2
    Maps:
    2
    Spells:
    7
    Tutorials:
    4
    JASS:
    1
    Resources:
    16
    If you only want a TextArea, you don't really need anything from Talent. What you need is a loaded mainframe of Type "TEXTAREA". Such one exists in "ui\framedef\ui\escmenutemplates.fdf" which is not loaded on default. Hence you have to create a custom TOC loading it. That custom TOC you Import into your map and load it with BlzLoadTOCFile, can be done inside a Init_trig. After the loading was done, you can create mainframes mentioned in the fdfs of that TOC. Instead of writing an own TOC, you could Import the TOC inside the zip of this post. This TOC loads the not loaded standardtemplates:
    ui\framedef\ui\escmenutemplates.fdf
    ui\framedef\glue\standardtemplates.fdf
    TOC-Files have to end with a empty new line.

    Inside "ui\framedef\ui\escmenutemplates.fdf" there is a mainframe of type TEXTAREA beeing named "EscMenuTextAreaTemplate" that is the one you should create.

    "Talentbox.fdf" has a mainframe named "TalentBoxTextArea" which inherits from "EscMenuTextAreaTemplate".
    You could also check out "TalentBoxTextArea" in "Talentbox.fdf" and create your own in a similar way. That currently has to be done, if you want to change the font of the text shown inside the TEXTAREA.

    I call frames mainframes when they have a definition outside of a framebody.
     

    Attached Files:

    Last edited: Aug 9, 2019
  12. Uncle

    Uncle

    Joined:
    Aug 10, 2018
    Messages:
    290
    Resources:
    0
    Resources:
    0
    Awesome, it works perfectly. Thank you for taking the time to help!