From 5b3b4ca0c03703692b719a65c87cd01601a5873f Mon Sep 17 00:00:00 2001 From: edshot99 Date: Mon, 12 Aug 2024 01:30:06 -0500 Subject: [PATCH] add ability to freeze all player props from nadmod --- lua/autorun/client/cl_nadmodpp.lua | 1 + lua/autorun/server/nadmod_pp.lua | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/lua/autorun/client/cl_nadmodpp.lua b/lua/autorun/client/cl_nadmodpp.lua index 14e3c4e..07faceb 100644 --- a/lua/autorun/client/cl_nadmodpp.lua +++ b/lua/autorun/client/cl_nadmodpp.lua @@ -205,6 +205,7 @@ function NADMOD.AdminPanel(Panel, runByNetReceive) Panel:Button("Cleanup All Ragdolls", "nadmod_cleanclass", "prop_ragdol*") Panel:Button("Cleanup Clientside Ragdolls", "nadmod_cleanclragdolls") Panel:Button("Cleanup World Ropes", "nadmod_cleanworldropes") + Panel:Button("Freeze All Props", "nadmod_freezeworld") end local metaply = FindMetaTable("Player") diff --git a/lua/autorun/server/nadmod_pp.lua b/lua/autorun/server/nadmod_pp.lua index 21176cd..8eb0da0 100644 --- a/lua/autorun/server/nadmod_pp.lua +++ b/lua/autorun/server/nadmod_pp.lua @@ -413,6 +413,25 @@ function NADMOD.CleanupPlayerProps(steamid) return count end +function NADMOD.FreezePlayerProps(steamid) + local count = 0 + for k,v in pairs(NADMOD.Props) do + if(v.SteamID == steamid) then + if IsValid(v.Ent) then + if !v.Ent:GetPersistent() then + local phys = v.Ent:GetPhysicsObject() + if IsValid(phys) then + phys:Sleep() + phys:EnableMotion(false) + end + count = count + 1 + end + end + end + end + return count +end + function NADMOD.CleanPlayer(ply, tar) if IsValid(tar) and tar:IsPlayer() then local count = NADMOD.CleanupPlayerProps(tar:SteamID()) @@ -527,6 +546,15 @@ function NADMOD.DebugTotals(ply,cmd,args) end concommand.Add("nadmod_totals", NADMOD.DebugTotals) +function NADMOD.FreezeWorld(ply,cmd,args) + if ply:IsValid() and not NADMOD.IsPPAdmin(ply) then return end + NADMOD.Notify("Froze all props on the server") + for k,v in ipairs(player.GetAll()) do + NADMOD.FreezePlayerProps(v:SteamID()) + end +end +concommand.Add("nadmod_freezeworld", NADMOD.FreezeWorld) + --=========================================================-- -- Clientside Callbacks for the Friends/Options panels -- --=========================================================--