Сохранение в переменную текста из диалога

Setkh

Участник
Автор темы
74
6
Версия MoonLoader
.026-beta
Почему "ipreg" и "iplast" = nil?
Как правильно это реализовать?
Lua:
function ev.onShowDialog(id, style, title, b1, b2, text)
    if id == 32700 then
        if text:find("{999999}REG-IP: {FFFFFF}%d+%p%d+%p%d+%p%d+") then
           ipreg = text:match("{999999}REG-IP: {FFFFFF}(%d+%p%d+%p%d+%p%d+)")
        end
        if text:find("{999999}LAST-IP: {FFFFFF}%d+%p%d+%p%d+%p%d+") then
           iplast = text:match("{999999}LAST-IP: {FFFFFF}(%d+%p%d+%p%d+%p%d+)")
      end
   end
end

function _dlg()
    sampAddChatMessage("REG-IP: "..ipreg, 0xFFFF00)
    sampAddChatMessage("LAST-IP: "..iplast, 0xFFFF00)
end

Весь текст диалога:
Lua:
{999999}Номер аккаунта: {FFFFFF}167215
{999999}Уровень: {FFFFFF}3
{999999}Наличные: {33AA33}$11.384
{999999}Донат: {FFFFFF}0

{999999}REG-IP: {FFFFFF}91.243.106.29
{999999}LAST-IP: {FFFFFF}91.243.106.29
{999999}Дата регистрации: {FFFFFF}2020-03-03 15:44:56
{999999}Последний вход: {FFFFFF}2020-03-08 01:08:51
 
У

Удалённый пользователь 123482

Гость
Пример использования gmatch есть в официальной документации. Google, блять!
Lua:
string.gmatch (s, pattern)

Возвращает функцию-итератор, которая при каждом своем вызове, возвращает следующие захваты из шаблона pattern (смотрите §6.4.1) найденные в строке s. Если в шаблоне pattern нет захватов, то при каждом вызове выдается все найденное совпадение. В качестве примера, цикл, указанный ниже, будет перебирать все слова из строки s, печатая их по одному в строке:

s = "hello world from Lua"
for w in string.gmatch(s, "%a+") do
  print(w)
end

Следующий пример собирает в таблицу все пары key=value из заданной строки:

t = {}
s = "from=world, to=Lua"
for k, v in string.gmatch(s, "(%w+)=(%w+)") do
  t[k] = v
end

Для данной функции символ карет '^' в начале шаблона не работает в качестве привязки, так как будет препятствовать итерации (перебору).
 
  • Ха-ха
Реакции: Tranzit