- 108
- 10
- Версия MoonLoader
- .026-beta
Здарова, вообщем в чем трабл, делаю тему для принятия админ форм так сказать. Объясню как все работает у меня
ищется форма в чате(с этим норм)
найденная форма заносится в ини кфг(с этим норм)
затем из сохраненного ранее ини переносится в таблицу(с этим норм)
через цикл фор сверяется массив с никами и ник в форме(через ини) и если нету совпадений, то есть выбор принять или отклонить наводку(с этим норм)
ну если есть совпадение, то отклоняет(с этим норм)
Когда принимается админ форма, то вся инфа берется из ини(с этим тоже норм)
теперь в чем проблемы:
1) когда была принята уже форма кем то другим, эта форма для меня никуда не пропадает и я так же могу её принять, пробовал очищать таблицу и ини, если наказание будет выдано, но при следующей наводке оно дважды повторяет почему то последнюю форму.
2) Если приходит несколько форм сразу, то оно принимает последнюю форму сразу столько раз, сколько было ранее форм отправлено кем то
(это даже идей нету как исправить)
для наглядности проблемы скину видос
Буду благодарен за помощь
ищется форма в чате(с этим норм)
Lua:
if text:find("%[A%] .+ %w+_%w+%[%d+%]: " .. command .. " %d+ .+ || .+") then
Lua:
cfg.config.alevel, cfg.config.name, cfg.config.id, cfg.config.prichina , cfg.config.inic = text:match("%[A%] (.+) (%w+_%w+)%[%d+%]: " .. command .. " (%d+) (.+) || (.+)")
Lua:
table.insert(NavodK, {alevel = cfg.config.alevel, name = cfg.config.name, id = cfg.config.id, prichina = cfg.config.prichina, inic = cfg.config.inic})
Lua:
for anick, alvl in pairs(admnick) do
if anick ~= cfg.config.name and alvl ~= cfg.config.alevel then
Когда принимается админ форма, то вся инфа берется из ини(с этим тоже норм)
Lua:
sampSendChat('command.. ' ' ..cfg.config.id.. ' ' ..cfg.config.prichina.. ' // ' ..cfg.config.inic')
теперь в чем проблемы:
1) когда была принята уже форма кем то другим, эта форма для меня никуда не пропадает и я так же могу её принять, пробовал очищать таблицу и ини, если наказание будет выдано, но при следующей наводке оно дважды повторяет почему то последнюю форму.
Lua:
if text:find('Наводка от администратора %- %w+_%w+ принята.') then
for k, v in pairs(NavodK) do
NavodK[k] = nil
end
cfg.config.id = nil
cfg.config.alevel = nil
cfg.config.name = nil
cfg.config.prichina = nil
cfg.config.inic = nil
end
2) Если приходит несколько форм сразу, то оно принимает последнюю форму сразу столько раз, сколько было ранее форм отправлено кем то
(это даже идей нету как исправить)
для наглядности проблемы скину видос
full code:
require 'lib.moonloader'
local hook = require 'lib.samp.events'
local inicfg = require 'inicfg'
local imgui = require 'imgui'
local directIni = 'moonloader\\config\\Navodki.ini'
local cfg = inicfg.load({
config = {
name = '',
id = '',
prichina = '',
inic = ''
}
}, "Navodki")
local NavodK = {}
local tag = '{f20f54}[Navodka] {ffffff}'
local admnick = {["Christopher_Dills"] = "Главный Администратор", ["Kalibr_Corrigan"] = "Заместитель Главного Администратора", ["Milro_Blanco"] = "Куратор", ["Ichiro_Nakata"] = "Куратор"}
local triggerCommand = {"/warn", "/ban", "/jail", "/skick", "/sethp", "/unwarn", "/pm", "/unmute", "/unjail", "/clearsu", "/spcar", "/spawncar", "/sban", "/unfreeze", "/ip", "/resgun", "/freeze", "/ans", "/sp", "/skin", "/offmute", "/jailoff", "/muteoff", "/ao", "/msg", "/banip", "/banoff", "/offban", "/warnoff", "/offwarn", "/mute", "/voicemute", "/kick", "/setarm", "/spawn"}
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
cfg.config.inic = nil
if not doesFileExist(getWorkingDirectory()..'/config/Navodki.ini') then
inicfg.save(cfg, 'Navodki.ini')
end
sampAddChatMessage(tag.. 'loaded', 0xf20f54)
while true do wait(0)
end
end
function hook.onServerMessage(clr, text)
if text:find('Наводка от администратора %- %w+_%w+ принята.') then
for k, v in pairs(NavodK) do
NavodK[k] = nil
end
cfg.config.id = nil
cfg.config.alevel = nil
cfg.config.name = nil
cfg.config.prichina = nil
cfg.config.inic = nil
end
for k, command in ipairs(triggerCommand) do
if text:find("%[A%] .+ %w+_%w+%[%d+%]: " .. command .. " %d+ .+") and not isGamePaused() then
if text:find("%[A%] .+ %w+_%w+%[%d+%]: " .. command .. " %d+ .+ || .+") then
cfg.config.alevel, cfg.config.name, cfg.config.id, cfg.config.prichina , cfg.config.inic = text:match("%[A%] (.+) (%w+_%w+)%[%d+%]: " .. command .. " (%d+) (.+) || (.+)")
elseif text:find("%[A%] .+ %w+_%w+%[%d+%]: " .. command .. " %d+ .+ | .+") then
cfg.config.alevel, cfg.config.name, cfg.config.id, cfg.config.prichina , cfg.config.inic = text:match("%[A%] (.+) (%w+_%w+)%[%d+%]: " .. command .. " (%d+) (.+) | (.+)")
elseif text:find("%[A%] .+ %w+_%w+%[%d+%]: " .. command .. " %d+ .+ // .+") then
cfg.config.alevel, cfg.config.name, cfg.config.id, cfg.config.prichina , cfg.config.inic = text:match("%[A%] (.+) (%w+_%w+)%[%d+%]: " .. command .. " (%d+) (.+) // (.+)")
elseif text:find("%[A%] .+ %w+_%w+%[%d+%]: " .. command .. " %d+ .+ / .+") then
cfg.config.alevel, cfg.config.name, cfg.config.id, cfg.config.prichina , cfg.config.inic = text:match("%[A%] (.+) (%w+_%w+)%[%d+%]: " .. command .. " (%d+) (.+) / (.+)")
else
cfg.config.alevel, cfg.config.name, cfg.config.id, cfg.config.prichina = text:match("%[A%] (.+) (%w+_%w+)%[%d+%]: " .. command .. " (%d+) (.+)")
end
table.insert(NavodK, {alevel = cfg.config.alevel, name = cfg.config.name, id = cfg.config.id, prichina = cfg.config.prichina, inic = cfg.config.inic})
if inicfg.save(cfg, directIni) then
end
for anick, alvl in pairs(admnick) do
if anick ~= cfg.config.name and alvl ~= cfg.config.alevel then
sampAddChatMessage(tag.. 'Наводка от администратора - ' ..cfg.config.name.. '. Чтобы принять нажмите - {f20f54}Alt + NumPad1', 0xf20f54)
lua_thread.create(function()
while true do wait(1)
if isKeyJustPressed(106) then break end
if isKeyDown(18) and isKeyJustPressed(97) and cfg.config.id ~= nil then
if cfg.config.inic == nil or cfg.config.inic == '' and cfg.config.id ~= nil then
local inica = string.sub(cfg.config.name, 1, 1)
local famil = string.match(cfg.config.name, "_([^\n]+)")
sampSendChat('/c Наводка от администратора - ' ..cfg.config.name.. ' принята.')
sampAddChatMessage(tag.. '' ..command.. ' ' ..cfg.config.id.. ' ' ..cfg.config.prichina.. ' // ' ..inica.. '.' ..famil, 0xf20f54) break
else
sampSendChat('/c Наводка от администратора - ' ..cfg.config.name.. ' принята.')
sampAddChatMessage(tag.. '' ..command.. ' ' ..cfg.config.id.. ' ' ..cfg.config.prichina.. ' // ' ..cfg.config.inic, 0xf20f54)
cfg.config.inic = nil
end
break
end
end
end)
end
if anick == cfg.config.name or alvl == cfg.config.alevel then
sampAddChatMessage(tag.. 'Старшая администрация отправила наводку - {f20f54}' ..command.. ' ' ..cfg.config.id.. ' ' ..cfg.config.prichina, 0xf20f54)
end
break
end
end
end
end
Буду благодарен за помощь
Вложения
Последнее редактирование: