156 lines
4.0 KiB
Lua
156 lines
4.0 KiB
Lua
if (!SH_REPORTS.ActiveReports) then
|
|
SH_REPORTS.ActiveReports = {}
|
|
end
|
|
|
|
function SH_REPORTS:ReportCreated(data)
|
|
chat.AddText(self.Style.header, "[" .. self:L("reports") .. "] ", color_white, self:L("report_received", data.reporter_name, data.reported_name, self.ReportReasons[data.reason_id])) -- 76561198398853149
|
|
|
|
if (self.NewReportSound.enabled) then
|
|
surface.PlaySound(self.NewReportSound.path)
|
|
end
|
|
|
|
self:MakeNotification(data)
|
|
self:MakePending(data)
|
|
|
|
if (!self.ActiveReports) then
|
|
self.ActiveReports = {}
|
|
end
|
|
table.insert(self.ActiveReports, data)
|
|
end
|
|
|
|
hook.Add("Think", "SH_REPORTS.Ready", function()
|
|
if (IsValid(LocalPlayer())) then
|
|
hook.Remove("Think", "SH_REPORTS.Ready")
|
|
easynet.SendToServer("SH_REPORTS.PlayerReady")
|
|
end
|
|
end)
|
|
|
|
easynet.Callback("SH_REPORTS.SendList", function(data)
|
|
local pendings = {}
|
|
for _, report in pairs (SH_REPORTS.ActiveReports) do
|
|
if (IsValid(report.pending)) then
|
|
pendings[report.id] = report.pending
|
|
end
|
|
end
|
|
|
|
SH_REPORTS.ServerTime = data.server_time
|
|
SH_REPORTS.ActiveReports = data.struct_reports
|
|
|
|
for _, report in pairs (SH_REPORTS.ActiveReports) do
|
|
report.pending = pendings[report.id]
|
|
end
|
|
|
|
SH_REPORTS:ShowReports()
|
|
end)
|
|
|
|
easynet.Callback("SH_REPORTS.MinimizeReport", function(data)
|
|
if (IsValid(_SH_REPORTS_VIEW)) then
|
|
_SH_REPORTS_VIEW:Close()
|
|
end
|
|
|
|
local report
|
|
for _, rep in pairs (SH_REPORTS.ActiveReports) do
|
|
if (rep.id == data.report_id) then
|
|
report = rep
|
|
break
|
|
end
|
|
end
|
|
|
|
if (report) then
|
|
SH_REPORTS:MakeTab(report)
|
|
end
|
|
end)
|
|
|
|
easynet.Callback("SH_REPORTS.ReportClosed", function(data)
|
|
for k, rep in pairs (SH_REPORTS.ActiveReports) do
|
|
if (rep.id == data.report_id) then
|
|
if (IsValid(rep.line)) then
|
|
rep.line:Close()
|
|
end
|
|
|
|
if (IsValid(rep.pending)) then
|
|
rep.pending:Close()
|
|
end
|
|
|
|
SH_REPORTS.ActiveReports[k] = nil
|
|
end
|
|
end
|
|
|
|
if (IsValid(_SH_REPORTS_TAB) and _SH_REPORTS_TAB.id == data.report_id) then
|
|
_SH_REPORTS_TAB:Close()
|
|
end
|
|
|
|
SH_REPORTS:ClosePendingPanel(data.report_id)
|
|
end)
|
|
|
|
easynet.Callback("SH_REPORTS.ReportClaimed", function(data)
|
|
for _, rep in pairs (SH_REPORTS.ActiveReports) do
|
|
if (rep.id == data.report_id) then
|
|
rep.admin_id = data.admin_id
|
|
|
|
if (IsValid(rep.line)) then
|
|
rep.line.claimed.avi:SetSteamID(data.admin_id)
|
|
rep.line.claimed.avi:SetVisible(true)
|
|
|
|
local admin = player.GetBySteamID64(data.admin_id)
|
|
if (IsValid(admin)) then
|
|
rep.line.claimed.name:SetTextInset(32, 0)
|
|
rep.line.claimed.name:SetContentAlignment(4)
|
|
rep.line.claimed.name:SetText(admin:Nick())
|
|
end
|
|
end
|
|
|
|
if (IsValid(rep.pending)) then
|
|
rep.pending:Close()
|
|
end
|
|
|
|
if (data.admin_id ~= LocalPlayer():SteamID64() and IsValid(rep.line) and IsValid(rep.line.delete)) then
|
|
rep.line.delete:Remove()
|
|
end
|
|
end
|
|
end
|
|
|
|
SH_REPORTS:ClosePendingPanel(data.report_id)
|
|
end)
|
|
|
|
easynet.Callback("SH_REPORTS.Notify", function(data)
|
|
-- do NOT do this
|
|
SH_REPORTS:Notify(SH_REPORTS:L(unpack(string.Explode("\t", data.msg))), nil, data.positive and SH_REPORTS.Style.success or SH_REPORTS.Style.failure)
|
|
end)
|
|
|
|
easynet.Callback("SH_REPORTS.Chat", function(data)
|
|
chat.AddText(SH_REPORTS.Style.header, "[" .. SH_REPORTS:L("reports") .. "] ", color_white, data.msg)
|
|
end)
|
|
|
|
easynet.Callback("SH_REPORTS.ReportCreated", function(data)
|
|
SH_REPORTS:ReportCreated(data)
|
|
end)
|
|
|
|
easynet.Callback("SH_REPORTS.ReportsPending", function(data)
|
|
chat.AddText(SH_REPORTS.Style.header, "[" .. SH_REPORTS:L("reports") .. "] ", color_white, SH_REPORTS:L("there_are_x_reports_pending", data.num)) -- 76561198398853124
|
|
|
|
SH_REPORTS.ActiveReports = table.Copy(data.struct_reports)
|
|
|
|
for _, report in pairs (SH_REPORTS.ActiveReports) do
|
|
SH_REPORTS:MakePending(report)
|
|
end
|
|
end)
|
|
|
|
easynet.Callback("SH_REPORTS.AdminLeft", function(data)
|
|
for _, rep in pairs (SH_REPORTS.ActiveReports) do
|
|
if (rep.id == data.report_id) then
|
|
rep.admin_id = ""
|
|
|
|
if (IsValid(rep.line)) then
|
|
rep.line.claimed.avi:SetVisible(false)
|
|
|
|
rep.line.claimed.name:SetTextInset(0, 0)
|
|
rep.line.claimed.name:SetContentAlignment(5)
|
|
rep.line.claimed.name:SetText(SH_REPORTS:L("unclaimed"))
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
-- vk.com/urbanichka
|