Помогите. Смена команды внутри скрипта

PoundFoolish

Участник
Автор темы
81
1
Версия MoonLoader
Другое
Ребят, хелп.
Есть такой код (ниже будет). Суть такая, что я в ПЕРВОМ поле ввожу команду (для скажем так бинда), потом сохраняю и эта команда должна примениться, но не применяется (остается старая).
Перезагружаю скрипт - применяется. Как сделать грамотно это, чтобы применялось сразу, а не приходилось рестартать скрипт?
Знаю, что надо отрегать команду сначала, но не понимаю как. Делал так, но не выходило все равно. Помогите =)
Делал так:

Lua:
        if imgui.Button(u8'Сохранить##1') then
            sampUnregisterChatCommand(cfg.PoleOne.CMD)
            cfg.PoleOne.CMD = u8:decode(text1_buffer  .v)
          cfg.PoleTwo.Time = u8:decode(text2_buffer  .v)
           cfg.PoleThree.Text = u8:decode(text3_buffer  .v)
           inicfg.save(cfg, "Ravshan\\settings.ini")
           sampAddChatMessage('Сохранено.', -1)
        end
============================================================================================================

1616852290872.png

Код отрывками.

Lua:
local Data = { ----- CFG это типо окей, да?
    PoleOne = {
        CMD = "cmd",
    },
    PoleTwo = {
        Time = "20",
    },
    PoleThree = {
        Text = "Test",
    },
}


------
text1_buffer  = imgui.ImBuffer(u8(cfg.PoleOne.CMD), 256)
text2_buffer  = imgui.ImBuffer(u8(cfg.PoleTwo.Time), 256)
text3_buffer  = imgui.ImBuffer(u8(cfg.PoleThree.Text), 256)
------
        imgui.Text(u8'Команда:    Время:       Причина:')
        imgui.PushItemWidth(60)
        if imgui.InputText(u8"##Команда мата", text1_buffer) then
        imgui.PopItemWidth()
        end

        imgui.SameLine(0,7)
        imgui.PushItemWidth(60)
        if imgui.InputText(u8"##время мата", text2_buffer) then
        imgui.PopItemWidth()
        end
 
        imgui.SameLine(0,7)
        imgui.PushItemWidth(150)
        if imgui.InputText(u8"##Текст мата", text3_buffer) then
        imgui.PopItemWidth()
        end
 
        imgui.SameLine(0,5)
        if imgui.Button(u8'Сохранить##1') then
            cfg.PoleOne.CMD = u8:decode(text1_buffer.v)
            cfg.PoleTwo.Time = u8:decode(text2_buffer.v)
            cfg.PoleThree.Text = u8:decode(text3_buffer.v)
           inicfg.save(cfg, "Ravshan\\settings.ini")
           sampAddChatMessage('Сохранено.', -1)
        end
------
sampRegisterChatCommand(cfg.PoleOne.CMD, test) --- тут эта команда по сути должна применяться
------
function test(pam)
    local id = pam:match('(%d+)')
        if id then
        if sampIsPlayerConnected(id) then
            sampSendChat('/me ТЕСТ: '..id..' '..cfg.PoleTwo.Time..' '..cfg.PoleThree.Text)
        else
            sampAddChatMessage('Нету игрока.', -1)
        end
        else
            sampAddChatMessage('Не верно что-то.', -1)
        end
end
 
Последнее редактирование:
Решение
Lua:
if imgui.Button(u8'Сохранить##1') then
    sampUnregisterChatCommand(cfg.PoleOne.CMD)
    cfg.PoleOne.CMD = u8:decode(text1_buffer.v)
    cfg.PoleTwo.Time = u8:decode(text2_buffer.v)
    cfg.PoleThree.Text = u8:decode(text3_buffer.v)
    inicfg.save(cfg, "Ravshan\\settings.ini")
    sampRegisterChatCommand(cfg.PoleOne.CMD, test)
    sampAddChatMessage('Сохранено.', -1)
end

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,771
11,215
Lua:
if imgui.Button(u8'Сохранить##1') then
    sampUnregisterChatCommand(cfg.PoleOne.CMD)
    cfg.PoleOne.CMD = u8:decode(text1_buffer.v)
    cfg.PoleTwo.Time = u8:decode(text2_buffer.v)
    cfg.PoleThree.Text = u8:decode(text3_buffer.v)
    inicfg.save(cfg, "Ravshan\\settings.ini")
    sampRegisterChatCommand(cfg.PoleOne.CMD, test)
    sampAddChatMessage('Сохранено.', -1)
end
 
  • Нравится
Реакции: PoundFoolish