[mimgui] Изменение и сохранения значения в Json

EX4MPLYCH

Участник
Автор темы
42
5
Версия MoonLoader
.026-beta
Не могу понять, почему когда в поле изменяю значение, он попросту все стирает из json и не сохраняет.

Lua:
 BindNameEdit = imgui.new.char[256](str(tbinder[1].binds[defaultbind].name))
if imgui.InputText("###BindNameEdit", BindNameEdit, sizeof(BindNameEdit)) then
     tbinder[1].binds[defaultbind].name = BindNameEdit
     local b = io.open(file, "w")
     b:write(tbinder[1].binds[defaultbind].name)
     b:flush()
     b:close()
end
 
  • Грустно
Реакции: qdIbp
Решение
А не проще создать функцию для сохр?

Lua:
local path = getGameDirectory()..'\\moonloader\\config\\savedata.json'

function JSONSave()
    if doesFileExist(path) then
        local f = io.open(path, 'w+')
        if f then
            f:write(encodeJson(HLcfg--[[твой массив дял save]])):close()
        end
    end
end

Вот так попробуй
Lua:
            if imgui.InputText("###BindNameEdit", BindNameEdit, sizeof(BindNameEdit)) then
                tbinder[1].binds[defaultbind].name = str(BindNameEdit)
                local b = io.open(file, "w")
                b:write(encodeJson(tbinder))
                b:flush()
                b:close()
            end

Я же правильно понял что tbinder твой массив для json??

qdIbp

Автор темы
Проверенный
1,387
1,142
Может надо так?

Lua:
local str = ffi.string
local BindNameEdit = imgui.new.char[256](str(tbinder[1].binds[defaultbind].name))


if imgui.InputText("###BindNameEdit", BindNameEdit, sizeof(BindNameEdit)) then
     tbinder[1].binds[defaultbind].name = str(BindNameEdit)
     local b = io.open(file, "w")
     b:write(tbinder[1].binds[defaultbind].name)
     b:flush()
     b:close()
end
 

EX4MPLYCH

Участник
Автор темы
42
5
Может надо так?

Lua:
local str = ffi.string
local BindNameEdit = imgui.new.char[256](str(tbinder[1].binds[defaultbind].name))


if imgui.InputText("###BindNameEdit", BindNameEdit, sizeof(BindNameEdit)) then
     tbinder[1].binds[defaultbind].name = str(BindNameEdit)
     local b = io.open(file, "w")
     b:write(tbinder[1].binds[defaultbind].name)
     b:flush()
     b:close()
end
Не работает. Удаляет все из json. А мне нужно чтобы он лишь заменил значение
 

qdIbp

Автор темы
Проверенный
1,387
1,142
А не проще создать функцию для сохр?

Lua:
local path = getGameDirectory()..'\\moonloader\\config\\savedata.json'

function JSONSave()
    if doesFileExist(path) then
        local f = io.open(path, 'w+')
        if f then
            f:write(encodeJson(HLcfg--[[твой массив дял save]])):close()
        end
    end
end

Вот так попробуй
Lua:
            if imgui.InputText("###BindNameEdit", BindNameEdit, sizeof(BindNameEdit)) then
                tbinder[1].binds[defaultbind].name = str(BindNameEdit)
                local b = io.open(file, "w")
                b:write(encodeJson(tbinder))
                b:flush()
                b:close()
            end

Я же правильно понял что tbinder твой массив для json??
 
Последнее редактирование:
  • Нравится
Реакции: EX4MPLYCH

EX4MPLYCH

Участник
Автор темы
42
5
А не проще создать функцию для сохр?

Lua:
local path = getGameDirectory()..'\\moonloader\\config\\savedata.json'

function JSONSave()
    if doesFileExist(path) then
        local f = io.open(path, 'w+')
        if f then
            f:write(encodeJson(HLcfg--[[твой массив дял save]])):close()
        end
    end
end

Вот так попробуй
Lua:
            if imgui.InputText("###BindNameEdit", BindNameEdit, sizeof(BindNameEdit)) then
                tbinder[1].binds[defaultbind].name = str(BindNameEdit)
                local b = io.open(file, "w")
                b:write(encodeJson(tbinder))
                b:flush()
                b:close()
            end

Я же правильно понял что tbinder твой массив для json??
Да

А не проще создать функцию для сохр?

Lua:
local path = getGameDirectory()..'\\moonloader\\config\\savedata.json'

function JSONSave()
    if doesFileExist(path) then
        local f = io.open(path, 'w+')
        if f then
            f:write(encodeJson(HLcfg--[[твой массив дял save]])):close()
        end
    end
end

Вот так попробуй
Lua:
            if imgui.InputText("###BindNameEdit", BindNameEdit, sizeof(BindNameEdit)) then
                tbinder[1].binds[defaultbind].name = str(BindNameEdit)
                local b = io.open(file, "w")
                b:write(encodeJson(tbinder))
                b:flush()
                b:close()
            end

Я же правильно понял что tbinder твой массив для json??
Спасибо
 
  • Влюблен
Реакции: qdIbp