RenderEdge(memhak)
Всем привет! Ктонить проверял, можно ли с помощью render_edge.dll(+мемхак), который распаковывается из карты, делать манипуляции с интерфейсом, отслеживать мышь, кнопки и т.д для каждого игрока? Работает ли через GetLocalPlayer или через синхронизацию? Желательно пример если не затруднит)
Будет ли это считаться хаком на гарена, айкап?

Лучший ответ:
здесь можно разделить нужные задачи на 2 категории:
  1. работа с игровыми объектами (юниты, разрушаемые объекты, таймеры и т.д)
  2. работа с визуальным отображением (положение камеры, интерфейс, и т.д)

В первом случае если не синхронизировать данные - то будет десинхрон
А во втором случае можно как угодно шаманить с GetLocalPlayer()

Если надо каждому игроку вывести координаты его мышки:
call BJDebugMsg(R2S(GetMouseX())+" - "+R2S(GetMouseY()))
//У каждого игрока на экране будут свои координаты мышки

Если надо определенному игроку вывести координаты его мышки:
if( GetLocalPlayer() == p ) then
	call BJDebugMsg(R2S(GetMouseX())+" - "+R2S(GetMouseY()))
endif
//У игрока "p" на экране будут выведены координаты его мышки

Если надо определенному игроку создать спецэффект:
local string s = ""
if( GetLocalPlayer() == p ) then
	set s = "effect.mdx"
endif
call AddSpecialEffect(s, x, y)
//Игроку "p" будет создан спецэффект в координатах x,y (спецэффект не будет виден другим игрокам)

А вот если нужно будет создать юнита в координатах мышки игрока:
call SyncReal(p, GetMouseX(), GetMouseY())
call CreateUnit(p, 'hfoo', sync_x, sync_y, 270.)
//Игроку "p" будет создан пехотинец в координатах его мышки
//Функцию SyncReal смотри в статье GetLocalPlayer(), но надо будет чуть её дополнить, чтобы она писала синхронизированные значение в глобалки sync_x, sync_y
//Ну и как говорилось выше - для синхронизации требуется время



Просмотров: 405

NazarPunk #1 - 5 месяцев назад 0
Где-то читал, что айкап не даёт хостить карты с мемхком но это неточно
Bergi_Bear #2 - 5 месяцев назад (отредактировано ) 0
Tumart, Советую посмотреть вопросы созданные мною, где я порядка 3-х раз поднимал такой и чего я добился в этом направлении, я это специально поднимал пока тема была не разжевана полностью, ну по крайне мере на ту дату
NazarPunk, Карта "как достать скелета", сделанная на мемхаке, хостуется на ракапе, нельзя использовать мемхак на рубатле, так как там 127 патч но и это тоже всё не точно
Андреич #3 - 5 месяцев назад 0
Отлов положения мыши и нажатие клавиш вызывают дисинхронизацию в мультиплейере...
а интерфейс подкорректировать можно...
Bergi_Bear #4 - 5 месяцев назад 0
Андреич, я выкладывал код где синхронизировал курсор по сети без фатала, но там есть одно НО
Hodor #5 - 5 месяцев назад 0
вполне должно работать через GetLocalPlayer(), но если ты попытаешься как то работать с объектами используя эту инфу - то тебе понадобится синхронизация.
А к примеру чтобы тупо двигать игровую камеру по курсору - легко)
Bergi_Bear #6 - 5 месяцев назад 0
GetLocalPlayer() как раз так и не нуждается в синхрониции, а человек спрашивал за неё
Hodor #7 - 5 месяцев назад (отредактировано ) 2
Bergi_Bear:
GetLocalPlayer() как раз так и не нуждается в синхрониции, а человек спрашивал за неё

