как присвоить локальные значения игрока в глобальные переменные?
(не путать с local внутри функций)
т.е. например у игрока стоит -zoom 2500
но это у него только локально, и другие игроки не знают о его зуме
if GetLocalPlayer()==Player(i-1) then
set zz[i] = GetCameraField(CAMERA_FIELD_TARGET_DISTANCE)
endif
как глобальной переменной zz[i] присвоить значение зума какого-то игрока?
в коде выше это конечно же будет десинхрон сразу
в принципе можно было бы через отправку сообщения в чат от игрока
а потом парсануть это сообщение из чата в переменную
только нативной функции отправки сообщения в общий чат не существует
даже новомодная BlzDisplayChatMessage и то - только в личку
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
26
if GetLocalPlayer()==Player(i-1) then
set zz[i] = GetCameraField(CAMERA_FIELD_TARGET_DISTANCE)
endif
Я не шарю в этих ваших мультиплеерах, и в синтаксисе джасса тоже, но типа почему мы не можем присваивать переменную до проверки на игрока? То есть, я интуитивно понимаю, что это так не будет работать, но можете объяснить почему?
zz[i] = GetLocalCameraField(i)

function GetLocalCameraField(playerId)
	--где-то тут должна быть конструкция по обращению к нужному игроку
    return GetCameraField(CAMERA_FIELD_TARGET_DISTANCE)
end
14
--где-то тут должна быть конструкция по обращению к нужному игроку
оба кода ниже выдают одинаковый результат -> разные значения zz для двух разных игроков:
(у одного 0 а у второго размер зума)
(тригерит только один игрок чатом)
т.е. не позволяют вывести локальное значение в глобалку
function GetLocalCameraField takes integer i returns integer
local integer j=0
if GetLocalPlayer()==Player(i-1) then
set j = R2I(GetCameraField(CAMERA_FIELD_TARGET_DISTANCE))
return j
endif
endfunction
local integer i=GetPlayerId(GetTriggerPlayer())+1
set zz = GetLocalCameraField(i)
call BJDebugMsg("zz = "+I2S(zz))
function GetLocalCameraField takes integer i returns integer
local integer j=0
if GetLocalPlayer()==Player(i-1) then
set j = R2I(GetCameraField(CAMERA_FIELD_TARGET_DISTANCE))
endif
return j
endfunction
local integer i=GetPlayerId(GetTriggerPlayer())+1
set zz = GetLocalCameraField(i)
call BJDebugMsg("zz = "+I2S(zz))
26
ещё вопросы? содержимое карманов показывать? 10 раз приседать?
это самый главный вопрос. если вы не можете ответить на него, то оно вам не нужно. тогда следует вопрос, зачем вы пытаетесь решать несуществующие проблемы?
14
это самый главный вопрос.
самый главный вопрос находится в шапке темы
Hate:
если вы не можете ответить на него, то оно вам не нужно. тогда следует вопрос, зачем вы пытаетесь решать несуществующие проблемы?
приём пациентов у домашних психотерапевтов - в соседней комнате, так что ты ошибся дверью со своими левыми вопросами не по теме и такими же левыми выводами - сам придумал, сам сделал выводы, сам парировал
за сим делаю вывод: такое средствами JASS сделать невозможно, раз за сутки никто не смог ответить на базовый вопрос
26
это самый главный вопрос.
самый главный вопрос находится в шапке темы
Hate:
если вы не можете ответить на него, то оно вам не нужно. тогда следует вопрос, зачем вы пытаетесь решать несуществующие проблемы?
приём пациентов у домашних психотерапевтов - в соседней комнате, так что ты ошибся дверью со своими левыми вопросами не по теме и такими же левыми выводами - сам придумал, сам сделал выводы, сам парировал
за сим делаю вывод: такое средствами JASS сделать невозможно, раз за сутки никто не смог ответить на базовый вопрос
можно, но вам найух не нужно. когда будут конкретные вопросы а не влажные абстрактные фантазии тогда поговорим.
в контексте зума, другим игрокам вообще нет смысла знать зум других
14
когда будут конкретные вопросы а не влажные абстрактные фантазии тогда поговорим.
тебя бы следовало игнорировать, т.к. решений от тебя не будет
но смотри, публичная проверка:
как, зная координаты центра камеры игрока, или по-другому - координаты его центра экрана, то есть имея значения X Y - GetCameraTargetPositionX() GetCameraTargetPositionY() - заспавнить в этом центре по этим координатам, через строку чата, скажем, юнита, и не поймать десинхрона, чтобы этот юнит появился у всех игроков. т.е. перевести локальные координаты камеры игрока в глобального юнита.
ещё раз - игрок пишет тригер-текст в чат -unitcam и в его текущих координатах экрана GetCameraTargetPositionX() GetCameraTargetPositionY() (в момент нажатия клавиши Enter) появляется юнит без десинхрона и все другие игроки его видят
либо ты выдаёшь решение, ответом на этот пост
либо пишешь "ой, тебя неправильно поняли"
три, два, один:
30
host_pi, кто мешает синхронизировать координаты любым методом по вкусу?
14
кто мешает синхронизировать координаты
что под этим понятием имеется ввиду?
nazarpunk:
любым методом по вкусу
какие несколько методов имеются ввиду?
30
что под этим понятием имеется ввиду?
Подрузамевается синхронизация значений между игроками.
какие несколько методов имеются ввиду?
Какая версия игры имеется ввиду?
14
Подрузамевается синхронизация значений между игроками.
т.е. я спрашиваю как по координатам камеры одного из игроков создать юнита, а мне в ответ предлагают поставить камеры всех игроков в одну (неизвестно какую) точку и там заспавнить юнита? а камеры потом пусть игроки возвращают самостоятельно в исходные точки? я сейчас правильно перевёл твою мысль?
nazarpunk:
Какая версия игры имеется ввиду?
1.26
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.