add sborka
This commit is contained in:
143
garrysmod/addons/tacrp/lua/entities/tacrp_droppedmag.lua
Normal file
143
garrysmod/addons/tacrp/lua/entities/tacrp_droppedmag.lua
Normal file
@@ -0,0 +1,143 @@
|
||||
AddCSLuaFile()
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.Base = "base_entity"
|
||||
ENT.RenderGroup = RENDERGROUP_TRANSLUCENT
|
||||
|
||||
ENT.PrintName = "Dropped Magazine"
|
||||
ENT.Category = ""
|
||||
|
||||
ENT.Spawnable = false
|
||||
ENT.Model = ""
|
||||
ENT.FadeTime = 5
|
||||
ENT.CanHavePrints = true -- TTT
|
||||
|
||||
ENT.ImpactSounds = {
|
||||
["pistol"] = {
|
||||
"TacRP/weapons/drop_magazine_pistol-1.wav",
|
||||
"TacRP/weapons/drop_magazine_pistol-2.wav",
|
||||
"TacRP/weapons/drop_magazine_pistol-3.wav",
|
||||
"TacRP/weapons/drop_magazine_pistol-4.wav",
|
||||
"TacRP/weapons/drop_magazine_pistol-5.wav",
|
||||
},
|
||||
["metal"] = {
|
||||
"TacRP/weapons/drop_magazine_metal-1.wav",
|
||||
"TacRP/weapons/drop_magazine_metal-2.wav",
|
||||
"TacRP/weapons/drop_magazine_metal-3.wav",
|
||||
"TacRP/weapons/drop_magazine_metal-4.wav",
|
||||
},
|
||||
["plastic"] = {
|
||||
"TacRP/weapons/drop_magazine_plastic-1.wav",
|
||||
"TacRP/weapons/drop_magazine_plastic-2.wav"
|
||||
},
|
||||
["bullet"] = {
|
||||
"player/pl_shell1.wav",
|
||||
"player/pl_shell2.wav",
|
||||
"player/pl_shell3.wav"
|
||||
},
|
||||
["shotgun"] = {
|
||||
"weapons/fx/tink/shotgun_shell1.wav",
|
||||
"weapons/fx/tink/shotgun_shell2.wav",
|
||||
"weapons/fx/tink/shotgun_shell3.wav",
|
||||
},
|
||||
["spoon"] = {
|
||||
"TacRP/weapons/grenade/spoon_bounce-1.wav",
|
||||
"TacRP/weapons/grenade/spoon_bounce-2.wav",
|
||||
"TacRP/weapons/grenade/spoon_bounce-3.wav",
|
||||
}
|
||||
}
|
||||
|
||||
ENT.ImpactType = "pistol"
|
||||
|
||||
ENT.AmmoType = nil
|
||||
ENT.AmmoCount = nil
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel(self.Model)
|
||||
|
||||
if SERVER then
|
||||
self:PhysicsInit(SOLID_VPHYSICS)
|
||||
self:SetMoveType(MOVETYPE_VPHYSICS)
|
||||
self:SetSolid(SOLID_VPHYSICS)
|
||||
self:SetCollisionGroup(COLLISION_GROUP_DEBRIS)
|
||||
self:SetUseType(SIMPLE_USE)
|
||||
|
||||
self:PhysWake()
|
||||
|
||||
local phys = self:GetPhysicsObject()
|
||||
if !phys:IsValid() then
|
||||
self:PhysicsInitBox(Vector(-1, -1, -1), Vector(1, 1, 1))
|
||||
end
|
||||
end
|
||||
|
||||
self.SpawnTime = CurTime()
|
||||
if engine.ActiveGamemode() == "terrortown" and TacRP.ConVars["ttt_magazine_dna"]:GetBool() then
|
||||
self.FadeTime = 600
|
||||
if SERVER then
|
||||
self.fingerprints = {}
|
||||
table.insert(self.fingerprints, self:GetOwner())
|
||||
end
|
||||
end
|
||||
|
||||
if self.AmmoType and self.AmmoCount then
|
||||
self.FadeTime = math.max(self.FadeTime, 120)
|
||||
self:SetOwner(NULL) -- Owner can't +USE their own entities
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:PhysicsCollide(colData, collider)
|
||||
if colData.DeltaTime < 0.5 then return end
|
||||
|
||||
local tbl = self.ImpactSounds[self.ImpactType]
|
||||
|
||||
local snd = ""
|
||||
|
||||
if tbl then
|
||||
snd = table.Random(tbl)
|
||||
end
|
||||
|
||||
self:EmitSound(snd)
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
if !self.SpawnTime then
|
||||
self.SpawnTime = CurTime()
|
||||
end
|
||||
|
||||
if SERVER and (self.SpawnTime + self.FadeTime) <= CurTime() then
|
||||
|
||||
self:SetRenderFX( kRenderFxFadeFast )
|
||||
|
||||
if (self.SpawnTime + self.FadeTime + 1) <= CurTime() then
|
||||
|
||||
if IsValid(self:GetPhysicsObject()) then
|
||||
self:GetPhysicsObject():EnableMotion(false)
|
||||
end
|
||||
|
||||
if SERVER then
|
||||
if (self.SpawnTime + self.FadeTime + 1.5) <= CurTime() then
|
||||
self:Remove()
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:Use(ply)
|
||||
if self.AmmoType and (self.AmmoCount or 0) > 0 and (self.SpawnTime + 0.5 <= CurTime()) then
|
||||
local given = ply:GiveAmmo(self.AmmoCount, self.AmmoType)
|
||||
self.AmmoCount = self.AmmoCount - given
|
||||
if self.AmmoCount <= 0 then
|
||||
self:Remove()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:DrawTranslucent()
|
||||
self:Draw()
|
||||
end
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
end
|
||||
Reference in New Issue
Block a user