Нужно чуть переделать SyncReal, чтобы синхронизировало два значения
SyncReal(Player(0), GetMouseX(), GetMouseY())
CreateUnit(Player(0), 'hfoo', sync_float1, sync_float2, 270.)
Bergi_Bear #8 - 5 месяцев назад 0
ой спасибо, глаза мне открыл, а то я не знал про гетлокалплеер!
и какова же скорость синхронизации через гейм кеш? (я то знаю)
Bergi_Bear:
я выкладывал код где синхронизировал курсор по сети без фатала, но там есть одно НО
и это НО выделено не спроста
Hodor #9 - 5 месяцев назад (отредактировано ) 0
А если не работать с объектами, а просто перемещать камеру к примеру, то вот:
if( GetLocalPlayer() == Player(0) )
{
	SetCameraPosition(GetMouseX(), GetMouseY())
}

Bergi_Bear, я же сказал, работа с объектами требует синхронизацию
если он просто хочет перемещать камеру - то ему не надо синхронизировать
т.е в любом случае ему понадобится GetLocalPlayer(), а при работе с объектами ещё и синхронизация

UPD:
перемещать камеру или редактировать интерфейс
Tumart #10 - 5 месяцев назад 0
UrsaBoss, тоесть с помощью GetLocalPlayer я могу записать координаты мыши для игрока в переменные, а после к примеру показать эти значения каждому игроку и все будет корректно, а так же не вызовет десинхронизации? Или же для работы с переменными их обязательно нужно синхронизировать? Если тем же способом я сделаю например отображение панели опыта для игрока 0 в левом нижнем углу, а для игрока 1 в правом, то это сработает?
Hodor #11 - 5 месяцев назад 2

здесь можно разделить нужные задачи на 2 категории:
  1. работа с игровыми объектами (юниты, разрушаемые объекты, таймеры и т.д)
  2. работа с визуальным отображением (положение камеры, интерфейс, и т.д)

В первом случае если не синхронизировать данные - то будет десинхрон
А во втором случае можно как угодно шаманить с GetLocalPlayer()

Если надо каждому игроку вывести координаты его мышки:
call BJDebugMsg(R2S(GetMouseX())+" - "+R2S(GetMouseY()))
//У каждого игрока на экране будут свои координаты мышки

Если надо определенному игроку вывести координаты его мышки:
if( GetLocalPlayer() == p ) then
	call BJDebugMsg(R2S(GetMouseX())+" - "+R2S(GetMouseY()))
endif
//У игрока "p" на экране будут выведены координаты его мышки

Если надо определенному игроку создать спецэффект:
local string s = ""
if( GetLocalPlayer() == p ) then
	set s = "effect.mdx"
endif
call AddSpecialEffect(s, x, y)
//Игроку "p" будет создан спецэффект в координатах x,y (спецэффект не будет виден другим игрокам)

А вот если нужно будет создать юнита в координатах мышки игрока:
call SyncReal(p, GetMouseX(), GetMouseY())
call CreateUnit(p, 'hfoo', sync_x, sync_y, 270.)
//Игроку "p" будет создан пехотинец в координатах его мышки
//Функцию SyncReal смотри в статье GetLocalPlayer(), но надо будет чуть её дополнить, чтобы она писала синхронизированные значение в глобалки sync_x, sync_y
//Ну и как говорилось выше - для синхронизации требуется время
Tumart #12 - 5 месяцев назад 0
UrsaBoss, благодарю за развернутый ответ!)
Теперь остался один вопрос, будит ли это считаться хаком на гарена, айкап и как обходится мемхак на айкап.
quq_CCCP #13 - 5 месяцев назад 2
Tumart, за хак считаться небудет, на ракапе стоит защита от карт мемхака, она обходится. Инфу можно купить у драколича.
DracoL1ch #14 - 5 месяцев назад 0
да хватит за меня говорить, никакой инфы у меня нет и уж тем более не продаю
Bergi_Bear #15 - 5 месяцев назад 0
DracoL1ch, а может quq_CCCP, сам хочет инфу продать, его то карта на мемхаке и работает в ICQакпе
quq_CCCP #16 - 5 месяцев назад 0
DracoL1ch, есть же.
Tumart #17 - 5 месяцев назад 0
Понял, всем спасибо)