GMADYéUTTT - Simple Frag Grenade { "description": "Description", "type": "weapon", "tags": [] }Author Namelua/entities/ttt_frag_proj/shared.luaµVG²lua/weapons/weapon_ttt_fraggrenade/shared.luaô”Šã4if SERVER then AddCSLuaFile("shared.lua") end ENT.Type = "anim" ENT.Base = "ttt_basegrenade_proj" ENT.Model = Model("models/weapons/w_eq_fraggrenade_thrown.mdl") function ENT:SphereDamage(dmgowner, center, radius) local r = radius ^ 2 local d = 0.0 local diff = nil local dmg = 0 for _, ent in pairs(player.GetAll()) do if IsValid(ent) then diff = center - ent:GetPos() d = diff:DotProduct(diff) if d < r then d = math.max(0, math.sqrt(d) - 490) dmg = -0.01 * (d^2) + 125 local dmginfo = DamageInfo() dmginfo:SetDamage(dmg) dmginfo:SetAttacker(dmgowner) dmginfo:SetInflictor(self) dmginfo:SetDamageType(DMG_BLAST) dmginfo:SetDamageForce(center - ent:GetPos()) dmginfo:SetDamagePosition(ent:GetPos()) ent:TakeDamageInfo(dmginfo) end end end end function ENT:Explode() if SERVER then self:SetNoDraw(true) self:SetSolid(SOLID_NONE) local pos = self:GetPos() local dmgowner = self:GetOwner() dmgowner = IsValid(dmgowner) and dmgowner or self.Entity local r_inner = 150 local r_outer = 500 local expDmg = 100 self:SphereDamage(dmgowner, pos, r_inner) util.BlastDamage(self, dmgowner, pos, r_outer, expDmg) local effect = EffectData() effect:SetStart(pos) effect:SetOrigin(pos) effect:SetScale(r_outer) effect:SetRadius(r_outer) effect:SetMagnitude(expDmg) effect:SetOrigin(pos) util.Effect("Explosion", effect, true, true) util.Effect("HelicopterMegaBomb", effect, true, true) timer.Simple(0.1, function() sound.Play("ambient/explosions/exp1.wav", pos, 75, 100) end) local phexp = ents.Create("env_physexplosion") phexp:SetPos(pos) phexp:SetKeyValue("magnitude", expDmg) phexp:SetKeyValue("radius", r_outer) phexp:SetKeyValue("spawnflags", "19") phexp:Spawn() phexp:EmitSound( "BaseGrenade.Explode", 100, 100 ) phexp:Fire("Explode", "", 0) self:Remove() end endif SERVER then AddCSLuaFile( "shared.lua" ) else SWEP.PrintName = "Frag Grenade" SWEP.Slot = 6 SWEP.EquipMenuData = { type = "item_weapon", desc = "Throw-able fragmentation grenade that damages those around it on explosion." }; SWEP.Icon = "VGUI/ttt/icon_nades" end SWEP.Base = "weapon_tttbasegrenade" SWEP.CanBuy = {ROLE_TRAITOR} SWEP.LimitedStock = true SWEP.Kind = WEAPON_EQUIP SWEP.HoldType = "grenade" SWEP.Spawnable = true SWEP.AdminSpawnable = true SWEP.AutoSpawnable = false SWEP.ViewModel = "models/weapons/v_eq_fraggrenade.mdl" SWEP.WorldModel = "models/weapons/w_eq_fraggrenade.mdl" SWEP.Weight = 5 function SWEP:GetGrenadeName() return "ttt_frag_proj" endÿ¼(f