diff options
Diffstat (limited to 'entities/weapons/rad_itemplacer/shared.lua')
| -rw-r--r-- | entities/weapons/rad_itemplacer/shared.lua | 164 |
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 |
