HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

NEW! JASS function pack, please contribute

10-27-2003, 10:20 AM#211
Cacodemon
Your idea seems to be better than mine =) As for 2-digit hex value H2I can be simplified a lot.
10-27-2003, 11:02 AM#212
KaTTaNa
Quote:
Originally posted by PitzerMike
Hey, KaTT

I'd like to search functions by user rating
So It would only return the excellent or outstanding functions
Good idea, I'll make the feature when I get to my computer.
10-27-2003, 12:31 PM#213
PitzerMike
I saw you offer your JASS editor for download there.

Maybe if Magnus lets you, you could also upload his syntax checker. This would make the JASS Vault more "complete"
10-27-2003, 06:32 PM#214
KaTTaNa
Who is Magnus? Is that the guy who made http://jass.sourceforge.net/doc and the Syntax Checker there?
10-27-2003, 08:54 PM#215
PitzerMike
Yes, he is. You can't see him that often on the forums here but he has created the syntax checker.

Edit: I think his Account here is Magnus99
11-01-2003, 05:42 AM#216
Grater
I uploaded my first function to the repository, it is for Diablo2 style summon AI (ie no player control required)

Code:
function UnitGuardUnitAI takes unit summon, unit master returns nothing
    local location target
    local real angle
    local real dist
  
    loop
    exitwhen IsUnitDeadBJ(summon)
    if (DistanceBetweenPoints(GetUnitLoc(summon), GetUnitLoc(master)) > 1000.00 ) then
        set target = GetUnitLoc(master)
        call IssuePointOrderLocBJ(summon, "move", target) 
        call RemoveLocation(target)
    else
        set target = GetUnitLoc(master)
        set angle =  GetRandomDirectionDeg()
        set dist = GetRandomReal(100.00, 500.00)
        call MoveLocation(target, GetLocationX(target) + dist * Cos(angle * bj_DEGTORAD), GetLocationY(target) + dist * Sin(angle * bj_DEGTORAD))
        call IssuePointOrderLocBJ(summon, "attack", target)
        call RemoveLocation(target)
    endif
    call TriggerSleepAction( 1.0+GetRandomReal(0.0,1.5))
    endloop
endfunction
11-30-2003, 05:51 PM#217
vjeux
I2Hexa(Integer) => String
Convert integer < 255 to hexadecimal string

strlen(String) => Integer
Return number of char in a string (not coded by me but needed)

Degrade(String, Integer, Integer, Integer, Integer, Integer, Integer) => String
Make a grader text. First 3 integer are RGB of first color and 3 last integer are RGB of last color.



Code:
function I2Hexa takes integer i returns string

    local string Hexa_Liste = "0123456789ABCDEF"
    local integer Conversion_Wait1
    local integer Conversion_Wait2
    local string Conversion_Hexa

    set Conversion_Wait1 = ( i / 16 )
    set Conversion_Wait2 = ( i - ( 16 * Conversion_Wait1 ) )
    set Conversion_Hexa = ( SubStringBJ(Hexa_Liste, ( Conversion_Wait1 + 1 ), ( Conversion_Wait1 + 1 )) + SubStringBJ(Hexa_Liste, ( Conversion_Wait2 + 1 ), ( Conversion_Wait2 + 1 )) )

    return Conversion_Hexa

endfunction

function strlen takes string whichString returns integer
    local integer stringlength = 1

    if(whichString == "") then
        return 0
    endif

    loop
        exitwhen SubStringBJ(whichString, stringlength, stringlength) == ""
        set stringlength = stringlength + 1
    endloop

    return stringlength - 1
endfunction

function Degrade takes string Chaine, integer DRed, integer DGreen, integer DBlue, integer FRed, integer FGreen, integer FBlue returns string
    local integer array Degrade_CouleurDeFin
    local integer array Degrade_CouleurDeDebut
    local string Tempi = ""




    set Degrade_CouleurDeDebut[1] = DRed
    set Degrade_CouleurDeDebut[2] = DGreen
    set Degrade_CouleurDeDebut[3] = DBlue
    set Degrade_CouleurDeFin[1] = FRed
    set Degrade_CouleurDeFin[2] = FGreen
    set Degrade_CouleurDeFin[3] = FBlue

    set bj_forLoopAIndex = 1
    set bj_forLoopAIndexEnd = 3
    loop
        exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
        set Degrade_CouleurDeFin[GetForLoopIndexA()] = ( ( Degrade_CouleurDeFin[GetForLoopIndexA()] - Degrade_CouleurDeDebut[GetForLoopIndexA()] ) / strlen( Chaine ) )
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop


    set bj_forLoopAIndex = 1
    set bj_forLoopAIndexEnd = strlen( Chaine )


    loop

        exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd

        set Tempi = ( Tempi + "|cFF" )

        set bj_forLoopBIndex = 1
        set bj_forLoopBIndexEnd = 3
        loop
            exitwhen bj_forLoopBIndex > bj_forLoopBIndexEnd

            set Tempi = ( Tempi + I2Hexa(Degrade_CouleurDeDebut[GetForLoopIndexB()]) )
            set bj_forLoopBIndex = bj_forLoopBIndex + 1
        endloop

        set Tempi = ( Tempi + ( SubStringBJ(Chaine, GetForLoopIndexA(), GetForLoopIndexA()) + "|r" ) )
        set Degrade_CouleurDeDebut[1] = ( Degrade_CouleurDeDebut[1] + Degrade_CouleurDeFin[1] )
        set Degrade_CouleurDeDebut[2] = ( Degrade_CouleurDeDebut[2] + Degrade_CouleurDeFin[2] )
        set Degrade_CouleurDeDebut[3] = ( Degrade_CouleurDeDebut[3] + Degrade_CouleurDeFin[3] )
        set bj_forLoopAIndex = bj_forLoopAIndex + 1

    endloop

    return Tempi
endfunction 
12-01-2003, 05:42 PM#218
KaTTaNa
To submit functions, please go here, create a user (unless you have one), login and submit.

Do not submit I2Hexa and strlen as such functions already exist, but the last one is really good.