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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
26
если одна глобальная переменная у разных игроков имеет разное значение - это десинх или нет?
так значит таки не проверяли? но вот утверждаете...

то был пример, когда значение переменной локального игрока никто не знает из остальных. будь то зум или иное локальное значение
ну так и рассуждать нужно о конкретных кейсах, а не придумывать абстрактные примеры

в данном примере - если зум одного игрока нельзя узнать остальным игрокам (а точнее загнать в глобальную переменную) никаким образом - достаточно просто написать "нельзя" в виде ответа
еще раз спрашиваю, зачем остальным игрокам НАСТОЛЬКО необходимо знать зум остальных?
14
До того момента пока эта переменная не будет использоваться где-то в синх данных
так я её для того и загоняю в переменную, с целью использовать далее глобально с остальными общими данными
Hate:
зачем остальным игрокам необходимо знать зум остальных?
я так захотел
Hate:
еще раз спрашиваю
ещё вопросы? содержимое карманов показывать? 10 раз приседать?
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:
любым методом по вкусу
какие несколько методов имеются ввиду?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.