function MovePointer takes nothing returns nothing
unit u=GetEnumUnit()
real x=0
real y=0
if GetLocalPlayer() == GetOwningPlayer(u)
x=1000//GetMouseTerrainX() // протестировав с реальными цифрами, понял, что дело не в мемхаке
y=1000//GetMouseTerrainY()
endif
SetUnitX(u,x)
SetUnitY(u,y)
endfunction
Тут у нас десинх из за SetUniX, прочитал на warcraft3ft.clan.su/forum/60-41449-1 пишут вот что
SetUnitX, SetUnitY, SetUnitPosition, SetUnitPositionLoc - нельзя давать приказы двигаться, мешать путям, атаковать юнита
А как же мне тогда передать в SetUnitX(u,GetMouseTerrainX()) ??? без десинхронизации?? как использовать GetLocalPlayer в моём случае?

Принятый ответ

Bergi_Bear, нет, невозможно, курсоры, да что там все визуалки, вся видеопамять твоего компа если тебе так понятнее не синхронизируется, синхронизируются лишь вектора приказов, т.е ты кликнул идти, через N времени хост пересчитал все очереди приказов и раздал команды кто и как дальше движется, синхронизировать курсор не получится, т.к ты не сможешь так часто синхать и так много данных, с уровня.. Jass. Есть лишь 1 путь, кешь, но кешь не годится для таких динамических синхов, он медленный и ненадежный. Других способов нет.
Ни одна добрая фея не сделала библиотеку которая бы сделала возможным то что вы хотите, не смотря на не однократные попытки...
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
32
6 лет назад
0
Ах да. Еще кешь нужно синхронизировать только в действии триггера и желательно чтобы пока идет синх ничего не происходило, реализация есть в статье про getlocalplayer, и там описано что это небыстро и ненадежно.
0
17
6 лет назад
0
кста попробкй не замарачиваться с координатами а лови дельту от мыхи и для каждого игрока свой сохран файл,тоесть если те над управление игрока 9 проверить то файл должен называтья "Файл9"
0
32
6 лет назад
Отредактирован Берги
0
ledoed, вот зачем ты вселяешь надежду XD, я же уже почти всё понял (что это не возможно и почему), но хочу посмотреть как себя прелоад поведёт, в моём случае тут всё проще, такими возможностями сможет лишь 1 игрок обладать а не несколько
0
17
6 лет назад
Отредактирован ledoed
0
да не моно на всех вот пимер
MouseX1{
поворот для игрока 1 по положительному х
}
Mouse_X1{
по отрицательному x
}
для y индечично
смори поварачивать нужно не на динамическое кол,а допустим 100 в сек (а в функции итерполировать буш )
и вызывать эти функции с прелоада
и 2 файла для X,Y для одного игрока
ну таймеры само собой дял игроков должны не в с одинаковым там лайном робить иначе лаги сильней будут
кста а их хэша эти значения ваще моно получать?
0
32
6 лет назад
0
Ну всё, я успокоился, прелоад работает в целом на десинх его и не стал проверять, потому что он в момент запроса, когда читает из файла делает фриз на 1 секунду XD, это конечно забавно, если он и в локалке будет работать даже через такой лаг. ledoed, а про что ты вообще говорил? Дельта от мышки?
0
17
6 лет назад
Отредактирован ledoed
0
dx = x(текущее положение мыхи)-centrx(где центр представим это как 0)
if(dx<100&&dx>-100){
это для того чтобы не дергался на каждое вздергивание мыхи
}elseif(dx>100){
Preload(R2S("поворот в право"))
}elseif(dx<-100){
Preload(R2S("поворот влево"))
}
100 это абстрактное значение для тебя там будет свое
в локалке тести иначе игра на паузу ставиться пока не подгрузит нужный файл
ну и вконце концов моно мега извратом замутить 3д фпс шутан
тут дет статься была насчет абилы артелерия,где она чекает во время работы,короче суть такова создаешь перед камерой стену невидимых юнитов, а артелерия чекает их и в зависимости от дамика поворачиваешь камеру,также и дамиков переносишь в зависимости от направления камеры
0
32
6 лет назад
Отредактирован Берги
0
ledoed, да не делаю я шута, с чего вы взяли, может я хочу пэинт мультиплееровский под варом сделать, я вот все 15 лет хочу добраться до курсора, даже забросил чутка, возвращаюсь а тут мемхаки и рендерэджи, как 2 года уже, кстати да я и забыл что в локалке, то прелоад не будет лагать. в моём случае да обязательно надо двигать юнита мышкой ибо Setunitlookat может смотреть только на юнита, вот я и двигаю курсором дамми юнита. (и всё прекрасно работает, только не в локалке)
Прелоад тоже десинхронит, пошло оно всё нафиг, мне уже смешно, но так и должно быть, ведь у каждого игрока создаётся своё файл прелоада, и в нём у одного 0 записан а у другого 238,787, и естественно что при загрузке рассинхрон...
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.