SA-MP Forums Archive
[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
View Post
Плагин создает свою виртуальную таблицу функций. Он создаёт перехваты для amx_FindPublic, amx_Exec, в которых контролирует вызовы public-функций: если в моде функции нет, то amx_FindPublic всё равно вернёт истину (AMX_ERR_NONE), а плагин в свою очередь добавит функцию в свою виртуальную таблицу. В функции же amx_Exec просто вызывает эту функцию, учитывая значения в виртуальной таблице.

Перехват функций осуществляется в этом файле.
Спасибо