Snippet Hero Real Attribute

Dirac

22710180
Reaction score
147
JASS:
library HeroRealAttribute /* v1.00

*/uses/* one of the following
*/  optional AIDS           /* thehelper.net/forums/showthread.php/130752-Advanced-Indexing-Data-Storage
*/  optional UnitIndexer    /* hiveworkshop.com/forums/jass-functions-413/system-unit-indexer-172090/

An useful tool to accurately add stats to your hero

*****************************************************************************

    API:
        
    struct HeroReal
*       Stores the hero's attributes as reals instead of integers.
--->
        real Agi
        real Str
        real Int
        
        static method operator [] takes unit whichUnit returns thistype
    *       HeroReal[unit].Stat=X
    
****************************************************************************/

    struct HeroReal extends array
        //! textmacro HERO_REAL_SETUP takes NAME
            private real S_$NAME$
            method operator $NAME$= takes real howMuch returns nothing
                set this.S_$NAME$=howMuch-R2I(howMuch)
                static if LIBRARY_UnitIndexer then
                    call SetHero$NAME$(GetUnitById(this),R2I(howMuch),true)
                else
                    call SetHero$NAME$(GetIndexUnit(this),R2I(howMuch),true)
                endif
            endmethod
            method operator $NAME$ takes nothing returns real
                static if LIBRARY_UnitIndexer then
                    return this.S_$NAME$+GetHero$NAME$(GetUnitById(this),false)
                else
                    return this.S_$NAME$+GetHero$NAME$(GetIndexUnit(this),false)
                endif
            endmethod
        //! endtextmacro
        
        //! runtextmacro HERO_REAL_SETUP("Str")
        //! runtextmacro HERO_REAL_SETUP("Agi")
        //! runtextmacro HERO_REAL_SETUP("Int")
        
        static method operator [] takes unit whichUnit returns thistype
            return GetUnitUserData(whichUnit)
        endmethod
    endstruct
endlibrary
 

tommerbob

Minecraft. :D
Reaction score
110
A couple thoughts:

- Include some methods for getting the remaining real values for each attribute? Not necessary, but might be good for completeness.

- Include an example of how to use it, and explain why its useful?

- Is it possible to combine both add and lower functions together, and simply allow for a negative amount?

Personally, I think this is really useful, such as increasing the effectiveness hero level-ups over time. Thanks for doing this. :thup:
 

Dirac

22710180
Reaction score
147
The example of how to used is posted below the script, changed the "Add$VAR$" function to "Modify$VAR$" it now allows you to give negative values to hero stats. Added the "Get$VAR$" function
 

NoobImbaPro

You can change this now in User CP.
Reaction score
60
very clever thought, now stats will be more accurate when increased by %
 

Laiev

Hey Listen!!
Reaction score
187
I suggest you to use optional Status/Bonus (and not use the natives one), will be much better to some peoples that use it :p
 

luorax

Invasion in Duskwood
Reaction score
67
JASS:
call SetHero$VAR$(whichHero,GetHero$VAR$(whichHero,true)+i,true)


This will cause errors as I've already mentioned before. GetHeroXXX with true will return the base value plus the bonus value (bonus = the green value) and will set the base value to it. So, for example:
If the hero has 100 strength and 50 bonus (looks like this: "100 + 50") after adding 50 will end with 200 base and 50 bonus (because the native will return 150, you add 50 to it and the bonus 50 is still there).

You better use this:

JASS:
call SetHero$VAR$(whichHero,GetHero$VAR$(whichHero,false)+i,true)
 

Dirac

22710180
Reaction score
147
@Laiev
I'm not sure of what you mean
@luorax
Yes thank you i knew there was a problem somewhere regarding the additional bonus value, and because i originally wrote this on notepad i wasn't able to spot it
 

Laiev

