Добавлен , опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
vJass
Тип:
Наработка
Версия Warcraft:
1.26 и ниже
Собственно тот знаменитый хак на память который нам радостно предоставил DracoL1ch, который позволяет нам больше не морочится с системами отлова урона, или вовсе узнать координаты курсора без стороннего по.
Для сохранения требуется: экспериментальная версия pjass.exe
Причём не все подходят, меньше всего проблем было с этой версией
В хаке присутствует только 1 пример на изменение белой атаки у героя, остальные готовые функции можно найти на:
Хайве
Гитхабе
Просто копируем саму функцию, все остальное для её работы есть в наработке и сохраняем.
Так же на хайве есть инструкция по созданию собственных функций для чтения\изменения данных в памяти игры.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
32
7 лет назад
0
Napoleon, тут и спрашивать.
Что непонятно?
0
1
7 лет назад
0
Работает ли данный хак на недавно вышедшей версии - 1.27b, или только на предыдущих?
0
21
7 лет назад
0
Работает на всех, писали уже.
Верно понимаю, что GetMouseX, GetMouseY, GetMouseZ у разных игроков отлавливается по-разному и может вызвать десинк в сетевой при неправильном применении? То есть если я, например, по этим числам выведу координаты точки и использую ее для перемещения или создания объекта или определения направления - десинк, гг?
Скажу спасибо за образец кода, дающий возможность определить координаты мыши только для овнера определенного юнита без десинка в сетевой (ну чтоб там стрелять в направлении мыши, например).
0
20
7 лет назад
0
ClotPh:
Работает на всех, писали уже.
Верно понимаю, что GetMouseX, GetMouseY, GetMouseZ у разных игроков отлавливается по-разному и может вызвать десинк в сетевой при неправильном применении? То есть если я, например, по этим числам выведу координаты точки и использую ее для перемещения или создания объекта или определения направления - десинк, гг?
Скажу спасибо за образец кода, дающий возможность определить координаты мыши только для овнера определенного юнита без десинка в сетевой (ну чтоб там стрелять в направлении мыши, например).
Кажется, кто-то (на ксгм или на хайве) интересовался нашел ли кто где взять разрешение экрана, вероятно это связано с этим. Касательно стрельбы - вроде скорп ( ScorpioT1000) в свое время делал наработку по стрельбе от первого лица по нажатию ESC. Там единственная нерешенная проблема была, если не ошибаюсь, с движением камеры по XY. По Z она перемещалась свободно.
0
29
7 лет назад
0
ClotPh, есть возможность синхронизировать изменение данных юнита на случай таких вызовов. Но точно не могу вспомнить как
2
16
7 лет назад
2
нет, на 27b работает только чтение, запись недоступна. в дальнейшем, возможно, закроют и запись.
призывайте игроков оставаться на старых патчах или забудьте об этом треде \_('-' )_/
|> Скажу спасибо за образец кода, дающий возможность определить координаты мыши только для овнера определенного юнита без десинка в сетевой (ну чтоб там стрелять в направлении мыши, например).
устанешь синхронизировать (я не знаю ответа) (и не знаю, зачем люди создают фпс на движке ртс)
0
32
7 лет назад
0
DracoL1ch,
Для них это самый доступный движок. В их картах может быть мини игра с использованием стрельбы от первого лица, которая не является "шурупом" карты...
0
17
7 лет назад
Отредактирован ledoed
0
ClotPh:
Попробуй применить векторы то есть привязка идёт не конкретным координатам а по направлению
перевести экран в процентный вид от -1 до 1(1==100%) и тд
0
21
7 лет назад
0
Тут было очень многобукаф, но все они удалены за ненадобностью.
Короче, если кто поможет сделать из этого кода (вываренного на основе изученной информации) то, что нам выдает в нижние реалки координаты мыши от контроллера юнита - спс.
Потому что сейчас очень сомневаюсь, что все как надо, но дальше котел уже не варит и до НГ конкретно не хочет, другие дела есть важные.
Но также есть и уверенность, что для знающего человека исправить - макс. несколько минут.
globals
gamecache cache = InitGameCache("cache")
endglobals
function SyncReal takes player p, real val returns real
if (GetLocalPlayer() == p) then
call StoreReal(cache, , , val)
endif
call TriggerSyncStart()
if (GetLocalPlayer() == p) then
call SyncStoredReal(cache, , )
endif
call TriggerSyncReady()
return GetStoredReal(cache, , )
endfunction
function MySpell takes nothing returns nothing
local player p = GetOwningPlayer(GetTriggerUnit())
local real XCoord = SyncReal(p, GetMouseX())
local real YCoord = SyncReal(p, GetMouseY())
0
16
7 лет назад
0
если бы синхронизация работала как полагается, я бы так и сказал. но ни одна из существующих жасс нативок не обеспечивает синхронизацию с достаточной скоростью. для значений типа 0-1 лучший вариант - это выделение юнита, потому что варкрафт его автоматически отправит в сеть и обеспечит хоть как-то актуальную информацию на всех компах. а в случае отправки значений с точкой - совершенно другой коленкор. Проще уж на trackable сделать
0
32
7 лет назад
0
ClotPh, в твоем коде нету вейта на пару сек, синхроеизация вещь не мгновенная и порой занимает очень много времени, все зависит от пинга.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.