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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
7
1 год назад
Отредактирован Zemfira
0
Я тут глупость написал, не разобравшись.
0
26
1 год назад
0
в коде выше это конечно же будет десинхрон сразу
это вы проверяли?
0
14
1 год назад
Отредактирован host_pi
0
это вы проверяли?
конечно, если запускать функцию через чат и i=GetPlayerId(GetTriggerPlayer())+1, то только у него лично и изменится глобальная переменная, а у остальных кто не писал в чат - у них останется старое значение
0
26
1 год назад
0
это вы проверяли?
конечно, если запускать функцию через чат и назначить номер того кто писал на i, то только у него лично и изменится глобальная переменная, а у остальных кто не писал в чат - у них останется старое значение
так десинк то есть?

и зачем другим игрокам знать о зуме других игроков?
0
14
1 год назад
Отредактирован host_pi
0
так десинк то есть?
если одна глобальная переменная у разных игроков имеет разное значение - это десинх или нет?
Hate:
и зачем другим игрокам знать о зуме других игроков?
то был пример, когда значение переменной локального игрока никто не знает из остальных. будь то зум или иное локальное значение
а если его никто не знает, значит с ним нельзя толком работать
в данном примере - если зум одного игрока нельзя узнать остальным игрокам (а точнее загнать в глобальную переменную) никаким образом - достаточно просто написать "нельзя" в виде ответа
либо если можно - то как?
под "другими игроками" я имею ввиду всю карту в целом. если карта не может загнать значения в глобалки - значит смысла в таких глобалках нет
1
29
1 год назад
1
если одна глобальная переменная у разных игроков имеет разное значение - это десинх или нет?
До того момента пока эта переменная не будет использоваться где-то в синх данных, то норм.
0
26
1 год назад
0
если одна глобальная переменная у разных игроков имеет разное значение - это десинх или нет?
так значит таки не проверяли? но вот утверждаете...

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

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