помощь по выводу

W1ll04eison

Участник
Автор темы
328
19
Версия MoonLoader
.026-beta
У меня есть код(который я кину ниже), при написании команды: '/sgps (id игрока) (название gps)' этот самый код должен ниже чата выводить все названия gps в которых есть те буквы / буквосочетания которые я напишу в 'названии gps'(/sgps (%d+) (.+); где "(.+) - название gps'.
Пример я взял вот с этого кода: »Нажми на меня«

Но, есть одна проблема то, что при написании к примеру: '/sgps 12 мэрия' скрипт не выводит ниже названия gps.
Подскажите в чем проблема и как можно исправить?

Сам код:
lua:
--находится выше main
local ggps = {
    'Мэрия',
    'Автошкола',
    'Авиашкола LV',
    'Автовокзал LS',
    'ЖД вокзал LS',
    --и т.д
}

--в бесконечном цикле
    if sampIsChatInputActive() and not string.find(sampGetChatInputText(), '(.+) /sgps (%d+) (.+)') and not string.find(sampGetChatInputText(), '(.+) sgps/ (%d+) (.+)') and string.find(sampGetChatInputText(), '/sgps (%d+) (.+)') then
        for i = 1, #ggps do
            if string.find(sampGetChatInputText(), '/sgps (%d+) (.+)') then
                array.window_12.v = false
            else
                array.window_12.v = true
            end
        end
    else
        array.window_12.v = false
    end
  
--после main
addEventHandler('onWindowMessage', function(msg, wp, lp)
    if msg == 0x100 or msg == 0x104 then
        if sampIsChatInputActive() and not string.find(sampGetChatInputText(), '(.+) /sgps (%d+) (.+)') and not string.find(sampGetChatInputText(), '(.+) sgps/ (%d+) (.+)') and string.find(sampGetChatInputText(), '/sgps (%d+) (.+)') then
            ttreat = {}
            local sgpsID, sgpsName = sampGetChatInputText():match("/sgps (%d+) (.+)")
            if sgpsName ~= nil then
                for i = 1, #ggps do
                    if string.rlower(ggps[i]):find(string.rlower(sgpsName)) then
                        table.insert(ttreat, #ttreat + 1, u8(ggps[i]))
                    end
                end
            else
                sampAddChatMessage('12', -1)
            end
        end
    end
end)

--вне main
local russian_characters = {
    [168] = 'Ё', [184] = 'ё', [192] = 'А', [193] = 'Б', [194] = 'В', [195] = 'Г', [196] = 'Д', [197] = 'Е', [198] = 'Ж', [199] = 'З', [200] = 'И', [201] = 'Й', [202] = 'К', [203] = 'Л', [204] = 'М', [205] = 'Н', [206] = 'О', [207] = 'П', [208] = 'Р', [209] = 'С', [210] = 'Т', [211] = 'У', [212] = 'Ф', [213] = 'Х', [214] = 'Ц', [215] = 'Ч', [216] = 'Ш', [217] = 'Щ', [218] = 'Ъ', [219] = 'Ы', [220] = 'Ь', [221] = 'Э', [222] = 'Ю', [223] = 'Я', [224] = 'а', [225] = 'б', [226] = 'в', [227] = 'г', [228] = 'д', [229] = 'е', [230] = 'ж', [231] = 'з', [232] = 'и', [233] = 'й', [234] = 'к', [235] = 'л', [236] = 'м', [237] = 'н', [238] = 'о', [239] = 'п', [240] = 'р', [241] = 'с', [242] = 'т', [243] = 'у', [244] = 'ф', [245] = 'х', [246] = 'ц', [247] = 'ч', [248] = 'ш', [249] = 'щ', [250] = 'ъ', [251] = 'ы', [252] = 'ь', [253] = 'э', [254] = 'ю', [255] = 'я',
}
function string.rlower(s)
    s = s:lower()
    local strlen = s:len()
    if strlen == 0 then return s end
    s = s:lower()
    local output = ''
    for i = 1, strlen do
        local ch = s:byte(i)
        if ch >= 192 and ch <= 223 then -- upper russian characters
            output = output .. russian_characters[ch + 32]
        elseif ch == 168 then -- Ё
            output = output .. russian_characters[184]
        else
            output = output .. string.char(ch)
        end
    end
    return output
end
function string.rupper(s)
    s = s:upper()
    local strlen = s:len()
    if strlen == 0 then return s end
    s = s:upper()
    local output = ''
    for i = 1, strlen do
        local ch = s:byte(i)
        if ch >= 224 and ch <= 255 then -- lower russian characters
            output = output .. russian_characters[ch - 32]
        elseif ch == 184 then -- ё
            output = output .. russian_characters[168]
        else
            output = output .. string.char(ch)
        end
    end
    return output
end

--в OnDrawFrame
        if array.window_12.v then
            local in1 = sampGetInputInfoPtr()
            local in1 = getStructElement(in1, 0x8, 4)
            local in2 = getStructElement(in1, 0x8, 4)
            local in3 = getStructElement(in1, 0xC, 4)
            local pos1Y = in3 + 50
            local pos1X = in2
  

            imgui.SetNextWindowSize(imgui.ImVec2(450, 257), imgui.Cond.FirstUseEver)
            imgui.SetNextWindowPos(imgui.ImVec2(pos1X, pos1Y), imgui.Cond.Always)
            imgui.Begin('#1221', array.window_12, imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoResize + imgui.WindowFlags.AlwaysAutoResize + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoFocusOnAppearing)
  
            if #ttreat ~= 0 then
                for i = 1, #ttreat do
                    imgui.Text(u8'' ..ttreat[i])
                end
            end
          
          
            imgui.End()
        end