HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Player Chat message substring crashes

01-20-2006, 03:14 AM#1
The_AwaKening
This trigger works great if you enter it the way it is meant; however, if a player enters -info alone rather than -info red, then it crashes the game. It was crashing before I added the condition as well. Is there a way to check if the substring is emptly and display my message and not have the game crash?
Collapse JASS:
function Trig_Player_Info_Actions takes nothing returns nothing
local player p=GetTriggerPlayer()
local integer i=GetPlayerIndexFromColorString(SubStringBJ(GetEventPlayerChatString(), 7, 12))
local integer j=udg_RandomHero[i]
local integer k=udg_totalHeros[i] - udg_RandomHero[i]
local integer kills=udg_infoHKills[i]
local integer deaths=udg_infoDeaths[i]
        call ClearTextMessagesBJ( GetForceOfPlayer(p) )
    if SubStringBJ(GetEventPlayerChatString(), 7, 7) == " " then
        call DisplayTimedTextToForce( GetForceOfPlayer(p), 10, ( "You did not provide enough information" ) )
              call DisplayTimedTextToForce( GetForceOfPlayer(p), 10, ( "Format is" + "|cffffcc00" + "-info playercolor|r" ) )
    else
        call DisplayTimedTextToForce( GetForceOfPlayer(p), 10, ( "  " + udg_playerColor[GetConvertedPlayerId(ConvertedPlayer(i))] + GetPlayerName(ConvertedPlayer(i)) + "|r  has" ) )
        call DisplayTimedTextToForce( GetForceOfPlayer(p), 10, ( ( "            |cffffcc00" + I2S(j) ) + "|r  random heros" ) )
        call DisplayTimedTextToForce( GetForceOfPlayer(p), 10, ( ( "            |cffffcc00" + I2S(k) ) + "|r  picked heros" ) )
        call DisplayTimedTextToForce( GetForceOfPlayer(p), 10, ( ( "            |cffffcc00" + I2S(deaths) ) + "|r  Deaths  and" ) )
        call DisplayTimedTextToForce( GetForceOfPlayer(p), 10, ( ( "            |cffffcc00" + I2S(kills) ) + "|r  Hero Kills" ) )
    endif
    set p=null
endfunction

//===========================================================================
function InitTrig_Player_Info takes nothing returns nothing
    set gg_trg_Player_Info = CreateTrigger(  )
    call TriggerRegisterPlayerChatEvent( gg_trg_Player_Info, Player(0), "-info", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Player_Info, Player(1), "-info", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Player_Info, Player(2), "-info", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Player_Info, Player(3), "-info", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Player_Info, Player(4), "-info", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Player_Info, Player(5), "-info", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Player_Info, Player(6), "-info", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Player_Info, Player(7), "-info", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Player_Info, Player(8), "-info", false )
    call TriggerAddAction( gg_trg_Player_Info, function Trig_Player_Info_Actions )
endfunction
01-20-2006, 03:29 AM#2
The_AwaKening
Sorry for the post, but I fixed it already. I just added in this condition

if ( i == 0 ) then
return

which is the initial value for "i" in my linked function.