Как хукнуть текст

игрок сампа

Участник
Автор темы
70
8
Версия MoonLoader
.027.0-preview
Как хукнуть текст
(( Администратор Eko_Market[69]: {B7AFAF}возможно прав нету либо же выне арендовали кар через телефон{FFFFFF} )) сделай проверку для moonloader самп который будет искать сообщение как (( Администратор Name_Familiya ))

Чтобы текст был в (( )) и это было сообщение от Администратор

Сделайте regex пж я не понимаю как его делать
 

chromiusj

Известный
Модератор
5,656
3,959
Как хукнуть текст
(( Администратор Eko_Market[69]: {B7AFAF}возможно прав нету либо же выне арендовали кар через телефон{FFFFFF} )) сделай проверку для moonloader самп который будет искать сообщение как (( Администратор Name_Familiya ))

Чтобы текст был в (( )) и это было сообщение от Администратор

Сделайте regex пж я не понимаю как его делать
Lua:
local text = '(( игрок Eko_Market[69]: {B7AFAF}возможно прав нету либо же выне арендовали кар через телефон{FFFFFF} ))'
local member, textlog = text:match('%((.-) [A-z0-9_]+%[%d+%]: {.-}(.+){.-}%)$')
print(member == 'Администратор' and textlog or 'Игрок не админ')
вот так типо?(проверка будет работать если только в тексте есть "Администратор")
 
  • Нравится
Реакции: kyrtion

Fott

Простреленный
3,461
2,378
Lua:
local textNoHex = text:gsub('{%x%x%x%x%x%x}', '')
local nickname, id, message = textNoHex:match('^%(%( Администратор (.-)%[(%d+)%]: (.*)[%s*%)%)$|%s*%)$|%s*$]+')
-- писал на скорую, не протестировал
Lua:
[%s*%)%)$|%s*%)$|%s*$]
что это и нахуя это?

Почему бы не использовать везде одно и то же выражение для повышения читаемости, а не в одном места .-, в другом .* В данном случае в этом нет необходимости
Lua:
local nickname, id, message = textNoHex:match('^%(%( Администратор (.+)%[(%d+)%]: (.+)%)%)$')
 
  • Нравится
Реакции: chromiusj

kyrtion

Известный
978
355
Lua:
[%s*%)%)$|%s*%)$|%s*$]
что это и нахуя это?

Почему бы не использовать везде одно и то же выражение для повышения читаемости, а не в одном места .-, в другом .* В данном случае в этом нет необходимости
Lua:
local nickname, id, message = textNoHex:match('^%(%( Администратор (.+)%[(%d+)%]: (.+)%)%)$')
1. Есть вероятность что в чате будет длинное сообщение, и в конце будет пропадать символов " ))". Поэтому подстраховал.
2. Если в тексте будет пустое сообщение, то уже не сможет прохукать.
3.
Администратор (.+)%[(%d+)%]:
Допустим, что произойдет если так? "Администратор Nick[1]: Администратор Name[2]: текст" Выделил жирным это когда админ отправит этот текст.
Конечно, ник будет не Nick, а "Nick[1]: Администратор Name". Мб не проверил?
Метасимвол .* обозначает что возвращает даже если пусто сообщение, но лучше не использовать на никнейм и тд.
Метасимвол .- возвращает на минимальном скане, рекомендуется в любом тексте, там где не меняются текст.
Если поле, которое меняется текст, типа так: (( Администратор Nick[1]: * )), где * - это текст, который постоянно меняется с помощью аргумента (/b *). Поэтому и ствим .*, тоже подстрахуем.
 
  • Нравится
Реакции: Landyshev

Fott

Простреленный
3,461
2,378
1. Есть вероятность что в чате будет длинное сообщение, и в конце будет пропадать символов " ))". Поэтому подстраховал.
То что оно не полностью рендериться в чате не значит что оно не придет в хуке. Скорее всего, я не проверял, но это логично
2. Если в тексте будет пустое сообщение, то уже не сможет прохукать.
А зачем челу сообщение без текста? Если админ проебался он напишет еще раз но с текстом.
Допустим, что произойдет если так? "Администратор Nick[1]: Администратор Name[2]: текст" Выделил жирным это когда админ отправит этот текст.
Конечно, ник будет не Nick, а "Nick[1]: Администратор Name". Мб не проверил?
Конечно все админы же так пишут. Невыдуманные истории о которых невозможно молчать. У тебя есть ТЗ с примером но ты выдумываешь свои примеры. Если тебе так угодно можно заменить плюсы на минусы, но использовать два разных по прежнему смысла нет.

Бомбически твоя звездочка захватывает еще и скобку :)
1706346870732.png

А в чем прикол захватывать пустое сообщение (которого не будет ибо у тебя попадет скобка всегда) я не знаю
 
Последнее редактирование: