inicfg не сохраняет настройку

DZONE

Известный
Автор темы
188
200
Версия MoonLoader
.026-beta
tf.mention:
sampRegisterChatCommand("tf.mention", function(arg)
        hexRegex = "[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]"
      
        if arg:find("[1-2]") then
            cfg.mention.mode = tonumber(arg)
            save()

            serverMessage("Установлен вид упоминания - "..arg)
        elseif arg:find(hexRegex) then
            if arg:find(".......") then setMentionTypeAbort() else
                cfg.mention.color = "{"..arg.."}"

                serverMessage("Установлен цвет упоминания - "..cfg.mention.color..arg)
                save()
            end
        elseif arg:find("[1-2] "..hexRegex) then
            if arg:find("[1-2] .......") then setMentionTypeAbort() else
                mentionMode, mentionColor = arg:match("([1-2]) ("..hexRegex..")")
                cfg.mention.color, cfg.mention.mode = "{"..mentionColor.."}", tonumber(mentionMode)

                serverMessage("Установлены настройки: номер вида упоминания - "..tostring(cfg.mention.mode)..". Цвет упоминания: "..cfg.mentionColor..mentionColor)
                save()
            end
        else setMentionTypeAbort() end
    end)

есть команда tf.mention, с аргументами <1-2> <hex>
если я захочу ввести к примеру /tf.mention 1 FFA228, то мне это сохранит в конфиг
[mention]
color={FFA228}

что я не так сделал?

Lua:
local cfg = inicfg.load({
    mention = {
        mode = 1,
        color = "{3E97D1}"
    }
}, direct)
 
  • Эм
Реакции: qdIbp
Решение
Lua:
hexRegex = "[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]"
-- Можно заменить на
hexRegex = "%x%x%x%x%x%x"
хотя лучше %x+ и потом где нибудь проверку сделать скок символов, хотя я уверен что найдется способ легче и проще
И я хз что за setMentionTypeAbort() так что я убрал ее, можешь добавить если эта важная функция

Lua:
local inicfg = require('inicfg')

local dir = 'name'
local cfg = inicfg.load(nil,dir)
local save = function()
    if inicfg.save(cfg,dir) then
        return true
    else
        return false
    end
end
if cfg == nil then
    local cfg = inicfg.load({
        mention = {
            mode = 1,
            color = "{3E97D1}"
        }
    })
end
save()
local serverMessage =...

qdIbp

Автор темы
Проверенный
1,438
1,180
Lua:
hexRegex = "[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]"
-- Можно заменить на
hexRegex = "%x%x%x%x%x%x"
хотя лучше %x+ и потом где нибудь проверку сделать скок символов, хотя я уверен что найдется способ легче и проще
И я хз что за setMentionTypeAbort() так что я убрал ее, можешь добавить если эта важная функция

Lua:
local inicfg = require('inicfg')

local dir = 'name'
local cfg = inicfg.load(nil,dir)
local save = function()
    if inicfg.save(cfg,dir) then
        return true
    else
        return false
    end
end
if cfg == nil then
    local cfg = inicfg.load({
        mention = {
            mode = 1,
            color = "{3E97D1}"
        }
    })
end
save()
local serverMessage = function(arg)
    sampAddChatMessage(''..arg,-1)
end
function main()
    repeat wait(0) until isSampAvailable()
        sampRegisterChatCommand("tf.mention", function(arg)
            hexRegex = "%x%x%x%x%x%x"
            if string.match(arg,"[1-2] "..hexRegex) then
                cfg.mention.mode, cfg.mention.color = string.match(arg,"(%d) ("..hexRegex..")")
                serverMessage("Установлены настройки: номер вида упоминания - "..cfg.mention.mode..". Цвет упоминания: "..cfg.mention.color)
            elseif string.match(arg,"[1-2]") then
                cfg.mention.mode = tonumber(arg)
                serverMessage("Установлен вид упоминания - "..arg)
            elseif string.match(arg,hexRegex) then
                cfg.mention.color = "{"..arg.."}"
                serverMessage("Установлен цвет упоминания - "..cfg.mention.color..arg)
            else
                --setMentionTypeAbort()
            end
            save()
        end)
      
    wait(-1)
end
 
Последнее редактирование:
  • Нравится
Реакции: DZONE