Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local chat_logs = {}
- local component = require("component")
- local computer = require("computer")
- local filesystem = require("filesystem")
- local serialization = require("serialization")
- local radar = component.os_entdetector
- local chatbox = component.chat_box
- local logs = {}
- function chat_logs.saveLogs(filename)
- filename = filename or "/home/logs.data"
- local file = io.open(filename, "w")
- if not file then
- return false, "Не удалось открыть файл для записи."
- end
- local data = serialization.serialize(logs)
- file:write(data)
- file:close()
- return true
- end
- function chat_logs.loadLogs(filename)
- chatbox.say("Загрузка логов")
- filename = filename or "/home/logs.data"
- local file = io.open(filename, "r")
- if not file then
- return false, "Не удалось открыть файл для чтения."
- end
- local data = file:read("*all")
- file:close()
- logs = serialization.unserialize(data)
- return true
- end
- function chat_logs.getHostTime(timezone)
- timezone = timezone or 2
- local file = io.open("/HostTime.tmp", "w")
- file:write("")
- file:close()
- local timeCorrection = timezone * 3600
- local lastModified = tonumber(string.sub(filesystem.lastModified("/HostTime.tmp"), 1, -4)) + timeCorrection
- filesystem.remove("/HostTime.tmp")
- local year, month, day, hour, minute, second = os.date("%Y", lastModified), os.date("%m", lastModified), os.date("%d", lastModified), os.date("%H", lastModified), os.date("%M", lastModified), os.date("%S", lastModified)
- return tonumber(day), tonumber(month), tonumber(year), tonumber(hour), tonumber(minute), tonumber(second)
- end
- function chat_logs.real_time()
- local time = {self:getHostTime(1)}
- local text = string.format("%02d:%02d:%02d", time[4], time[5], time[6])
- return text
- end
- function chat_logs.scanPlayers()
- local players = radar.scanPlayers()
- local result = {}
- for i, player in ipairs(players) do
- table.insert(result, {name = player.name, range = player.distance or math.huge}) -- Если distance nil, используем очень большое значение
- end
- -- Сортировка игроков по дистанции
- table.sort(result, function(a, b)
- if a.range and b.range then
- return a.range > b.range
- end
- return false -- Если одно из значений nil, не пытаемся их сортировать
- end)
- return result
- end
- function chat_logs.DepositsData(roll, rest)
- local players = self:scanPlayers()
- local time = self:real_time()
- return {
- roll = roll,
- rest = rest,
- players = players,
- time = time
- }
- end
- function chat_logs.chatData(command, nick)
- local time = self:real_time()
- return {
- command = command,
- players = {{name = nick}},
- time = time
- }
- end
- function chat_logs.WinningData(item, title, quantity)
- local players = self:scanPlayers()
- local time = self:real_time()
- return {
- item = item,
- quantity = quantity,
- title = title,
- players = players,
- time = time
- }
- end
- function chat_logs.addToGlobal(data)
- local logFilePath = "/home/logs.data" -- предполагается, что это желаемый путь
- table.insert(logs, data)
- self:saveLogs(logFilePath)
- end
- function chat_logs.printGlobalData()
- local messages = {} -- Массив для хранения всех сообщений
- for _, data in ipairs(logs) do
- local names = {}
- for _, player in ipairs(data.players) do
- table.insert(names, player.name)
- end
- local allNames = table.concat(names, ", ")
- if data.roll and data.rest then
- table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f пополнил §a" .. data.roll .. "§f остаток §a" .. data.rest .. "§f.")
- elseif data.item and data.quantity and data.title then
- table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f выбил §a" .. data.title .. "§f количество §a" .. data.quantity .. "§f.")
- elseif data.command then
- table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f команда §a" .. data.command .. "§f.")
- end
- end
- local lastName = chatbox.getName()
- chatbox.setName("§3BAZAR PROTECT§7")
- -- Объединяем все сообщения в одну строку и отправляем
- chatbox.say(table.concat(messages))
- chatbox.setName(lastName)
- end
- function chat_logs.printByNickname(nick)
- local lastName = chatbox.getName()
- chatbox.setName("§3BAZAR PROTECT§7")
- local messages = {}
- for _, data in ipairs(logs) do
- for _, player in ipairs(data.players) do
- if player.name == nick then
- local allNames = table.concat({player.name}, ", ")
- if data.roll and data.rest then
- table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f пополнил §a" .. data.roll .. "§f остаток §a" .. data.rest .. "§f.")
- elseif data.item and data.quantity and data.title then
- table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f выбил §a" .. data.title .. "§f количество §a" .. data.quantity .. "§f.")
- elseif data.command then
- table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f команда §a" .. data.command .. "§f.")
- end
- end
- end
- end
- chatbox.say(table.concat(messages))
- chatbox.setName(lastName)
- end
- function chat_logs.printByTitle(title)
- local lastName = chatbox.getName()
- chatbox.setName("§3BAZAR PROTECT§7")
- local messages = {}
- for _, data in ipairs(logs) do
- if data.title == title then
- local names = {}
- for _, player in ipairs(data.players) do
- table.insert(names, player.name)
- end
- local allNames = table.concat(names, ", ")
- table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f выбил §a" .. data.title .. "§f количество §a" .. data.quantity .. "§f.")
- end
- end
- chatbox.say(table.concat(messages))
- chatbox.setName(lastName)
- end
- function chat_logs.printAllDeposits()
- local lastName = chatbox.getName()
- chatbox.setName("§3BAZAR PROTECT§7")
- local messages = {}
- for _, data in ipairs(logs) do
- if data.roll and data.rest then
- local names = {}
- for _, player in ipairs(data.players) do
- table.insert(names, player.name)
- end
- local allNames = table.concat(names, ", ")
- table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f пополнил §a" .. data.roll .. "§f остаток §a" .. data.rest .. "§f.")
- end
- end
- chatbox.say(table.concat(messages))
- chatbox.setName(lastName)
- end
- function chat_logs.printAllWinnings()
- local lastName = chatbox.getName()
- chatbox.setName("§3BAZAR PROTECT§7")
- local messages = {}
- for _, data in ipairs(logs) do
- if data.item and data.quantity and data.title then
- local names = {}
- for _, player in ipairs(data.players) do
- table.insert(names, player.name)
- end
- local allNames = table.concat(names, ", ")
- table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f выбил §a" .. data.title .. "§f количество §a" .. data.quantity .. "§f.")
- end
- end
- chatbox.say(table.concat(messages))
- chatbox.setName(lastName)
- end
- function chat_logs.printAllCommands()
- local lastName = chatbox.getName()
- chatbox.setName("§3BAZAR PROTECT§7")
- local messages = {}
- for _, data in ipairs(logs) do
- if data.command then
- local names = {}
- for _, player in ipairs(data.players) do
- table.insert(names, player.name)
- end
- local allNames = table.concat(names, ", ")
- table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f команда §a" .. data.command .. "§f.")
- end
- end
- chatbox.say(table.concat(messages))
- chatbox.setName(lastName)
- end
- chat_logs.loadLogs("/home/logs.data")
- return chat_logs
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement