-
-
Save BadgerCode/54cd56a155857dda4b537b658e9a9425 to your computer and use it in GitHub Desktop.
Helps with testing damage logs. Requires at least one bot/player connected alongside you
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- Put this in lua/autorun | |
-- E.g. garrysmod/garrysmod/addons/test-damage-logs/lua/autorun/test-damagelogs.lua | |
-- Adds the following console commands: | |
-- damagelog_test_go - Creates a report from you against another player and simulates a response from that player | |
-- damagelog_test_report_me player_name - Simulates a report against you by the player with the name player_name | |
-- damagelog_test_report_me_multiple - Simulates multiple players reporting you | |
-- If the window to Keep/Cancel a report isn't appearing after you make an edit to the damage logs: | |
-- try disconnecting from the server & starting a new local server from the main menu | |
-- Report a player and get them to simulate their response | |
if CLIENT then | |
local reportedPlayers = {} | |
concommand.Add( "damagelog_test_go", function( ply, cmd, args ) | |
print("Testing damaging logs...") | |
local playerToReport = nil | |
for _, v in ipairs(player.GetAll()) do | |
if(v != LocalPlayer()) then | |
if(table.HasValue(reportedPlayers, v) == false) then | |
playerToReport = v | |
break; | |
end | |
end | |
end | |
table.insert(reportedPlayers, playerToReport) | |
print("Reporting " .. playerToReport:Nick()) | |
local data = { | |
targetEntIndex = playerToReport:EntIndex(), | |
reportType = 1, -- DAMAGELOG_REPORT_STANDARD = 1 | |
message = "This player has RDMed me" | |
} | |
local payload = util.Compress(util.TableToJSON(data)) | |
net.Start("DL_ReportPlayer") | |
net.WriteUInt(string.len(payload), 32) | |
net.WriteData(payload, string.len(payload)) | |
net.SendToServer() | |
timer.Simple(3, function() | |
print("Simulating response") | |
net.Start("DamageLogTest_RequestSimulateAttackerResponse") | |
net.WriteEntity(playerToReport) | |
net.SendToServer() | |
end) | |
end) | |
elseif SERVER then | |
util.AddNetworkString("DamageLogTest_RequestSimulateAttackerResponse") | |
net.Receive("DamageLogTest_RequestSimulateAttackerResponse", function(len, ply) | |
local attacker = net.ReadEntity() | |
local index = #Damagelog.Reports.Current -- Assume the report we're using is the latest one | |
print("[SERVER] Simulating response") | |
HandleReportedPlayerAnswer(attacker, 1, "I am very sorry", index) | |
end) | |
end | |
-- Get players to report ME | |
if CLIENT then | |
concommand.Add( "damagelog_test_report_me_multiple", function( ply, cmd, args ) | |
print("Testing damaging logs...") | |
local playersRequested = 0 | |
for _, v in ipairs(player.GetAll()) do | |
if(v != LocalPlayer()) then | |
print("Requesting server to ask player " .. v:Nick() .. " to report myself ") | |
net.Start("DamageLogTest_RequestServerToGenerateReport") | |
net.WriteEntity(v) | |
net.SendToServer() | |
playersRequested = playersRequested + 1 | |
end | |
if(playersRequested >= 2) then break end | |
end | |
end) | |
concommand.Add("damagelog_test_report_me", function(ply, cmd, args) | |
local requestedPlayer = string.lower(args[1]) | |
for _, v in ipairs(player.GetAll()) do | |
if(v != LocalPlayer()) then | |
local lowername = string.lower(v:Nick()) | |
if(lowername == requestedPlayer) then | |
print("Requesting server to ask player " .. v:Nick() .. " to report myself ") | |
net.Start("DamageLogTest_RequestServerToGenerateReport") | |
net.WriteEntity(v) | |
net.SendToServer() | |
end | |
end | |
end | |
end) | |
elseif SERVER then | |
util.AddNetworkString("DamageLogTest_RequestServerToGenerateReport") | |
net.Receive("DamageLogTest_RequestServerToGenerateReport", function(len, ply) | |
local reportingPlayer = net.ReadEntity() | |
print("Getting " .. reportingPlayer:Nick() .. " to report " .. ply:Nick()) | |
reportingPlayer.CanReport = true | |
reportingPlayer.Reported = {} | |
HandlePlayerReport(reportingPlayer, ply, "This player has RDMed me", 1) | |
end) | |
-- hook.Add("PostPlayerDeath", "DamageLogTest_PostPlayerDeath", function(ply) | |
-- end) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment