.
This commit is contained in:
@@ -60,11 +60,26 @@ function PLUGIN:CanCapture(factions)
|
||||
end
|
||||
|
||||
function PLUGIN:GiveRewards(faction, players)
|
||||
-- Считаем количество противников (игроков не из захватывающей фракции)
|
||||
local enemyCount = 0
|
||||
for _, ply in ipairs(player.GetAll()) do
|
||||
local char = ply:GetCharacter()
|
||||
if (char and char:GetFaction() ~= faction and not (ply.IsAdminMode and ply:IsAdminMode())) then
|
||||
enemyCount = enemyCount + 1
|
||||
end
|
||||
end
|
||||
|
||||
local canGiveMoney = enemyCount >= 5
|
||||
|
||||
for _, ply in ipairs(players) do
|
||||
local char = ply:GetCharacter()
|
||||
if (char) then
|
||||
char:GiveMoney(self.moneyReward)
|
||||
ply:Notify("Вы получили " .. self.moneyReward .. " за захват точки!")
|
||||
if (canGiveMoney) then
|
||||
char:GiveMoney(self.moneyReward)
|
||||
ply:Notify("Вы получили " .. self.moneyReward .. " за захват точки!")
|
||||
else
|
||||
ply:Notify("Денежная награда не выдана: необходимо минимум 5 противников онлайн.")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -99,7 +99,7 @@ PLUGIN.LOG_TYPES = {
|
||||
CHARACTER_CREATE = {category = "CHARACTER", description = "Создание персонажа"},
|
||||
CHARACTER_DELETE = {category = "CHARACTER", description = "Удаление персонажа"},
|
||||
CHARACTER_SWITCH = {category = "CHARACTER", description = "Смена персонажа"},
|
||||
CHARACTER_WHITELIST = {category = "CHARACTER", description = "Изменение вайтлиста/статистики"},
|
||||
CHARACTER_WHITELIST = {category = "ADMIN", description = "Изменение вайтлиста/статистики"},
|
||||
|
||||
-- Команды
|
||||
COMMAND_RUN = {category = "ADMIN", description = "Выполнена админ-команда"},
|
||||
|
||||
@@ -97,14 +97,11 @@ net.Receive("ixWhitelistMenuApply", function(_, client)
|
||||
char:SetSpec(specID)
|
||||
char:SetRank(rankID)
|
||||
|
||||
-- Респавн игрока для применения изменений
|
||||
target:Spawn()
|
||||
|
||||
client:Notify("Роль назначена: " .. target:Name())
|
||||
target:Notify("Вам назначена новая роль!")
|
||||
|
||||
-- Логирование в систему серверных логов
|
||||
local serverlogs = ix.plugin.list["serverlogs"]
|
||||
local serverlogs = ix.plugin.Get("serverlogs")
|
||||
if serverlogs then
|
||||
local factionName = faction.name or "Неизвестно"
|
||||
local podrName = faction.Podr[podrID] and faction.Podr[podrID].name or tostring(podrID)
|
||||
@@ -122,4 +119,7 @@ net.Receive("ixWhitelistMenuApply", function(_, client)
|
||||
rank = rankName
|
||||
})
|
||||
end
|
||||
|
||||
-- Респавн игрока для применения изменений (после логирования)
|
||||
target:Spawn()
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user