etereon

MQ-Team
Проверенный
327
851
Можно хукать не только серверные сообщения, а сообщения скриптов или клиента (sa:mp started и т.д)
Конкретно хук чата:
На данной версии ML эти хуки работают нестабильно и постоянно приводят к крашам, поможет вам наверно только @FYP. Сейчас нет смысла использовать их в паблик скриптах, да и вообще, хотите хукать - пишите на плюсах.
 

СоМиК

Известный
Автор темы
458
314
На данной версии ML эти хуки работают нестабильно и постоянно приводят к крашам, поможет вам наверно только @FYP. Сейчас нет смысла использовать их в паблик скриптах, да и вообще, хотите хукать - пишите на плюсах...
Согласен. Я попытался уже впихнуть этот хук, и... Лучше бы не пытался
 

СоМиК

Известный
Автор темы
458
314
D

deleted-user-422095

Гость
Проверяй тогда по последнему сообщению
 

etereon

MQ-Team
Проверенный
327
851
Проверяй тогда по последнему сообщению
Руки бы за такие предложения тебе отрезать
 
  • Нравится
Реакции: ARMOR
D

deleted-user-422095

Гость
Руки бы за такие предложения тебе отрезать
Почему? Чем ебать себе мозги хуками нестабильными, есть уже готовый вариант. Ему не return false нужен.

А если руки кривые и не способны реализировать, то извините. Не мне руки надо отрезать
 

СоМиК

Известный
Автор темы
458
314
Почему? Чем ебать себе мозги хуками нестабильными, есть уже готовый вариант. Ему не return false нужен.

А если руки кривые и не способны реализировать, то извините. Не мне руки надо отрезать
Не, ну реализация через SampGetChatString() это реально убожество) Без костылей ты нормально не организуешь работу скрипта. Такие хуки как onServerMessage() и onChatMessage() - лучшие в этом плане. Это действительно хорошие, стабильные хуки, и организовывать поиск ссылок в чате через них - одно удовольствие. Сейчас в скрипте стоит хук onServerMessage(), но недавно мне подсказали про хук onChatMessage(), я про него реально забыл и поэтому в некст обнове впишу его. Это сейчас наиболее лучший вариант, золотая середина, sampGetChatString() < onServerMessage()/onChatMessage() > JMP хук, делать через sampGetChatString() - гемор (возможно, но гемор), а JMP хук - баги в виде краша ГТА.
 

СоМиК

Известный
Автор темы
458
314
А перехватит Audiomsgoff=1(/audiomsg)?
Я за хук не шарю, я знаю только то, что он перехватывает чат. Но раз уж сама библиотека была создана для удобной обработки пакетов, то скорее всего те же сообщения скриптов он вряд ли будет перехватывать. Это надо спрашивать у фипа, либо рыться во всем коде всех необходимых библиотек, без которых SAMP.lua так же не может работать, просто опять же, сделать адекватную стабильную версию скрипта через sampGetChatString - полнейший гемор. Это надо минимум неделю каждый день сидеть, тестить, работать. И если система поиска ссылок у меня сейчас занимает ну строк 200, то будет занимать 300-400, и делать это всё придётся через бесконечный цикл, и постоянно сравнивать, постоянно делать тысячи проверок и т.д, представь, какая нагрузка будет на комп? Не, всё же лучшее решение, это хуки из events
 

FYP

Известный
Администратор
1,763
5,899
На данной версии ML эти хуки работают нестабильно и постоянно приводят к крашам, поможет вам наверно только @FYP. Сейчас нет смысла использовать их в паблик скриптах, да и вообще, хотите хукать - пишите на плюсах.
нестабильность работы хуков каким-то образом вызвана jit-компиляцией. в документации luajit указано (в конце параграфа), что в определённых условиях нельзя чтобы к ffi-колбэку применялась jit-компиляция, luajit иногда справляется сам и отключает jit для функции, но не всегда. по описанию не очень похоже, что хуки - это именно такой случай, однако отключение jit-компиляции для функции хука решает эту проблему (jit.off(my_hook, true)). при использовании этого решения нужно иметь в виду, что отключение jit-компиляции может радикально ухудшить производительность, поэтому применять его нужно правильно и код функций часто вызывающихся хуков не должен быть ресурсоёмким.
при этом проблема вызова хука из другого потока всё ещё остаётся актуальной, но это уже другая история и в большинстве случаев несущественно.
 

СоМиК

Известный
Автор темы
458
314

Вышла новая версия скрипта: 2.2

Изменения:
1632244493827.png


Обновление уже доступно для обновления в игре по команде /flinkupd!

ВАЖНО:

Появилась новая зависимость: rkeys
Необходимо УДАЛИТЬ файл flinke.ini, который находится по пути: (ваша сборка)/moonloader/config/
 
Последнее редактирование:
  • Нравится
Реакции: deleted-user-411329