From 3282cb3a7f61900a8599f87649da68aeed512dc2 Mon Sep 17 00:00:00 2001 From: Fesiug Date: Thu, 21 Dec 2023 13:58:05 -0500 Subject: [PATCH] Preliminary shit --- copsnrobbers.code-workspace | 16 +++ gamemodes/copsnrobbers/backgrounds/none.png | Bin 0 -> 14099 bytes gamemodes/copsnrobbers/copsnrobbers.txt | 53 +++++++ .../entities/entities/cnr_goal.lua | 0 .../entities/entities/cnr_palette.lua | 0 .../entities/weapons/cnr/cl_vm.lua | 17 +++ .../entities/weapons/cnr/sh_reload.lua | 14 ++ .../entities/weapons/cnr/sh_shoot.lua | 48 +++++++ .../entities/weapons/cnr/sh_think.lua | 16 +++ .../entities/weapons/cnr/shared.lua | 64 +++++++++ .../entities/weapons/cnr_ak47.lua | 17 +++ .../entities/weapons/cnr_glock.lua | 18 +++ .../entities/weapons/cnr_m249.lua | 17 +++ .../entities/weapons/cnr_m4a1.lua | 17 +++ .../entities/weapons/cnr_m4s90.lua | 18 +++ .../entities/weapons/cnr_mac10.lua | 17 +++ .../entities/weapons/cnr_mossberg.lua | 18 +++ .../copsnrobbers/entities/weapons/cnr_mp5.lua | 17 +++ .../entities/weapons/cnr_p220.lua | 18 +++ .../copsnrobbers/entities/weapons/cnr_usp.lua | 18 +++ gamemodes/copsnrobbers/gamemode/cl_hud.lua | 83 +++++++++++ .../copsnrobbers/{ => gamemode}/cl_init.lua | 0 .../copsnrobbers/{ => gamemode}/init.lua | 2 +- .../gamemode/player_class_cnr.lua | 28 ++++ gamemodes/copsnrobbers/gamemode/shared.lua | 134 ++++++++++++++++++ gamemodes/copsnrobbers/icon24.png | Bin 0 -> 824 bytes gamemodes/copsnrobbers/shared.lua | 2 - 27 files changed, 649 insertions(+), 3 deletions(-) create mode 100644 copsnrobbers.code-workspace create mode 100644 gamemodes/copsnrobbers/backgrounds/none.png create mode 100644 gamemodes/copsnrobbers/copsnrobbers.txt create mode 100644 gamemodes/copsnrobbers/entities/entities/cnr_goal.lua create mode 100644 gamemodes/copsnrobbers/entities/entities/cnr_palette.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr/cl_vm.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr/sh_reload.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr/sh_shoot.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr/sh_think.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr/shared.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr_ak47.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr_glock.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr_m249.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr_m4a1.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr_m4s90.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr_mac10.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr_mossberg.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr_mp5.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr_p220.lua create mode 100644 gamemodes/copsnrobbers/entities/weapons/cnr_usp.lua create mode 100644 gamemodes/copsnrobbers/gamemode/cl_hud.lua rename gamemodes/copsnrobbers/{ => gamemode}/cl_init.lua (100%) rename gamemodes/copsnrobbers/{ => gamemode}/init.lua (69%) create mode 100644 gamemodes/copsnrobbers/gamemode/player_class_cnr.lua create mode 100644 gamemodes/copsnrobbers/gamemode/shared.lua create mode 100644 gamemodes/copsnrobbers/icon24.png delete mode 100644 gamemodes/copsnrobbers/shared.lua diff --git a/copsnrobbers.code-workspace b/copsnrobbers.code-workspace new file mode 100644 index 0000000..8b8a1e8 --- /dev/null +++ b/copsnrobbers.code-workspace @@ -0,0 +1,16 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": { + "editor.detectIndentation": false, + "editor.insertSpaces": false + }, + "extensions": { + "recommendations": [ + "venner.vscode-glua-enhanced" + ] + } +} \ No newline at end of file diff --git a/gamemodes/copsnrobbers/backgrounds/none.png b/gamemodes/copsnrobbers/backgrounds/none.png new file mode 100644 index 0000000000000000000000000000000000000000..d5401253a41a174ffe0c8a318dbf58dcd674d340 GIT binary patch literal 14099 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 KQTdPE%l{8VKdUDI literal 0 HcmV?d00001 diff --git a/gamemodes/copsnrobbers/copsnrobbers.txt b/gamemodes/copsnrobbers/copsnrobbers.txt new file mode 100644 index 0000000..a1c9d6c --- /dev/null +++ b/gamemodes/copsnrobbers/copsnrobbers.txt @@ -0,0 +1,53 @@ +"cg" +{ + "base" "base" + "title" "Cops 'n Robbers" + "maps" "^cnr_" + "category" "pvp" + "menusystem" "1" + // "workshopid" "0" + + "settings" + { + 1 + { + "name" "cnr_roundlength" + "text" "Round length (minutes)" + "help" "" + "type" "Numeric" + "default" "3" + } + 2 + { + "name" "cnr_roundlength" + "text" "Haste time (minutes)" + "help" "" + "type" "Numeric" + "default" "1" + } + 3 + { + "name" "cnr_maxrounds" + "text" "Game ends after X rounds" + "help" "" + "type" "Numeric" + "default" "6" + } + 4 + { + "name" "cnr_teamswap" + "text" "Swap teams after X rounds" + "help" "" + "type" "Numeric" + "default" "2" + } + 5 + { + "name" "cnr_friendlyfire" + "text" "Friendly fire" + "help" "Enable friendly fire" + "type" "CheckBox" + "default" "0" + } + } +} \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/entities/cnr_goal.lua b/gamemodes/copsnrobbers/entities/entities/cnr_goal.lua new file mode 100644 index 0000000..e69de29 diff --git a/gamemodes/copsnrobbers/entities/entities/cnr_palette.lua b/gamemodes/copsnrobbers/entities/entities/cnr_palette.lua new file mode 100644 index 0000000..e69de29 diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr/cl_vm.lua b/gamemodes/copsnrobbers/entities/weapons/cnr/cl_vm.lua new file mode 100644 index 0000000..a38519e --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr/cl_vm.lua @@ -0,0 +1,17 @@ + +function SWEP:GetViewModelPosition( pos, ang ) + local p = self:GetOwner() + + local speed = math.Clamp( p:GetVelocity():Length2D()/320, 0, 1 ) + + local newpos, newang = Vector( pos ), Angle( ang ) + + newpos:Add( ang:Right() * self.ActivePos.x ) + newpos:Add( ang:Forward() * self.ActivePos.y ) + newpos:Add( ang:Up() * self.ActivePos.z ) + + newpos:Add( ang:Right() * 2 * math.sin( CurTime() * math.pi * 2 ) * speed ) + newpos:Add( ang:Up() * -0.5 * math.abs( math.sin( CurTime() * math.pi * 2 ) ) * speed ) + + return newpos, newang +end \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr/sh_reload.lua b/gamemodes/copsnrobbers/entities/weapons/cnr/sh_reload.lua new file mode 100644 index 0000000..91e07a3 --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr/sh_reload.lua @@ -0,0 +1,14 @@ + +function SWEP:Reload() + if self:GetDelay() > CurTime() then + return false + end + if self:Clip1() >= self.Primary.ClipSize then + return false + end + self:SendWeaponAnim( ACT_VM_RELOAD ) + self:GetOwner():GetViewModel():SetPlaybackRate( 2.5 ) + self:SetDelay( CurTime() + self:SequenceDuration()/2.5 ) + self:SetClip1( self.Primary.ClipSize ) + return true +end \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr/sh_shoot.lua b/gamemodes/copsnrobbers/entities/weapons/cnr/sh_shoot.lua new file mode 100644 index 0000000..baff605 --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr/sh_shoot.lua @@ -0,0 +1,48 @@ + +function SWEP:Spread() + local spread = math.Clamp( math.TimeFraction( self.SpreadBurstStart, self.SpreadBurstEnd, self:GetBurstCount() ), 0, 1 ) + spread = Lerp( spread, self.SpreadStart, self.SpreadEnd ) + return spread +end + +function SWEP:PrimaryAttack( mine ) + if self:GetDelay() > CurTime() then + return false + end + if self:Clip1() == 0 then + self:EmitSound( "weapons/clipempty_rifle.wav", 90, 100, 1, CHAN_STATIC ) + self:SetDelay( CurTime() + self.Delay ) + return false + end + + if self:GetBurstCount() >= self.MaxBurst then + return false + end + + self:SetDelay( CurTime() + self.Delay ) + self:SetBurstCount( self:GetBurstCount() + 1 ) + self:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) + self:SetClip1( self:Clip1() - 1 ) + + self:EmitSound( self.Sound_Shoot, 90, 100, 1, CHAN_WEAPON ) + + local spread = math.rad( self:Spread() ) + self:FireBullets( { + Attacker = self:GetOwner(), + Tracer = 1, + Damage = 25, + Force = 1, + Num = 1, + Dir = self:GetOwner():EyeAngles():Forward(), + Spread = Vector( spread, spread, 0 ), + Src = self:GetOwner():EyePos(), + Callback = function( attacker, tr, dmginfo ) + end + }) + + return true +end + +function SWEP:SecondaryAttack() + return true +end \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr/sh_think.lua b/gamemodes/copsnrobbers/entities/weapons/cnr/sh_think.lua new file mode 100644 index 0000000..9df4aee --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr/sh_think.lua @@ -0,0 +1,16 @@ + +SWEP.RecoilTable = {} + +function SWEP:Think() + local p = self:GetOwner() + + if CLIENT and IsFirstTimePredicted() then + for i, v in pairs( self.RecoilTable ) do + + end + end + + if !p:KeyDown( IN_ATTACK ) then + self:SetBurstCount( 0 ) + end +end \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr/shared.lua b/gamemodes/copsnrobbers/entities/weapons/cnr/shared.lua new file mode 100644 index 0000000..a4b87fe --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr/shared.lua @@ -0,0 +1,64 @@ + +SWEP.Base = "weapon_base" + +SWEP.PrintName = "CNR weapon base" +SWEP.Slot = 5 + +SWEP.ViewModel = "models/weapons/cstrike/c_rif_ak47.mdl" +SWEP.ViewModelFOV = 90 +SWEP.UseHands = true +SWEP.WorldModel = "models/weapons/w_rif_ak47.mdl" + +SWEP.Sound_Shoot = "weapons/m4a1/m4a1_unsil-1.wav" + +SWEP.Delay = ( 60 / 900 ) +SWEP.MaxBurst = math.huge +SWEP.ActivePos = Vector( 2, -2, -2 ) + +SWEP.SpreadStart = 1 +SWEP.SpreadEnd = 10 +SWEP.SpreadBurstStart = 3 +SWEP.SpreadBurstEnd = 10 + +SWEP.Primary.Ammo = "pistol" +SWEP.Primary.ClipSize = 0 +SWEP.Primary.DefaultClip = 0 +SWEP.Primary.Automatic = true +SWEP.Secondary.Ammo = "none" +SWEP.Secondary.ClipSize = -1 +SWEP.Secondary.DefaultClip = 0 +SWEP.Secondary.Automatic = true + +AddCSLuaFile("sh_think.lua") + include ("sh_think.lua") + +AddCSLuaFile("sh_shoot.lua") + include ("sh_shoot.lua") + +AddCSLuaFile("sh_reload.lua") + include ("sh_reload.lua") + +AddCSLuaFile("cl_vm.lua") +if CLIENT then + include ("cl_vm.lua") +end + +function SWEP:Initialize() + self:SetClip1( self.Primary.ClipSize ) +end + +function SWEP:SetupDataTables() + self:NetworkVar( "Float", 0, "Delay" ) + self:NetworkVar( "Int", 0, "BurstCount" ) +end + +SWEP.m_WeaponDeploySpeed = 10 +SWEP.BobScale = 0 +SWEP.SwayScale = 0 +function SWEP:Deploy() + self:SendWeaponAnim( ACT_VM_IDLE ) + return true +end +function SWEP:Holster() + return true +end \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr_ak47.lua b/gamemodes/copsnrobbers/entities/weapons/cnr_ak47.lua new file mode 100644 index 0000000..6672066 --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr_ak47.lua @@ -0,0 +1,17 @@ + +SWEP.Base = "cnr" + +SWEP.PrintName = "CV-74" +SWEP.Slot = 0 + +SWEP.ViewModel = "models/weapons/cstrike/c_rif_ak47.mdl" +SWEP.ViewModelFOV = 90 +SWEP.WorldModel = "models/weapons/w_rif_ak47.mdl" +SWEP.ActivePos = Vector( 1, -8, -1 ) + +SWEP.Sound_Shoot = "weapons/ak47/ak47-1.wav" + +SWEP.Primary.ClipSize = 30 +SWEP.Delay = ( 60 / 700 ) +SWEP.DamageClose = 25 +SWEP.DamageFar = 13 \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr_glock.lua b/gamemodes/copsnrobbers/entities/weapons/cnr_glock.lua new file mode 100644 index 0000000..a30656e --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr_glock.lua @@ -0,0 +1,18 @@ + +SWEP.Base = "cnr" + +SWEP.PrintName = "CAL.9" +SWEP.Slot = 1 + +SWEP.ViewModel = "models/weapons/cstrike/c_pist_glock18.mdl" +SWEP.ViewModelFOV = 90 +SWEP.WorldModel = "models/weapons/w_pist_glock18.mdl" +SWEP.ActivePos = Vector( 1, -6, -1 ) + +SWEP.Sound_Shoot = "weapons/glock/glock18-1.wav" + +SWEP.Primary.ClipSize = 17 +SWEP.Delay = ( 60 / 500 ) +SWEP.MaxBurst = 1 +SWEP.DamageClose = 22 +SWEP.DamageFar = 11 \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr_m249.lua b/gamemodes/copsnrobbers/entities/weapons/cnr_m249.lua new file mode 100644 index 0000000..440ce53 --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr_m249.lua @@ -0,0 +1,17 @@ + +SWEP.Base = "cnr" + +SWEP.PrintName = "REPT-499" +SWEP.Slot = 0 + +SWEP.ViewModel = "models/weapons/cstrike/c_mach_m249para.mdl" +SWEP.ViewModelFOV = 90 +SWEP.WorldModel = "models/weapons/w_mach_m249para.mdl" +SWEP.ActivePos = Vector( 2, -2, -2 ) + +SWEP.Sound_Shoot = "weapons/p90/p90-1.wav" + +SWEP.Primary.ClipSize = 60 +SWEP.Delay = ( 60 / 700 ) +SWEP.DamageClose = 25 +SWEP.DamageFar = 13 \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr_m4a1.lua b/gamemodes/copsnrobbers/entities/weapons/cnr_m4a1.lua new file mode 100644 index 0000000..a665fb4 --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr_m4a1.lua @@ -0,0 +1,17 @@ + +SWEP.Base = "cnr" + +SWEP.PrintName = "N4A4" +SWEP.Slot = 0 + +SWEP.ViewModel = "models/weapons/cstrike/c_rif_m4a1.mdl" +SWEP.ViewModelFOV = 90 +SWEP.WorldModel = "models/weapons/w_rif_m4a1.mdl" +SWEP.ActivePos = Vector( 2, -2, -2 ) + +SWEP.Sound_Shoot = "weapons/m4a1/m4a1_unsil-1.wav" + +SWEP.Primary.ClipSize = 30 +SWEP.Delay = ( 60 / 900 ) +SWEP.DamageClose = 25 +SWEP.DamageFar = 13 \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr_m4s90.lua b/gamemodes/copsnrobbers/entities/weapons/cnr_m4s90.lua new file mode 100644 index 0000000..f821aa1 --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr_m4s90.lua @@ -0,0 +1,18 @@ + +SWEP.Base = "cnr" + +SWEP.PrintName = "MAXI R90" +SWEP.Slot = 0 + +SWEP.ViewModel = "models/weapons/cstrike/c_shot_xm1014.mdl" +SWEP.ViewModelFOV = 90 +SWEP.WorldModel = "models/weapons/w_shot_xm1014.mdl" +SWEP.ActivePos = Vector( 2, -2, -2 ) + +SWEP.Sound_Shoot = "weapons/xm1014/xm1014-1.wav" + +SWEP.Primary.ClipSize = 5 +SWEP.Delay = ( 60 / 300 ) +SWEP.MaxBurst = 1 +SWEP.DamageClose = 25 +SWEP.DamageFar = 13 \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr_mac10.lua b/gamemodes/copsnrobbers/entities/weapons/cnr_mac10.lua new file mode 100644 index 0000000..9ce5d88 --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr_mac10.lua @@ -0,0 +1,17 @@ + +SWEP.Base = "cnr" + +SWEP.PrintName = "SPITFIRE" +SWEP.Slot = 0 + +SWEP.ViewModel = "models/weapons/cstrike/c_smg_mac10.mdl" +SWEP.ViewModelFOV = 90 +SWEP.WorldModel = "models/weapons/w_smg_mac10.mdl" +SWEP.ActivePos = Vector( 2, -2, -2 ) + +SWEP.Sound_Shoot = "weapons/mac10/mac10-1.wav" + +SWEP.Primary.ClipSize = 32 +SWEP.Delay = ( 60 / 1100 ) +SWEP.DamageClose = 25 +SWEP.DamageFar = 13 \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr_mossberg.lua b/gamemodes/copsnrobbers/entities/weapons/cnr_mossberg.lua new file mode 100644 index 0000000..73d946a --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr_mossberg.lua @@ -0,0 +1,18 @@ + +SWEP.Base = "cnr" + +SWEP.PrintName = "SLIMLINE" +SWEP.Slot = 0 + +SWEP.ViewModel = "models/weapons/cstrike/c_shot_m3super90.mdl" +SWEP.ViewModelFOV = 90 +SWEP.WorldModel = "models/weapons/w_shot_m3super90.mdl" +SWEP.ActivePos = Vector( 2, -2, -2 ) + +SWEP.Sound_Shoot = "weapons/m3/m3-1.wav" + +SWEP.Primary.ClipSize = 4 +SWEP.Delay = ( 60 / 80 ) +SWEP.MaxBurst = 1 +SWEP.DamageClose = 25 +SWEP.DamageFar = 13 \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr_mp5.lua b/gamemodes/copsnrobbers/entities/weapons/cnr_mp5.lua new file mode 100644 index 0000000..112dfad --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr_mp5.lua @@ -0,0 +1,17 @@ + +SWEP.Base = "cnr" + +SWEP.PrintName = "SWORDFISH DELUXE" +SWEP.Slot = 0 + +SWEP.ViewModel = "models/weapons/cstrike/c_smg_mp5.mdl" +SWEP.ViewModelFOV = 90 +SWEP.WorldModel = "models/weapons/w_smg_mp5.mdl" +SWEP.ActivePos = Vector( 2, -2, -2 ) + +SWEP.Sound_Shoot = "weapons/mp5navy/mp5-1.wav" + +SWEP.Primary.ClipSize = 30 +SWEP.Delay = ( 60 / 900 ) +SWEP.DamageClose = 25 +SWEP.DamageFar = 13 \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr_p220.lua b/gamemodes/copsnrobbers/entities/weapons/cnr_p220.lua new file mode 100644 index 0000000..c5d07f6 --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr_p220.lua @@ -0,0 +1,18 @@ + +SWEP.Base = "cnr" + +SWEP.PrintName = "CAL.357" +SWEP.Slot = 1 + +SWEP.ViewModel = "models/weapons/cstrike/c_pist_p228.mdl" +SWEP.ViewModelFOV = 90 +SWEP.WorldModel = "models/weapons/w_pist_p228.mdl" +SWEP.ActivePos = Vector( 1, -6, -1 ) + +SWEP.Sound_Shoot = "weapons/p228/p228-1.wav" + +SWEP.Primary.ClipSize = 13 +SWEP.Delay = ( 60 / 400 ) +SWEP.MaxBurst = 1 +SWEP.DamageClose = 25 +SWEP.DamageFar = 13 \ No newline at end of file diff --git a/gamemodes/copsnrobbers/entities/weapons/cnr_usp.lua b/gamemodes/copsnrobbers/entities/weapons/cnr_usp.lua new file mode 100644 index 0000000..4be0322 --- /dev/null +++ b/gamemodes/copsnrobbers/entities/weapons/cnr_usp.lua @@ -0,0 +1,18 @@ + +SWEP.Base = "cnr" + +SWEP.PrintName = "CAL.45" +SWEP.Slot = 1 + +SWEP.ViewModel = "models/weapons/cstrike/c_pist_usp.mdl" +SWEP.ViewModelFOV = 90 +SWEP.WorldModel = "models/weapons/w_pist_usp.mdl" +SWEP.ActivePos = Vector( 1, -6, -1 ) + +SWEP.Sound_Shoot = "weapons/usp/usp_unsil-1.wav" + +SWEP.Primary.ClipSize = 12 +SWEP.Delay = ( 60 / 400 ) +SWEP.MaxBurst = 1 +SWEP.DamageClose = 25 +SWEP.DamageFar = 13 \ No newline at end of file diff --git a/gamemodes/copsnrobbers/gamemode/cl_hud.lua b/gamemodes/copsnrobbers/gamemode/cl_hud.lua new file mode 100644 index 0000000..e7204c4 --- /dev/null +++ b/gamemodes/copsnrobbers/gamemode/cl_hud.lua @@ -0,0 +1,83 @@ + +local hide = { + ["CHudHealth"] = true, + ["CHudBattery"] = true, + ["CHudAmmo"] = true, + ["CHudSecondaryAmmo"] = true, +} + +hook.Add( "HUDShouldDraw", "HideHUD", function( name ) + if ( hide[ name ] ) then + return false + end +end ) + +surface.CreateFont( "CNR_HUD_1", { + font = "Bahnschrift Light", + size = ScreenScaleH(24), + weight = 0, +}) +surface.CreateFont( "CNR_HUD_2", { + font = "Bahnschrift Bold", + size = ScreenScaleH(48), + weight = 0, +}) + +surface.CreateFont( "CNR_HUD_3", { + font = "Bahnschrift Light", + size = ScreenScaleH(16), + weight = 0, +}) +surface.CreateFont( "CNR_HUD_4", { + font = "Bahnschrift Bold", + size = ScreenScaleH(32), + weight = 0, +}) + +hook.Add("HUDPaint", "CNR_HUD", function() + local p, sw, sh = LocalPlayer(), ScrW(), ScrH() + local c = sw/2 + local s = ScreenScaleH + local c1 = sw*0.125 + local c2 = sw*(1-0.125) + local b = s(8) + + local w = p:GetActiveWeapon() + w = IsValid(w) and w or false + + do + local b_w, b_h = s(64+8), s(64) + local b_x, b_y = c1, sh - b_h - s(16) + surface.SetDrawColor( color_white ) + surface.DrawRect( b_x, b_y, b_w, b_h ) + draw.SimpleText( "HP", "CNR_HUD_1", c1 + b, sh - s(64+12), color_black ) + draw.SimpleText( p:Health(), "CNR_HUD_2", c1 + b, sh - s(64), color_black ) + end + + if w then + local b_w, b_h = s(64+8), s(64) + local b_x, b_y = c2 - b_w, sh - b_h - s(16) + surface.SetDrawColor( color_white ) + surface.DrawRect( b_x, b_y, b_w, b_h ) + draw.SimpleText( "AMMO", "CNR_HUD_1", c2 - b, sh - s(64+12), color_black, TEXT_ALIGN_RIGHT ) + draw.SimpleText( w:Clip1(), "CNR_HUD_2", c2 - b, sh - s(64), color_black, TEXT_ALIGN_RIGHT ) + end + + do + local b_w, b_h = s(82), s(48) + local b_x, b_y = c1, s(16) + surface.SetDrawColor( color_white ) + surface.DrawRect( b_x, b_y, b_w, b_h ) + draw.SimpleText( "TIME", "CNR_HUD_3", b_x + b, b_y + s(4), color_black, TEXT_ALIGN_LEFT ) + draw.SimpleText( string.FormattedTime( -CurTime(), "%02i:%02i"), "CNR_HUD_4", b_x + b, b_y + s(12), color_black, TEXT_ALIGN_LEFT ) + end + + do + local b_w, b_h = s(182), s(32) + local b_x, b_y = c1, s(16+16) + b + b_h + surface.SetDrawColor( color_white ) + surface.DrawRect( b_x, b_y, b_w, b_h ) + draw.SimpleText( "$", "CNR_HUD_4", b_x + b, b_y, color_black, TEXT_ALIGN_LEFT ) + draw.SimpleText( "100,000,000", "CNR_HUD_4", b_x + b_w - b, b_y, color_black, TEXT_ALIGN_RIGHT ) + end +end) \ No newline at end of file diff --git a/gamemodes/copsnrobbers/cl_init.lua b/gamemodes/copsnrobbers/gamemode/cl_init.lua similarity index 100% rename from gamemodes/copsnrobbers/cl_init.lua rename to gamemodes/copsnrobbers/gamemode/cl_init.lua diff --git a/gamemodes/copsnrobbers/init.lua b/gamemodes/copsnrobbers/gamemode/init.lua similarity index 69% rename from gamemodes/copsnrobbers/init.lua rename to gamemodes/copsnrobbers/gamemode/init.lua index b8ab5f2..ad68616 100644 --- a/gamemodes/copsnrobbers/init.lua +++ b/gamemodes/copsnrobbers/gamemode/init.lua @@ -1,3 +1,3 @@ AddCSLuaFile("cl_init.lua") AddCSLuaFile("shared.lua") -include("shared.lua") + include ("shared.lua") diff --git a/gamemodes/copsnrobbers/gamemode/player_class_cnr.lua b/gamemodes/copsnrobbers/gamemode/player_class_cnr.lua new file mode 100644 index 0000000..cc36160 --- /dev/null +++ b/gamemodes/copsnrobbers/gamemode/player_class_cnr.lua @@ -0,0 +1,28 @@ + +AddCSLuaFile() + +local PLAYER = {} + +PLAYER.DisplayName = "CNR Player Class" + +PLAYER.SlowWalkSpeed = 200 +PLAYER.WalkSpeed = 250 +PLAYER.RunSpeed = 280 +PLAYER.CrouchedWalkSpeed = 0.3 +PLAYER.DuckSpeed = 0.3 +PLAYER.UnDuckSpeed = 0.3 +PLAYER.JumpPower = 200 +PLAYER.CanUseFlashlight = true +PLAYER.MaxHealth = 100 +PLAYER.MaxArmor = 100 +PLAYER.StartHealth = 100 +PLAYER.StartArmor = 0 +PLAYER.DropWeaponOnDie = false +PLAYER.TeammateNoCollide = true +PLAYER.AvoidPlayers = true +PLAYER.UseVMHands = true + +function PLAYER:SetupDataTables() +end + +player_manager.RegisterClass( "player_cnr", PLAYER, "player_default" ) diff --git a/gamemodes/copsnrobbers/gamemode/shared.lua b/gamemodes/copsnrobbers/gamemode/shared.lua new file mode 100644 index 0000000..27789d1 --- /dev/null +++ b/gamemodes/copsnrobbers/gamemode/shared.lua @@ -0,0 +1,134 @@ + +GM.Name = "Cops 'n Robbers" +GM.Author = "Fesiug" +GM.Email = "publicfesiug@outlook.com" +GM.Website = "https://github.com/Fesiug/copsnrobbers" +GM.TeamBased = true + +AddCSLuaFile("cl_hud.lua") +if CLIENT then + include ("cl_hud.lua") +end + +AddCSLuaFile("player_class_cnr.lua") + include ("player_class_cnr.lua") + +function GM:Initialize() + -- Do stuff +end + +function GM:OnDamagedByExplosion( ply, dmginfo ) + -- ply:SetDSP( 35, false ) +end +function GM:PlayerCanJoinTeam( ply, teamid ) + local TimeBetweenSwitches = 0.5 + if ( ply.LastTeamSwitch && RealTime() - ply.LastTeamSwitch < TimeBetweenSwitches ) then + ply.LastTeamSwitch = ply.LastTeamSwitch + 0.5 + ply:ChatPrint( Format( "Please wait %i more seconds before trying to change team again", ( TimeBetweenSwitches - ( RealTime() - ply.LastTeamSwitch ) ) + 1 ) ) + return false + end + + if ( ply:Team() == teamid ) then + ply:ChatPrint( "You're already on that team" ) + return false + end + + return true +end + +-- Write this so at the end of a round you can shittalk +local sv_alltalk = GetConVar( "sv_alltalk" ) +function GM:PlayerCanHearPlayersVoice( pListener, pTalker ) + local alltalk = sv_alltalk:GetInt() + if ( alltalk >= 1 ) then return true, alltalk == 2 end + + return pListener:Team() == pTalker:Team(), false +end + +function GM:PlayerShouldTaunt( ply, actid ) + return false +end +function GM:AllowPlayerPickup( ply, object ) + return false +end +function GM:PlayerDeathSound() + return true +end + +function GM:CreateTeams() + + TEAM_SIDEA = 1 + team.SetUp( TEAM_SIDEA, "Side A", Color( 200, 200, 255 ) ) + team.SetSpawnPoint( TEAM_SIDEA, "info_player_counterterrorist" ) + + TEAM_SIDEB = 2 + team.SetUp( TEAM_SIDEB, "Side B", Color( 255, 200, 200 ) ) + team.SetSpawnPoint( TEAM_SIDEB, "info_player_terrorist" ) + + team.SetSpawnPoint( TEAM_SPECTATOR, "worldspawn" ) + +end + +function GM:ScalePlayerDamage( ply, hitgroup, dmginfo ) + -- More damage if we're shot in the head + if ( hitgroup == HITGROUP_HEAD ) then + dmginfo:ScaleDamage( 2 ) + end +end + +function GM:PlayerSpawn( p, transition ) + player_manager.SetPlayerClass( p, "player_cnr" ) + + if ( self.TeamBased and ( p:Team() == TEAM_SPECTATOR or p:Team() == TEAM_UNASSIGNED ) ) then + self:PlayerSpawnAsSpectator( p ) + return + end + p:UnSpectate() + + p:SetSlowWalkSpeed( 190 ) + p:SetWalkSpeed( 320 ) + p:SetRunSpeed( 320 ) + + if ( !transition ) then + GAMEMODE:PlayerLoadout( p ) + end + + GAMEMODE:PlayerSetModel( p ) + + p:SetupHands() +end + +function GM:PlayerLoadout( p ) + if p:Team() == TEAM_SIDEA then + p:Give("cnr_m4a1") + p:Give("cnr_usp") + elseif p:Team() == TEAM_SIDEB then + p:Give("cnr_ak47") + p:Give("cnr_glock") + end + + return true +end + +function GM:PlayerSetModel( p ) + if p:Team() == TEAM_SIDEA then + p:SetModel( "models/player/combine_soldier.mdl" ) + elseif p:Team() == TEAM_SIDEB then + p:SetModel( "models/player/group03/male_07.mdl" ) + end +end + +concommand.Add( "cnr_cheat_weapons", function( p ) + p:Give( "cnr_ak47" ) + p:Give( "cnr_glock" ) + p:Give( "cnr_m4a1" ) + p:Give( "cnr_m4s90" ) + p:Give( "cnr_m249" ) + p:Give( "cnr_mac10" ) + p:Give( "cnr_mossberg" ) + p:Give( "cnr_mp5" ) + p:Give( "cnr_p220" ) + p:Give( "cnr_usp" ) +end) + +-- Include module loader here diff --git a/gamemodes/copsnrobbers/icon24.png b/gamemodes/copsnrobbers/icon24.png new file mode 100644 index 0000000000000000000000000000000000000000..110ff010e55292b09ef5c5ee20c15112d910f20b GIT binary patch literal 824 zcmV-81IPS{P)Px#1ZP1_K>z@;j|==^1poj6k5EihMF0Q*Dk>^PMMXS3JP8R20|NsF1_l-u79=Dj zF)=YMEiDWT3FM_N_SV+cdwY91IXQ`miJhID1qB7HtgPnd=JWIO_xJbo z^z_)+*pZQuLPA2>+1c{)^0l?KV`F1GJ39{#4}gGxy1Ke)X=%pB#&dIXWMpKPmX_Pw z+uGXN;o;$be}5<_C{R#P7#J9ml9Jrq+@PSKsi~>(@bFhxSFo_K>+9=AP z<>lqRzP?jaQ=FWfgM)+W>gsH4Y~bMFsHmtuK0X{A93CDXD=RAm1O%$8s`2shtE;Po zgoLiHuGiPs#Kgo}T3T3GSorw({QUgy@9+Ej`~Lp^{r&y=`ufz=)HF0St*xz#i;Iwu zkaTo(%gf9E|NpeKv=kH+XJ==&wzl8j-pGGD$>1R5(v#7zHE&MkZz! z1_o9(D3^tugOiIJ$^il%UOs*SK?WgV5eQ#YOk6@zN?HcOV_=Y#lUGnwQf5$*RD}qr zNvmsUYH7J!(h5u?fVGYdh|;iyXf(F72h#{( zZR`M|9G#rOTo+e2FwMZg=I-HU?&-zg?IWq<>*sG701?&>41zEig0=ZVLcxbg~!JP`PmrSp|nGE`O9FfdfrGSt-r z6*4q5HbG=Tpr+Z79TE1dEucurWXptbM*$T80|NlYelf`V7@Xk%0000