Files
VnUtest/garrysmod/addons/tacrp/lua/entities/tacrp_ammo_frag.lua
2026-03-31 10:27:04 +03:00

86 lines
2.0 KiB
Lua

AddCSLuaFile()
ENT.Type = "anim"
ENT.Base = "base_entity"
ENT.RenderGroup = RENDERGROUP_TRANSLUCENT
ENT.PrintName = "Frag Grenade (Ammo)"
ENT.Category = "Tactical RP"
ENT.AdminOnly = false
ENT.Spawnable = true
ENT.Model = "models/weapons/tacint/frag.mdl"
ENT.Ammo = "grenade"
ENT.GrenadeProxy = "tacrp_nade_frag"
function ENT:Initialize()
self:SetModel(self.Model)
if SERVER then
self:SetMaterial(self.Material or "")
self:PhysicsInit(SOLID_VPHYSICS)
self:SetMoveType(MOVETYPE_VPHYSICS)
self:SetSolid(SOLID_VPHYSICS)
self:SetCollisionGroup(COLLISION_GROUP_WEAPON)
self:SetUseType(CONTINUOUS_USE)
self:PhysWake()
self:SetTrigger(true) -- Enables Touch() to be called even when not colliding
self:UseTriggerBounds(true, 24)
end
end
function ENT:ApplyAmmo(ply)
if self.Used then return end
self.Used = true
ply:GiveAmmo(1, self.Ammo)
self:Remove()
end
ENT.CollisionSoundsHard = {
"physics/metal/weapon_impact_hard1.wav",
"physics/metal/weapon_impact_hard2.wav",
"physics/metal/weapon_impact_hard3.wav",
}
ENT.CollisionSoundsSoft = {
"physics/metal/weapon_impact_soft1.wav",
"physics/metal/weapon_impact_soft2.wav",
"physics/metal/weapon_impact_soft3.wav",
}
function ENT:PhysicsCollide(data)
if data.DeltaTime < 0.1 then return end
if data.Speed > 25 then
self:EmitSound(self.CollisionSoundsHard[math.random(#self.CollisionSoundsHard)])
else
self:EmitSound(self.CollisionSoundsSoft[math.random(#self.CollisionSoundsSoft)])
end
end
if SERVER then
function ENT:Use(ply)
if !ply:IsPlayer() then return end
self:ApplyAmmo(ply)
if self.GrenadeProxy then
ply:Give(self.GrenadeProxy, true)
end
end
elseif CLIENT then
function ENT:DrawTranslucent()
self:Draw()
end
function ENT:Draw()
self:DrawModel()
end
end