Эта функция вызывает десинхрон я не понимаю в чем причина.
function BigRefreshBoard takes nothing returns nothing
	local integer VT8
	local integer VU8
	local string Time
	local real YO8
	local string s1=" "
	local integer r
	local integer i
	local integer array time_1a
	local string array color_1a
	local integer index_1a=0
	local integer array time_1b
	local string array color_1b
	local integer index_1b=0
	local integer x=0
	local integer id
	local string OOD
	local string OPD
	local string OQD
	local string ORD
	local string OSD
	local string s2=" "
	local string s
	local string sbis
	local real OTD
	local real OTDbis
	local string spacer
	local integer OUD=0
	local string OVD=""
	local string OWD=""
	local integer OXD=0
	local integer OYD=0
	local string OZD=""
	local integer pid
	local string charges=""
    local integer array kills
	if MainMB==null then
		return
	endif
	set i=0
	loop
		exitwhen i>5
		set pid=GetPlayerId(Sentinels[i])
		set r=R2I(TimerGetRemaining(HeroRespawnTimer[pid]))
		if r>0 then
			set OUD=OUD+OJD(r)
			if OXD==0 then
				if r<10 then
					set OVD=udg_Colors[pid]+"0"+I2S(r)+" |r"
				else
					set OVD=udg_Colors[pid]+I2S(r)+" |r"
				endif
			else
				if r<10 then
					set OVD=OVD+WHITE+"| |r"+udg_Colors[pid]+"0"+I2S(r)+" |r"
				else
					set OVD=OVD+WHITE+"| |r"+udg_Colors[pid]+I2S(r)+" |r"
				endif
			endif
			set OXD=OXD+1
		endif
		set i=i+1
	endloop
	if OXD>0 then
		if IsPlayerAlly(GetLocalPlayer(),Sentinels[0]) then
			set OVD=WHITE+"["+Allied+" |r"+OVD+WHITE+"]|r"
		else
			set OVD=RED2+"["+Enemy+" |r"+OVD+RED2+"]|r"
		endif
	endif
	set i=0
	loop
		exitwhen i>5
		set pid=GetPlayerId(Scourges[i])
		set r=R2I(TimerGetRemaining(HeroRespawnTimer[pid]))
		if r>0 then
			set OUD=OUD+OJD(r)
			if OYD==0 then
				if r<10 then
					set OWD=udg_Colors[pid]+"0"+I2S(r)+" |r"
				else
					set OWD=udg_Colors[pid]+I2S(r)+" |r"
				endif
			else
				if r<10 then
					set OWD=OWD+WHITE+"| |r"+udg_Colors[pid]+"0"+I2S(r)+" |r"
				else
					set OWD=OWD+WHITE+"| |r"+udg_Colors[pid]+I2S(r)+" |r"
				endif
			endif
			set OYD=OYD+1
		endif
		set i=i+1
	endloop
	if OYD>0 then
		if IsPlayerAlly(GetLocalPlayer(),Scourges[0]) then
			set OWD=WHITE+"["+" |r"+OWD+WHITE+"]|r"
		else
			set OWD=RED2+"["+" |r"+OWD+RED2+"]|r"
		endif
	endif
	if MainMB!=null then
		set id=GetPlayerId(GetLocalPlayer())
		if id>=0 and id<16 then
			if CSONStatus1[x]then
				set OOD=I2S(Kills[id])
				set OPD=I2S(Deaths[id])
				set OQD=I2S(Assists[id])
				set ORD=I2S(PlayerCS[id])
				set OSD=I2S(CSDenies[id])
				set s2=" |c00838B8B("+OOD+"/"+OPD+"/"+OQD+" - "+ORD+"/"+OSD+" - |r|c00FFDC00"+I2S(ReliableGold[id])+"|r |c00838B8B)|r"
			endif
		endif
	endif
    if OYD==0 and OXD==0 then
        call MultiboardSetTitleText(MainMB,s2)
    else
        if IsPlayerAlly(GetLocalPlayer(),Sentinels[0]) then
			call MultiboardSetTitleText(MainMB,OWD+" "+OVD+" "+s2)
		else
			call MultiboardSetTitleText(MainMB,OVD+" "+OWD+" "+s2)
		endif
    endif
	set VT8=1
	set VU8=SentinelsIngame
	loop
		exitwhen VT8>VU8
		set pid=GetPlayerId(Sents[VT8])
		call MBSetIcon(MainMB,1,VT8+2,US8(udg_Hero[pid]))
		call MBSetText(MainMB,3,VT8+2,"|c00838B8B"+I2S(GetHeroLevel(udg_Hero[pid]))+"|r")
			call MBSetWidth(MainMB,8,1,2)
			call MBSetWidth(MainMB,9,1,.1)
			call MBSetWidth(MainMB,10,1,.1)
			call MBSetWidth(MainMB,11,1,.1)
			call MBSetWidth(MainMB,12,1,.1)
			call MBSetWidth(MainMB,13,1,.1)
			call MBSetWidth(MainMB,14,1,.1)
			call MBSetWidth(MainMB,8,VT8+2,2.5)
			call MBSetWidth(MainMB,9,VT8+2,.1)
			call MBSetWidth(MainMB,10,VT8+2,.1)
			call MBSetWidth(MainMB,11,VT8+2,.1)
			call MBSetWidth(MainMB,12,VT8+2,.1)
			call MBSetWidth(MainMB,13,VT8+2,.1)
			call MBSetWidth(MainMB,14,VT8+2,.1)
			call MBSetStyle(MainMB,9,VT8+2,false,false)
			call MBSetStyle(MainMB,10,VT8+2,false,false)
			call MBSetStyle(MainMB,11,VT8+2,false,false)
			call MBSetStyle(MainMB,12,VT8+2,false,false)
			call MBSetStyle(MainMB,13,VT8+2,false,false)
			call MBSetStyle(MainMB,14,VT8+2,false,false)
			call MBSetText(MainMB,9,1," ")
		call MBSetIcon(MainMB,9,VT8+2,OKD(Sents[VT8],1))
		call MBSetIcon(MainMB,10,VT8+2,OKD(Sents[VT8],2))
		call MBSetIcon(MainMB,11,VT8+2,OKD(Sents[VT8],3))
		call MBSetIcon(MainMB,12,VT8+2,OKD(Sents[VT8],4))
		call MBSetIcon(MainMB,13,VT8+2,OKD(Sents[VT8],5))
		call MBSetIcon(MainMB,14,VT8+2,OKD(Sents[VT8],6))
		set pid=GetPlayerId(Sents[VT8])
		if(UA8(udg_Hero[pid])and udg_Hero[pid]!=null and TimerGetRemaining(HeroRespawnTimer[pid])>0)then
			if IsPlayerAlly(GetLocalPlayer(),Sents[VT8])then
				set OZD=WHITE+" ("+I2S(R2I(TimerGetRemaining(HeroRespawnTimer[pid])))+")|r"
			else
				set OZD=RED2+" ("+I2S(R2I(TimerGetRemaining(HeroRespawnTimer[pid])))+")|r"
			endif
		else
			set OZD="  "
		endif
		if IsPlayerLeftGame[pid]then
			call MBSetText(MainMB,1,VT8+2,TabTab+"|c00333333"+(PlayerNames[pid])+"|r"+OZD)
		else
			call MBSetText(MainMB,1,VT8+2,TabTab+(PlayerNames[pid])+OZD)
		endif
		set OTD=(TimerGetRemaining(PrimUltiTimer[pid]))
		if OTD>0 then
			set s=I2S(R2I(OTD))
		else
			set s=""
		endif
		if IsPlayerAlly(GetLocalPlayer(),Sents[VT8])==false then
			call MBSetText(MainMB,8,VT8+2," ")
			set s=" "
			set sbis=" "
		else
			call MBSetText(MainMB,8,VT8+2,"|cffffcc00"+I2S(R2I(GetPlayerState(Sents[VT8],PLAYER_STATE_RESOURCE_GOLD)))+"|r")
		endif
		call MBSetText(MainMB,2,VT8+2,s)
		call MBSetText(MainMB,3,VT8+2,sbis)
		set VT8=VT8+1
	endloop
	set VT8=1
	set VU8=ScourgesIngame
	loop
		exitwhen VT8>VU8
		set pid=GetPlayerId(Scrgs[VT8])
		call MBSetIcon(MainMB,1,VT8+3+SentinelsIngame,US8(udg_Hero[pid]))
		call MBSetText(MainMB,3,VT8+3+SentinelsIngame,"|c00838B8B"+I2S(GetHeroLevel(udg_Hero[pid]))+"|r")
			call MBSetWidth(MainMB,8,1,2)
			call MBSetWidth(MainMB,9,1,.1)
			call MBSetWidth(MainMB,10,1,.1)
			call MBSetWidth(MainMB,11,1,.1)
			call MBSetWidth(MainMB,12,1,.1)
			call MBSetWidth(MainMB,13,1,.1)
			call MBSetWidth(MainMB,14,1,.1)
			call MBSetWidth(MainMB,8,VT8+3+SentinelsIngame,2.5)
			call MBSetWidth(MainMB,9,VT8+3+SentinelsIngame,.1)
			call MBSetWidth(MainMB,10,VT8+3+SentinelsIngame,.1)
			call MBSetWidth(MainMB,11,VT8+3+SentinelsIngame,.1)
			call MBSetWidth(MainMB,12,VT8+3+SentinelsIngame,.1)
			call MBSetWidth(MainMB,13,VT8+3+SentinelsIngame,.1)
			call MBSetWidth(MainMB,14,VT8+3+SentinelsIngame,.1)
			call MBSetStyle(MainMB,9,VT8+3+SentinelsIngame,false,false)
			call MBSetStyle(MainMB,10,VT8+3+SentinelsIngame,false,false)
			call MBSetStyle(MainMB,11,VT8+3+SentinelsIngame,false,false)
			call MBSetStyle(MainMB,12,VT8+3+SentinelsIngame,false,false)
			call MBSetStyle(MainMB,13,VT8+3+SentinelsIngame,false,false)
			call MBSetStyle(MainMB,14,VT8+3+SentinelsIngame,false,false)
			call MBSetText(MainMB,9,1," ")
		call MBSetIcon(MainMB,9,VT8+3+SentinelsIngame,OKD(Scrgs[VT8],1))
		call MBSetIcon(MainMB,10,VT8+3+SentinelsIngame,OKD(Scrgs[VT8],2))
		call MBSetIcon(MainMB,11,VT8+3+SentinelsIngame,OKD(Scrgs[VT8],3))
		call MBSetIcon(MainMB,12,VT8+3+SentinelsIngame,OKD(Scrgs[VT8],4))
		call MBSetIcon(MainMB,13,VT8+3+SentinelsIngame,OKD(Scrgs[VT8],5))
		call MBSetIcon(MainMB,14,VT8+3+SentinelsIngame,OKD(Scrgs[VT8],6))
		set pid=GetPlayerId(Scrgs[VT8])
		if(UA8(udg_Hero[pid])and udg_Hero[pid]!=null and TimerGetRemaining(HeroRespawnTimer[pid])>0)then
			if IsPlayerAlly(GetLocalPlayer(),Scrgs[VT8])then
				set OZD=WHITE+" ("+I2S(R2I(TimerGetRemaining(HeroRespawnTimer[pid])))+")|r"
			else
				set OZD=RED2+" ("+I2S(R2I(TimerGetRemaining(HeroRespawnTimer[pid])))+")|r"
			endif
		else
			set OZD="  "
		endif
		if IsPlayerLeftGame[pid]then
			call MBSetText(MainMB,1,VT8+3+SentinelsIngame,TabTab+"|c00333333"+(PlayerNames[pid])+"|r"+OZD)
		else
			call MBSetText(MainMB,1,VT8+3+SentinelsIngame,TabTab+(PlayerNames[pid])+OZD)
		endif
		set OTD=TimerGetRemaining(PrimUltiTimer[pid])
		if OTD>0 then
			set s=I2S(R2I(OTD))
		else
			set s=""
		endif
		if IsPlayerAlly(GetLocalPlayer(),Scrgs[VT8])==false then
			call MBSetText(MainMB,8,VT8+3+SentinelsIngame," ")
			set s=" "
			set sbis=" "
		else
			call MBSetText(MainMB,8,VT8+3+SentinelsIngame,"|cffffcc00"+I2S(R2I(GetPlayerState(Scrgs[VT8],PLAYER_STATE_RESOURCE_GOLD)))+"|r")
		endif
		call MBSetText(MainMB,2,VT8+3+SentinelsIngame,s)
		call MBSetText(MainMB,3,VT8+3+SentinelsIngame,sbis)
		set VT8=VT8+1
	endloop
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
4 года назад
0
Похожие вопросы:

ответ
Melissa, Короче я разобрался - все проблемы были из-за переменной Total_Num_Players, она была подбита под живых игроков, а так как я был единственным живым игроком, то давала строку равную 1 (то есть 0+1 я). В общем спасибо, не додумал бы без твоей помощи до своей ошибки(у тебя ведь создаётся по заданому числу количество строк).
ответ

0
3
4 года назад
0
Ну это ясно дело но вот я не понимаю где ошибка
0
3
4 года назад
0
это функция из доты которая не десинхронит я заменил GetObjectName на тексты в этом причина?
0
3
4 года назад
0
извини конечно но сжатый код доты легче читается чем твой
0
32
4 года назад
0
Карту в студию, мб еше что упустил, но я бы локально текст не менял в мультиборде, лишь менял строку текста.

Кстати а зачем менял GetObjectname? Оно там не просто так, оно нужно для локализации и хостботов.
0
3
4 года назад
0
это как смена текста локально?
Загруженные файлы
0
32
4 года назад
0
У тебя идут локально вызовы функции MbSetText, где создается обьект multiborditem. нужно не локально менять ячейку, а глобально, но текст ячейки задавать локально.

Дота так себе для копирования в свою карту.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.