как достать значения из строк из диалога

coldplugg.

Участник
Автор темы
145
15
Версия MoonLoader
.026-beta
делаю луа для ракбота, нужно сделать чтобы когда админ пишет в чат "бот инфа *id*" выдавались его данные, пока что только ник сделал, и то он не выдается, и пишется только идет проверка
Lua:
function onServerMessage(text)
    if text:find('%[.*%] (%w+_?%w+)%[(%d+)%]%: бот инфа %d+') then
    idcheck = text:match('%[.*%] (%w+_?%w+)%[(%d+)%]%: бот инфа %d+')
        sendInput('/a Идет проверка...')
    runCommand(string.format('/check %s', idcheck,-1))
    end
end
function onShowDialog(dialogId,s,t,b1,b2,text)
    for line in text:gmatch("[^\n]+") do -- разбиваем чтобы искать по строкам
        if line:find('Имя: %{......%}%[%w+_%w+]') and dialogId == 235 then -- Поиск текста в строке. |  Пример строки Деньги в банке: [$21]
            name = line:match('Имя: %{......%}%[%w+_%w+]') -- запишет в переменную name
                        runCommand(string.format('/a НикНейм: %s', name,-1))
        end
     end
end
 

srostok294

Участник
99
17
Lua:
function onServerMessage(text)
    if text:find('%[.*%] (%w+_?%w+)%[(%d+)%]%: бот инфа %d+') then
    a, yournick, yourid, idcheck = text:match('%[.*%] (%w+_?%w+)%[(%d+)%]%: бот инфа %d+')
        sendInput('/a Идет проверка...')
    runCommand(string.format('/check %d', idcheck))
    end
end
function onShowDialog(dialogId,s,t,b1,b2,text)
    for line in text:gmatch("[^\n]+") do -- разбиваем чтобы искать по строкам
        if line:find('Имя: %{......%}%[%w+_%w+]') and dialogId == 235 then -- Поиск текста в строке. |  Пример строки Деньги в банке: [$21]
            name = line:match('Имя: %{......%}%[%w+_%w+]') -- запишет в переменную name
                        runCommand(string.format('/a НикНейм: %s', name,-1))
        end
     end
end
 

coldplugg.

Участник
Автор темы
145
15
Lua:
function onServerMessage(text)
    if text:find('%[.*%] (%w+_?%w+)%[(%d+)%]%: бот инфа %d+') then
    a, yournick, yourid, idcheck = text:match('%[.*%] (%w+_?%w+)%[(%d+)%]%: бот инфа %d+')
        sendInput('/a Идет проверка...')
    runCommand(string.format('/check %d', idcheck))
    end
end
function onShowDialog(dialogId,s,t,b1,b2,text)
    for line in text:gmatch("[^\n]+") do -- разбиваем чтобы искать по строкам
        if line:find('Имя: %{......%}%[%w+_%w+]') and dialogId == 235 then -- Поиск текста в строке. |  Пример строки Деньги в банке: [$21]
            name = line:match('Имя: %{......%}%[%w+_%w+]') -- запишет в переменную name
                        runCommand(string.format('/a НикНейм: %s', name,-1))
        end
     end
end
Ошибка скрипта "bot.lua": ...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:55: bad argument #2 to 'format' (number expected, got nil)
[21:40:44] [ERROR] stack traceback:
[21:40:44] [ERROR] [C]: in function 'format'
[21:40:44] [ERROR] ...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:55: in function <...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:39>
 

srostok294

Участник
99
17
Ошибка скрипта "bot.lua": ...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:55: bad argument #2 to 'format' (number expected, got nil)
[21:40:44] [ERROR] stack traceback:
[21:40:44] [ERROR] [C]: in function 'format'
[21:40:44] [ERROR] ...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:55: in function <...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:39>
Lua:
sendInput('/check '..idcheck)
 
Последнее редактирование:

coldplugg.

Участник
Автор темы
145
15
Lua:
runCommand('/check '..idcheck)
[ERROR] Ошибка скрипта "bot.lua": ...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:55: attempt to concatenate global 'idcheck' (a nil value)
[21:50:32] [ERROR] stack traceback:
[21:50:32] [ERROR] ...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:55: in function <...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:39>

Lua:
elseif text:find('%[.*%] (%w+_?%w+)%[(%d+)%]%: бот инфа %d+') then
          a, yournick, yourid, idcheck = text:match('%[.*%] (%w+_?%w+)%[(%d+)%]%: бот инфа %d+')
              sendInput('/a Идет проверка...')
          runCommand('/check '..idcheck)
 

Loocking

Известный
1,232
363
[ERROR] Ошибка скрипта "bot.lua": ...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:55: attempt to concatenate global 'idcheck' (a nil value)
[21:50:32] [ERROR] stack traceback:
[21:50:32] [ERROR] ...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:55: in function <...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:39>

Lua:
elseif text:find('%[.*%] (%w+_?%w+)%[(%d+)%]%: бот инфа %d+') then
          a, yournick, yourid, idcheck = text:match('%[.*%] (%w+_?%w+)%[(%d+)%]%: бот инфа %d+')
              sendInput('/a Идет проверка...')
          runCommand('/check '..idcheck)
выучи немного луа, и регулярки :/
 

coldplugg.

Участник
Автор темы
145
15
Последнее редактирование:

srostok294

Участник
99
17
[ERROR] Ошибка скрипта "bot.lua": ...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:55: attempt to concatenate global 'idcheck' (a nil value)
[21:50:32] [ERROR] stack traceback:
[21:50:32] [ERROR] ...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:55: in function <...rs\zxc tvoya mama\Desktop\RakBot-0.8.2.1\scripts\bot.lua:39>

Lua:
elseif text:find('%[.*%] (%w+_?%w+)%[(%d+)%]%: бот инфа %d+') then
          a, yournick, yourid, idcheck = text:match('%[.*%] (%w+_?%w+)%[(%d+)%]%: бот инфа %d+')
              sendInput('/a Идет проверка...')
          runCommand('/check '..idcheck)
какая конкретно строка выдает ошибку?