| 09-29-2008, 05:54 AM | #1 |
I couldn't determine for sure this was the problem, but my map seemed to crash when 2 people ran this command almost simultaneously. Anything in there that you can see that would cause a problem? JASS:function PlayerInfoBool takes nothing returns boolean return IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) endfunction function PlayerInfo_Msg takes string check returns string local string s = " " local integer j=1 local integer k=0 loop exitwhen j>=9-StringLength(check) and k>StringLength(check) if SubString(check,k-1,k)=="1" then set s=s+" " endif if j<9-StringLength(check) then set s=s+" " endif set j=j+1 set k=k+1 endloop return s endfunction function Trig_Player_Info_Actions takes nothing returns nothing local player p=GetTriggerPlayer() local integer i local string randoms local string heros local string kills local string deaths local string units local string gold local force f=CreateForce() local group g local unit u local boolexpr b if GetEventPlayerChatString() == "-info" then set i=GetPlayerId(p)+1 else // function used to get Player # from color, name, or player number set i=GetPlayerIndexFromColorString(SubString(GetEventPlayerChatString(), 6, 22)) endif set randoms=I2S(udg_RandomHero[i]) set heros=I2S(udg_totalHeros[i]) set kills=I2S(udg_infoHKills[i]) set deaths=I2S(udg_infoDeaths[i]) set units=I2S(udg_infoKills[i]) set gold=I2S(udg_infoGold[i]) call ForceAddPlayer(f,p) if IsPlayerInForce(GetLocalPlayer(), f) then call ClearTextMessages() endif call DestroyForce(f) call DisplayTimedTextToPlayer( p, 0, 0, 10, ( " " + udg_playerColor[i] + udg_PlayerName[i-1] + "|r has " ) ) call DisplayTimedTextToPlayer( p, 0, 0, 10, ( ( PlayerInfo_Msg(randoms) + "|cffffcc00" + randoms ) + "|r Random heros" ) ) call DisplayTimedTextToPlayer( p, 0, 0, 10, ( ( PlayerInfo_Msg(heros) + "|cffffcc00" + heros ) + "|r Total heros" ) ) call DisplayTimedTextToPlayer( p, 0, 0, 10, ( ( PlayerInfo_Msg(units) + "|cffffcc00" + units ) + "|r Unit Kills" ) ) call DisplayTimedTextToPlayer( p, 0, 0, 10, ( ( PlayerInfo_Msg(gold) + "|cffffcc00" + gold ) + "|r Gold collected" ) ) call DisplayTimedTextToPlayer( p, 0, 0, 10, ( ( PlayerInfo_Msg(deaths) + "|cffffcc00" + deaths ) + "|r Deaths and" ) ) call DisplayTimedTextToPlayer( p, 0, 0, 10, ( ( PlayerInfo_Msg(kills) + "|cffffcc00" + kills ) + "|r Hero Kills " ) ) call TriggerSleepAction(1.0) set g=CreateGroup() set b=Condition(function PlayerInfoBool) call GroupEnumUnitsOfPlayer(g,Player(i-1),b) if FirstOfGroup(g)!=null then call DisplayTimedTextToPlayer( p, 0, 0, 10, ( " " + udg_playerColor[i] + " heros controlled are |r " ) ) loop set u=FirstOfGroup(g) exitwhen u==null call DisplayTimedTextToPlayer( GetTriggerPlayer(), 0, 0, 10, " " + GetUnitName(u) ) call GroupRemoveUnit(g,u) endloop endif call DestroyGroup(g) call DestroyBoolExpr(b) set f=null set g=null set u=null set b=null set randoms=null set heros=null set kills=null set deaths=null set units=null set gold=null endfunction //=========================================================================== function InitTrig_Player_Info takes nothing returns nothing local integer i=0 set gg_trg_Player_Info = CreateTrigger( ) loop exitwhen i>8 call TriggerRegisterPlayerChatEvent( gg_trg_Player_Info, Player(i), "-info", false ) set i=i+1 endloop call TriggerAddAction( gg_trg_Player_Info, function Trig_Player_Info_Actions ) endfunction |
