[RakBot]Вопрос по lua

Gafask

Участник
Автор темы
137
13
Версия MoonLoader
Другое
Дратути , вопрос такой .
Вот у нас есть local = "Лысый кот номер X сидит на балконе и выпивает боржоме " , и допустим то что X всегда меняется и имеет он формат цифр , как можно из текста взять именно это и вывести его в лог .
А если еще быть точнее вот мы получаем сообщение из чата или от самого рак бота "Уровень номер (тут номер уровня ) , бонус +5 к силе . " и как можно вывести номер уровня в лог . Но при этом будет куча разных подобных сообщений но там будут разные слова и тд но это хрень мне просто нужно узнать как вывести номер уровня к примеру . Я думаю что я понятно обьеснил заранее спасибо .
 

Gafask

Участник
Автор темы
137
13
Lua:
printLog(str:match("(%d+)"))
printLog(str:match("Лысый кот номер (%d+)") сидит на балконе и выпивает боржоме ) , типо так да ? Если я правильно тебя понял , и такой вопрос там же указан + тоесть он будет добовлять + или нет , просто номера могут быть 20 потом 2124 и тд .
 

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,907
1,283
printLog(str:match("Лысый кот номер (%d+)") сидит на балконе и выпивает боржоме ) , типо так да ? Если я правильно тебя понял , и такой вопрос там же указан + тоесть он будет добовлять + или нет , просто номера могут быть 20 потом 2124 и тд .
printLog(str:match("Лысый кот номер (%d+) сидит на балконе и выпивает боржоме")
оно не будет добавлять, "%d" - 1 цифра, "(%d+)" - неограниченное кол-во цифр
 

Gafask

Участник
Автор темы
137
13
nomerX = text:match("(%d+)")
ой , я ошибся , не то написал в вопросе . Я хотел узнать каким образом можно взять из этого текста кусок цифр из определенного места и потом вывести этот количество в лог . Или я просто не понял . Типо
Типо так , если я правильно понял вас ?:
function onServerMessage(msg)
if msg:find('Кот номер (%d+) сидит на болконе и выпивает боржоме') then
printLog((%d+)..'---Номер кота который выпивает боржоме')
end
end
 

Gafask

Участник
Автор темы
137
13
Lua:
function onServerMessage(msg)
if msg:find('Кот номер (%d+) сидит на болконе и выпивает боржоме') then
  printLog(msg:match("(%d+)"))
end
end
Cпасибо что помог вывести в лог .
А как можно выполнить проверку с (%d+) , чото я с бубном тонцую и так и сяк и не как не получается ) . Подскажи пожалуйста .
 

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,907
1,283
Cпасибо что помог вывести в лог .
А как можно выполнить проверку с (%d+) , чото я с бубном тонцую и так и сяк и не как не получается ) . Подскажи пожалуйста .
какую проверку
 

Gafask

Участник
Автор темы
137
13
if msg:match("(%d+)") > "27" then
Как бы это странно не прозвучало но , if всегда верна тоесть если номер кота 25 то она выводит мне лог якобы верные ну тоесть проверка всегда true .
 
Последнее редактирование:

Shamanije

Известный
Друг
959
923
Как бы это странно не прозвучало но , if всегда верна тоесть если номер кота 25 то она выводит мне лог якобы верные ну тоесть проверка всегда true .
потому что надо перевести запарсенный текст в число и тогда строить условие
Lua:
function onServerMessage(msg)
    if msg:find('Кот номер %d- сидит на болконе и выпивает боржоме') then
          if tonumber(msg:match('Кот номер (%d-) сидит на болконе и выпивает боржоме')) > 27 then
              -- code
          end
     end
end
 
  • Нравится
Реакции: Gafask