Вопрос по следующим функциям
CreateTextTagLocBJ
CameraSetupApplyForceDuration
call ShowDestructable
DestroyTextTag
Периодический триггер с малым периодом (0.05, 0.01 итд)
И взаимодействие с Trackable
Что-нибудь из этого может вызвать десинхрон?
Может ли любая функция BJ вызвать десинхрон вместе с if getlocalplayer()==p
Можно ли заменить перечисленные функции чем-либо, если они вызывают десинхрон?

ShowDestructable вызовет десинх, также как и любой объект не относящийся к визуализации. А вообще здесь есть статья которая так и называется GetLocalPlayer
`
ОЖИДАНИЕ РЕКЛАМЫ...
4
Насчет ShowDestructable - смотрел на хайве, там нету ответа (инглиш мой ужасный, нашел только вопрос и "answer = ?"
Собственно, задаю столь глупый вопрос потому-что имею временные проблемы с интернетом и немогу поиграть даже по гарене, никто меня не видит. А друг далеко
6
ShowDestructable вызовет десинх, также как и любой объект не относящийся к визуализации. А вообще здесь есть статья которая так и называется GetLocalPlayer
Принятый ответ
7
почитай тут, как запустить 2 окна варика и играть с самим собой, и проверяй на личном опыте)
4
Ige:
почитай тут, как запустить 2 окна варика и играть с самим собой, и проверяй на личном опыте)
Спасибо! Прогнал все функции, в итоге получилось вот что:
ShowDestructablе вызывает десинхрон
CreateTextTagLocBJ вызывает десинхрон О_О
И вот такой вопрос... а как мне тогда сделать отображение всплывающего текста для локального игрока?
PS ShowTextTagForForce (или как там ее) не работает(
6
Smart096, Создаешь текст-тэг прячешь его, показываешь для локального игрока
7
Smart096:
PS ShowTextTagForForce (или как там ее) не работает(
Вызывает десинк или что не работает?

судя по коду
function ShowTextTagForceBJ takes boolean show, texttag tt, force whichForce returns nothing
    if (IsPlayerInForce(GetLocalPlayer(), whichForce)) then
        // Use only local code (no net traffic) within this block to avoid desyncs.
        call SetTextTagVisibility(tt, show)
    endif
endfunction
функция должна показывать/скрывать текстаг для группы игроков
6
Ige, функция показывает/скрывает плавающий текст для игрока в группе игроков
7
Tumart:
Ige, функция показывает/скрывает плавающий текст для игрока в группе игроков
для всех игроков в указанной группе, а не для 1)
6
Ige, не обязательно call ShowTextTagForceBJ( true, GetLastCreatedTextTag(), bj_FORCE_PLAYER[0] )
Smart096, ты сделал так и не работает?
Загруженные файлы
7
Tumart, в указанной тобой группе bj_FORCE_PLAYER[0] всего 1 игрок)

Smart096, если Destructable невозможно выделить в игре, тогда можно заменить на юнита с москитами и локально изменить ему прозрачность
6
Ige, я говорю про конкретную функцию которая показывает тексттэг для игрока в группе игроков IsPlayerInForce(GetLocalPlayer(), whichForce) потому что иначе гуи функцией ShowTextTagForceBJ не сделаешь
7
Tumart, забей)
Tumart, кстати, на твоем скриншоте небольшая ошибка. Текстаги по умолчанию показаны => их нужно скрывать
6
Ige, про это я писал выше я просто показал саму функцию мож он как то по другому делает
7
Tumart, по-моему, он уже давно со всем разобрался, а вопрос забыл закрыть =)
Просто оставлю это здесь , и перестану набивать опыт
32
DUSPLAY что то там дисинх не вызовит, ибо отвечает только за визуальный эффект. Смотри внимательно, испольщование GetRandomInt /real недопустимо использовать локально, как и создание хендлов, испольщование функций которые создадут или вернут некий объект...
15
Некоторые BJ-функция внутри себя создают/разрушают объекты, потому могут вызывать десинх.
Лучше BJ-функции не использовать в сочетании с GetLocalPlayer.
Лучше BJ-функции не использовать вовсе.
28
quq_CCCP, сокрытие объектов которые активно участвуют в игровом взаимодействии (юниты, разрушаемые) вызовет десинк
в общем если у объекта не только визуальный эффект то сокрытие создаст десинк
32
nvc123:
quq_CCCP, сокрытие объектов которые активно участвуют в игровом взаимодействии (юниты, разрушаемые) вызовет десинк
Ты это про хайды виджетов, я про тексты, мультиборды, цвета, пинги и прочие визуалки.
Разумеется локально хайдить виджеты низя.
28
quq_CCCP, я просто дополнил твой ответ
ибо это для тебя очевидно что их хайдить нельзя
а для тех кто читает твой коммент это может быть не так очевидно
а потом нубы будут задавать вопросы не прочитав статьи но ссылаясь на твой коммент
30
как мне тогда сделать отображение всплывающего текста для локального игрока?
Создаёшь переменную типа тексттаг, дальше 2 варианта:
  • Запиливаешь в переменную нужный текст, потом настраиваешь видимость дефолтными средствами (всякие ShowTextTagForceBJ() и иже с ними)
  • Создаёшь тексттаг всем, но нужным игрокам через GetLocalPlayer() заполняешь его нужным текстом. Можно каждому свой текст сделать, и машины разных игроков никогда не узнают, что у них разные значения, т.к. по факту вар постоянно сверяет с мастер-клиентом (хостом) только наличие хендлов в большинстве случаев, а не их наполнение, особенно если это наполнение нельзя оттуда извлечь.

Некоторые BJ-функция внутри себя создают/разрушают объекты, потому могут вызывать десинх.
Лучше BJ-функции не использовать в сочетании с GetLocalPlayer.
Лучше BJ-функции не использовать вовсе.
Иногда надо ещё думать вперёд делать. Некоторые BJ функции действительно причиняют много вреда в большом количестве вариантов применения, но некоторые вполне себе адекватно функционируют, не несут в себе никаких ошибок, утечек или бесполезных вызовов, и раскрывать их просто за то, что в имени есть BJ мне кажется эдаким расизмом от Jass, ещё и себе любимому лишней работы добавляется, ведь приходится переписывать на нативки всё.
К таким можно отнести многие функции регистрации событий, например, или та же самая ShowTextTagForceBJ()
Чтобы оставить комментарий, пожалуйста, войдите на сайт.