[GDK] Public Hook. - Printable Version
+- SA-MP Forums Archive (
https://sampforum.blast.hk)
+-- Forum: Non-English (
https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (
https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (
https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: [GDK] Public Hook. (
/showthread.php?tid=632967)
[GDK] Public Hook. -
Sanya4 - 22.04.2017
Кто-нибудь знает как Zeex делает hook на public's? То есть чтобы в С/C++ вызывалась моя функция, а не в .amx.
А то в .amx относительный адрес на псевдо-код.
(Не вызывая нативов внутри public's)
Re: [GDK] Public Hook. -
VVWVV - 22.04.2017
Плагин создает свою виртуальную таблицу функций. Он создаёт перехваты для amx_FindPublic, amx_Exec, в которых контролирует вызовы public-функций: если в моде функции нет, то amx_FindPublic всё равно вернёт истину (AMX_ERR_NONE), а плагин в свою очередь добавит функцию в свою виртуальную таблицу. В функции же amx_Exec просто вызывает эту функцию, учитывая значения в виртуальной таблице.
Перехват функций осуществляется в
этом файле.
Re: [GDK] Public Hook. -
Sanya4 - 22.04.2017
Quote:
Originally Posted by VVWVV
Плагин создает свою виртуальную таблицу функций. Он создаёт перехваты для amx_FindPublic, amx_Exec, в которых контролирует вызовы public-функций: если в моде функции нет, то amx_FindPublic всё равно вернёт истину (AMX_ERR_NONE), а плагин в свою очередь добавит функцию в свою виртуальную таблицу. В функции же amx_Exec просто вызывает эту функцию, учитывая значения в виртуальной таблице.
Перехват функций осуществляется в этом файле.
|
Спасибо