HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

[Jass]Function bug

11-30-2003, 10:07 AM#1
vjeux
Hello, i'm new on jass but i am good at visual basic then i understand Jass.

I coded a function based on a triggered GUI map.

But there is a problem, when i set a variable like that
Var = Var + "..."
It's seem to stop the function and return nothing

To see that, i have put into my code :
Tempi = "lol"
return Tempi
And when it's after a Tempi = Tempi + ... there are no returns :(

Here is the code :

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

[color=red]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
[/color]
function Trig_Melee_Initialization_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), ":)")

    call DisplayTextToForce( GetPlayersAll(), Degrade("Vjeux Oun",255,255,255,0,0,0))

endfunction
//===========================================================================
function InitTrig_Melee_Initialization takes nothing returns nothing
    set gg_trg_Melee_Initialization = CreateTrigger(  )
    call TriggerAddAction( gg_trg_Melee_Initialization, function Trig_Melee_Initialization_Actions )
endfunction

 


Thx if someone can help me :)
11-30-2003, 11:07 AM#2
KaTTaNa
The problem is that Tempi is not initialized.
Change the declaration of Tempi to:
local string Tempi = ""

That should fix.
11-30-2003, 05:30 PM#3
vjeux
Thx its working :)