Зачем брать из камеры, если камера юзает число из чата?)
зачем брать из чата, когда можно взять из координат камеры?
ты сам пробовал хоть раз написать -создатьюнита +25724 -15876 ? попробуй
а потом попробуй 10 раз для разных координат написать
может потом ты поймешь смысол этой темы уже
то был как пример синхронизации данных т.е вывода локального значения у локального игрока в глобальную общую переменную, но там же и указано, что такого невозможно сделать через чат, т.к. попросту на джасе нет функции написания сообщения в чат от игрока
а это зависит от количества операций? одно дело периодически передавать координаты постоянно. а другое дело - передать две координаты, скажем 1 раз в 10 секунд или 1 раз в минуту. только вопрос - сколько строк кода такое займёт. я там вижу и доп файлы в той карте "ExtraCache.dat" "text.fdf" - слишком всё это громоздко, и наверное зависит от целеполагания. когда такая фича является основой карты - это можно понять. а когда хочешь сделать просто БОНУСОМ функцию, то пару сотен строк кода и доп файлы - дороговато
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 сек
похоже на первое решение в этой теме, точно покурю
только видимо размер кода очень большой на всё это, измеряется сотнями строк
сделать глобал массив чисел, куда отправлять все 2500 итп по индексу игрока, вводящего сообщение
пример кода? имеется ввиду ставить зум по числу из чата? или что?
команды из чата не десинхронят
но задача состоит в том, чтобы получить число 2500 не из чата (путём ввода игроком этих 2500), а напрямую из настроек камеры игрока либо если такое невозможно - то признаться что такое невозможно сделать
давай ещё раз
ты мне предлагаешь задать самому в коде переменные set X=100 set Y=200 и создать по этим координатам там же в коде юнита? так?
или как конкретно ты предлагаешь создать массив точек? пиши код
))
протести создание юнита в центре камеры, с вероятностю в 98% десинхрона не будет
я это протестил ещё ДО создания этой темы
и если бы десинхрона от координат камеры не было, этой темы бы тоже не было
да даже без тестов ясно как белый день что будет десинхрон
и да, на тестах десинхрон был физический а не только в значениях переменных
и да, на разных клиентах был разный результат исполнения кода
и да, на одном клиенте был объект, а на втором клиенте не было объекта
но это не десинхрон, это просто надо "правильно" кодить. но как конкретно - за 20 коментов никто не знает , да?
)))))))))))))) пиу пиу тирлюм тирлюм )))))))) весила смишна )))))) Borodach:
Но не проверяй значение переменных, а именно функцию в целом.
а если у вас десинхрон это не разные значения у одних и тех же переменных, а табличка "ОЖИДАНИЕ ИГРОКА" - то удачи. щас бы сидеть и ловить когда игра обнаружит несоответствие переменных и выдаст тебе табличку не сразу в моменте, а минуты через две. зато две минуты не было десинхрона ага Borodach:
с вероятностю в 98% десинхрона не будет
это после таких советов появляются карты, которые крашат даже на стадии инициализации? а "умные" дяди советуют перезайти в лобби после скачки карты? а из новшеств в карте примерно НИЧЕГО особенного, но ты перезайди, а то вася-кодер криво накодил и обложил всё мемхаками. да?
Подрузамевается синхронизация значений между игроками.
т.е. я спрашиваю как по координатам камеры одного из игроков создать юнита, а мне в ответ предлагают поставить камеры всех игроков в одну (неизвестно какую) точку и там заспавнить юнита? а камеры потом пусть игроки возвращают самостоятельно в исходные точки? я сейчас правильно перевёл твою мысль? nazarpunk:
когда будут конкретные вопросы а не влажные абстрактные фантазии тогда поговорим.
тебя бы следовало игнорировать, т.к. решений от тебя не будет
но смотри, публичная проверка:
как, зная координаты центра камеры игрока, или по-другому - координаты его центра экрана, то есть имея значения X Y - GetCameraTargetPositionX() GetCameraTargetPositionY() - заспавнить в этом центре по этим координатам, через строку чата, скажем, юнита, и не поймать десинхрона, чтобы этот юнит появился у всех игроков. т.е. перевести локальные координаты камеры игрока в глобального юнита.
ещё раз - игрок пишет тригер-текст в чат -unitcam и в его текущих координатах экрана GetCameraTargetPositionX() GetCameraTargetPositionY() (в момент нажатия клавиши Enter) появляется юнит без десинхрона и все другие игроки его видят
либо ты выдаёшь решение, ответом на этот пост
либо пишешь "ой, тебя неправильно поняли"
если вы не можете ответить на него, то оно вам не нужно. тогда следует вопрос, зачем вы пытаетесь решать несуществующие проблемы?
приём пациентов у домашних психотерапевтов - в соседней комнате, так что ты ошибся дверью со своими левыми вопросами не по теме и такими же левыми выводами - сам придумал, сам сделал выводы, сам парировал
за сим делаю вывод: такое средствами JASS сделать невозможно, раз за сутки никто не смог ответить на базовый вопрос
--где-то тут должна быть конструкция по обращению к нужному игроку
оба кода ниже выдают одинаковый результат -> разные значения 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))
если одна глобальная переменная у разных игроков имеет разное значение - это десинх или нет? Hate:
и зачем другим игрокам знать о зуме других игроков?
то был пример, когда значение переменной локального игрока никто не знает из остальных. будь то зум или иное локальное значение
а если его никто не знает, значит с ним нельзя толком работать
в данном примере - если зум одного игрока нельзя узнать остальным игрокам (а точнее загнать в глобальную переменную) никаким образом - достаточно просто написать "нельзя" в виде ответа
либо если можно - то как?
под "другими игроками" я имею ввиду всю карту в целом. если карта не может загнать значения в глобалки - значит смысла в таких глобалках нет
конечно, если запускать функцию через чат и i=GetPlayerId(GetTriggerPlayer())+1, то только у него лично и изменится глобальная переменная, а у остальных кто не писал в чат - у них останется старое значение
Так я вообще не в курсах о таких вещах как листфайл
уже целых 3 дня прошло с момента создания тобой темы, а ты до сих пор не в курсах?
ты об этом должен быть в курсах ещё ДО открытия j файла (или любого другого)
поэтому твой уровень знания jass тут не играет роли
ты даже ответы в этой теме читаешь через слово
если загонять в переменную GetCameraTargetPosition - то загонится у всех разное значение
если закавычить в if getlocalplayer - потом загнать в массив переменных - то другие не узнают значение закавыченного игрока, т.к. значение присваивалось только лично у него - что есть десинхрон
то есть нет никакой функции (узнать координаты камеры player X) а есть только своя камера
Я совсем не понял что вам нужно =))
вы хотите, чтобы камера двигалась за объектом?
в первом сообщении под "привязка к камере" имелись ввиду координаты GetCameraTargetPosition
по крестьянски это можно назвать "в центре экрана у игрока" poisoNDealer:
Фреймы.
мы вам перезвоним
мда,
GetCameraTargetPosition то десинхронная
и её координаты никак не передать в значения массива да?
если один двинул камеру, то другие об этом никак не узнают?
там похоже на привязку точки к мышке, типа как прицел
я же говорю просто про вывод изображения в центр экрана
похоже, что с этим справится CinematicFadeBJ, потестирую его немного
ещё есть какая-то ShowImage, но там через хендл вроде, а CinematicFadeBJ просто через путь к blp-шке
еще CinematicFilterGenericBJ
интересно было бы найти что-то с опциональным офсетом, но и только в центре - уже хорошо
никакие депротекторы тебе не помогут, когда:
в оригинале HELLHALT v5.0.29 - 668 файлов,
а в твоей ВОССТАНОВЛЕННОЙ карте, которую ты прикрепил - 364 файла.
и пока ты не начнешь такое замечать - можешь вообще темы не создавать. помудохайся сначала месяц и научись готовить листфайл, а потом уже переходи к открытию карты в World Editor'e и всем с этим связанным вопросам
всем, кто задаёт подобные вопросы я бы предложил прикладывать к своим постам скриншоты о прохождении проверки лицушности винды, офиса и софта от Adobe, а также же чеки на каждый трек в mp3-плеере и каждую игру на HDD. надеюсь они не пираты какие-то со дна общества с ворованым варкрафтом
первый вопрос - листфайл от карты у тебя полный или нет?
ничего не видил при загрузке карты, т.e даже слоты - как будто карта мертвая, скорее всего и так, но я не понял почему
то есть сравнение содержимого каталогов у тебя не изобрели? сравни оригинал и после обработки этой прогой. и сравни какие файлы изменены. скорее всего w3i, из-за того что он изменён - она и крашит
брал war3.j, с протектной версии и вшивал в мою (депротект) версию мапы - при загрузке карты (50-70%) - фатал (crash).
j файл ты итак можешь оттуда изъять, отредактировать и назад вшить в оригинал без всяких крашей
Ред. host_pi
» WarCraft 3 / как присвоить локальные значения игрока в глобальные переменные?
ты сам пробовал хоть раз написать -создатьюнита +25724 -15876 ? попробуй
а потом попробуй 10 раз для разных координат написать
может потом ты поймешь смысол этой темы уже
Ред. host_pi
» WarCraft 3 / как присвоить локальные значения игрока в глобальные переменные?
» WarCraft 3 / Good Jassspy (JASS логер)
https://www.xgm.guru/p/wc3/spy-jass
Ред. host_pi
» WarCraft 3 / как присвоить локальные значения игрока в глобальные переменные?
quq_CCCP:
и инпут лаг как раз 0.2 сек
похоже на первое решение в этой теме, точно покурю
только видимо размер кода очень большой на всё это, измеряется сотнями строк
Ред. host_pi
» WarCraft 3 / как присвоить локальные значения игрока в глобальные переменные?
EugeAl:
команды из чата не десинхронят
но задача состоит в том, чтобы получить число 2500 не из чата (путём ввода игроком этих 2500), а напрямую из настроек камеры игрока либо если такое невозможно - то признаться что такое невозможно сделать
Ред. host_pi
» WarCraft 3 / как присвоить локальные значения игрока в глобальные переменные?
ты мне предлагаешь задать самому в коде переменные set X=100 set Y=200 и создать по этим координатам там же в коде юнита? так?
или как конкретно ты предлагаешь создать массив точек? пиши код
Borodach:
и если бы десинхрона от координат камеры не было, этой темы бы тоже не было
да даже без тестов ясно как белый день что будет десинхрон
и да, на тестах десинхрон был физический а не только в значениях переменных
и да, на разных клиентах был разный результат исполнения кода
и да, на одном клиенте был объект, а на втором клиенте не было объекта
но это не десинхрон, это просто надо "правильно" кодить. но как конкретно - за 20 коментов никто не знает , да?
)))))))))))))) пиу пиу тирлюм тирлюм )))))))) весила смишна ))))))
Borodach:
Borodach:
Ред. host_pi
» WarCraft 3 / как присвоить локальные значения игрока в глобальные переменные?
nazarpunk:
Ред. host_pi
» WarCraft 3 / как присвоить локальные значения игрока в глобальные переменные?
nazarpunk:
Ред. host_pi
» WarCraft 3 / как присвоить локальные значения игрока в глобальные переменные?
как, зная координаты центра камеры игрока, или по-другому - координаты его центра экрана, то есть имея значения X Y - GetCameraTargetPositionX() GetCameraTargetPositionY() - заспавнить в этом центре по этим координатам, через строку чата, скажем, юнита, и не поймать десинхрона, чтобы этот юнит появился у всех игроков. т.е. перевести локальные координаты камеры игрока в глобального юнита.
ещё раз - игрок пишет тригер-текст в чат -unitcam и в его текущих координатах экрана GetCameraTargetPositionX() GetCameraTargetPositionY() (в момент нажатия клавиши Enter) появляется юнит без десинхрона и все другие игроки его видят
либо пишешь "ой, тебя неправильно поняли"
Ред. host_pi
» WarCraft 3 / как присвоить локальные значения игрока в глобальные переменные?
Hate:
Ред. host_pi
» WarCraft 3 / как присвоить локальные значения игрока в глобальные переменные?
(у одного 0 а у второго размер зума)
(тригерит только один игрок чатом)
т.е. не позволяют вывести локальное значение в глобалку
Ред. host_pi
» WarCraft 3 / как присвоить локальные значения игрока в глобальные переменные?
Hate:
Hate:
Ред. host_pi
» WarCraft 3 / как присвоить локальные значения игрока в глобальные переменные?
Hate:
а если его никто не знает, значит с ним нельзя толком работать
в данном примере - если зум одного игрока нельзя узнать остальным игрокам (а точнее загнать в глобальную переменную) никаким образом - достаточно просто написать "нельзя" в виде ответа
либо если можно - то как?
Ред. host_pi
» WarCraft 3 / как присвоить локальные значения игрока в глобальные переменные?
Ред. host_pi
» WarCraft 3 / Депротект (знаю заеженная тема)
ты об этом должен быть в курсах ещё ДО открытия j файла (или любого другого)
поэтому твой уровень знания jass тут не играет роли
ты даже ответы в этой теме читаешь через слово
а ты не думал, что открыть карту это не в туалет сходить?
Ред. host_pi
» WarCraft 3 / Good Jassspy (JASS логер)
» WarCraft 3 / Good Jassspy (JASS логер)
Ред. host_pi
» WarCraft 3 / Как контрить Alt+QQ?
Ред. host_pi
» WarCraft 3 / как поставить точку в центр экрана?
если закавычить в if getlocalplayer - потом загнать в массив переменных - то другие не узнают значение закавыченного игрока, т.к. значение присваивалось только лично у него - что есть десинхрон
то есть нет никакой функции (узнать координаты камеры player X) а есть только своя камера
Ред. host_pi
» WarCraft 3 / как поставить точку в центр экрана?
по крестьянски это можно назвать "в центре экрана у игрока"
poisoNDealer:
GetCameraTargetPosition то десинхронная
и её координаты никак не передать в значения массива да?
если один двинул камеру, то другие об этом никак не узнают?
Ред. host_pi
» WarCraft 3 / как поставить точку в центр экрана?
похоже, что с этим справится CinematicFadeBJ, потестирую его немного
еще CinematicFilterGenericBJ
интересно было бы найти что-то с опциональным офсетом, но и только в центре - уже хорошо
Ред. host_pi
» WarCraft 3 / Депротект (знаю заеженная тема)
Ред. host_pi
» WarCraft 3 / Депротект (знаю заеженная тема)
в оригинале HELLHALT v5.0.29 - 668 файлов,
а в твоей ВОССТАНОВЛЕННОЙ карте, которую ты прикрепил - 364 файла.
и пока ты не начнешь такое замечать - можешь вообще темы не создавать. помудохайся сначала месяц и научись готовить листфайл, а потом уже переходи к открытию карты в World Editor'e и всем с этим связанным вопросам
Ред. host_pi
» WarCraft 3 / Депротект (знаю заеженная тема)
первый вопрос - листфайл от карты у тебя полный или нет?
Ред. host_pi
» WarCraft 3 / Good Jassspy (JASS логер)