Preliminary shit

This commit is contained in:
Fesiug 2023-12-21 13:58:05 -05:00
parent 84a71874d3
commit 3282cb3a7f
27 changed files with 649 additions and 3 deletions

View File

@ -0,0 +1,16 @@
{
"folders": [
{
"path": "."
}
],
"settings": {
"editor.detectIndentation": false,
"editor.insertSpaces": false
},
"extensions": {
"recommendations": [
"venner.vscode-glua-enhanced"
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -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"
}
}
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -1,3 +1,3 @@
AddCSLuaFile("cl_init.lua") AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua") AddCSLuaFile("shared.lua")
include("shared.lua") include ("shared.lua")

View File

@ -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" )

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 824 B

View File

@ -1,2 +0,0 @@
-- Include module loader here