перевести инфу из диалога в переменные

leekyrave

Известный
Автор темы
419
223
Версия MoonLoader
.026-beta
привет всем,есть диалог /jobprogress
получаемый текст из него -

{FFFFFF}Статистика успеваемости сотрудника {66FF6C}Больница LS{FFFFFF}: Leeky_Rave
1) Пациентов вылечено: {FFB323}56{FFFFFF}
2) Выдано мед.карт: {FFB323}3{FFFFFF}
3) Проведено сеансов по лечению от наркозависимости: {FFB323}0{FFFFFF}
4) Доставлено медикаментов: {FFB323}2{FFFFFF}
5) Продано рецептов: {FFB323}1{FFFFFF}

Статистика успеваемости за сегодня:
1) Пациентов вылечено: {F9FF23}3{FFFFFF}
2) Выдано мед.карт: {F9FF23}1{FFFFFF}
3) Проведено сеансов по лечению от наркозависимости: {F9FF23}0{FFFFF}


Нужно значения,то бишь количество пациентов и т.д разбить по переменным.
Найдутся гении,которые скажут финдить по 1) Пациентов вылечено и т.д,но мне нужно сделать так,чтобы статистика за все время и за сегодня раскидана была по разным переменным.

я попробовал
Lua:
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
 


  textforcmd = text
if dialogId == 0 then
 
  if text:find("Статистика успеваемости сотрудника.+:.+1) Пациентов вылечено: %d+2) Выдано мед.карт: %d+3) Проведено сеансов по лечению от наркозависимости: %d+ 4) Доставлено медикаментов: %d+ 5) Продано рецептов: %d+") then
local bolnica, nick, pacientovvsego, medcartvidanozavsevremia, seansovnarkovsego, medikamentovdostavlenovsego, receptovprodanovsego = text:match('Статистика успеваемости сотрудника (.+): (.+) 1) Пациентов вылечено: (%d+) 2) Выдано мед.карт: (%d+) 3) Проведено сеансов по лечению от наркозависимости: (%d+) 4) Доставлено медикаментов: (%d+) 5) Продано рецептов: (%d+)')
vilichenovsego.v = sheckan
sampAddChatMessage(bolnica .. nick .. pacientovvsego .. medcartvidanozavsevremia .. seansovnarkovsego .. medikamentovdostavlenovsego .. receptovprodanovsego,-1)
return false
-- еще выше должен быть код получения статы за сегодня,не  сделал еще
end


end
 
  end
сделать так


но ничего не получается,помогите(
 

sᴀxᴏɴ

#Mary
Всефорумный модератор
791
846
Всего 10 переменных
Lua:
local pattern = [[{FFFFFF}Статистика успеваемости сотрудника {66FF6C}Больница (.+){FFFFFF}: (.+)
1%) Пациентов вылечено: {FFB323}(%d+){FFFFFF}
2%) Выдано мед%.карт: {FFB323}(%d+){FFFFFF}
3%) Проведено сеансов по лечению от наркозависимости: {FFB323}(%d+){FFFFFF}
4%) Доставлено медикаментов: {FFB323}(%d+){FFFFFF}
5%) Продано рецептов: {FFB323}(%d+){FFFFFF}

Статистика успеваемости за сегодня:
1%) Пациентов вылечено: {F9FF23}(%d+){FFFFFF}
2%) Выдано мед%.карт: {F9FF23}(%d+){FFFFFF}
3%) Проведено сеансов по лечению от наркозависимости: {F9FF23}(%d+){FFFFF}]]
 

leekyrave

Известный
Автор темы
419
223
Всего 10 переменных
Lua:
local pattern = [[{FFFFFF}Статистика успеваемости сотрудника {66FF6C}Больница (.+){FFFFFF}: (.+)
1%) Пациентов вылечено: {FFB323}(%d+){FFFFFF}
2%) Выдано мед%.карт: {FFB323}(%d+){FFFFFF}
3%) Проведено сеансов по лечению от наркозависимости: {FFB323}(%d+){FFFFFF}
4%) Доставлено медикаментов: {FFB323}(%d+){FFFFFF}
5%) Продано рецептов: {FFB323}(%d+){FFFFFF}

Статистика успеваемости за сегодня:
1%) Пациентов вылечено: {F9FF23}(%d+){FFFFFF}
2%) Выдано мед%.карт: {F9FF23}(%d+){FFFFFF}
3%) Проведено сеансов по лечению от наркозависимости: {F9FF23}(%d+){FFFFF}]]
а можно вместе с функцией,я с таким плохо знаком
 

leekyrave

Известный
Автор темы
419
223
Ты одну строчку кода самостоятельно написать не можешь?
local a,b,c,d,e,f,g,h,i,j = text:match(pattern)
а,понял,сразу не понял
я тупой и по-этому у меня ничего не получилось

Lua:
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
 


  textforcmd = text
if dialogId == 0 then
  local pattern = [[{FFFFFF}Статистика успеваемости сотрудника {66FF6C}Больница (.+){FFFFFF}: (.+)
1%) Пациентов вылечено: {FFB323}(%d+){FFFFFF}
2%) Выдано мед%.карт: {FFB323}(%d+){FFFFFF}
3%) Проведено сеансов по лечению от наркозависимости: {FFB323}(%d+){FFFFFF}
4%) Доставлено медикаментов: {FFB323}(%d+){FFFFFF}
5%) Продано рецептов: {FFB323}(%d+){FFFFFF}]]

if text:find(pattern) then

  local a,b,c,d,e,f,g = text:match(pattern)

return false

end

end
 
  end
 
Последнее редактирование:

Gat

Участник
52
6
Разбиваешь текст на строки и из каждой строки берешь нужное значение:
Lua:
local cPacient
for line in DialogText:gmatch('[^\r\n]+') do -- разбиваем на строки
    if line:find('1%) Пациентов вылечено: {FFB323}%s+%d+') then -- если в строка имеет такой текст
        cPacient = line:match('1%) Пациентов вылечено: {FFB323}(%d+)') -- то присвоить cPacient кол-во вылеченных пациэнтов
    end
end
таким образом делаешь проверку на каждую нужную строку и берешь с них значения
 

leekyrave

Известный
Автор темы
419
223
Разбиваешь текст на строки и из каждой строки берешь нужное значение:
Lua:
local cPacient
for line in DialogText:gmatch('[^\r\n]+') do -- разбиваем на строки
    if line:find('1%) Пациентов вылечено: {FFB323}%s+%d+') then -- если в строка имеет такой текст
        cPacient = line:match('1%) Пациентов вылечено: {FFB323}(%d+)') -- то присвоить cPacient кол-во вылеченных пациэнтов
    end
end
таким образом делаешь проверку на каждую нужную строку и берешь с них значения


Нужно значения,то бишь количество пациентов и т.д разбить по переменным.
Найдутся гении,которые скажут финдить по 1) Пациентов вылечено и т.д,но мне нужно сделать так,чтобы статистика за все время и за сегодня раскидана была по разным переменным.