Harbor Roleplay => HRP Suggestions => Topic started by: Bishop Wallace (Bish) on September 03, 2017, 02:21:05 pm
Title: Explosives
Post by: Bishop Wallace (Bish) on September 03, 2017, 02:21:05 pm
I think we should add in 1 grenade launcher and one grenade.
I modified the files for the M79 GL (single shot grenade launcher) to do better. It has less explosive radius than before but still does the same damage. It would be a good single shot grenade launcher that isn't too OP and could be a cheaper alt to the current RPG. Still expensive but not quite as expensive as the RPG. The RPG is direct fire and can cross the map while the grenade launcher is indirect fire that is more close range.
-- Variables that are used on both client and server SWEP.Gun = ("m9k_m79gl") -- must be the name of your swep but NO CAPITALS! if (GetConVar(SWEP.Gun.."_allowed")) != nil then if not (GetConVar(SWEP.Gun.."_allowed"):GetBool()) then SWEP.Base = "bobs_blacklisted" SWEP.PrintName = SWEP.Gun return end end SWEP.Category= "M9K Specialties" SWEP.Author= "" SWEP.Contact= "" SWEP.Purpose= "" SWEP.Instructions= "" SWEP.MuzzleAttachment= "1" -- Should be "1" for CSS models or "muzzle" for hl2 models SWEP.ShellEjectAttachment= "2" -- Should be "2" for CSS models or "1" for hl2 models SWEP.PrintName= "M79 GL"-- Weapon name (Shown on HUD) SWEP.Slot= 4-- Slot in the weapon selection menu SWEP.SlotPos= 29-- Position in the slot SWEP.DrawAmmo= true-- Should draw the default HL2 ammo counter SWEP.DrawWeaponInfoBox= false-- Should draw the weapon info box SWEP.BounceWeaponIcon = false-- Should the weapon icon bounce? SWEP.DrawCrosshair= true-- set false if you want no crosshair SWEP.Weight= 30-- rank relative ot other weapons. bigger is better SWEP.AutoSwitchTo= true-- Auto switch to if we pick it up SWEP.AutoSwitchFrom= true-- Auto switch from if you pick up a better weapon SWEP.HoldType = "shotgun"-- how others view you carrying the weapon -- normal melee melee2 fist knife smg ar2 pistol rpg physgun grenade shotgun crossbow slam passive -- you're mostly going to use ar2, smg, shotgun or pistol. rpg and crossbow make for good sniper rifles
SWEP.ViewModelFOV= 70 SWEP.ViewModelFlip= false SWEP.ViewModel= "models/weapons/v_m79_grenadelauncher.mdl"-- Weapon view model SWEP.WorldModel= "models/weapons/w_m79_grenadelauncher.mdl"-- Weapon world model SWEP.ShowWorldModel= true
SWEP.Primary.Sound= Sound("40mmGrenade.Single")-- Script that calls the primary fire sound SWEP.Primary.RPM= 15-- This is in Rounds Per Minute SWEP.Primary.ClipSize= 1-- Size of a clip SWEP.Primary.DefaultClip= 1-- Bullets you start with SWEP.Primary.KickUp= 0.3-- Maximum up recoil (rise) SWEP.Primary.KickDown= 0.3-- Maximum down recoil (skeet) SWEP.Primary.KickHorizontal= 0.3-- Maximum up recoil (stock) SWEP.Primary.Automatic= false-- Automatic = true; Semi Auto = false SWEP.Primary.Ammo= "40mmGrenade"
SWEP.Secondary.IronFOV= 60-- How much you 'zoom' in. Less is more! SWEP.Primary.Round = ("m9k_milkor_nade")--NAME OF ENTITY GOES HERE SWEP.data = {}--The starting firemode SWEP.data.ironsights= 1
SWEP.ShellTime= .5
SWEP.Primary.NumShots= 1-- How many bullets to shoot per trigger pull SWEP.Primary.Damage= 30-- Base damage per bullet SWEP.Primary.Spread= .025-- Define from-the-hip accuracy (1 is terrible, .0001 is exact) SWEP.Primary.IronAccuracy = .015 -- Ironsight accuracy, should be the same for shotguns
-- Enter iron sight info and bone mod info below SWEP.IronSightsPos = Vector(-4.633, -7.651, 2.108) SWEP.IronSightsAng = Vector(1.294, 0.15, 0) SWEP.SightsPos = Vector(-4.633, -7.651, 2.108) SWEP.SightsAng = Vector(1.294, 0.15, 0) SWEP.RunSightsPos = Vector(3.279, -5.574, 0) SWEP.RunSightsAng = Vector(-1.721, 49.917, 0)
function SWEP:Deploy() if not IsValid(self) then return end if not IsValid(self.Owner) then return end if not self.Owner:IsPlayer() then return end self:SetHoldType(self.HoldType) local timerName = "ShotgunReload_" .. self.Owner:UniqueID() if (timer.Exists(timerName)) then timer.Destroy(timerName) end
if (SERVER) then self:SetIronsights(false) end self.NextReload = CurTime() + 1
return true end
function SWEP:PrimaryAttack() if self:CanPrimaryAttack() then ------------------------------------- and self.Weapon.NextFireTime <= CurTime() then if !self.Owner:KeyDown(IN_SPEED) and !self.Owner:KeyDown(IN_RELOAD) then self:FireRocket() self.Weapon:EmitSound(self.Primary.Sound) self.Weapon:TakePrimaryAmmo(1) self.Weapon:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) local fx = EffectData() self.Owner:SetAnimation( PLAYER_ATTACK1 ) self.Owner:MuzzleFlash() self.Weapon:SetNextPrimaryFire(CurTime()+1.75) ----------------------------------------------------self.Weapon.NextFireTime = (CurTime() + 2) else self:Reload() end end self:CheckWeaponsAndAmmo() end
function SWEP:FireRocket() local aim = self.Owner:GetAimVector() local side = aim:Cross(Vector(0,0,1)) local up = side:Cross(aim) local pos = self.Owner:GetShootPos() + side * 6 + up * -5
if SERVER then local rocket = ents.Create(self.Primary.Round) if !rocket:IsValid() then return false end rocket:SetAngles(aim:Angle()+Angle(90,0,0)) rocket:SetPos(pos) rocket:SetOwner(self.Owner) rocket:Spawn() rocket:Activate() end end
function SWEP:Reload()
if not IsValid(self) then return end if not IsValid(self.Owner) then return end if not self.Owner:IsPlayer() then return end
local maxcap = self.Primary.ClipSize local spaceavail = self.Weapon:Clip1() local shellz = (maxcap) - (spaceavail) + 1
if (timer.Exists("ShotgunReload")) or self.NextReload > CurTime() or maxcap == spaceavail then return end if self.Owner:IsPlayer() then
self.Weapon:SetNextPrimaryFire(CurTime() + 1.75) -- wait one second before you can shoot again self.Weapon:SendWeaponAnim(ACT_SHOTGUN_RELOAD_START) -- sending start reload anim self.Owner:SetAnimation( PLAYER_RELOAD ) self.NextReload = CurTime() + 1 if (SERVER) then self.Owner:SetFOV( 0, 0.15 ) self:SetIronsights(false) end if SERVER and self.Owner:Alive() then local timerName = "ShotgunReload_" .. self.Owner:UniqueID() timer.Create(timerName, (self.ShellTime + .05), shellz, function() if not IsValid(self) then return end if IsValid(self.Owner) and IsValid(self.Weapon) then if self.Owner:Alive() then self:InsertShell() end end end) end elseif self.Owner:IsNPC() then self.Weapon:DefaultReload(ACT_VM_RELOAD) end end
function SWEP:CheckWeaponsAndAmmo() if SERVER and self.Weapon != nil then if self.Weapon:Clip1() == 0 && self.Owner:GetAmmoCount( self.Weapon:GetPrimaryAmmoType() ) == 0 and (GetConVar("M9KWeaponStrip"):GetBool()) then timer.Simple(.5, function() if SERVER then if not IsValid(self) then return end if not IsValid(self.Owner) then return end self.Owner:StripWeapon(self.Gun) end end) else self:Reload() end end end
function SWEP:Think() if not IsValid(self) then return end if not IsValid(self.Owner) then return end if not self.Owner:IsPlayer() then return end if self.InsertingShell == true and self.Owner:Alive() then vm = self.Owner:GetViewModel()-- its a messy way to do it, but holy shit, it works! vm:ResetSequence(vm:LookupSequence("after_reload")) -- Fuck you, garry, why the hell can't I reset a sequence in multiplayer? vm:SetPlaybackRate(.01) -- or if I can, why does facepunch have to be such a shitty community, and your wiki have to be an unreadable goddamn mess? self.InsertingShell = false -- You get paid for this, what's your excuse? end self:IronSight() end
if GetConVar("M9KDefaultClip") == nil then print("M9KDefaultClip is missing! You may have hit the lua limit!") else if GetConVar("M9KDefaultClip"):GetInt() != -1 then SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize * GetConVar("M9KDefaultClip"):GetInt() end end
if GetConVar("M9KUniqueSlots") != nil then if not (GetConVar("M9KUniqueSlots"):GetBool()) then SWEP.SlotPos = 2 end end
Just drag and drop into the M79 GL grenade launcher code and replace all of the code in that file and it will work. Keep the old code for the weapon backed up just in case though.
Now, onto grenades. We could either add in the HL2 grenade or the M9k frag. Honestly, I think the HL2 frag would be better just because if we go to change weapon bases in the future, it won't require any changing... that and you dont have to nerf it.
Title: Re: Explosives
Post by: Jakob Swanson (Jakob Swanson) on November 14, 2017, 09:12:51 pm
I personally think that explosives in general are a bad route to go down without a stable server, and with HRPs' tenancy to crash with even the amount of props 30 people all sum up to, I highly discourage the use of this. Although, it is a wonderful idea!
Title: Re: Explosives
Post by: Bishop Wallace (Bish) on November 19, 2017, 09:55:17 am
I personally think that explosives in general are a bad route to go down without a stable server, and with HRPs' tenancy to crash with even the amount of props 30 people all sum up to, I highly discourage the use of this. Although, it is a wonderful idea!
We already have an RPG. This won't make much difference.. just more things players can buy.
Title: Re: Explosives
Post by: Zafiro on November 21, 2017, 04:12:49 pm
I don't think it would bother performance as in my experience most BMD items are barely used especially something highly expensive like explosives however, I wouldn't want the RPG to have a cheaper counterpart.
Title: Re: Explosives
Post by: Bishop Wallace (Bish) on November 21, 2017, 07:43:05 pm
I don't think it would bother performance as in my experience most BMD items are barely used especially something highly expensive like explosives however, I wouldn't want the RPG to have a cheaper counterpart.
With this in place, its "Cheaper" but it doesn't do the same. It has less damage, less radius... just will have a slightly lower cost. The rounds themselves won't even kill in one hit if you have 100 health.