Хук на sampSendChat

БеzликиЙ

Эксперт в области Аризона РПГ
Автор темы
Проверенный
2,060
1,228
Версия MoonLoader
.026-beta
Мне нужно, чтобы мой скрипт реагировал на то, что другой скрипт отправляет в чат через sampSendChat. События samp.events (ev.onSendChat, ev.onSendCommand) на sampSendChat не реагируют. Какие варианты?
 

вайега52

Налуашил состояние
Модератор
3,001
3,136
Мне нужно, чтобы мой скрипт реагировал на то, что другой скрипт отправляет в чат через sampSendChat. События samp.events (ev.onSendChat, ev.onSendCommand) на sampSendChat не реагируют. Какие варианты?
попробуй это, если нет, то можешь хукнуть конкретно сф и мун вызовы (moonloader.asi + 0xF53F0, sampfuncs.asi (r3) + 0x88545)
 

БеzликиЙ

Эксперт в области Аризона РПГ
Автор темы
Проверенный
2,060
1,228

вайега52

Налуашил состояние
Модератор
3,001
3,136
так это же на отправку чего-то в чат руками, не?
конкретно в сф это враппер над вызовом самп-функции. Если хукать эту функцию внутри сф, то и вызовы будут только из SF плагинов и луашек (и клео тоже по идее)
 

БеzликиЙ

Эксперт в области Аризона РПГ
Автор темы
Проверенный
2,060
1,228
конкретно в сф это враппер над вызовом самп-функции. Если хукать эту функцию внутри сф, то и вызовы будут только из SF плагинов и луашек (и клео тоже по идее)
так, ладно, а как хукать экспортированные функции?
1405970849567215616.png
 

вайега52

Налуашил состояние
Модератор
3,001
3,136
так, ладно, а как хукать экспортированные функции?
1405970849567215616.png
получаешь адрес:
C++:
const auto addr = GetProcAddress(GetModuleHandle("SAMPFUNCS.asi"), "?Say@LocalPlayer@@QAEXPAD@Z");
и ссоздаешь функцию с сигнатурой
void __thiscall LocalPlayer::Say(LocalPlayer *this, char *a2)
 
  • Влюблен
Реакции: БеzликиЙ