function AV_MbrdRefresh takes nothing returns nothing
local integer rows = AV_MbrdSetRows()
local integer i = 1
local integer n = 0
local integer a = 1
local multiboarditem mbi = null
loop
exitwhen i>udg_AV_MbrdPlayerCount
set n = udg_AV_MbrdPlayers[i]
if udg_AV_MbrdSpy[n]==false then
if GetLocalPlayer()==Player(n-1) then
call MultiboardDisplay(udg_AV_Mbrd[n], true)
endif
else
if GetLocalPlayer()==Player(n-1) then
call MultiboardDisplay(udg_AV_Mbrd[0], true)
endif
endif
loop
exitwhen a>rows
set mbi = MultiboardGetItem(udg_AV_Mbrd[n], a, 2)
call MultiboardSetItemValue(mbi, I2S(LoadInteger(udg_AV_MbrdHash, a, n)))
call MultiboardReleaseItem(mbi)
set mbi = MultiboardGetItem(udg_AV_Mbrd[0], a, n+1)
call MultiboardSetItemValue(mbi, I2S(LoadInteger(udg_AV_MbrdHash, a, n))) //эта ячейка обновляется только в столбике с красным игроком
call MultiboardReleaseItem(mbi)
set a = a+1
endloop
set i = i+1
endloop
set mbi = null
endfunction
Выводил на экран значение n после присвоения - прогоняет цикл для каждого игрока.
Принятый ответ
перед строкой с изменением ячейки делай дебаг всех значений
a, n, mbi и то что извлекаешь из хеша
a, n, mbi и то что извлекаешь из хеша
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
a, n, mbi и то что извлекаешь из хеша
Отредактирован avuremybe
udg_AV_Mbrd[n] - мультиборд отображающий ресурсы одного игрока n.
udg_AV_Mbrd[0] - мультиборд отображающий ресурсы всех игроков. Соответственно, n+1 это столбец с данными этого конкретного игрока.
Проблема пропуска последующих итераций внутреннего цикла состояла в том, что я не обнулял значение а.