Добавлен GetLocalPlayer,
опубликован
vJass
Содержание:
Нам доступно множество функции из common.j и blizzard.j, которые, к сожалению, находятся вне нашего контроля. Однако, vJass позволяет перехватывать вызов любой функции в карте, для чего используется ключевое слово hook.
Используйте ключевое слово hook, после чего укажите имя перехватываемой функции и функции-перехватчика. Таким образом вы не только перехватите вызов функции, но и список передаваемых параметров. В качестве функции-перехватчика может выступать статичный метод структуры (информацию о структурах вы найдете в соответствующей главе).
function onRemoval takes unit u returns nothing
call BJDebugMsg("Unit is being removed!")
endfunction
struct err
static method onrem takes unit u returns nothing
call BJDebugMsg("This also knows that a unit is being removed!")
endmethod
endstruct
hook RemoveUnit onRemoval
hook RemoveUnit err.onrem // Тоже работает
Опробуйте код, представленный выше, в карте где используется функция RemoveUnit и посмотрите, что произойдет.
К сожалению, существует одно ограничение - вы не сможете перехватить вызов нативной или BJ-функции, которая вызывается из другой BJ-функции.
Содержание
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
nazarpunk
11 месяцев назад
0
Не любой. Функцию объявленную пользователем не перехватывает.
0
Koladik
2 месяца назад
0
Важная вещь, что перехват идет до выполнения самой нативки. То есть , вы до удаления юнита можете узнать его GetHandleId(unit)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.