local samp = require('samp.events')
local admins = { -- Наш массив для /admins
bool = false,
max_count = 0,
now_count = 0,
list = {}
}
local font = renderCreateFont('Arial', 10, 13) -- Загружаем шрифт
function main()
if not isSampfuncsLoaded() or not isSampLoaded() then return end
while not isSampAvailable() do wait(100) end
lua_thread.create(spam_admins) -- Создаю поток для вечного флуда
while true do wait(0)
if #admins.list > 0 then
for k, v in ipairs(admins.list) do
if tonumber(v.lvl) == 1 then -- Получаю лвл админки из таблице и присваиваю цвет
color = '{6bb5ff}'
elseif tonumber(v.lvl) == 2 then
color = '{2994ff}'
elseif tonumber(v.lvl) == 3 then
color = '{FF8C00}'
elseif tonumber(v.lvl) == 4 then
color = '{006edb}'
end
if v.re then -- Делаю проверку на рекон, потому что там разные тексты в /admins
renderFontDrawText(font, string.format('%s[A-%s] %s - AFK: %s {FF0000}- /re %s {9ACD32}- Rep: %s', color, v.lvl, v.nick, v.afk, v.re, v.rep), 10, 500+k*20, 0xFFFFFFFF)
else
renderFontDrawText(font, string.format('%s[A-%s] %s - AFK: %s {9ACD32}- Rep: %s', color, v.lvl, v.nick, v.afk, v.rep), 10, 500+k*20, 0xFFFFFFFF)
end
end
end
end
end
function spam_admins() -- Сама функция для вечного флуда
while true do wait(0)
if sampIsLocalPlayerSpawned() then
admins.bool = true
sampSendChat('/admins')
end
wait(6000) -- Задержка 6 секунд в чекере /admins
end
end
local temp_admins = {} -- Массив для временного хранения списка администрации (чтобы рендер текста не мерцал при получение информации)
function samp.onServerMessage(color, text)
if admins.bool then -- Проверяю на то, что проверка включена
if text:find('^%s*{33CC00}Администрация онлайн: %(в сети: %d+,') then
admins.max_count = text:match('^%s*{33CC00}Администрация онлайн: %(в сети: (%d+),') -- Получаю макс. кол-во администраторов в онлайне, чтобы в рендер не попали лишние строчки
return false
end
if text:find('^%s*{fefe22}.+%[%d+%] %- %[%d+ lvl%]') then
admins.now_count = admins.now_count + 1 -- Обновлняю это число, чтобы в дальнейшем остновить чекер если будет равно макс. кол-во администрации
local text = text:gsub('{......}', '')
if text:find('/re %d+%-') then
local nick, lvl, re, afk, rep = text:match('(.+) %- %[(.+) lvl%] %- /re (.+)%- %[AFK: (.+)%] %- Репутация: (.+)')
temp_admins[#temp_admins + 1] = {
nick = nick,
lvl = lvl,
re = re,
afk = afk,
rep = rep
}
else
local nick, lvl, afk, rep = text:match('(.+) %- %[(.+) lvl%] %- %[AFK: (.+)%] %- Репутация: (.+)')
temp_admins[#temp_admins + 1] = {
nick = nick,
lvl = lvl,
afk = afk,
rep = rep
}
end
if tonumber(admins.now_count) == tonumber(admins.max_count) then -- Записываем в чекер
admins.list = temp_admins
table.sort(admins.list, function (a, b) return a.lvl > b.lvl end) -- Соритрую таблицу по лвл админки
temp_admins = {}
admins.bool = false
admins.max_count = 0
admins.now_count = 0
end
return false
end
end
end