Recoil tweaks, no move in pregame, sound,

This commit is contained in:
Fesiug 2023-12-22 07:45:02 -05:00
parent dd680e2b4b
commit 5baa31e570
12 changed files with 71 additions and 11 deletions

View File

@ -65,6 +65,10 @@ function SWEP:PrimaryAttack( mine )
recoil.dist = Lerp( self:GetBubbleRecoil(), self.RecoilDistStart, self.RecoilDistEnd ) -- total distance to travel recoil.dist = Lerp( self:GetBubbleRecoil(), self.RecoilDistStart, self.RecoilDistEnd ) -- total distance to travel
--recoil.up2 = recoil.up + 180
--recoil.speed2 = recoil.speed * 0.25
--recoil.dist2 = recoil.dist
table.insert( self.RecoilTable, recoil ) table.insert( self.RecoilTable, recoil )
end end
end end

View File

@ -7,16 +7,31 @@ function SWEP:Think()
if CLIENT and IsFirstTimePredicted() then if CLIENT and IsFirstTimePredicted() then
for i, data in pairs( self.RecoilTable ) do for i, data in pairs( self.RecoilTable ) do
local ft = FrameTime() local ft = FrameTime()
local fp = ft * data.speed local diff = data.dist - math.Approach( data.dist, 0, ft * data.speed )
data.dist = math.Approach( data.dist, 0, fp ) data.dist = math.Approach( data.dist, 0, ft * data.speed )
local m_p, m_y = math.cos(math.rad(data.up)), math.sin(math.rad(data.up)) local m_p, m_y = math.cos(math.rad(data.up)), math.sin(math.rad(data.up))
local p_p, p_y = m_p * fp, m_y * fp local p_p, p_y = m_p * diff, m_y * diff
p:SetEyeAngles( p:EyeAngles() - Angle( p_p, p_y, 0 ) ) p:SetEyeAngles( p:EyeAngles() - Angle( p_p, p_y, 0 ) )
if data.dist == 0 then
self.RecoilTable[i] = nil if data.up2 then
if data.dist == 0 then
local diff = data.dist2 - math.Approach( data.dist2, 0, ft * data.speed2 )
data.dist2 = math.Approach( data.dist2, 0, ft * data.speed2 )
local m_p, m_y = math.cos(math.rad(data.up2)), math.sin(math.rad(data.up2))
local p_p, p_y = m_p * diff, m_y * diff
p:SetEyeAngles( p:EyeAngles() - Angle( p_p, p_y, 0 ) )
end
if data.dist2 == 0 then
self.RecoilTable[i] = nil
end
else
if data.dist == 0 then
self.RecoilTable[i] = nil
end
end end
end end
end end

View File

@ -37,7 +37,7 @@ SWEP.SpreadEnd = 10
SWEP.RecoilUp = 33 SWEP.RecoilUp = 33
SWEP.RecoilSpeed = 90 SWEP.RecoilSpeed = 90
SWEP.RecoilDistStart = 0 SWEP.RecoilDistStart = 1
SWEP.RecoilDistEnd = 10 SWEP.RecoilDistEnd = 10
SWEP.RecoilDistFunc = math.ease.InExpo SWEP.RecoilDistFunc = math.ease.InExpo

View File

@ -31,5 +31,5 @@ SWEP.SpreadEnd = 3
SWEP.RecoilUp = 45 SWEP.RecoilUp = 45
SWEP.RecoilSpeed = 40 SWEP.RecoilSpeed = 40
SWEP.RecoilDistStart = 1 SWEP.RecoilDistStart = 2
SWEP.RecoilDistEnd = 3 SWEP.RecoilDistEnd = 3

View File

@ -105,6 +105,9 @@ hook.Add("HUDPaint", "CNR_HUD", function()
for i, ent in ents.Iterator() do for i, ent in ents.Iterator() do
if ( ent:GetClass() == "cnr_logic" ) then gamelogic = ent print("Located CNR game logic entity") break end if ( ent:GetClass() == "cnr_logic" ) then gamelogic = ent print("Located CNR game logic entity") break end
end end
if !gamelogic:IsValid() then
print("Couldn't locate CNR game logic entity!")
end
end end
do do
@ -149,7 +152,7 @@ hook.Add("HUDPaint", "CNR_HUD", function()
surface.SetDrawColor( color_white ) surface.SetDrawColor( color_white )
surface.DrawRect( n_x, n_y, n_w, n_h ) surface.DrawRect( n_x, n_y, n_w, n_h )
draw.SimpleText( "ROUND NUMBER", "CNR_HUD_3", n_x + b, n_y + s(4), color_black ) draw.SimpleText( "ROUND NUMBER", "CNR_HUD_3", n_x + b, n_y + s(4), color_black )
draw.SimpleText( gamelogic:GetRound() .. " - " .. gamelogic:GetSwappedAtRound() .. " : " .. (gamelogic:GetTeamSwap() and "Swap" or "Not"), "CNR_HUD_4", n_x + b, n_y + s(12), color_black ) draw.SimpleText( gamelogic:GetRound(), "CNR_HUD_4", n_x + b, n_y + s(12), color_black )
end end
end end

View File

@ -1 +1,11 @@
include("shared.lua") include("shared.lua")
net.Receive("CNR_Logic_Ingame", function()
Entity(0):EmitSound( "cnr/events/start.ogg", 0, 100, 0.5, CHAN_STATIC )
end)
net.Receive("CNR_Logic_Postgame", function()
Entity(0):EmitSound( "cnr/events/win.ogg", 0, 100, 0.5, CHAN_STATIC )
end)
net.Receive("CNR_Logic_Pregame", function()
Entity(0):EmitSound( "cnr/events/pregame.ogg", 0, 100, 0.5, CHAN_STATIC )
end)

View File

@ -16,6 +16,9 @@ STATE_INGAME = 3
STATE_POSTGAME = 4 STATE_POSTGAME = 4
if SERVER then if SERVER then
util.AddNetworkString("CNR_Logic_Ingame")
util.AddNetworkString("CNR_Logic_Postgame")
util.AddNetworkString("CNR_Logic_Pregame")
gamelogic = NULL gamelogic = NULL
hook.Add( "Think", "CNR_GameLogic", function() hook.Add( "Think", "CNR_GameLogic", function()
if !gamelogic:IsValid() then if !gamelogic:IsValid() then
@ -54,6 +57,8 @@ if SERVER then
-- Begin round -- Begin round
state = STATE_INGAME state = STATE_INGAME
gamelogic:SetRoundStartedAt( RealTime() ) gamelogic:SetRoundStartedAt( RealTime() )
net.Start( "CNR_Logic_Ingame" )
net.Broadcast()
end end
end end
@ -62,6 +67,8 @@ if SERVER then
if (gamelogic:GetRoundStartedAt() + CONVARS["time_round"]:GetInt()) <= RealTime() then if (gamelogic:GetRoundStartedAt() + CONVARS["time_round"]:GetInt()) <= RealTime() then
state = STATE_POSTGAME state = STATE_POSTGAME
gamelogic:SetRoundFinishedAt( RealTime() ) gamelogic:SetRoundFinishedAt( RealTime() )
net.Start( "CNR_Logic_Postgame" )
net.Broadcast()
end end
end end
@ -85,6 +92,8 @@ if SERVER then
for i, v in player.Iterator() do for i, v in player.Iterator() do
v:Spawn() v:Spawn()
end end
net.Start( "CNR_Logic_Pregame" )
net.Broadcast()
end end
end end
@ -96,7 +105,7 @@ LOGIC = {}
function LOGIC:GetLogic() function LOGIC:GetLogic()
for i, ent in ents.Iterator() do for i, ent in ents.Iterator() do
if ( ent:GetClass() == "cnr_logic" ) then return ent end if ( ent:GetClass() == "cnr_logic" ) and ent.GetState then return ent end
end end
if SERVER then if SERVER then
gamelogic = ents.Create( "cnr_logic" ) gamelogic = ents.Create( "cnr_logic" )

View File

@ -136,4 +136,23 @@ function GM:PlayerSetModel( p )
else else
p:SetModel( "models/player/group03/male_07.mdl" ) p:SetModel( "models/player/group03/male_07.mdl" )
end end
end end
hook.Add( "StartCommand", "CNR_StartCommand", function( ply, cmd )
if ( ply:IsBot() or !ply:Alive() ) then return end
local gamelogic = LOGIC:GetLogic()
if IsValid( gamelogic ) and gamelogic:GetState() == STATE_PREGAME then
cmd:ClearMovement()
cmd:ClearButtons()
end
end)
hook.Add( "Move", "CNR_Move", function( ply, mv )
local gamelogic = LOGIC:GetLogic()
if IsValid( gamelogic ) and gamelogic:GetState() == STATE_PREGAME then
mv:SetMaxClientSpeed( 0 )
mv:SetMaxSpeed( 0 )
end
end)

BIN
sound/cnr/events/lose.ogg Normal file

Binary file not shown.

Binary file not shown.

BIN
sound/cnr/events/start.ogg Normal file

Binary file not shown.

BIN
sound/cnr/events/win.ogg Normal file

Binary file not shown.