summaryrefslogtreecommitdiff
path: root/entities/weapons/rad_itemplacer/shared.lua
diff options
context:
space:
mode:
Diffstat (limited to 'entities/weapons/rad_itemplacer/shared.lua')
-rw-r--r--entities/weapons/rad_itemplacer/shared.lua164
1 files changed, 81 insertions, 83 deletions
diff --git a/entities/weapons/rad_itemplacer/shared.lua b/entities/weapons/rad_itemplacer/shared.lua
index 12dad13..6ae189d 100644
--- a/entities/weapons/rad_itemplacer/shared.lua
+++ b/entities/weapons/rad_itemplacer/shared.lua
@@ -1,11 +1,11 @@
if SERVER then
AddCSLuaFile( "shared.lua" )
-
+
SWEP.Weight = 1
SWEP.AutoSwitchTo = false
SWEP.AutoSwitchFrom = false
-
+
end
if CLIENT then
@@ -19,15 +19,15 @@ if CLIENT then
SWEP.ViewModelFOV = 74
SWEP.ViewModelFlip = false
-
+
SWEP.PrintName = "Item Placement Tool"
SWEP.Slot = 5
SWEP.Slotpos = 5
-
+
function SWEP:DrawWeaponSelection( x, y, wide, tall, alpha )
-
+
end
-
+
end
SWEP.HoldType = "pistol"
@@ -71,35 +71,35 @@ SWEP.SharedItems = {}
function SWEP:Initialize()
if SERVER then
-
+
self.Weapon:SetWeaponHoldType( self.HoldType )
-
+
end
-
+
end
function SWEP:Synch()
for k,v in pairs( self.ServersideItems ) do
-
+
local ents = ents.FindByClass( v )
local postbl = {}
-
+
for c,d in pairs( ents ) do
-
+
table.insert( postbl, d:GetPos() )
-
+
end
-
+
net.Start( "ItemPlacerSynch" )
net.WriteString( v )
net.WriteTable( postbl )
net.Send( self.Owner )
-
+
//local tbl = { Name = v, Ents = postbl }
-
+
//datastream.StreamToClients( { self.Owner }, "ItemPlacerSynch", tbl )
-
+
end
end
@@ -120,51 +120,51 @@ datastream.Hook( "ItemPlacerSynch", PlacerSynch )]]
function SWEP:Deploy()
if SERVER then
-
+
self.Weapon:Synch()
-
+
end
self.Weapon:SendWeaponAnim( ACT_VM_DRAW )
-
+
return true
-
-end
-function SWEP:Think()
+end
+
+function SWEP:Think()
if CLIENT then return end
if self.Owner:KeyDown( IN_USE ) and ( ( self.NextDel or 0 ) < CurTime() ) then
-
+
self.NextDel = CurTime() + 1
-
+
local tr = util.TraceLine( util.GetPlayerTrace( self.Owner ) )
-
+
local closest
local dist = 1000
-
+
for k,v in pairs( ents.FindByClass( self.ItemTypes[ self.Weapon:GetNWInt( "ItemType", 1 ) ] ) ) do
-
+
if v:GetPos():Distance( tr.HitPos ) < dist then
-
+
dist = v:GetPos():Distance( tr.HitPos )
closest = v
-
+
end
-
+
end
-
+
if IsValid( closest ) then
-
+
closest:Remove()
-
+
self.Owner:EmitSound( self.Primary.Delete1 )
-
+
self.Weapon:Synch()
-
+
end
-
+
end
end
@@ -172,17 +172,17 @@ end
function SWEP:Reload()
if CLIENT then return end
-
+
for k,v in pairs( ents.FindByClass( self.ItemTypes[ self.Weapon:GetNWInt( "ItemType", 1 ) ] ) ) do
-
+
v:Remove()
-
+
end
-
+
self.Weapon:Synch()
-
+
self.Owner:EmitSound( self.Primary.Delete )
-
+
end
function SWEP:Holster()
@@ -191,21 +191,21 @@ function SWEP:Holster()
end
-function SWEP:ShootEffects()
-
- self.Owner:MuzzleFlash()
- self.Owner:SetAnimation( PLAYER_ATTACK1 )
-
- self.Weapon:SendWeaponAnim( ACT_VM_PRIMARYATTACK )
-
+function SWEP:ShootEffects()
+
+ self.Owner:MuzzleFlash()
+ self.Owner:SetAnimation( PLAYER_ATTACK1 )
+
+ self.Weapon:SendWeaponAnim( ACT_VM_PRIMARYATTACK )
+
end
function SWEP:PlaceItem()
local itemtype = self.ItemTypes[ self.Weapon:GetNWInt( "ItemType", 1 ) ]
-
+
local tr = util.TraceLine( util.GetPlayerTrace( self.Owner ) )
-
+
local ent = ents.Create( itemtype )
ent:SetPos( tr.HitPos + tr.HitNormal * 5 )
ent:Spawn()
@@ -218,13 +218,13 @@ function SWEP:PrimaryAttack()
self.Weapon:SetNextPrimaryFire( CurTime() + 1 )
self.Weapon:EmitSound( self.Primary.Sound, 100, math.random(95,105) )
self.Weapon:ShootEffects()
-
+
if SERVER then
-
+
self.Weapon:PlaceItem()
-
+
self.Weapon:Synch()
-
+
end
end
@@ -232,64 +232,62 @@ end
function SWEP:SecondaryAttack()
self.Weapon:SetNextSecondaryFire( CurTime() + 0.5 )
-
+
self.Weapon:EmitSound( self.Primary.Swap )
-
+
if SERVER then
-
+
self.Weapon:SetNWInt( "ItemType", self.Weapon:GetNWInt( "ItemType", 1 ) + 1 )
-
+
if self.Weapon:GetNWInt( "ItemType", 1 ) > #self.ItemTypes then
-
+
self.Weapon:SetNWInt( "ItemType", 1 )
-
+
end
-
+
end
-
+
end
function SWEP:DrawHUD()
draw.SimpleText( "PRIMARY FIRE: Place Item SECONDARY FIRE: Change Item Type +USE: Delete Nearest Item Of Current Type RELOAD: Remove All Of Current Item Type", "AmmoFontSmall", ScrW() * 0.5, ScrH() - 120, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
draw.SimpleText( "CURRENT ITEM TYPE: "..self.ItemTypes[ self.Weapon:GetNWInt( "ItemType", 1 ) ], "AmmoFontSmall", ScrW() * 0.5, ScrH() - 100, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
-
+
for k,v in pairs( self.SharedItems ) do
for c,d in pairs( ents.FindByClass( v ) ) do
-
+
local pos = d:GetPos():ToScreen()
-
+
if pos.visible then
-
+
draw.SimpleText( v, "AmmoFontSmall", pos.x, pos.y - 15, Color(80,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
draw.RoundedBox( 0, pos.x - 2, pos.y - 2, 4, 4, Color(255,255,255) )
-
+
end
-
+
end
-
+
end
-
+
for k,v in pairs( ClientItemPlacerTbl ) do
-
+
for c,d in pairs( v ) do
-
+
local vec = Vector( d[1], d[2], d[3] )
-
+
local pos = vec:ToScreen()
-
+
if pos.visible then
-
+
draw.SimpleText( k, "AmmoFontSmall", pos.x, pos.y - 15, Color(80,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
draw.RoundedBox( 0, pos.x - 2, pos.y - 2, 4, 4, Color(255,255,255) )
-
+
end
-
+
end
-
- end
-
-end
+ end
+end