sampev = require "samp.events"
require "sampfuncs" -- Для стилей диалогов
-- Наша таблица со значениями, может подгружаться из файла, или т.п.
TextDatabase = {
["Dummy"] = "Edited text",
["Example"] = 42
}
function sampev.onShowDialog(id, style, title, button1, button2, text)
--[[
В нашем примере, мы представим, что в диалоге с ID = 0(!!! НЕ ИМЕЕТ НИЧЕГО ОБЩЕГО С РЕАЛЬНОСТЬЮ !!!)
имеется текст формата:
/*
Message from Player_Nickname[0]
Text: Any message
*/
где:
Player_Nickname - Ник игрока (в нашем случае не имеет значения)
[0] - ИД игрока (в нашем случае не имеет значения)
Any message - Сообщение, которое мы хотим достать
]]
-- Строки в диалогах разделены \n
-- Для удобства, поскольку мы точно знаем, что нужный нам текст находится во второй строке, то
-- разбиваем текст диалога на строки, заносим их в таблицу, и парсим именно 2-ю строку
local dialogLines = {}
for w in text:gmatch("[^\r\n]") do
table.insert(dialogLines, w)
end
local messageTextLine = dialogLines[2] -- В Lua индексы начинаются с 1!
-- Если мы посмотрим на 2-ю строку, то увидим, что в начале строки есть:
-- Text:
-- За ним следует информация, которую нам необходимо получить, для начала, проверим,
-- а действительно ли строка содержит нужную нам информацию
if messageTextLine:match('Text: .+') then
-- Мы проверили, теперь получаем сам текст сообщения
local message = messageTextLine:match('Text: (.+)')
-- Воуля! Мы достали нужную нам информацию, теперь может делать с ней любые манипуляции
-- Например, будем брать значение из таблицы по данному тексту, и выводить его
-- А если ничего не найдено, писать ошибку
if TextDatabase[message] then -- Проверяем, содержит ли таблица TextDatabase значение по нашему тексту
print("Text " .. message .. " = " .. TextDatabase[message])
else -- Если в таблице нету значения на тексту
print("Text " .. message .. " don't have value")
end
end
end