- 108
- 10
- Версия MoonLoader
- .026-beta
Приветствую! Написал простенький код:
Суть такова:
на команду /blf открывается окно, с игроками, которые я записал (не буду углубятся) с помощью /addbl (удалить из списка - /delbl)
Однако, чтобы я мог делится этим списком с другими игроками, и не приходилось после каждого перезахода вновь вписывать всех, хочу сделать сохранение в ini файл, но я рукожоп, и у меня не получается :( Создал файл blacklist.ini в папке moonloader (там же где и скрипт с кодом), захожу в игру - пишу для теста /addbl 1 1 1 1, в таблице показывает:
Однако я замечаю, что файл blacklist.ini пустой, никак не заполнен. Переделывал код кучу раз, ничего не помогало, вот обращаюсь сюда:
Может, кто то поможет сделать так, чтобы код записывал содержимое окна (/blf) и записывал всё ф ини. Например как то так:
ини:
[[
nick = Nick_Name
degree = 1
reason = Test
by_whom = Nick_Name
]]
[[
— следующие данные из окна по команде /addbl
]]
Буду искренне благодарен, если кто то поможет или попытается :'(
Полный Код:
local inicfg = require 'inicfg'
local color_dialog = 0xDEB887
local color_tag = "{00FF00}"
local color_white = -1
local tag = color_tag .. "[SAMSONOV]:"
local color_error = "{FF0000}"
local error_tag = color_error .. "[ОШИБКА]:"
local dialogTabHeaderStr = "Nick Name\tСтепень\tПричина\tКем занесено"
local blacklist = {}
local blacklistIni = "blacklist.ini" -- Имя файла .ini для сохранения черного списка
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
loadBlacklistFromIni()
sampRegisterChatCommand("blf", cmd_dialog)
sampRegisterChatCommand("addbl", cmd_add_blacklist)
sampRegisterChatCommand("delbl", cmd_remove_blacklist)
sampRegisterChatCommand("checkall", cmd_check_all)
while true do
wait(0)
end
end
function loadBlacklistFromIni()
local ini = inicfg.load(blacklistIni)
if ini then
blacklist = ini.blacklist or {}
end
end
function saveBlacklistToIni()
local ini = { blacklist = blacklist }
inicfg.save(ini, blacklistIni)
end
function cmd_dialog()
local dialogText = dialogTabHeaderStr
for _, entry in ipairs(blacklist) do
local degreeColor
if entry.degree == "1" then
degreeColor = "{FF0000}" -- Красный цвет для степени 1
elseif entry.degree == "2" then
degreeColor = "{FFA500}" -- Оранжевый цвет для степени 2
elseif entry.degree == "3" then
degreeColor = "{FFFF00}" -- Желтый цвет для степени 3
else
degreeColor = "{FFFFFF}"
end
dialogText = dialogText .. "\n" .. entry.nick .. "\t" .. degreeColor .. entry.degree .. "\t" .. entry.reason .. "\t" .. entry.by_whom
end
sampShowDialog(15, "Черный Список Семьи", dialogText, "Закрыть", "", 5)
end
function cmd_add_blacklist(params)
local nick, degree, reason, by_whom = params:match("(%S+)%s+(%S+)%s+(%S+)%s+(%S+)")
if not nick or not degree or not reason or not by_whom then
sampAddChatMessage(error_tag .. " {FFFFFF}Неверный формат команды. Пример: {FF0000}/addbl [Nick_Name] [Степень (1-3)] [Причина] [Кем занесено]", -1)
return
end
for _, entry in ipairs(blacklist) do
if entry.nick == nick then
sampAddChatMessage(error_tag .. " {FFFFFF}Игрок уже занесен в черный список.", -1)
return
end
end
table.insert(blacklist, {nick = nick, degree = degree, reason = reason, by_whom = by_whom})
sampAddChatMessage(tag .. " {FFFFFF}Пользователь добавлен в черный список.", -1)
saveBlacklistToIni()я
end
function cmd_remove_blacklist(nick)
if not nick then
sampAddChatMessage(tag .. " {FFFFFF}Неверный формат команды. Пример: {FF0000}/delbl NickName", -1)
return
end
for i, entry in ipairs(blacklist) do
if entry.nick == nick then
table.remove(blacklist, i)
sampAddChatMessage(tag .. " {FFFFFF}Пользователь удален из черного списка.", -1)
saveBlacklistToIni()
return
end
end
sampAddChatMessage(tag .. " {FFFFFF}Пользователь не найден в черном списке.", -1)
end
function cmd_check_all()
sampAddChatMessage(tag .. " {FFFFFF}Ниже показаны чушпаны из ЧСС которые находятся в игре:", -1)
for _, entry in ipairs(blacklist) do
sampSendChat("/id " .. entry.nick)
end
end
Суть такова:
на команду /blf открывается окно, с игроками, которые я записал (не буду углубятся) с помощью /addbl (удалить из списка - /delbl)
Однако, чтобы я мог делится этим списком с другими игроками, и не приходилось после каждого перезахода вновь вписывать всех, хочу сделать сохранение в ini файл, но я рукожоп, и у меня не получается :( Создал файл blacklist.ini в папке moonloader (там же где и скрипт с кодом), захожу в игру - пишу для теста /addbl 1 1 1 1, в таблице показывает:
Однако я замечаю, что файл blacklist.ini пустой, никак не заполнен. Переделывал код кучу раз, ничего не помогало, вот обращаюсь сюда:
Может, кто то поможет сделать так, чтобы код записывал содержимое окна (/blf) и записывал всё ф ини. Например как то так:
ини:
[[
nick = Nick_Name
degree = 1
reason = Test
by_whom = Nick_Name
]]
[[
— следующие данные из окна по команде /addbl
]]
Буду искренне благодарен, если кто то поможет или попытается :'(