Advertisement
Stawlie0

Untitled

Oct 19th, 2023 (edited)
1,092
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.75 KB | None | 0 0
  1. local chat_logs = {}
  2.  
  3. local component = require("component")
  4. local computer = require("computer")
  5. local filesystem = require("filesystem")
  6. local serialization = require("serialization")
  7.  
  8. local radar = component.os_entdetector
  9. local chatbox = component.chat_box
  10.  
  11. local logs = {}
  12.  
  13. function chat_logs.saveLogs(filename)
  14.     filename = filename or "/home/logs.data"
  15.     local file = io.open(filename, "w")
  16.     if not file then
  17.         return false, "Не удалось открыть файл для записи."
  18.     end
  19.     local data = serialization.serialize(logs)
  20.     file:write(data)
  21.     file:close()
  22.     return true
  23. end
  24.  
  25. function chat_logs.loadLogs(filename)
  26.     chatbox.say("Загрузка логов")
  27.     filename = filename or "/home/logs.data"
  28.     local file = io.open(filename, "r")
  29.     if not file then
  30.         return false, "Не удалось открыть файл для чтения."
  31.     end
  32.     local data = file:read("*all")
  33.     file:close()
  34.     logs = serialization.unserialize(data)
  35.     return true
  36. end
  37.  
  38. function chat_logs.getHostTime(timezone)
  39.     timezone = timezone or 2
  40.     local file = io.open("/HostTime.tmp", "w")
  41.     file:write("")
  42.     file:close()
  43.     local timeCorrection = timezone * 3600
  44.     local lastModified = tonumber(string.sub(filesystem.lastModified("/HostTime.tmp"), 1, -4)) + timeCorrection
  45.     filesystem.remove("/HostTime.tmp")
  46.     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)
  47.     return tonumber(day), tonumber(month), tonumber(year), tonumber(hour), tonumber(minute), tonumber(second)
  48. end
  49.  
  50. function chat_logs.real_time()
  51.     local time = {self:getHostTime(1)}
  52.     local text = string.format("%02d:%02d:%02d", time[4], time[5], time[6])
  53.     return text
  54. end
  55.  
  56. function chat_logs.scanPlayers()
  57.     local players = radar.scanPlayers()
  58.     local result = {}
  59.  
  60.     for i, player in ipairs(players) do
  61.         table.insert(result, {name = player.name, range = player.distance or math.huge})  -- Если distance nil, используем очень большое значение
  62.     end
  63.  
  64.     -- Сортировка игроков по дистанции
  65.     table.sort(result, function(a, b)
  66.         if a.range and b.range then
  67.             return a.range > b.range
  68.         end
  69.         return false  -- Если одно из значений nil, не пытаемся их сортировать
  70.     end)
  71.  
  72.     return result
  73. end
  74.  
  75. function chat_logs.DepositsData(roll, rest)
  76.     local players = self:scanPlayers()
  77.     local time = self:real_time()
  78.     return {
  79.         roll = roll,
  80.         rest  = rest,
  81.         players = players,
  82.         time = time
  83.     }
  84. end
  85.  
  86. function chat_logs.chatData(command, nick)
  87.     local time = self:real_time()
  88.     return {
  89.         command = command,
  90.         players = {{name = nick}},
  91.         time = time
  92.     }
  93. end
  94.  
  95. function chat_logs.WinningData(item, title, quantity)
  96.     local players = self:scanPlayers()
  97.     local time = self:real_time()
  98.     return {
  99.         item = item,
  100.         quantity = quantity,
  101.         title = title,
  102.         players = players,
  103.         time = time        
  104.     }
  105. end
  106.  
  107. function chat_logs.addToGlobal(data)
  108.     local logFilePath = "/home/logs.data" -- предполагается, что это желаемый путь
  109.     table.insert(logs, data)
  110.     self:saveLogs(logFilePath)
  111. end
  112.  
  113. function chat_logs.printGlobalData()
  114.     local messages = {}  -- Массив для хранения всех сообщений
  115.    
  116.     for _, data in ipairs(logs) do
  117.         local names = {}
  118.         for _, player in ipairs(data.players) do
  119.             table.insert(names, player.name)
  120.         end
  121.         local allNames = table.concat(names, ", ")
  122.  
  123.         if data.roll and data.rest then
  124.             table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f пополнил §a" .. data.roll .. "§f остаток §a" .. data.rest .. "§f.")
  125.         elseif data.item and data.quantity and data.title then
  126.             table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f выбил §a" .. data.title .. "§f количество §a" .. data.quantity .. "§f.")
  127.         elseif data.command then
  128.             table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f команда §a" .. data.command .. "§f.")
  129.         end
  130.     end
  131.     local lastName = chatbox.getName()
  132.     chatbox.setName("§3BAZAR PROTECT§7")
  133.    
  134.     -- Объединяем все сообщения в одну строку и отправляем
  135.     chatbox.say(table.concat(messages))
  136.    
  137.     chatbox.setName(lastName)
  138. end
  139.  
  140. function chat_logs.printByNickname(nick)
  141.     local lastName = chatbox.getName()
  142.     chatbox.setName("§3BAZAR PROTECT§7")    
  143.  
  144.     local messages = {}
  145.     for _, data in ipairs(logs) do
  146.         for _, player in ipairs(data.players) do
  147.             if player.name == nick then
  148.                 local allNames = table.concat({player.name}, ", ")
  149.                 if data.roll and data.rest then
  150.                     table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f пополнил §a" .. data.roll .. "§f остаток §a" .. data.rest .. "§f.")
  151.                 elseif data.item and data.quantity and data.title then
  152.                     table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f выбил §a" .. data.title .. "§f количество §a" .. data.quantity .. "§f.")
  153.                 elseif data.command then
  154.                     table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f команда §a" .. data.command .. "§f.")
  155.                 end
  156.             end
  157.         end
  158.     end
  159.     chatbox.say(table.concat(messages))
  160.     chatbox.setName(lastName)
  161. end
  162.  
  163. function chat_logs.printByTitle(title)
  164.     local lastName = chatbox.getName()
  165.     chatbox.setName("§3BAZAR PROTECT§7")
  166.     local messages = {}
  167.     for _, data in ipairs(logs) do
  168.         if data.title == title then
  169.             local names = {}
  170.             for _, player in ipairs(data.players) do
  171.                 table.insert(names, player.name)
  172.             end
  173.             local allNames = table.concat(names, ", ")
  174.             table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f выбил §a" .. data.title .. "§f количество §a" .. data.quantity .. "§f.")
  175.         end
  176.     end
  177.     chatbox.say(table.concat(messages))
  178.     chatbox.setName(lastName)
  179. end
  180.  
  181. function chat_logs.printAllDeposits()
  182.     local lastName = chatbox.getName()
  183.     chatbox.setName("§3BAZAR PROTECT§7")
  184.     local messages = {}
  185.     for _, data in ipairs(logs) do
  186.         if data.roll and data.rest then
  187.             local names = {}
  188.             for _, player in ipairs(data.players) do
  189.                 table.insert(names, player.name)
  190.             end
  191.             local allNames = table.concat(names, ", ")
  192.             table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f пополнил §a" .. data.roll .. "§f остаток §a" .. data.rest .. "§f.")
  193.         end
  194.     end
  195.     chatbox.say(table.concat(messages))
  196.     chatbox.setName(lastName)
  197. end
  198.  
  199. function chat_logs.printAllWinnings()
  200.     local lastName = chatbox.getName()
  201.     chatbox.setName("§3BAZAR PROTECT§7")
  202.     local messages = {}
  203.     for _, data in ipairs(logs) do
  204.         if data.item and data.quantity and data.title then
  205.             local names = {}
  206.             for _, player in ipairs(data.players) do
  207.                 table.insert(names, player.name)
  208.             end
  209.             local allNames = table.concat(names, ", ")
  210.             table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f выбил §a" .. data.title .. "§f количество §a" .. data.quantity .. "§f.")
  211.         end
  212.     end
  213.     chatbox.say(table.concat(messages))
  214.     chatbox.setName(lastName)
  215. end
  216.  
  217. function chat_logs.printAllCommands()
  218.     local lastName = chatbox.getName()
  219.     chatbox.setName("§3BAZAR PROTECT§7")
  220.     local messages = {}
  221.     for _, data in ipairs(logs) do
  222.         if data.command then
  223.             local names = {}
  224.             for _, player in ipairs(data.players) do
  225.                 table.insert(names, player.name)
  226.             end
  227.             local allNames = table.concat(names, ", ")
  228.             table.insert(messages, "\n§7" .. data.time .. "§f — §3" .. allNames .. "§f команда §a" .. data.command .. "§f.")
  229.         end
  230.     end
  231.     chatbox.say(table.concat(messages))
  232.     chatbox.setName(lastName)
  233. end
  234.  
  235. chat_logs.loadLogs("/home/logs.data")
  236.  
  237. return chat_logs
  238.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement