В чём ошибка (информация из диалога)

Mico

Активный
Автор темы
251
48
Версия MoonLoader
.026-beta
Lua:
function hook.onShowDialog(dialogId, style, title, button1, button2, text)
    if parsim and dialogId == 228 and title:find("Статистика администратора") then
        -- другой диалог
    end
    if parsim and dialogId == 1932 and title:find("{dfb519}Оффлайн статистика") then
        for line in text:gmatch("[^\r\n]+") do
            if line:find("Послед. вход: %[%.+%/%.+%/%.+ %.+%:%.+%]") then
                lc_d, lc_m, lc_y, lc_h, lc_min = line:match("Послед. вход: %[(%.+)%/(%.+)%/(%.+) (%.+):(%.+)%]")
            end
        end
        parsim = false
        return false
    end
end

Код:
function command_stats(args_astats)
    lua_thread.create(function()
        astats_menu.v = true
        timerStart = os.time()
        timerEndTime = 3
        wait(1000)
        sampSendChat("/getoffstats "..args_astats)
        parsim = true
        wait(1000)
        sampSendChat("/astats "..args_astats)
        parsim = true
    end)
end

Выводит ошибку:
Код:
[ML] (error) name: C:\Games\GTA San Andreas\moonloader\name.lua:1889: attempt to concatenate global 'lc_min' (a nil value)
stack traceback:
    C:\Games\GTA San Andreas\moonloader\name.lua:1889: in function 'OnDrawFrame'
    C:\Games\GTA San Andreas\moonloader\lib\imgui.lua:1378: in function <C:\Games\GTA San Andreas\moonloader\lib\imgui.lua:1367>
[ML] (error) name: Script died due to an error. (01E9BEC4)

Нужный текст из диалога: Послед. вход: [31/10/2022 17:56]
 
  • Эм
Реакции: qdIbp
Решение
Lua:
lc_d, lc_m, lc_y, lc_h, lc_min = line:match("Послед. вход%: %[(%d+)%/(%d+)%/(%d+) (%d+)%:(%d+)%]"))

Нужный текст из диалога: Послед. вход: [31/10/2022 17:56]
попробуй так

1667284545577.png
У

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

Гость
У тебя скорее всего неправильная регулярка в диалоге (как минимум там явно лишнее экранирование точек), из-за этого переменная lc_min остается неинициализированной и получается ошибка при конкатенации
 
  • Нравится
Реакции: Mico и qdIbp

Mico

Активный
Автор темы
251
48
помогло

Хочу еще спросить, может знаете :) (чтобы новые темы не делать)

Возможно ли сделать так, если lc_m будет равен цифре 11, то в окне имугуи будет писать - ноябрь, если 10, то октябрь и так далее?
 
Последнее редактирование:
  • Нравится
Реакции: qdIbp

Mico

Активный
Автор темы
251
48

Mico

Активный
Автор темы
251
48
Так он будет работать если 1 >= lc_m <= 12 будет содержать число которое не меньше 1 и не больше 12

На сам потыкай числа
https://rextester.com/REESYM4167
я тупой наверно) но мне надо чтобы lc_m брал из диалога и переписывал её под текст.

То есть если в диалоге будет написано 11, то пишет ноябрь. Если в диалоге он возьмёт 12 - то декабрь :)
 
  • Эм
Реакции: qdIbp

qdIbp

Автор темы
Проверенный
1,436
1,176
я тупой наверно)
Согл, глуповат, попробую объяснить если не понимаешь, создаешь массив
Lua:
local god = {'янв','фев','мар','апр','май','июнь','июль','авг','сен','окт','нояб','дек'}
вот он уже готовый
берешь туда куда тебе нужен эти месяца и вставляешь как
Lua:
u8(god[lc_m])