This commit is contained in:
2026-03-31 11:51:03 +03:00
parent 5bdd797b73
commit 3f0319016c
5 changed files with 107 additions and 34 deletions

View File

@@ -342,58 +342,91 @@ function PLUGIN:UpdateLogsList()
-- Сообщение
draw.SimpleText(log.message, "ixSmallFont", 15, 43, COLOR_TEXT_PRIMARY, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP)
if isHovered then
draw.SimpleText("Клик для копирования", "ixSmallFont", w - 10, h - 5, COLOR_TEXT_SECONDARY, TEXT_ALIGN_RIGHT, TEXT_ALIGN_BOTTOM)
end
end
-- Поиск SteamID в тексте сообщения
local function findSteamID(text)
if not text then return nil end
return string.match(text, "STEAM_[0-5]:[0-9]:[0-9]+")
-- Поиск SteamID в тексте сообщения (SteamID2 и SteamID64)
local function findSteamIDs(text)
if not text then return {} end
local ids = {}
-- Match SteamID2
for id in string.gmatch(text, "STEAM_[0-5]:[0-9]:[1-9][0-9]*") do
table.insert(ids, id)
end
-- Match SteamID64
for id in string.gmatch(text, "7656119[0-9]{10}") do
table.insert(ids, id)
end
return ids
end
local extractedID = findSteamID(log.message)
local extractedIDs = findSteamIDs(log.message)
logEntry.OnMousePressed = function(s, m)
s:DoRightClick()
end
logEntry.DoRightClick = function(s)
local menu = DermaMenu()
-- Опция копирования основного сообщения
menu:AddOption("Копировать сообщение", function()
local msgOpt = menu:AddOption("Копировать сообщение", function()
SetClipboardText(log.message)
ix.util.Notify("Сообщение скопировано")
end):SetIcon("icon16/page_copy.png")
end)
msgOpt:SetIcon("icon16/page_copy.png")
menu:AddSpacer()
-- Копирование SteamID цели (если есть в метаданных)
if log.target and log.target.steamid and log.target.steamid ~= "N/A" then
menu:AddOption("Копировать SteamID (" .. log.target.name .. ")", function()
local targetOpt = menu:AddOption("Копировать SteamID (" .. log.target.name .. ")", function()
SetClipboardText(log.target.steamid)
ix.util.Notify("SteamID скопирован: " .. log.target.steamid)
end):SetIcon("icon16/user_edit.png")
-- Если нет в метаданных, но нашли в тексте (для архива)
elseif extractedID then
menu:AddOption("Копировать найденный SteamID (" .. extractedID .. ")", function()
SetClipboardText(extractedID)
ix.util.Notify("SteamID скопирован: " .. extractedID)
end):SetIcon("icon16/user_magnify.png")
end)
targetOpt:SetIcon("icon16/user_edit.png")
end
-- Копирование SteamID атакующего (для убийств)
-- Копирование SteamID атакующего (для убийств/урона)
if log.data and log.data.attacker and log.data.attacker ~= "world" then
menu:AddOption("Копировать SteamID Атакующего", function()
SetClipboardText(log.data.attacker)
ix.util.Notify("SteamID атакующего скопирован: " .. log.data.attacker)
end):SetIcon("icon16/user_delete.png")
local attackerOpt = menu:AddOption("Копировать SteamID Атакующего", function()
local sid = log.data.attacker
SetClipboardText(sid)
ix.util.Notify("SteamID атакующего скопирован: " .. sid)
end)
attackerOpt:SetIcon("icon16/user_delete.png")
end
-- Копирование найденных ID из текста
if #extractedIDs > 0 then
for _, eid in ipairs(extractedIDs) do
local extOpt = menu:AddOption("Копировать найденный " .. eid, function()
SetClipboardText(eid)
ix.util.Notify("ID скопирован: " .. eid)
end)
extOpt:SetIcon("icon16/user_magnify.png")
end
end
menu:AddSpacer()
menu:AddOption("Копировать время (" .. log.timeString .. ")", function()
local timeOpt = menu:AddOption("Копировать время (" .. log.timeString .. ")", function()
SetClipboardText(log.timeString)
end):SetIcon("icon16/time.png")
end)
timeOpt:SetIcon("icon16/time.png")
menu:AddOption("Копировать полную строку", function()
local fullOpt = menu:AddOption("Копировать полную строку", function()
local fullLog = string.format("[%s][%s] %s", log.timeString, category and category.name or log.category, log.message)
SetClipboardText(fullLog)
ix.util.Notify("Полная строка скопирована")
end):SetIcon("icon16/page_white_copy.png")
end)
fullOpt:SetIcon("icon16/page_white_copy.png")
menu:Open()
end