130 lines
5.2 KiB
Lua
130 lines
5.2 KiB
Lua
-- Wire Trigger created by mitterdoo
|
|
WireToolSetup.setCategory( "Detection" )
|
|
WireToolSetup.open( "trigger", "Trigger", "gmod_wire_trigger", nil, "Triggers" )
|
|
|
|
TOOL.ClientConVar = {
|
|
model = "models/jaanus/wiretool/wiretool_siren.mdl",
|
|
filter = 0, -- 0: all entities, 1: only players, 2: only props (and stuff that isn't a player)
|
|
owneronly = 0,
|
|
sizex = 64,
|
|
sizey = 64,
|
|
sizez = 64,
|
|
offsetx = 0,
|
|
offsety = 0,
|
|
offsetz = 0,
|
|
}
|
|
local DrawOutline
|
|
if CLIENT then
|
|
DrawOutline = CreateClientConVar( "wire_trigger_drawalltriggers", "0", true )
|
|
language.Add( "Tool.wire_trigger.filter", "Filters" )
|
|
language.Add( "Tool.wire_trigger.owneronly", "Owner's Stuff Only" )
|
|
language.Add( "Tool.wire_trigger.sizex", "Size X" )
|
|
language.Add( "Tool.wire_trigger.sizey", "Size Y" )
|
|
language.Add( "Tool.wire_trigger.sizez", "Size Z" )
|
|
language.Add( "Tool.wire_trigger.offsetx", "Offset X" )
|
|
language.Add( "Tool.wire_trigger.offsety", "Offset Y" )
|
|
language.Add( "Tool.wire_trigger.offsetz", "Offset Z" )
|
|
language.Add( "tool.wire_trigger.name", "Trigger Tool (Wire)" )
|
|
language.Add( "tool.wire_trigger.desc", "Spawns a Trigger" )
|
|
language.Add( "Tool.wire_trigger.alltriggers", "All Triggers Visible" )
|
|
language.Add( "tool.wire_trigger.resetsize", "Reset Size" )
|
|
language.Add( "tool.wire_trigger.resetoffset", "Reset Offset" )
|
|
language.Add( "Tool.wire_trigger.filter_all", "All Entities" )
|
|
language.Add( "Tool.wire_trigger.filter_players", "Only Players" )
|
|
language.Add( "Tool.wire_trigger.filter_props", "Only Props" )
|
|
TOOL.Information = { { name = "left", text = "Create/Update " .. TOOL.Name } }
|
|
|
|
concommand.Add( "wire_trigger_reset_size", function( ply, cmd, args )
|
|
|
|
RunConsoleCommand( "wire_trigger_sizex", 64 )
|
|
RunConsoleCommand( "wire_trigger_sizey", 64 )
|
|
RunConsoleCommand( "wire_trigger_sizez", 64 )
|
|
|
|
end )
|
|
concommand.Add( "wire_trigger_reset_offset", function( ply, cmd, args )
|
|
|
|
RunConsoleCommand( "wire_trigger_offsetx", 0 )
|
|
RunConsoleCommand( "wire_trigger_offsety", 0 )
|
|
RunConsoleCommand( "wire_trigger_offsetz", 0 )
|
|
|
|
end )
|
|
|
|
end
|
|
|
|
WireToolSetup.BaseLang()
|
|
WireToolSetup.SetupMax( 64 )
|
|
|
|
function TOOL:GetConVars()
|
|
return self:GetClientInfo( "model" ), self:GetClientNumber( "filter" ), self:GetClientNumber( "owneronly" ), self:GetClientNumber( "sizex" ), self:GetClientNumber( "sizey" ), self:GetClientNumber( "sizez" ), self:GetClientNumber( "offsetx" ), self:GetClientNumber( "offsety" ), self:GetClientNumber( "offsetz" )
|
|
end
|
|
|
|
local function DrawTriggerOutlines( list )
|
|
cam.Start3D( LocalPlayer():EyePos(), LocalPlayer():EyeAngles() )
|
|
for k,ent in pairs( list ) do
|
|
local trig = ent:GetTriggerEntity()
|
|
|
|
render.DrawWireframeBox( trig:GetPos(), Angle(0,0,0), trig:OBBMins(), trig:OBBMaxs(), Color( 255, 255, 0 ), true )
|
|
render.DrawLine( trig:GetPos(), ent:GetPos(), Color( 255, 255, 0 ) )
|
|
end
|
|
cam.End3D()
|
|
end
|
|
|
|
hook.Add( "HUDPaint", "wire_trigger_draw_all_triggers", function()
|
|
if DrawOutline:GetBool() then
|
|
DrawTriggerOutlines( ents.FindByClass( "gmod_wire_trigger" ) )
|
|
end
|
|
end )
|
|
|
|
function TOOL:DrawHUD()
|
|
local tr = util.TraceLine( util.GetPlayerTrace( LocalPlayer() ) )
|
|
local ent = tr.Entity
|
|
if IsValid( ent ) and ent:GetClass() == "gmod_wire_trigger" and not DrawOutline:GetBool() then
|
|
DrawTriggerOutlines( {ent} )
|
|
end
|
|
end
|
|
function TOOL:RightClick( tr )
|
|
|
|
if IsValid( tr.Entity ) then
|
|
local ent = tr.Entity
|
|
if ent:GetClass() == "gmod_wire_trigger" then
|
|
|
|
-- http:--youtu.be/RTR1ny0O_io
|
|
local size = ent:GetTriggerSize()
|
|
local offset = ent:GetTriggerOffset()
|
|
RunConsoleCommand( "wire_trigger_sizex", size.x )
|
|
RunConsoleCommand( "wire_trigger_sizey", size.y )
|
|
RunConsoleCommand( "wire_trigger_sizez", size.z )
|
|
RunConsoleCommand( "wire_trigger_offsetx", offset.x )
|
|
RunConsoleCommand( "wire_trigger_offsety", offset.y )
|
|
RunConsoleCommand( "wire_trigger_offsetz", offset.z )
|
|
RunConsoleCommand( "wire_trigger_filter", ent:GetFilter() )
|
|
RunConsoleCommand( "wire_trigger_owneronly", ent:GetOwnerOnly() and 1 or 0 )
|
|
RunConsoleCommand( "wire_trigger_model", ent:GetModel() )
|
|
return true
|
|
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
function TOOL.BuildCPanel( panel )
|
|
ModelPlug_AddToCPanel(panel, "Misc_Tools", "wire_trigger")
|
|
panel:CheckBox( "#Tool.wire_trigger.alltriggers", "wire_trigger_drawalltriggers" )
|
|
panel:AddControl( "ComboBox", {
|
|
Label = "#Tool.wire_trigger.filter",
|
|
Options = {
|
|
["#Tool.wire_trigger.filter_all"] = { wire_trigger_filter = 0 },
|
|
["#Tool.wire_trigger.filter_players"] = { wire_trigger_filter = 1 },
|
|
["#Tool.wire_trigger.filter_props"] = { wire_trigger_filter = 2 },
|
|
}
|
|
})
|
|
panel:CheckBox( "#Tool.wire_trigger.owneronly", "wire_trigger_owneronly" )
|
|
panel:Button( "#Tool.wire_trigger.resetsize", "wire_trigger_reset_size" )
|
|
panel:NumSlider("#Tool.wire_trigger.sizex", "wire_trigger_sizex", -1000, 1000, 64)
|
|
panel:NumSlider("#Tool.wire_trigger.sizey", "wire_trigger_sizey", -1000, 1000, 64)
|
|
panel:NumSlider("#Tool.wire_trigger.sizez", "wire_trigger_sizez", -1000, 1000, 64)
|
|
panel:Button( "#Tool.wire_trigger.resetoffset", "wire_trigger_reset_offset" )
|
|
panel:NumSlider("#Tool.wire_trigger.offsetx", "wire_trigger_offsetx", -1000, 1000, 0)
|
|
panel:NumSlider("#Tool.wire_trigger.offsety", "wire_trigger_offsety", -1000, 1000, 0)
|
|
panel:NumSlider("#Tool.wire_trigger.offsetz", "wire_trigger_offsetz", -1000, 1000, 0)
|
|
end
|