Files
wnsrc/gamemodes/sandbox/entities/weapons/gmod_tool/stools/remover.lua
lifestorm ba1fc01b16 Upload
2024-08-04 23:12:27 +03:00

114 lines
2.3 KiB
Lua

--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
TOOL.Category = "Construction"
TOOL.Name = "#tool.remover.name"
TOOL.Information = {
{ name = "left" },
{ name = "right" },
{ name = "reload" }
}
local function DoRemoveEntity( ent )
if ( !IsValid( ent ) || ent:IsPlayer() ) then return false end
-- Nothing for the client to do here
if ( CLIENT ) then return true end
-- Remove all constraints (this stops ropes from hanging around)
constraint.RemoveAll( ent )
-- Remove it properly in 1 second
timer.Simple( 1, function() if ( IsValid( ent ) ) then ent:Remove() end end )
-- Make it non solid
ent:SetNotSolid( true )
ent:SetMoveType( MOVETYPE_NONE )
ent:SetNoDraw( true )
-- Send Effect
local ed = EffectData()
ed:SetOrigin( ent:GetPos() )
ed:SetEntity( ent )
util.Effect( "entity_remove", ed, true, true )
return true
end
--
-- Remove a single entity
--
function TOOL:LeftClick( trace )
if ( DoRemoveEntity( trace.Entity ) ) then
if ( !CLIENT ) then
self:GetOwner():SendLua( "achievements.Remover()" )
end
return true
end
return false
end
--
-- Remove this entity and everything constrained
--
function TOOL:RightClick( trace )
local entity = trace.Entity
if ( !IsValid( entity ) || entity:IsPlayer() ) then return false end
-- Client can bail out now.
if ( CLIENT ) then return true end
local ConstrainedEntities = constraint.GetAllConstrainedEntities( entity )
local Count = 0
-- Loop through all the entities in the system
for _, ent in pairs( ConstrainedEntities ) do
if ( DoRemoveEntity( ent ) ) then
Count = Count + 1
end
end
self:GetOwner():SendLua( string.format( "for i=1,%i do achievements.Remover() end", Count ) )
return true
end
--
-- Reload removes all constraints on the targetted entity
--
function TOOL:Reload( trace )
if ( !IsValid( trace.Entity ) || trace.Entity:IsPlayer() ) then return false end
if ( CLIENT ) then return true end
return constraint.RemoveAll( trace.Entity )
end
function TOOL.BuildCPanel( CPanel )
CPanel:AddControl( "Header", { Description = "#tool.remover.desc" } )
end