mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
205 lines
8.0 KiB
Lua
205 lines
8.0 KiB
Lua
|
|
--[[
|
||
|
|
| This file was obtained through the combined efforts
|
||
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
||
|
|
|
|
||
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
||
|
|
|
|
||
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||
|
|
--]]
|
||
|
|
|
||
|
|
if (!file.Exists("autorun/vj_base_autorun.lua","LUA")) then return end
|
||
|
|
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
SWEP.Base = "weapon_vj_base"
|
||
|
|
SWEP.PrintName = "AR3"
|
||
|
|
SWEP.Author = "Comrade Communist"
|
||
|
|
SWEP.Contact = "http://steamcommunity.com/groups/vrejgaming"
|
||
|
|
SWEP.Purpose = "This weapon is made for Players and NPCs"
|
||
|
|
SWEP.Instructions = "Controls are like a regular weapon."
|
||
|
|
SWEP.Category = "VJ Base"
|
||
|
|
-- Client Settings ---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
if (CLIENT) then
|
||
|
|
SWEP.Slot = 2 -- Which weapon slot you want your SWEP to be in? (1 2 3 4 5 6)
|
||
|
|
SWEP.SlotPos = 4 -- Which part of that slot do you want the SWEP to be in? (1 2 3 4 5 6)
|
||
|
|
SWEP.UseHands = true
|
||
|
|
end
|
||
|
|
-- NPC Settings ---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
SWEP.NPC_NextPrimaryFire = 0.5 -- Next time it can use primary fire
|
||
|
|
SWEP.NPC_TimeUntilFire = 0.01 -- How much time until the bullet/projectile is fired?
|
||
|
|
SWEP.NPC_TimeUntilFireExtraTimers = {0.1,0.2,0.3,0.4,0.5,0.6} -- Extra timers, which will make the gun fire again! | The seconds are counted after the self.NPC_TimeUntilFire!
|
||
|
|
-- Main Settings ---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
SWEP.ViewModel = "models/weapons/c_ar3.mdl"
|
||
|
|
SWEP.WorldModel = "models/weapons/w_ar3.mdl"
|
||
|
|
SWEP.HoldType = "smg"
|
||
|
|
SWEP.Spawnable = true
|
||
|
|
SWEP.AdminSpawnable = false
|
||
|
|
SWEP.NPC_CustomSpread = 0.3
|
||
|
|
-- Primary Fire ---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
SWEP.Primary.Damage = math.random(9,12) -- Damage
|
||
|
|
SWEP.Primary.Force = 1 -- Force applied on the object the bullet hits
|
||
|
|
SWEP.Primary.ClipSize = 300 -- Max amount of bullets per clip
|
||
|
|
SWEP.Primary.Delay = 0.01 -- Time until it can shoot again
|
||
|
|
SWEP.Primary.TracerType = "AirboatGunTracer" -- Tracer type (Examples: AR2, laster, 9mm)
|
||
|
|
SWEP.Primary.Automatic = true -- Is it automatic?
|
||
|
|
SWEP.Primary.Ammo = "AR2" -- Ammo type
|
||
|
|
SWEP.Primary.Sound = {"Weapon_AR2.NPC_Single"}
|
||
|
|
SWEP.Primary.HasDistantSound = true -- Does it have a distant sound when the gun is shot?
|
||
|
|
SWEP.Primary.DistantSound = {"Weapon_AR2.NPC_Single"}
|
||
|
|
SWEP.PrimaryEffects_MuzzleParticles = {"vj_rifle_full_blue"}
|
||
|
|
SWEP.PrimaryEffects_SpawnShells = false
|
||
|
|
SWEP.PrimaryEffects_DynamicLightColor = Color(0, 31, 225)
|
||
|
|
-- Reload Settings ---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
SWEP.HasReloadSound = false -- Does it have a reload sound? Remember even if this is set to false, the animation sound will still play!
|
||
|
|
SWEP.ReloadSound = "weapons/ar2/ar2_reload.wav"
|
||
|
|
SWEP.Reload_TimeUntilAmmoIsSet = 0.8 -- Time until ammo is set to the weapon
|
||
|
|
SWEP.Reload_TimeUntilFinished = 1.8 -- How much time until the player can play idle animation, shoot, etc.
|
||
|
|
-- Idle Settings ---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
SWEP.HasIdleAnimation = true -- Does it have a idle animation?
|
||
|
|
SWEP.AnimTbl_Idle = {ACT_VM_IDLE}
|
||
|
|
SWEP.NextIdle_Deploy = 0.01 -- How much time until it plays the idle animation after the weapon gets deployed
|
||
|
|
SWEP.NextIdle_PrimaryAttack = 0.01 -- How much time until it plays the idle animation after attacking(Primary)
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
function SWEP:CustomOnThink()
|
||
|
|
|
||
|
|
if self.Owner.SquadName == "resistance" then
|
||
|
|
|
||
|
|
if self.Owner.FollowingPlayer == false then
|
||
|
|
self.Owner.AnimTbl_IdleStand = {ACT_IDLE}
|
||
|
|
self.Owner.AnimTbl_Run = {ACT_RUN_RPG}
|
||
|
|
|
||
|
|
self.Owner.AnimTbl_Walk = {ACT_WALK_RIFLE_RELAXED}
|
||
|
|
end
|
||
|
|
if self.Owner.FollowingPlayer == true then
|
||
|
|
self.Owner.AnimTbl_IdleStand = {ACT_IDLE}
|
||
|
|
self.Owner.AnimTbl_Run = {ACT_RUN_RPG}
|
||
|
|
self.Owner.AnimTbl_Walk = {ACT_WALK_RPG_RELAXED}
|
||
|
|
end
|
||
|
|
end
|
||
|
|
if self.Owner.SquadName == "metrocop" then
|
||
|
|
|
||
|
|
if self.Owner.FollowingPlayer == false then
|
||
|
|
self.Owner.AnimTbl_IdleStand = {ACT_IDLE_SMG1}
|
||
|
|
self.Owner.AnimTbl_Run = {ACT_RUN_RIFLE}
|
||
|
|
|
||
|
|
self.Owner.AnimTbl_Walk = {ACT_WALK_RIFLE}
|
||
|
|
end
|
||
|
|
if self.Owner.FollowingPlayer == true then
|
||
|
|
self.Owner.AnimTbl_IdleStand = {ACT_IDLE_SMG1}
|
||
|
|
self.Owner.AnimTbl_Run = {ACT_WALK_RIFLE}
|
||
|
|
self.Owner.AnimTbl_Walk = {ACT_WALK_RIFLE}
|
||
|
|
end
|
||
|
|
end
|
||
|
|
if self.Owner.SquadName == "combine" then
|
||
|
|
|
||
|
|
if self.Owner.FollowingPlayer == false then
|
||
|
|
self.Owner.AnimTbl_IdleStand = {ACT_IDLE_SMG1}
|
||
|
|
self.Owner.AnimTbl_Run = {ACT_RUN_RIFLE}
|
||
|
|
|
||
|
|
self.Owner.AnimTbl_Walk = {ACT_WALK_RIFLE}
|
||
|
|
end
|
||
|
|
if self.Owner.FollowingPlayer == true then
|
||
|
|
self.Owner.AnimTbl_IdleStand = {ACT_IDLE_ANGRY_SMG1}
|
||
|
|
self.Owner.AnimTbl_Run = {ACT_RUN_RIFLE}
|
||
|
|
self.Owner.AnimTbl_Walk = {ACT_WALK_RIFLE}
|
||
|
|
end
|
||
|
|
end
|
||
|
|
if self.Owner.SquadName == "combine_elit" then
|
||
|
|
|
||
|
|
if self.Owner.FollowingPlayer == false then
|
||
|
|
self.Owner.AnimTbl_IdleStand = {ACT_IDLE_SMG1}
|
||
|
|
self.Owner.AnimTbl_Run = {ACT_RUN_RIFLE}
|
||
|
|
|
||
|
|
self.Owner.AnimTbl_Walk = {ACT_WALK_RIFLE}
|
||
|
|
end
|
||
|
|
if self.Owner.FollowingPlayer == true then
|
||
|
|
self.Owner.AnimTbl_IdleStand = {ACT_IDLE_ANGRY_SMG1}
|
||
|
|
self.Owner.AnimTbl_Run = {ACT_RUN_RIFLE}
|
||
|
|
self.Owner.AnimTbl_Walk = {ACT_WALK_RIFLE}
|
||
|
|
end
|
||
|
|
end
|
||
|
|
if self.Owner.SquadName == "combine_nova" then
|
||
|
|
|
||
|
|
if self.Owner.FollowingPlayer == false then
|
||
|
|
self.Owner.AnimTbl_IdleStand = {ACT_IDLE_SMG1}
|
||
|
|
self.Owner.AnimTbl_Run = {ACT_RUN_RIFLE}
|
||
|
|
|
||
|
|
self.Owner.AnimTbl_Walk = {ACT_IDLE_SMG1}
|
||
|
|
end
|
||
|
|
if self.Owner.FollowingPlayer == true then
|
||
|
|
self.Owner.AnimTbl_IdleStand = {ACT_IDLE_ANGRY_SMG1}
|
||
|
|
self.Owner.AnimTbl_Run = {ACT_RUN_RIFLE}
|
||
|
|
self.Owner.AnimTbl_Walk = {ACT_WALK_RIFLE}
|
||
|
|
end
|
||
|
|
end
|
||
|
|
if self.Owner.SquadName == "metrocops" then
|
||
|
|
|
||
|
|
if self.Owner.FollowingPlayer == false then
|
||
|
|
|
||
|
|
self.Owner.AnimTbl_Run = {ACT_RUN}
|
||
|
|
self.Owner.AnimTbl_IdleStand = {ACT_IDLE}
|
||
|
|
self.Owner.AnimTbl_Walk = {ACT_IDLE}
|
||
|
|
end
|
||
|
|
if self.Owner.FollowingPlayer == true then
|
||
|
|
self.Owner.AnimTbl_IdleStand = {ACT_IDLE_SMG1}
|
||
|
|
self.Owner.AnimTbl_Run = {ACT_RUN_RIFLE}
|
||
|
|
self.Owner.AnimTbl_Walk = {ACT_WALK_RIFLE}
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function SWEP:PrimaryAttackEffects()
|
||
|
|
local vjeffectmuz = EffectData()
|
||
|
|
vjeffectmuz:SetOrigin(self.Owner:GetShootPos())
|
||
|
|
vjeffectmuz:SetEntity(self.Weapon)
|
||
|
|
vjeffectmuz:SetStart(self.Owner:GetShootPos())
|
||
|
|
vjeffectmuz:SetNormal(self.Owner:GetAimVector())
|
||
|
|
vjeffectmuz:SetAttachment(1)
|
||
|
|
vjeffectmuz:SetMagnitude(0)
|
||
|
|
util.Effect("VJ_Weapon_RifleMuzzle1",vjeffectmuz)
|
||
|
|
|
||
|
|
if GetConVarNumber("vj_wep_nobulletshells") == 0 then
|
||
|
|
if !self.Owner:IsPlayer() then
|
||
|
|
local vjeffect = EffectData()
|
||
|
|
vjeffect:SetEntity(self.Weapon)
|
||
|
|
vjeffect:SetOrigin(self.Owner:GetShootPos())
|
||
|
|
vjeffect:SetNormal(self.Owner:GetAimVector())
|
||
|
|
vjeffect:SetAttachment(1)
|
||
|
|
util.Effect("VJ_Weapon_RifleShell1",vjeffect) end
|
||
|
|
end
|
||
|
|
|
||
|
|
if (SERVER) then
|
||
|
|
if GetConVarNumber("vj_wep_nomuszzleflash") == 0 then
|
||
|
|
local FireLight1 = ents.Create("light_dynamic")
|
||
|
|
FireLight1:SetKeyValue("brightness", "2")
|
||
|
|
if self.Owner:IsPlayer() then
|
||
|
|
FireLight1:SetKeyValue("distance", "200") else FireLight1:SetKeyValue("distance", "150") end
|
||
|
|
FireLight1:SetLocalPos(self.Owner:GetShootPos() +self:GetForward()*40 + self:GetUp()*-40)
|
||
|
|
FireLight1:SetLocalAngles(self:GetAngles())
|
||
|
|
FireLight1:Fire("Color", "255 150 60")
|
||
|
|
FireLight1:SetParent(self)
|
||
|
|
FireLight1:Spawn()
|
||
|
|
FireLight1:Activate()
|
||
|
|
FireLight1:Fire("TurnOn", "", 0)
|
||
|
|
self:DeleteOnRemove(FireLight1)
|
||
|
|
timer.Simple(0.07,function() if self:IsValid() then FireLight1:Remove() end end)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function SWEP:CustomOnPrimaryAttack_BulletCallback(attacker,tr,dmginfo)
|
||
|
|
local dm = math.random(1,2)
|
||
|
|
if ( dm == 1 ) then
|
||
|
|
dmginfo:SetDamageType(DMG_BLAST)
|
||
|
|
elseif ( dm == 2 ) then
|
||
|
|
dmginfo:SetDamageType(DMG_AIRBOAT)
|
||
|
|
else
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|