как исправить ошибку iniconfig?

frosvordd

Новичок
Автор темы
4
0
Версия MoonLoader
.026-beta
почему вылазит такая ошибка и как ее исправить? конфиг создал в папке мунлаудер,где и находиться сам скрипт. Вот ошибка
[ML] (error) Bind: D:\qq\moonloader\rot.lua:21: attempt to index local 'mainIni' (a nil value)
stack traceback:
D:\qq\moonloader\rot.lua:21: in main chunk
[ML] (error) Bind: Script died due to an error. (08D29AF4)
[ML] (system) Loading script 'D:\qq\moonloader\SF Integration.lua'...
[ML] (system) SF Integration: Loaded successfully.
[ML] (error) imgui_notf.lua: cannot resume non-suspended coroutine
stack traceback:
[C]: in function 'SetMouseCursor'
D:\qq\moonloader\imgui_notf.lua:88: in function <D:\qq\moonloader\imgui_notf.lua:84>
[ML] (error) imgui_notf.lua: Script died due to an error. (08DE431C)
 

Вложения

  • rot.lua
    2.2 KB · Просмотры: 8
  • Грустно
  • Bug
Реакции: qdIbp и askfmaskfaosflas

qdIbp

Автор темы
Проверенный
1,387
1,142
попробуй

Lua:
script_name("Bind")
script_description("Bind for Samp")
script_version_number(1)
script_version("v.001")
script_authors("frosvord")

-------------------------

require "lib.moonloader"
local sampev = require "lib.samp.events"
local keys = require "vkeys"
local imgui = require "imgui"

local encoding = require "encoding"
encoding.default = 'CP1251'
u8 = encoding.UTF8

local rkeys = require "rkeys"
imgui.HotKey = require("imgui_addons").HotKey
local inicfg = require("inicfg")
local pach = "settings.ini"

local mainIni = inicfg.load(nil,pach)
local mainIni = inicfg.load({
    text = {
        onebuffer = ''
    }
},pach)
if not doesFileExist('moonloader/config/settings.ini') then if inicfg.save(mainIni, pach)then print('god')end end
--------------------------
local tLastKeys = {}  -- сохраняет прошлые значения хоткея
local window = imgui.ImBool(false)
local text_buffer = imgui.ImBuffer(''..mainIni.text.onebuffer,256)
local ActiveClockMenu = {
    v = decodeJson("[]") --преобразование с стринга в массив
}
---------------------------

function main()
  if not isSampLoaded() or not isSampfuncsLoaded() then return end
  while not isSampAvailable() do wait(100) end

-------------------------

    sampAddChatMessage("binds loaded",0xFFFF21)
    sampRegisterChatCommand("bind", function() window.v = not window.v end)

    bindClock = rkeys.registerHotKey(ActiveClockMenu.v,true,clockFunc)  -- создание хоткея
---------------------------
    while true do wait(0)
        imgui.Process = window.v
    end
end

function imgui.OnDrawFrame()
    imgui.Begin("frosvord bind",window)
        if imgui.HotKey("##1", ActiveClockMenu, tLastKeys, 100) then
            rkeys.changeHotKey(bindClock,ActiveClockMenu.v)
        end
        imgui.SameLine()
        imgui.PushItemWidth(300)
        if imgui.InputText(u8"Введите текст",text_buffer) then
            mainIni.text.onebuffer = u8:decode(text_buffer.v) -- запись буфера в подсекцию конфига
            inicfg.save(mainIni,pach)
        end
    imgui.End()
end

function clockFunc()
    if not sampIsChatInputActive() then
        sampSendChat(mainIni.text.onebuffer) -- вывод текста с  конфига
    end
end
 
  • Нравится
Реакции: frosvordd

frosvordd

Новичок
Автор темы
4
0
Большое спасибо!Помогло.
Если не трудно,то можно узнать,что делает 29 строка,а то не могу понять...
if not doesFileExist('moonloader/config/settings.ini') then if inicfg.save(mainIni, pach)then print('god')end end

Так же хотел спросить,зачем в 24 строке вы создаете второй mainIni?(пробую писать на луа неделю,может я совсем тупой,но в других языках нельзя делать 2 переменные с одним именем)
 
Последнее редактирование:

qdIbp

Автор темы
Проверенный
1,387
1,142
Большое спасибо!Помогло.
Если не трудно,то можно узнать,что делает 29 строка,а то не могу понять...
if not doesFileExist('moonloader/config/settings.ini') then if inicfg.save(mainIni, pach)then print('god')end end
Можно было бы загуглить функцию
она отвечает за проверку на существования файла
Так же хотел спросить,зачем в 24 строке вы создаете второй mainIni?(пробую писать на луа неделю,может я совсем тупой,но в других языках нельзя делать 2 переменные с одним именем)
как понять второй mainIni?
Lua:
local mainIni = inicfg.load(nil,pach)
local mainIni = inicfg.load({
    text = {
        onebuffer = ''
    }
},pach)
Если ты про это то, первый mainIni загружает параметр, в случаи отсутствия он обращается к тому что ниже
 
  • Нравится
Реакции: frosvordd