| 11-30-2003, 10:07 AM | #1 |
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 |
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 |
Thx its working :) |
