путь в moonloader / lib / samp / events.lua
пробиваешь: dialog
и нам выпало результаты:
1.
OUTCOMING_RPCS[RPC.DIALOGRESPONSE] = {'onSendDialogResponse', {dialogId = 'uint16'}, {button = 'uint8'}, {listboxId = 'uint16'}, {input = 'string8'}}
Нет, я имею ввиду чтобы меня вывело диалог в игре. А OUTCOMING_RPCS это вообще-то для отправки запроса
2. INCOMING_RPCS[RPC.SHOWDIALOG] = {'onShowDialog', {dialogId = 'uint16'}, {style = 'uint8'}, {title = 'string8'}, {button1 = 'string8'}, {button2 = 'string8'}, {text = 'encodedString4096'}}
Да, этот. Именно это, что нам нужно событие при вывода диалог в игре.
Просто нужно понять хотя бы базовые знание по англ. язык, далее.
{'onShowDialog', {dialogId = 'uint16'}, {style = 'uint8'}, {title = 'string8'}, {button1 = 'string8'}, {button2 = 'string8'}, {text = 'encodedString4096'}}
в каждом запроса RPCS построены так: {1, 2}
1 - название событие
2 - аргументы, что возвращают как callback и его тип значений
Тогда и можем сделать так:
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
text = text
:gsub('{%x%x%x%x%x%x}', '') -- убираем hex-цветные
:gsub('^%s+', '')
:gsub('%s+$', '')
local fmt = string.format(
'\nDIALOG >> ID[%s] STYLE[%s] TITLE[%s] B1[%s] B2[%s]\n%s\n\n',
dialogId, style, title, button1, button2, text
)
print(fmt)
end
-- для вывода в каждой строчке в text onShowDialog:
for line in text:gmatch('[^\n]+') do
-- line: Ваш игровой ник: Your_Name
if line:find('^Ваш игровой ник: %S+$') then
local nickname = line:match('^Ваш игровой ник: (%S+)$')
-- nickname: Your_Name
-- справка: %S+ - только символы без пробела
-- дальнейшем можешь узнать:
-- http://umodel.narod.ru/webhelp/ams/Program_Reference/Actions/RegExp_Lua.htm
end
end