Статья
Раздел:
Основы

Требования
- Уверенное пользование jass.
- Мемхак анрайза. (>1.3)
- pjass для работы мемхака. (Закинуть в JNGP/jasshelper)

Координаты курсора
Для того, чтобы перенести фрейм курсором, понятное дело, нужно получить его координаты.
Посмотрим на существующий функционал MouseAPI.
function GetCursorX takes nothing returns integer
function GetCursorY takes nothing returns integer
--
function GetCursorXRelative takes nothing returns integer
function GetCursorYRelative takes nothing returns integer
Не относительные геттеры (первые два) показывают координаты экрана.
Относительные же показывают относительно окна Варкрафта.
Абсолютный ноль GetCursor - левый верхний угол экрана.
Абсолютный ноль GetCursorYRelative - левый верхний угол окна.
В полноэкранном режиме, разницы не будет.
GetCursor
GetCursorRelative
Поэтому, правильней взять - GetCursorRelative. Фреймовые координаты тоже относительные, поэтому это было очевидно еще с самого начала.

Фреймовые координаты
Опытным путем выяснилось, что максимум X = 0.8 и максимум Y = 0.6. Все сходится, соотношение 4 на 3 же.
Наглядная демонстрация

Конвертация
Здесь уже пригодится GameWindowAPI.
function GetWindowWidth takes nothing returns real
function GetWindowHeight takes nothing returns real
Решение назревает само собой:
Для X нужно координаты курсора умножить на 0.8 и поделить на ширину окна.
Для Y нужно координаты курсора умножить на 0.6 и поделить на высоту окна.
За нас, это уже сделал анрайз и добавил две функции в тот же апи.
function FromPixelX takes integer i returns real
function FromPixelY takes integer i returns real
Результат
Уже близко, но все еще чего-то не хватает.
Требуется инвертировать значения Y. Отнять от 0.6 наше значение
Получается вот такой код:
local real frameX = FromPixelX(GetCursorXRelative())
local real frameY = .6 - FromPixelY(GetCursorYRelative())

Использование
Чуть-чуть подшаманив над моей вчерашней наработкой, можно получить что-то такое:
`
ОЖИДАНИЕ РЕКЛАМЫ...
32
Жаль народ так и забьет... сколько лет мемхак лежит, а всем....
12
Народ отказывается от новых технологий потому что они не применимы на ГУИ и сложны в установке...
15
quq_CCCP, да нет, наработки супер полезные, по ним реально проще изучать фреймы. Поэтому с радостью ждём ещё)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.