mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
Upload
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
--[[
|
||||
| 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 = "HL2RP Staff QoL"
|
||||
TOOL.Name = "NPC Spawner Editor"
|
||||
TOOL.RequiresTraceHit = true
|
||||
|
||||
TOOL.Information = {
|
||||
{ name = "left" },
|
||||
{ name = "right" },
|
||||
{ name = "reload" }
|
||||
}
|
||||
function TOOL:GetPlayerBoundsTrace()
|
||||
local client = self:GetOwner()
|
||||
|
||||
return util.TraceLine({
|
||||
start = client:GetShootPos(),
|
||||
endpos = client:GetShootPos() + client:GetForward() * 96,
|
||||
filter = client
|
||||
})
|
||||
end
|
||||
function TOOL:LeftClick( trace )
|
||||
|
||||
|
||||
if (SERVER) then
|
||||
if !CAMI.PlayerHasAccess(client, "Helix - Basic Admin Commands") then return false end
|
||||
|
||||
local entity = trace.Entity
|
||||
if !entity or entity and !IsValid(entity) then return end
|
||||
if !self.GetOwner then return end
|
||||
if !self:GetOwner() then return end
|
||||
if !IsValid(self:GetOwner()) then return end
|
||||
if entity:GetClass() != "ix_npcspawner" then return end
|
||||
entity:Use(self:GetOwner())
|
||||
end
|
||||
end
|
||||
function TOOL:RightClick( trace )
|
||||
local entity = trace.Entity
|
||||
local client = self:GetOwner()
|
||||
if !entity or entity and !IsValid(entity) then
|
||||
client.npcEditStart = nil
|
||||
client.npcEnt = nil
|
||||
return
|
||||
end
|
||||
if !self.GetOwner then return end
|
||||
if !self:GetOwner() then return end
|
||||
if !IsValid(self:GetOwner()) then return end
|
||||
if entity:GetClass() != "ix_npcspawner" then return end
|
||||
if client.npcEditStart then
|
||||
client.npcEditStart = nil
|
||||
client.npcEnt = nil
|
||||
else
|
||||
client.npcEditStart = entity:GetPos() + (entity:GetForward() * -60 + entity:GetRight()*-40 + entity:GetUp()*128)
|
||||
client.npcEnt = entity
|
||||
end
|
||||
end
|
||||
function TOOL:Reload(trace)
|
||||
local client = self:GetOwner()
|
||||
if !CAMI.PlayerHasAccess(client, "Helix - Basic Admin Commands") then return false end
|
||||
if !self.GetOwner then return end
|
||||
if !self:GetOwner() then return end
|
||||
if !IsValid(self:GetOwner()) then return end
|
||||
if !client.npcEditStart or !client.npcEnt then return end
|
||||
local tr = util.TraceLine({
|
||||
start = client:GetShootPos(),
|
||||
endpos = client:GetShootPos() + client:GetForward() * 96,
|
||||
filter = client
|
||||
})
|
||||
client.npcEnt:SetSpawnPosStart(client.npcEditStart)
|
||||
client.npcEnt:SetSpawnPosEnd(tr.HitPos)
|
||||
|
||||
client.npcEditStart = nil
|
||||
client.npcEnt = nil
|
||||
end
|
||||
if CLIENT then
|
||||
hook.Add("PostDrawTranslucentRenderables", "NPCSpawnEdit", function(bDepth, bSkybox)
|
||||
if ( bSkybox ) then return end
|
||||
if LocalPlayer().npcEditStart then
|
||||
local tr = util.TraceLine({
|
||||
start = LocalPlayer():GetShootPos(),
|
||||
endpos = LocalPlayer():GetShootPos() + LocalPlayer():GetForward() * 96,
|
||||
filter = LocalPlayer()
|
||||
})
|
||||
local center, min, max = LocalPlayer().npcEnt:SpawnAreaPosition(LocalPlayer().npcEditStart, tr.HitPos)
|
||||
local color = Color(255, 255, 255, 255)
|
||||
|
||||
render.DrawWireframeBox(center, angle_zero, min, max, color)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
language.Add( "Tool.sh_npcspawnedit.name", "NPC Spawner Configurator" )
|
||||
language.Add( "Tool.sh_npcspawnedit.desc", "You can edit NPC spawner entities with it." )
|
||||
language.Add( "Tool.sh_npcspawnedit.left", "Open spawner menu" )
|
||||
language.Add( "Tool.sh_npcspawnedit.right", "Edit spawner area bounds. Click again to stop changing bounds." )
|
||||
language.Add( "Tool.sh_npcspawnedit.reload", "Save your area bound changes." )
|
||||
end
|
||||
Reference in New Issue
Block a user