Hey Listen!!
Reaction score
187
JASS:
function ModifyHero$VAR$ takes unit whichHero, real howMuch returns nothing
	local integer i=R2I(howMuch)
	local real whatsLeft=howMuch-i
	set Stat[whichHero].$VAR$=Stat[whichHero].$VAR$+whatsLeft
	if Stat[whichHero].$VAR$>=1 then
		set i=i+1
		set Stat[whichHero].$VAR$=Stat[whichHero].$VAR$-1
	endif
	if Stat[whichHero].$VAR$<=-1 then
		set i=i-1
		set Stat[whichHero].$VAR$=Stat[whichHero].$VAR$+1
	endif
	static if LIBRARY_STATUS then
		call Status[whichHero].mod$VAR$Bonus(i)
	else
		call SetHero$VAR$(whichHero,GetHero$VAR$(whichHero,false)+i,true)
	endif
endfunction
 

tommerbob

Minecraft. :D
Reaction score
110
Update your API:

JASS:
function ModifyStr 
function ModifyAgi 
function ModifyInt


should be

JASS:
function ModifyHeroStr
function ModifyHeroAgi 
function ModifyHeroInt


Also, fix:

JASS:
//! endtexmacro
 

tooltiperror

Super Moderator
Reaction score
231
Add a demo and an imperative (i.e. not OOP) interface, and a demo map too.

In your documentation, "An useful" -> "A useful", because of pronunciation.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • jonas jonas:
    where did you go?
  • The Helper The Helper:
    Jefferson TX on a Paranormal Investigation of a haunted bed and breakfast - I got some friends that are paranormal investigators and they have an RV and do YouTubes
    +1
  • The Helper The Helper:
    It was a lot of fun. The RV was bad ass
  • jonas jonas:
    That sounds like fun!
    +1
  • The Helper The Helper:
    it was a blast!
  • The Helper The Helper:
    I am going to post the Youtube of the investigation in the forums when it is ready
    +1
  • jonas jonas:
    cool!
  • vypur85 vypur85:
    Sounds cool TH.
  • tom_mai78101 tom_mai78101:
    I was on a Legend of Zelda marathon...
  • tom_mai78101 tom_mai78101:
    Am still doing it now
    +1
  • jonas jonas:
    which one(s) are you playing?
  • jonas jonas:
    I played a little bit of the switch title two weeks ago and found it quite boring
  • The Helper The Helper:
    just got back from San Antonio this weekend had the best Buffalo Chicken Cheesesteak sandwhich in Universal City, TX - place was called Yous Guys freaking awesome! Hope everyone had a fantastic weekend!
    +1
  • The Helper The Helper:
    Happy Tuesday!
  • The Helper The Helper:
    We have been getting crazy numbers reported by the forum of people online the bots are going crazy on us I think it is AI training bots going at it at least that is what it looks like to me.
  • The Helper The Helper:
    Most legit traffic is tracked on multiple Analytics and we have Cloud Flare setup to block a ton of stuff but still there is large amount of bots that seem to escape detection and show up in the user list of the forum. I have been watching this bullshit for a year and still cannot figure it out it is drving me crazy lol.
    +1
  • Ghan Ghan:
    Beep boop
    +1
  • The Helper The Helper:
    hears robot sounds while 250 bots are on the forum lol
  • The Helper The Helper:
    Happy Saturday!
    +1
  • The Helper The Helper:
    and then it was Thursday...
    +2
  • tom_mai78101 tom_mai78101:
    And then Monday
    +1
  • The Helper The Helper:
    I got the day off today!
    +1
  • tom_mai78101 tom_mai78101:
    How...? (T-T)
  • The Helper The Helper:
    I took the day off. I work for myself so I can do that.
    +1
  • Varine Varine:
    Well I'm already over summer

    The Helper Discord

    Members online

    No members online now.

    Affiliates

    Hive Workshop NUON Dome World Editor Tutorials

    Network Sponsors

    Apex Steel Pipe - Buys and sells Steel Pipe.
    Top