--------------------- -- Your Name is Benny --------------------- ITEMS = {} local itemmeta = {} function itemmeta:__tostring() return "ItemDef [" .. self.ClassName .. "]" end local ITEMHELPER = { Get = function( self, key ) return self.key end, GetRaw = function( self, key ) return rawget( self, key ) end, } function itemmeta.__index( self, key ) if ITEMHELPER[key] then return ITEMHELPER[key] end if rawget(self, "BaseClass") then return rawget(self, "BaseClass")[key] end end function AddItem( itemname, item ) if item then ITEMS[itemname] = item item.ClassName = itemname item.BaseClass = ITEMS[item.Base] setmetatable( item, itemmeta ) else return ITEMS[itemname] end end function BaseClassGet( item ) -- TODO end AddItem( "base", { PrintName = "Base Item", Description = "Beginning item base.", Category = "base", Model = "models/benny/weapons/test_m16a2.mdl", DefaultBodygroups = {}, Vars = { ["Float"] = { "Acquisition", "HolsterIn", }, }, ["Initialize"] = function( class, ent, handler ) print( class, "Initialized base initialization" ) for k, v in ipairs(class.DefaultBodygroups) do if v then ent:SetBodygroup( k-1, v ) end end end, ["Deploy"] = function( class, ent, handler ) ent:SetNoDraw( false ) end, ["Drop"] = function( class, ent, handler ) end, ["Holster"] = function( class, ent, handler ) ent:SetHolsterIn( CurTime() + 0.5 ) end, ["FinishHolster"] = function( class, ent, handler ) handler:SetActiveR( NULL ) ent:SetNoDraw( true ) end, ["UndoHolster"] = function( class, ent, handler ) ent:SetHolsterIn( 0 ) end, ["Attack"] = function( class, ent, handler ) end, ["AttackAlt"] = function( class, ent, handler ) end, ["Alt"] = function( class, ent, handler ) end, ["Think"] = function( class, ent, handler ) if ent:GetHolsterIn() != 0 and ent:GetHolsterIn() <= CurTime() then class:FinishHolster( ent, handler ) ent:SetHolsterIn( 0 ) end end, ["EntThink"] = function( class, ent, handler ) end, ["EntPhysicsCollide"] = function( class, ent, data, collider ) end, ["Reload"] = function( class, ent, handler ) end, }) local AnimationLookup = { ["fire"] = { ["handgun"] = "handgun_fire", ["rifle"] = "rifle_fire", }, ["reload"] = { ["handgun"] = "handgun_reload", ["rifle"] = "rifle_reload", }, ["reload_rack"] = { ["handgun"] = "handgun_reload_rack", ["rifle"] = "rifle_reload_rack", }, ["reload_insert"] = { ["handgun"] = "handgun_reload_insert", ["rifle"] = "rifle_reload_insert", }, ["deploy"] = { ["handgun"] = "handgun_deploy", ["rifle"] = "rifle_deploy", }, ["holster"] = { ["handgun"] = "handgun_holster", ["rifle"] = "handgun_holster", }, } local BaseClass = ITEMS.base AddItem( "base_firearm", { PrintName = "Base Firearm", Description = "Item base for firearms.", Category = "base", Base = "base", FirearmHelper = true, Vars = { ["Bool"] = { "Loaded", }, ["Int"] = { "Clip", "BurstCount", "Firemode", }, ["Float"] = { "Delay", "DelayBurst", "RefillTime", "Accuracy_Reset", "Accuracy_Amount", "DelayReload", }, }, HoldType = "rpg", Delay = 0.1, Pellets = 1, Accuracy = 1, ClipSize = 15, BurstCount = math.huge, BurstRunaway = false, BurstAuto = false, BurstDelay = 0, FireSound = "benny/weapons/m16a2/01.ogg", MagOutSound = "benny/weapons/m16a2/magout.ogg", MagInSound = "benny/weapons/m16a2/magin.ogg", BoltDropSound = "benny/weapons/m16a2/cock.ogg", BoltPullSound = "benny/weapons/fnc/cock.ogg", ["Initialize"] = function( class, ent, handler ) BaseClass.Initialize( class, ent, handler ) ent:SetClip( class.ClipSize ) ent:SetLoaded(true) print( class, "Initialized a firearm" ) end, ["Think"] = function( class, ent, handler ) local InProcess = ent:GetBurstCount() > 0 local Topped = ent:GetBurstCount() == class.BurstCount local Runaway = class.BurstRunaway local BAuto = class.BurstAuto local Firedown = false if IsValid(handler) then Firedown = handler:GetOwner():KeyDown( IN_ATTACK ) end if Runaway and InProcess and !Topped then class:Attack( ent, handler ) else if !Firedown then if !Topped and InProcess then ent:SetDelayBurst( CurTime() + class.BurstDelay ) end ent:SetBurstCount( 0 ) end if Topped and BAuto then ent:SetBurstCount( 0 ) ent:SetDelayBurst( CurTime() + class.BurstDelay ) end end if ent:GetRefillTime() != 0 and ent:GetRefillTime() <= CurTime() then ent:SetClip( class.ClipSize ) ent:SetRefillTime( 0 ) end BaseClass.Think( class, ent, handler ) end, ["EntThink"] = function( class, ent ) if IsValid(ent:GetOwner()) then return end -- Only run this stuff when there's no owner in hand if CLIENT then return end local Firedown = ((ent.ShootTime or 0) >= CurTime()) if Firedown then class:Attack( ent ) end local InProcess = ent:GetBurstCount() > 0 local Topped = ent:GetBurstCount() == class.BurstCount local Runaway = class.BurstRunaway local BAuto = class.BurstAuto if Runaway and InProcess and !Topped then class:Attack( ent, handler ) else if !Firedown then if !Topped and InProcess then ent:SetDelayBurst( CurTime() + class.BurstDelay ) end ent:SetBurstCount( 0 ) end if Topped and BAuto then ent:SetBurstCount( 0 ) ent:SetDelayBurst( CurTime() + class.BurstDelay ) end end end, ["Attack"] = function( class, ent, handler ) if ent:GetClip() <= 0 then return end if ent:GetDelay() > CurTime() then return end if ent:GetDelayBurst() > CurTime() then return end if ent:GetBurstCount() >= class.BurstCount then return end if ent:GetHolsterIn() != 0 then return end local HandlerValid = IsValid(handler) local handlerorself = HandlerValid and handler or ent local Runaway = class.BurstRunaway local BAuto = class.BurstAuto ent:SetBurstCount( ent:GetBurstCount() + 1 ) if ent:GetBurstCount() >= class.BurstCount then ent:SetDelayBurst( CurTime() + class.BurstDelay ) if BAuto then ent:SetBurstCount( 0 ) ent.ShootTime = 0 end end ent:SetClip( ent:GetClip() - 1 ) if ent:GetClip() == 0 then handlerorself:EmitSound( "benny/weapons/1911/slidedrop.ogg", 70, 100, 0.4, CHAN_STATIC ) end ent:SetDelay( CurTime() + class.Delay ) handlerorself:EmitSound( istable(class.FireSound) and TSelShared(class.FireSound, "FireSound") or class.FireSound, 100, 100, 0.5, CHAN_STATIC ) local acc = math.rad( class.Accuracy or 0 ) if HandlerValid then local p = handler:GetOwner() p:LagCompensation(true) handler:FireBullets( { Attacker = p, Damage = 1, Force = 5, Tracer = 0, Num = class.Pellets, Dir = p:GetAimVector(), Src = p:GetShootPos(), Spread = Vector( acc, acc, 0 ), } ) p:LagCompensation(false) else ent:FireBullets( { Attacker = ent, Damage = 1, Force = 1, Tracer = 0, Num = class.Pellets, Dir = ent:GetForward(), Src = ent:GetPos(), Spread = Vector( acc, acc, 0 ), } ) local physobj = ent:GetPhysicsObject() if physobj:IsValid() then physobj:AddVelocity( ent:GetForward() * -300 ) physobj:AddAngleVelocity( VectorRand( -360*20, 360*20 ) ) end end local ply = handlerorself:GetOwner() if HandlerValid and (SERVER or CLIENT and IsFirstTimePredicted()) then ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["fire"][class.HoldType] ), 0, true ) end ent:PlayAnimation( ent:LookupSequence("fire") ) end, ["Reload"] = function( class, ent, handler ) if ent:GetDelay() > CurTime() then return end if ent:GetHolsterIn() != 0 then return end local ply = handler:GetOwner() local time = 0.6 if ent:GetLoaded() then handler:EmitSound( class.MagOutSound, 70, 100, 0.4, CHAN_STATIC ) ent:SetLoaded( false ) ent:SetClip( 0 ) if SERVER or CLIENT and IsFirstTimePredicted() then ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["reload"][class.HoldType] ), 0, true ) end time = 0.4 ent:PlayAnimation( ent:LookupSequence("magout") ) else handler:EmitSound( class.MagInSound, 70, 100, 0.4, CHAN_STATIC ) ent:SetLoaded( true ) ent:SetRefillTime( CurTime() + 0.5 ) if SERVER or CLIENT and IsFirstTimePredicted() then ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["reload_insert"][class.HoldType] ), 0, true ) end time = 0.8 ent:PlayAnimation( ent:LookupSequence("magin") ) end ent:SetDelay( CurTime() + time ) end, ["Deploy"] = function( class, ent, handler ) handler:EmitSound( "weapons/usp/usp_slideback.wav", 70, 125, 0.4, CHAN_STATIC ) ent:SetDelay( CurTime() + 0.5 ) local ply = handler:GetOwner() if SERVER or CLIENT and IsFirstTimePredicted() then ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["deploy"][class.HoldType] ), 0, true ) end end, ["Drop"] = function( class, ent, handler ) ent:SetRefillTime( 0 ) BaseClass.Drop( class, ent, handler ) end, ["Holster"] = function( class, ent, handler ) ent:SetRefillTime( 0 ) handler:EmitSound( "weapons/elite/elite_deploy.wav", 70, 125, 0.4, CHAN_STATIC ) ent:SetDelay( CurTime() + 0.25 ) ent:SetHolsterIn( CurTime() + 0.25 ) local ply = handler:GetOwner() if SERVER or CLIENT and IsFirstTimePredicted() then ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["holster"][class.HoldType] ), 0, true ) end end, ["EntPhysicsCollide"] = function( class, ent, data, collider ) if ( data.DeltaTime > 0.1 and data.Speed > 200 ) then ent.ShootTime = CurTime() + math.Rand( 0.1, 0.5 ) end end, ["FinishHolster"] = function( class, ent, handler ) handler:EmitSound( "weapons/m4a1/m4a1_deploy.wav", 70, 125, 0.4, CHAN_STATIC ) BaseClass.FinishHolster( class, ent, handler ) end, ["UndoHolster"] = function( class, ent, handler ) BaseClass.UndoHolster( class, ent, handler ) handler:EmitSound( "weapons/elite/elite_deploy.wav", 70, 125, 0.4, CHAN_STATIC ) local ply = handler:GetOwner() if SERVER or CLIENT and IsFirstTimePredicted() then ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["deploy"][class.HoldType] ), 0.25, true ) end end, }) local BaseClass = ITEMS.base_firearm AddItem( "base_firearm_ubgl", { PrintName = "Base Firearm w/ UBGL", Description = "Item base for firearms that include grenade launchers.", Category = "base", Base = "base_firearm", Vars = { ["Int"] = { "Clip2", }, ["Float"] = { "Delay2", "DelayBurst2", "RefillTime2", "Accuracy_Reset2", "Accuracy_Amount2", }, }, Delay2 = 0.25, ClipSize2 = 4, ["Initialize"] = function( class, ent, handler ) BaseClass.Initialize( class, ent, handler ) ent:SetClip2( class.ClipSize2 ) end, ["Attack"] = function( class, ent, handler ) if ent:GetFiremode() == 1 then class:Attack2( ent, handler ) else BaseClass.Attack( class, ent, handler ) end end, ["Reload"] = function( class, ent, handler ) if ent:GetFiremode() == 1 then class:Reload2( ent, handler ) else BaseClass.Reload( class, ent, handler ) end end, ["Alt"] = function( class, ent, handler ) ent:SetFiremode( ent:GetFiremode() == 1 and 0 or 1 ) end, ["Think"] = function( class, ent, handler ) BaseClass.Think( class, ent, handler ) if ent:GetRefillTime2() != 0 and ent:GetRefillTime2() <= CurTime() then ent:SetClip2( class.ClipSize2 ) ent:SetRefillTime2( 0 ) end end, ["Reload2"] = function( class, ent, handler ) if ent:GetClip2() >= class.ClipSize2 then return end if ent:GetDelay2() > CurTime() then return end handler:EmitSound( "weapons/m4a1/m4a1_boltpull.wav", 70, 125, 0.4, CHAN_STATIC ) ent:SetDelay2( CurTime() + 0.25 ) ent:SetRefillTime2( CurTime() + 0.1 ) end, ["Attack2"] = function( class, ent, handler ) if ent:GetClip2() <= 0 then return end if ent:GetDelay2() > CurTime() then return end if ent:GetDelayBurst2() > CurTime() then return end if ent:GetBurstCount() >= class.BurstCount then return end ent:SetClip2( ent:GetClip2() - 1 ) ent:SetDelay2( CurTime() + class.Delay2 ) handler:EmitSound( "weapons/ar2/ar2_altfire.wav", 140, 100, 0.4, CHAN_STATIC ) end, }) local BaseClass = ITEMS.base AddItem( "satchels", { PrintName = "#Item.satchels.Name", Description = "#Item.satchels.Description", Category = "utility", Base = "base", Model = "models/benny/weapons/testgun.mdl", HoldType = "handgun", Vars = { ["Float"] = { "Delay", }, }, ["Attack"] = function( class, ent, handler ) if ent:GetDelay() > CurTime() then return end ent:SetDelay( CurTime() + 0.5 ) if SERVER then for k, v in ipairs( ents.FindByClass( "b-satchel" ) ) do if v:GetOwner() == ent:GetOwner() then v:Detonate() end end end end, ["AttackAlt"] = function( class, ent, handler ) if ent:GetDelay() > CurTime() then return end ent:SetDelay( CurTime() + 0.5 ) local ply = ent:GetOwner() if SERVER then local bomb = ents.Create("b-satchel") bomb:SetPos( ply:EyePos() + (ply:GetAimVector() * 32) ) bomb:SetAngles( ply:EyeAngles() ) bomb:SetOwner( ply ) bomb:Spawn() local phy = bomb:GetPhysicsObject() phy:SetVelocity( ply:GetAimVector() * 400 ) phy:SetAngleVelocity( Vector( 0, 360, 0 ) ) end end, }) local BaseClass = ITEMS.base AddItem( "toolgun", { PrintName = "#Item.toolgun.Name", Description = "#Item.toolgun.Description", Category = "dev", Base = "base", Model = "models/benny/weapons/testgun.mdl", HoldType = "handgun", Vars = { ["Float"] = { "Delay", }, ["Int"] = { "BurstCount", }, }, ["Attack"] = function( class, ent, handler ) if ent:GetBurstCount() >= 1 then return end if ent:GetDelay() > CurTime() then return end ent:SetDelay( CurTime() + 0.1 ) ent:SetBurstCount( ent:GetBurstCount() + 1 ) handler:EmitSound("weapons/airboat/airboat_gun_lastshot1.wav", 100, 100, 1, CHAN_STATIC) if SERVER then local p = handler:GetOwner() local tr = p:GetEyeTrace() if lol then local summon = ents.Create( "b-npc_human" ) summon:SetPos( tr.HitPos + tr.HitNormal ) local ang = Angle( 0, p:EyeAngles().y+0, 0 ) summon:SetAngles( ang ) summon:Spawn() else local summon = ents.Create( "benny_domflag" ) summon:SetPos( tr.HitPos ) local ang = Angle( 0, 0, 0 ) summon:SetAngles( ang ) summon:Spawn() end end end, ["AttackAlt"] = function( class, ent, handler ) if ent:GetDelay() > CurTime() then return end ent:SetDelay( CurTime() + 0.5 ) end, ["Reload"] = function( class, ent, handler ) end, ["Think"] = function( class, ent, handler ) if ent:GetBurstCount() > 0 and !handler:GetOwner():KeyDown( IN_ATTACK ) then ent:SetBurstCount( 0 ) end end, ["Deploy"] = function( class, ent, handler ) ent:SetDelay( CurTime() + 0.5 ) local ply = handler:GetOwner() ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["deploy"][class.HoldType] ), 0, true ) end, ["Holster"] = function( class, ent, handler ) ent:SetDelay( CurTime() + 0.25 ) local ply = handler:GetOwner() ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["holster"][class.HoldType] ), 0, true ) end, }) local BaseClass = ITEMS.base_firearm do -- Handguns AddItem( "mk23", { PrintName = "#Item.mk23.Name", Description = "#Item.mk23.Description", Category = "pistol", Base = "base_firearm", Model = "models/benny/weapons/test_mk23.mdl", HoldType = "handgun", DefaultBodygroups = { false, false, 1 }, ClipSize = 12, Delay = (60/320), FireSound = { "benny/weapons/usp/sup_01.ogg", "benny/weapons/usp/sup_02.ogg", "benny/weapons/usp/sup_03.ogg", }, MagOutSound = "benny/weapons/usp/magout.ogg", MagInSound = "benny/weapons/usp/magin.ogg", BoltDropSound = "benny/weapons/usp/slidedrop.ogg", BoltPullSound = "benny/weapons/glock/cock.ogg", Accuracy = 5/60, BurstCount = 1, Accuracy_Add = 0.5, Accuracy_Reset = 0.4, Accuracy_Decay = 5, }) AddItem( "cz75", { PrintName = "#Item.cz75.Name", Description = "#Item.cz75.Description", Category = "pistol", Base = "base_firearm", Model = "models/benny/weapons/test_cz75.mdl", HoldType = "handgun", ClipSize = 17, Delay = (60/480), FireSound = { "benny/weapons/m92/01.ogg", "benny/weapons/m92/02.ogg", "benny/weapons/m92/03.ogg", }, MagOutSound = "benny/weapons/m92/magout.ogg", MagInSound = "benny/weapons/m92/magin.ogg", BoltDropSound = "benny/weapons/m92/slidedrop.ogg", BoltPullSound = "benny/weapons/glock/cock.ogg", Accuracy = 5/60, BurstCount = 1, Accuracy_Add = 0.5, Accuracy_Reset = 0.4, Accuracy_Decay = 5, }) AddItem( "g18", { PrintName = "#Item.g18.Name", Description = "#Item.g18.Description", Category = "pistol", Base = "base_firearm", Model = "models/benny/weapons/test_g18.mdl", HoldType = "handgun", ClipSize = 33, Delay = (60/1000), FireSound = { "benny/weapons/glock/01.ogg", "benny/weapons/glock/02.ogg", "benny/weapons/glock/03.ogg", }, MagOutSound = "benny/weapons/glock/magout.ogg", MagInSound = "benny/weapons/glock/magin.ogg", BoltDropSound = "benny/weapons/glock/cock.ogg", BoltPullSound = "benny/weapons/glock/cock.ogg", Accuracy = 5/60, --BurstCount = 1, Accuracy_Add = 0.5, Accuracy_Reset = 0.4, Accuracy_Decay = 5, }) end do -- Rifles AddItem( "fnc", { PrintName = "#Item.fnc.Name", Description = "#Item.fnc.Description", Category = "assaultrifle", Base = "base_firearm", Model = "models/benny/weapons/test_fnc.mdl",--"models/weapons/w_rif_ar556.mdl", HoldType = "rifle", ClipSize = 30, Delay = (60/800), FireSound = { "benny/weapons/m16a2/01.ogg", "benny/weapons/m16a2/02.ogg", "benny/weapons/m16a2/03.ogg", }, Accuracy = 1, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) AddItem( "oicw", { PrintName = "#Item.oicw.Name", Description = "#Item.oicw.Description", Category = "assaultrifle", Base = "base_firearm_ubgl", Model = "models/benny/weapons/test_oicw.mdl", HoldType = "rifle", ClipSize = 30, Delay = (60/800), FireSound = { "benny/weapons/stoner63/01.ogg", "benny/weapons/stoner63/02.ogg", "benny/weapons/stoner63/03.ogg", }, Accuracy = 1, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) AddItem( "qbz", { PrintName = "#Item.qbz.Name", Description = "#Item.qbz.Description", Category = "assaultrifle", Base = "base_firearm", Model = "models/benny/weapons/test_qbz.mdl",--"models/weapons/w_rif_ar556.mdl", HoldType = "rifle", ClipSize = 30, Delay = (60/750), FireSound = { "benny/weapons/stoner63/01.ogg", "benny/weapons/stoner63/02.ogg", "benny/weapons/stoner63/03.ogg", }, Accuracy = 1, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) AddItem( "m16a2", { PrintName = "#Item.m16a2.Name", Description = "#Item.m16a2.Description", Category = "assaultrifle", Base = "base_firearm", Model = "models/benny/weapons/test_m16a2.mdl",--"models/weapons/w_rif_m16a2.mdl", HoldType = "rifle", ClipSize = 30, Delay = (60/1050), BurstCount = 3, BurstRunaway = true, BurstAuto = true, BurstDelay = 0.2, FireSound = { "benny/weapons/m16a2/01.ogg", "benny/weapons/m16a2/02.ogg", "benny/weapons/m16a2/03.ogg", }, Accuracy = 1, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) end do -- MGs AddItem( "qbb", { PrintName = "#Item.qbb.Name", Description = "#Item.qbb.Description", Category = "machinegun", Base = "base_firearm", Model = "models/benny/weapons/test_qbb.mdl", HoldType = "rifle", ClipSize = 75, Delay = (60/750), FireSound = { "benny/weapons/stoner63/01.ogg", "benny/weapons/stoner63/02.ogg", "benny/weapons/stoner63/03.ogg", }, Accuracy = 1, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) AddItem( "stoner", { PrintName = "#Item.stoner.Name", Description = "#Item.stoner.Description", Category = "machinegun", Base = "base_firearm", Model = "models/benny/weapons/test_stoner.mdl", HoldType = "rifle", ClipSize = 100, Delay = (60/880), FireSound = { "benny/weapons/stoner63/01.ogg", "benny/weapons/stoner63/02.ogg", "benny/weapons/stoner63/03.ogg", }, Accuracy = 1, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) AddItem( "hk21", { PrintName = "#Item.hk21.Name", Description = "#Item.hk21.Description", Category = "machinegun", Base = "base_firearm", Model = "models/benny/weapons/test_hk21.mdl", HoldType = "rifle", ClipSize = 70, Delay = (60/640), FireSound = { "benny/weapons/hk21/39_01.ogg", "benny/weapons/hk21/39_02.ogg", "benny/weapons/hk21/39_03.ogg", }, Accuracy = 1, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) end do -- SMGs AddItem( "tmp", { PrintName = "#Item.tmp.Name", Description = "#Item.tmp.Description", Category = "smg", Base = "base_firearm", Model = "models/benny/weapons/test_tmp.mdl",--"models/weapons/w_rif_ar556.mdl", HoldType = "handgun", ClipSize = 25, Delay = (60/850), FireSound = { "benny/weapons/tmp/01.ogg", "benny/weapons/tmp/02.ogg", "benny/weapons/tmp/03.ogg", }, }) AddItem( "mp7", { PrintName = "#Item.mp7.Name", Description = "#Item.mp7.Description", Category = "smg", Base = "base_firearm", Model = "models/benny/weapons/test_mp7.mdl",--"models/weapons/w_rif_ar556.mdl", HoldType = "handgun", ClipSize = 20, Delay = (60/950), FireSound = { "benny/weapons/mp7/01.ogg", "benny/weapons/mp7/02.ogg", "benny/weapons/mp7/03.ogg", }, }) AddItem( "mp5k", { PrintName = "#Item.mp5k.Name", Description = "#Item.mp5k.Description", Category = "smg", Base = "base_firearm", Model = "models/benny/weapons/test_mp5k.mdl",--"models/weapons/w_rif_ar556.mdl", HoldType = "handgun", ClipSize = 30, Delay = (60/750), FireSound = { "benny/weapons/mp5k/01.ogg", "benny/weapons/mp5k/02.ogg", "benny/weapons/mp5k/03.ogg", }, }) AddItem( "mac11", { PrintName = "#Item.mac11.Name", Description = "#Item.mac11.Description", Category = "smg", Base = "base_firearm", Model = "models/benny/weapons/test_mac10.mdl",--"models/weapons/w_rif_ar556.mdl", HoldType = "handgun", ClipSize = 20, Delay = (60/1000), FireSound = { "benny/weapons/mac11/01.ogg", "benny/weapons/mac11/02.ogg", "benny/weapons/mac11/03.ogg", }, }) end do -- Shotguns AddItem( "spas12", { PrintName = "#Item.spas12.Name", Description = "#Item.spas12.Description", Category = "shotgun", Base = "base_firearm", Model = "models/benny/weapons/test_spas12.mdl", HoldType = "rifle", ClipSize = 8, Pellets = 8, Delay = 0.4, BurstCount = 1, FireSound = { "benny/weapons/spas12/01.ogg", "benny/weapons/spas12/02.ogg", "benny/weapons/spas12/03.ogg", }, MagOutSound = "benny/weapons/spas12/magout-01.ogg", MagInSound = "benny/weapons/spas12/magout-02.ogg", BoltDropSound = "benny/weapons/spas12/magin.ogg", BoltPullSound = "benny/weapons/glock/magin.ogg", Accuracy = 8, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) AddItem( "aa12", { PrintName = "#Item.aa12.Name", Description = "#Item.aa12.Description", Category = "shotgun", Base = "base_firearm", Model = "models/benny/weapons/test_aa12.mdl", HoldType = "rifle", ClipSize = 8, Pellets = 8, Delay = 0.22, BurstCount = 1, FireSound = { "benny/weapons/spas12/01.ogg", "benny/weapons/spas12/02.ogg", "benny/weapons/spas12/03.ogg", }, MagOutSound = "benny/weapons/spas12/magout-01.ogg", MagInSound = "benny/weapons/spas12/magout-02.ogg", BoltDropSound = "benny/weapons/spas12/magin.ogg", BoltPullSound = "benny/weapons/glock/magin.ogg", Accuracy = 8, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) AddItem( "db", { PrintName = "#Item.db.Name", Description = "#Item.db.Description", Category = "shotgun", Base = "base_firearm", Model = "models/benny/weapons/test_db.mdl", HoldType = "rifle", ClipSize = 2, Pellets = 8, Delay = 0.4, BurstCount = 1, FireSound = { "benny/weapons/spas12/01.ogg", "benny/weapons/spas12/02.ogg", "benny/weapons/spas12/03.ogg", }, MagOutSound = "benny/weapons/spas12/magout-01.ogg", MagInSound = "benny/weapons/spas12/magout-02.ogg", BoltDropSound = "benny/weapons/spas12/magin.ogg", BoltPullSound = "benny/weapons/glock/magin.ogg", Accuracy = 4, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) AddItem( "1887", { PrintName = "#Item.1887.Name", Description = "#Item.1887.Description", Category = "shotgun", Base = "base_firearm", Model = "models/benny/weapons/test_1887.mdl", HoldType = "rifle", ClipSize = 5, Pellets = 8, Delay = 0.4, BurstCount = 1, FireSound = { "benny/weapons/spas12/01.ogg", "benny/weapons/spas12/02.ogg", "benny/weapons/spas12/03.ogg", }, MagOutSound = "benny/weapons/spas12/magout-01.ogg", MagInSound = "benny/weapons/spas12/magout-02.ogg", BoltDropSound = "benny/weapons/spas12/magin.ogg", BoltPullSound = "benny/weapons/glock/magin.ogg", Accuracy = 8, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) AddItem( "spas15", { PrintName = "#Item.spas15.Name", Description = "#Item.spas15.Description", Category = "shotgun", Base = "base_firearm", Model = "models/benny/weapons/test_spas15.mdl", HoldType = "rifle", ClipSize = 6, Pellets = 8, Delay = 0.6, BurstCount = 1, FireSound = { "benny/weapons/spas12/01.ogg", "benny/weapons/spas12/02.ogg", "benny/weapons/spas12/03.ogg", }, MagOutSound = "benny/weapons/spas12/magout-01.ogg", MagInSound = "benny/weapons/spas12/magout-02.ogg", BoltDropSound = "benny/weapons/spas12/magin.ogg", BoltPullSound = "benny/weapons/glock/magin.ogg", Accuracy = 8, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) AddItem( "r870", { PrintName = "#Item.r870.Name", Description = "#Item.r870.Description", Category = "shotgun", Base = "base_firearm", Model = "models/benny/weapons/test_r870.mdl", HoldType = "rifle", ClipSize = 4, Pellets = 8, Delay = 0.6, BurstCount = 1, FireSound = { "benny/weapons/spas12/01.ogg", "benny/weapons/spas12/02.ogg", "benny/weapons/spas12/03.ogg", }, MagOutSound = "benny/weapons/spas12/magout-01.ogg", MagInSound = "benny/weapons/spas12/magout-02.ogg", BoltDropSound = "benny/weapons/spas12/magin.ogg", BoltPullSound = "benny/weapons/glock/magin.ogg", Accuracy = 8, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) AddItem( "striker", { PrintName = "#Item.striker.Name", Description = "#Item.striker.Description", Category = "shotgun", Base = "base_firearm", Model = "models/benny/weapons/test_striker.mdl", HoldType = "rifle", ClipSize = 12, Pellets = 8, Delay = 0.3, BurstCount = 1, FireSound = { "benny/weapons/spas12/01.ogg", "benny/weapons/spas12/02.ogg", "benny/weapons/spas12/03.ogg", }, MagOutSound = "benny/weapons/spas12/magout-01.ogg", MagInSound = "benny/weapons/spas12/magout-02.ogg", BoltDropSound = "benny/weapons/spas12/magin.ogg", BoltPullSound = "benny/weapons/glock/magin.ogg", Accuracy = 8, Accuracy_Add = 0.4, Accuracy_Reset = 0.4, Accuracy_Decay = 12, }) end -- bat -- bat_wood -- machete -- kabar -- baton -- deagle -- cz75a -- glock -- 1911 -- mk23 -- nambu -- anaconda -- tmp -- mp7 -- mp5k -- mac11 -- bizon -- chicom -- fnc -- qbz -- m16a2 for ID, Data in pairs(ITEMS) do local tent = {} tent.Base = "b-itembase" tent.PrintName = Data.PrintName or ID tent.ID = ID tent.Class = ITEMS[ID] tent.Spawnable = true tent.AdminOnly = false tent.Category = "Other" -- print("aei_" .. ID) scripted_ents.Register( tent, "b-item_" .. ID ) end