Как разделить многострочный текст на строчный. / Изменения параметров.

Howau

Участник
Автор темы
45
8
Версия MoonLoader
.027.0-preview
Делаю себе в lua биндер, все сделал для работы биндера, по одной строке все отлично выводит. Но есть 2 ПРОБЛЕМЫ.

Проблема 1:

Я не умею разделять многострочный код из ini на построчный.

Проблема 2:

Я не умею делать так, что бы по нажатию кнопки в InputText и ini сразу менялись данные.

InputText - очистить все что внутри него написано
ini - изменить данные.

Для того, что бы это все изменилось приходится нажимать CTRL + R для перезагрузки скрипт, после которой все обноваляется.

В написании скриптов на луа, а тем более на мимгуи я новичок, который делает все по гайдам, либо составляю аналогию из других язык программирования которые я знаю.
Помогите решить эти проблемы, пожалуйста.
 
Решение
Делаю себе в lua биндер, все сделал для работы биндера, по одной строке все отлично выводит. Но есть 2 ПРОБЛЕМЫ.

Проблема 1:

Я не умею разделять многострочный код из ini на построчный.
Lua:
local function split_multiline(text)
    local lines = {}
    for line in text:gmatch("[^\r\n]+") do
        table.insert(lines, line)
    end
    return lines
end

local multiline_text = ini.get("section", "key")
local lines = split_multiline(multiline_text)

Проблема 2:

Я не умею делать так, что бы по нажатию кнопки в InputText и ini сразу менялись данные.

InputText - очистить все что внутри него написано
ini - изменить данные.

Для того, что бы это все изменилось приходится нажимать CTRL + R для перезагрузки скрипт, после...

UBP

Известный
350
204
Делаю себе в lua биндер, все сделал для работы биндера, по одной строке все отлично выводит. Но есть 2 ПРОБЛЕМЫ.

Проблема 1:

Я не умею разделять многострочный код из ini на построчный.
Lua:
local function split_multiline(text)
    local lines = {}
    for line in text:gmatch("[^\r\n]+") do
        table.insert(lines, line)
    end
    return lines
end

local multiline_text = ini.get("section", "key")
local lines = split_multiline(multiline_text)

Проблема 2:

Я не умею делать так, что бы по нажатию кнопки в InputText и ini сразу менялись данные.

InputText - очистить все что внутри него написано
ini - изменить данные.

Для того, что бы это все изменилось приходится нажимать CTRL + R для перезагрузки скрипт, после которой все обноваляется.
Lua:
if imgui.InputText("Enter text", input_text, ffi.sizeof(input_text)) then
    -- Обновляй значение в конфиге при изменении текста
    config.main.text = ffi.string(input_text)
    save_config()
end

Я не умею делать так, что бы по нажатию кнопки в InputText и ini сразу менялись данные.

InputText - очистить все что внутри него написано
ini - изменить данные.
Lua:
if imgui.Button("Clear") then
    -- Очищаем InputText и обновляем конфиг
    ffi.copy(input_text, "")
    config.main.text = ""
    save_config()
end
 
Последнее редактирование:
  • Нравится
Реакции: MrRazrab и MLycoris

Howau

Участник
Автор темы
45
8
Lua:
local function split_multiline(text)
    local lines = {}
    for line in text:gmatch("[^\r\n]+") do
        table.insert(lines, line)
    end
    return lines
end

local multiline_text = ini.get("section", "key")
local lines = split_multiline(multiline_text)


Lua:
if imgui.InputText("Enter text", input_text, ffi.sizeof(input_text)) then
    -- Обновляй значение в конфиге при изменении текста
    config.main.text = ffi.string(input_text)
    save_config()
end


Lua:
if imgui.Button("Clear") then
    -- Очищаем InputText и обновляем конфиг
    ffi.copy(input_text, "")
    config.main.text = ""
    save_config()
end
Все работает, но есть беда - когда я ввел в inputtext команду - пишет, что такой команды нет. После перезагрузки скрипта команда начинает работать. Может мне и кажется, но я думаю проблема в sampRegisterChatCommand(), которая сразу не обновляет в себе команду.

Lua:
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage(tag .. "Скрипт {7172EE}запущен", -1)
    sampAddChatMessage(tag .. "Команда открытия меню - {7172EE}/law.", -1)
    sampRegisterChatCommand('law', function() WinState[0] = not WinState[0] end)
    sampRegisterChatCommand(u8:decode(ffi.string(Command_1)), function () sampSendChat(u8:decode(ffi.string(Bind_1))) end)
    wait(-1)
end
 

UBP

Известный
350
204
Все работает, но есть беда - когда я ввел в inputtext команду - пишет, что такой команды нет. После перезагрузки скрипта команда начинает работать. Может мне и кажется, но я думаю проблема в sampRegisterChatCommand(), которая сразу не обновляет в себе команду.

Lua:
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage(tag .. "Скрипт {7172EE}запущен", -1)
    sampAddChatMessage(tag .. "Команда открытия меню - {7172EE}/law.", -1)
    sampRegisterChatCommand('law', function() WinState[0] = not WinState[0] end)
    sampRegisterChatCommand(u8:decode(ffi.string(Command_1)), function () sampSendChat(u8:decode(ffi.string(Bind_1))) end)
    wait(-1)
end
Так сделай функцию по регистрации команды


Lua:
function update_command(new_command)
    sampRegisterChatCommand(new_command, function()
        sampSendChat(u8:decode(ffi.string(Bind_1)))
    end)
end
 
  • Нравится
Реакции: Howau