Можно ли вызвать функцию DialogSetMessage для локального игрока, не побоявшись при этом рассинхрона?
Просто если я сделаю так:
Просто если я сделаю так:
function DialogSetMessageForPlayer takes dialog whichDialog, player whichPlayer, string message, string defaulMessage returns nothing
local string s = defaulMessage
if GetLocalPlayer() == whichPlayer then
set s = message
endif
call DialogSetMessage(whichDialog, s)
endfunction
То у других игроков текст в диалоговом окне будет затираться на defaultMessage, а в идеале хотелось бы чтобы для остальных игроков текст не менялся. То есть примерно так:
function DialogSetMessageForPlayer takes dialog whichDialog, player whichPlayer, string message returns nothing
if GetLocalPlayer() == whichPlayer then
call DialogSetMessage(whichDialog, message)
endif
endfunction
Принятый ответ
Вообще по идее диалоговое окно как бы фрейм, и он не должно дэсинхронизироваться от такого
Но всё можно ожидать от патча 1.26, но десинк возможен, если я токмо не ошибаюсь.
Но всё можно ожидать от патча 1.26, но десинк возможен, если я токмо не ошибаюсь.
if GetLocalPlayer() == whichPlayer then
call DialogSetMessage(whichDialog, message)
endif
Если использовать локальную строку, то лучше создавать массив хранящий в себе строки, который должны показываться у игрока.
if GetLocalPlayer() == whichPlayer then
set s = message
else
set s = strData[ GetPlayerId( GetLocalPlayer() ) ]
endif
А если оставить тот метод со строкой, то есть шанс, что у другого пропадёт просто надпись-сообщение:
Если этот использовать.
Если этот использовать.
if GetLocalPlayer() == whichPlayer then
set s = message
endif
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован 8gabriel8
Но всё можно ожидать от патча 1.26, но десинк возможен, если я токмо не ошибаюсь.
Если этот использовать.