Добавлен rsfghd
как работают эти функции в мемхаке 1.5?
function GetFramePointX takes integer pFrame, integer point returns real
local integer pFramePoint = GetFramePoint( pFrame, point )
if pFramePoint > 0 then
return GetRealFromMemory( ReadRealMemory( GetFramePoint( pFrame, point ) + 0xC ) )
endif
return 0.
endfunction
function GetFramePointY takes integer pFrame, integer point returns real
local integer pFramePoint = GetFramePoint( pFrame, point )
if pFramePoint > 0 then
return GetRealFromMemory( ReadRealMemory( GetFramePoint( pFrame, point ) + 0x10 ) )
endif
return 0.
endfunction
я думал что возвращает x, y точки фрейма в декартовой системе координат экрана но там какие-то 9999999+ цифры, можно ли получить вообще x y одной из 9 точек фрейма?
Принятый ответ
Загляни в триггер MemHackUIAPI, там много примеров использования фреймов.
По делу - конкретный пример использования GetFramePointX
По делу - конкретный пример использования GetFramePointX
call BJDebugMsg(R2S(GetFramePointX(GetUIHeroBar(), 0)))
Первым аргументом в GetFramePointX суем айди самого фрейма, его можно получить двумя способами:
- по названию
function GetFrameByName takes string name,integer id returns integer
Названия всех фреймов удобно показаны здесь: www.hiveworkshop.com/threads/default-names-for-blzgetframebyname... (под катом images)
- по уже готовым функциям мемхака, они в триггере APIMemoryGameUI, что я и использовал в примере.
Второй аргумент это точка на фрейме (центр, левая нижняя, правая верхняя, т.п.), константы к ним объявлены в MemHackUIAPI.
Важно еще сказать, что для многих фреймов GetFramePointX|Y может возвращать 0.000, ибо возвращает она не абсолютную позицию фрейма, а относительно родителя. За деталями советую по ссылке выше, там целая серия статей эту тему.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован fenathesnake
По делу - конкретный пример использования GetFramePointX
Отредактирован Daro
TopCenter = 1
TopRight = 2
Left = 3
Center = 4
Right = 5
BottomLeft = 6
BottomCenter = 7
BottomRight = 8
Оффсет для получения CSimpleTexture по имени на 1.26а = 0x61C790
Оффсет для получения CSimpleFontString по имени на 1.26а = 0x61C7B0
И получился:
Отредактирован Daro
Фреймы не работают на декартовой системе координат, но имеют понятие Абсолютной позиции, но они все транслируются на координатах от -1 до 1, ибо они рисуются на ЭКРАН, а не на МИР, где есть XYZ. У экрана лишь X/Y в пикселях. Очень нелогично делать декартовую систему координат, ибо тогда придётся на каждое разрешение делать свои координаты и т.д.