Как можно сделать поиск в чате с InputText

cloused2

Известный
Автор темы
396
130
Версия MoonLoader
Другое
Я понимаю как можно получить текст с InputText'a мимгуишного и понимаю как сделать поиск. Но при записи в кфг текст записывается в utf-8, а чат в кодировке CP1251. Можно пример кода как можно реализовать это?
 
Решение
он разве сможет так?
да
1720260501906.png


ещё поменяй 15 строчку в том что я кинул на это (забыл в u8 обернуть)
Lua:
local search = imgui.new.char[256](u8(settings.shit.text))

chromiusj

R&B-baby-queen
Модератор
5,593
3,893
Lua:
local imgui = require 'mimgui'
local ffi = require('ffi')
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local inicfg = require 'inicfg'
local directIni = 'bromo.ini'
local ini = inicfg.load({
    main = {
        str = '';
    },
}, directIni)
inicfg.save(ini, directIni)
local renderWindow = imgui.new.bool(true)
local input = imgui.new.char[64](u8(ini.main.str))

local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('Main Window', renderWindow) then
            if imgui.InputText(u8'bromo',input,64) then
                ini.main.str = u8:decode(ffi.string(input))
                inicfg.save(ini,directIni)
            end
            imgui.SameLine()
            if imgui.Button('fgdfgfd') then
                sampAddChatMessage(ini.main.str, -1)
            end
            imgui.End()
        end
    end
)

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('mimgui', function()
        renderWindow[0] = not renderWindow[0]
    end)
    wait(-1)
end
 

cloused2

Известный
Автор темы
396
130
Lua:
local imgui = require 'mimgui'
local ffi = require('ffi')
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local inicfg = require 'inicfg'
local directIni = 'bromo.ini'
local ini = inicfg.load({
    main = {
        str = '';
    },
}, directIni)
inicfg.save(ini, directIni)
local renderWindow = imgui.new.bool(true)
local input = imgui.new.char[64](u8(ini.main.str))

local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('Main Window', renderWindow) then
            if imgui.InputText(u8'bromo',input,64) then
                ini.main.str = u8:decode(ffi.string(input))
                inicfg.save(ini,directIni)
            end
            imgui.SameLine()
            if imgui.Button('fgdfgfd') then
                sampAddChatMessage(ini.main.str, -1)
            end
            imgui.End()
        end
    end
)

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('mimgui', function()
        renderWindow[0] = not renderWindow[0]
    end)
    wait(-1)
end
Не, это я понимаю как делается, в функе onServerMessage текст приходит в кодировке 1251, а мне надо сравнить его с текстом из ини (Инпут записывает туда текст в u8)
 

MLycoris

На вид оружие массового семяизвержения
Проверенный
1,992
2,186
 
  • Нравится
Реакции: cloused2

cloused2

Известный
Автор темы
396
130
???
 

plalkeo

Известный
707
280
Не, это я понимаю как делается, в функе onServerMessage текст приходит в кодировке 1251, а мне надо сравнить его с текстом из ини (Инпут записывает туда текст в u8)
ну так

Lua:
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
а потом с u8:decode(TEXT) / u8:encode(TEXT) поиграйся, чтобы кодировка стала у обоих текстов правильная и всё
 
  • Нравится
Реакции: cloused2

MLycoris

На вид оружие массового семяизвержения
Проверенный
1,992
2,186
Lua:
local imgui = require 'mimgui'
local ffi = require 'ffi'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8

local inicfg = require 'inicfg'
local settings = inicfg.load({
    shit = {
        text = '',
    }}, 'ScriptName.ini')
inicfg.save(settings, 'ScriptName.ini')

local WinState = imgui.new.bool(true)
local search = imgui.new.char[256](settings.shit.text)

imgui.OnFrame(function() return WinState[0] end,function(player)
    imgui.SetNextWindowPos(imgui.ImVec2(500,500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(600, 200), imgui.Cond.Always)
    imgui.Begin('Example', WinState, imgui.WindowFlags.NoResize)
    if imgui.InputTextWithHint('##Search',u8'Поиск',search,256) then
        settings.shit.text = u8:decode(ffi.string(search))
        inicfg.save(settings, 'ScriptName.ini')
    end
    imgui.End()
end)

local sampev = require('lib.samp.events')
function sampev.onServerMessage(color, text)
    if text:find(settings.shit.text) then
        sampAddChatMessage('нашел',-1)
    end
end
 
  • Нравится
Реакции: cloused2 и plalkeo

cloused2

Известный
Автор темы
396
130
Lua:
local imgui = require 'mimgui'
local ffi = require 'ffi'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8

local inicfg = require 'inicfg'
local settings = inicfg.load({
    shit = {
        text = '',
    }}, 'ScriptName.ini')
inicfg.save(settings, 'ScriptName.ini')

local WinState = imgui.new.bool(true)
local search = imgui.new.char[256](settings.shit.text)

imgui.OnFrame(function() return WinState[0] end,function(player)
    imgui.SetNextWindowPos(imgui.ImVec2(500,500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(600, 200), imgui.Cond.Always)
    imgui.Begin('Example', WinState, imgui.WindowFlags.NoResize)
    if imgui.InputTextWithHint('##Search',u8'Поиск',search,256) then
        settings.shit.text = u8:decode(ffi.string(search))
        inicfg.save(settings, 'ScriptName.ini')
    end
    imgui.End()
end)

local sampev = require('lib.samp.events')
function sampev.onServerMessage(color, text)
    if text:find(settings.shit.text) then
        sampAddChatMessage('нашел',-1)
    end
end
он разве сможет так?
 

MLycoris

На вид оружие массового семяизвержения
Проверенный
1,992
2,186
  • Нравится
Реакции: cloused2

cloused2

Известный
Автор темы
396
130
  • Нравится
Реакции: MLycoris