как присвоить локальные значения игрока в глобальные переменные?
(не путать с local внутри функций)
т.е. например у игрока стоит -zoom 2500
но это у него только локально, и другие игроки не знают о его зуме
if GetLocalPlayer()==Player(i-1) then
set zz[i] = GetCameraField(CAMERA_FIELD_TARGET_DISTANCE)
endif
как глобальной переменной zz[i] присвоить значение зума какого-то игрока?
в коде выше это конечно же будет десинхрон сразу
в принципе можно было бы через отправку сообщения в чат от игрока
а потом парсануть это сообщение из чата в переменную
только нативной функции отправки сообщения в общий чат не существует
даже новомодная BlzDisplayChatMessage и то - только в личку
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
32
1 год назад
1
В jass есть gamecache (кешь) и набор функций для его работы, в нем есть функции для синхронизации сохраненных в кешь данных между игроками, синхронизация кеша производится только в потоке триггера, и синхронизация не мгновенная, может понадобится несколько секунд.
Вот именно для синхронизации и нужны TriggerSleepAction и gamecache.
На сайте полно примеров работы с кешем, а так же статей по сихронизации.
0
14
1 год назад
Отредактирован host_pi
0
синхронизация не мгновенная, может понадобится несколько секунд
это не подходит. 0,2-0,5 секунды это максимально допустимый инпут лаг
quq_CCCP:
На сайте полно примеров работы с кешем, а так же статей по сихронизации
	if GetLocalPlayer()==GetOwningPlayer(s)then //взять конкретного игрока
	call StoreReal(AL,NKB(s),"MouseX",x) //засейвить мышь в хэш
	call StoreReal(AL,NKB(s),"MouseY",y)
	call SyncStoredReal(AL,NKB(s),"MouseX") //отправить кэш в синк
	call SyncStoredReal(AL,NKB(s),"MouseY")
	endif
	call StoreReal(AL,NKB(s),"MouseX",0) //перезаписать коорды всем
	call StoreReal(AL,NKB(s),"MouseY",0)
попробую покурить, посмотрю на инпут лаг
паладин перемещающийся по мыше красного игрока
о, там даже есть пример именно того что нужно
и инпут лаг как раз 0.2 сек
похоже на первое решение в этой теме, точно покурю
только видимо размер кода очень большой на всё это, измеряется сотнями строк
Среднее время синка - 0.16 секунд
о, глазомер в порядке
0
32
1 год назад
0
Тут дело в том что от игры к игре это время рандомно, бывают случаи что синх длится секунд 5, то вовсе игроки таки отваливаются.
0
14
1 год назад
Отредактирован host_pi
0
GameCacheSync 2021

Warcraft III map script
Generated by the Warcraft III World Editor
Date: Sat Nov 27 19:10:21 2021
Map Author: Unryze & quq_CCCP
а статья от N1ghtSiren

бывают случаи что синх длится секунд 5
а это зависит от количества операций? одно дело периодически передавать координаты постоянно. а другое дело - передать две координаты, скажем 1 раз в 10 секунд или 1 раз в минуту. только вопрос - сколько строк кода такое займёт. я там вижу и доп файлы в той карте "ExtraCache.dat" "text.fdf" - слишком всё это громоздко, и наверное зависит от целеполагания. когда такая фича является основой карты - это можно понять. а когда хочешь сделать просто БОНУСОМ функцию, то пару сотен строк кода и доп файлы - дороговато
0
18
1 год назад
0
host_pi, Да, по числу из чата. Зачем брать из камеры, если камера юзает число из чата?)

host_pi, А вот насчёт получения не знаю, как оно будет там работать.
0
14
1 год назад
Отредактирован host_pi
0
Да, по числу из чата.
с добрым утром, по числу из чата любой сможет
Зачем брать из камеры, если камера юзает число из чата?)
зачем брать из чата, когда можно взять из координат камеры?
ты сам пробовал хоть раз написать -создатьюнита +25724 -15876 ? попробуй
а потом попробуй 10 раз для разных координат написать
может потом ты поймешь смысол этой темы уже
если камера юзает число из чата?)
то был как пример синхронизации данных т.е вывода локального значения у локального игрока в глобальную общую переменную, но там же и указано, что такого невозможно сделать через чат, т.к. попросту на джасе нет функции написания сообщения в чат от игрока
1
15
1 год назад
1
Можно синкать через SelectUnit, он вроде как быстрее кэша.
0
14
1 год назад
Отредактирован host_pi
0
Можно синкать через SelectUnit, он вроде как быстрее кэша.
это всё конечно хорошо, вот бы еще пример кода увидеть
например тут пример на 200 строк, это оно? www.hiveworkshop.com/threads/vjass-sync-local-booleans.323980
1
29
1 год назад
1
это всё конечно хорошо, вот бы еще пример кода увидеть
0
14
1 год назад
0
такс, а на JN Loader нету случайно функции синхронизации локальных значений?
может и не придётся 1000 строк кода ковырять то, если там есть уже
Чтобы оставить комментарий, пожалуйста, войдите на сайт.