mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
191 lines
5.7 KiB
Lua
191 lines
5.7 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/
|
||
|
|
--]]
|
||
|
|
|
||
|
|
|
||
|
|
include( 'shared.lua' )
|
||
|
|
include( 'player.lua' )
|
||
|
|
include( 'npc.lua' )
|
||
|
|
include( 'variable_edit.lua' )
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Name: gamemode:Initialize()
|
||
|
|
Desc: Called immediately after starting the gamemode
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function GM:Initialize()
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Name: gamemode:InitPostEntity()
|
||
|
|
Desc: Called as soon as all map entities have been spawned
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function GM:InitPostEntity()
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Name: gamemode:Think()
|
||
|
|
Desc: Called every frame
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function GM:Think()
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Name: gamemode:ShutDown()
|
||
|
|
Desc: Called when the Lua system is about to shut down
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function GM:ShutDown()
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Name: gamemode:DoPlayerDeath( )
|
||
|
|
Desc: Carries out actions when the player dies
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function GM:DoPlayerDeath( ply, attacker, dmginfo )
|
||
|
|
|
||
|
|
if ( !dmginfo:IsDamageType( DMG_REMOVENORAGDOLL ) ) then
|
||
|
|
ply:CreateRagdoll()
|
||
|
|
end
|
||
|
|
|
||
|
|
ply:AddDeaths( 1 )
|
||
|
|
|
||
|
|
if ( attacker:IsValid() && attacker:IsPlayer() ) then
|
||
|
|
|
||
|
|
if ( attacker == ply ) then
|
||
|
|
attacker:AddFrags( -1 )
|
||
|
|
else
|
||
|
|
attacker:AddFrags( 1 )
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Name: gamemode:PlayerShouldTakeDamage
|
||
|
|
Return true if this player should take damage from this attacker
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function GM:PlayerShouldTakeDamage( ply, attacker )
|
||
|
|
return true
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Name: gamemode:EntityTakeDamage( ent, info )
|
||
|
|
Desc: The entity has received damage
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function GM:EntityTakeDamage( ent, info )
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Name: gamemode:PlayerHurt( )
|
||
|
|
Desc: Called when a player is hurt.
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function GM:PlayerHurt( player, attacker, healthleft, healthtaken )
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Name: gamemode:CreateEntityRagdoll( entity, ragdoll )
|
||
|
|
Desc: A ragdoll of an entity has been created
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function GM:CreateEntityRagdoll( entity, ragdoll )
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Set the ServerName every 30 seconds in case it changes..
|
||
|
|
-- This is for backwards compatibility only - client can now use GetHostName()
|
||
|
|
local function HostnameThink()
|
||
|
|
|
||
|
|
SetGlobalString( "ServerName", GetHostName() )
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
timer.Create( "HostnameThink", 30, 0, HostnameThink )
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Show the default team selection screen
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function GM:ShowTeam( ply )
|
||
|
|
|
||
|
|
if ( !GAMEMODE.TeamBased ) then return end
|
||
|
|
|
||
|
|
local TimeBetweenSwitches = GAMEMODE.SecondsBetweenTeamSwitches or 10
|
||
|
|
if ( ply.LastTeamSwitch && RealTime() - ply.LastTeamSwitch < TimeBetweenSwitches ) then
|
||
|
|
ply.LastTeamSwitch = ply.LastTeamSwitch + 1
|
||
|
|
ply:ChatPrint( Format( "Please wait %i more seconds before trying to change team again", ( TimeBetweenSwitches - ( RealTime() - ply.LastTeamSwitch ) ) + 1 ) )
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
-- For clientside see cl_pickteam.lua
|
||
|
|
ply:SendLua( "GAMEMODE:ShowTeam()" )
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
--
|
||
|
|
-- CheckPassword( steamid, networkid, server_password, password, name )
|
||
|
|
--
|
||
|
|
-- Called every time a non-localhost player joins the server. steamid is their 64bit
|
||
|
|
-- steamid. Return false and a reason to reject their join. Return true to allow
|
||
|
|
-- them to join.
|
||
|
|
--
|
||
|
|
function GM:CheckPassword( steamid, networkid, server_password, password, name )
|
||
|
|
|
||
|
|
-- The server has sv_password set
|
||
|
|
if ( server_password != "" ) then
|
||
|
|
|
||
|
|
-- The joining clients password doesn't match sv_password
|
||
|
|
if ( server_password != password ) then
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
--
|
||
|
|
-- Returning true means they're allowed to join the server
|
||
|
|
--
|
||
|
|
return true
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Name: gamemode:FinishMove( player, movedata )
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function GM:VehicleMove( ply, vehicle, mv )
|
||
|
|
|
||
|
|
--
|
||
|
|
-- On duck toggle third person view
|
||
|
|
--
|
||
|
|
if ( mv:KeyPressed( IN_DUCK ) && vehicle.SetThirdPersonMode ) then
|
||
|
|
vehicle:SetThirdPersonMode( !vehicle:GetThirdPersonMode() )
|
||
|
|
end
|
||
|
|
|
||
|
|
--
|
||
|
|
-- Adjust the camera distance with the mouse wheel
|
||
|
|
--
|
||
|
|
local iWheel = ply:GetCurrentCommand():GetMouseWheel()
|
||
|
|
if ( iWheel != 0 && vehicle.SetCameraDistance ) then
|
||
|
|
-- The distance is a multiplier
|
||
|
|
-- Actual camera distance = ( renderradius + renderradius * dist )
|
||
|
|
-- so -1 will be zero.. clamp it there.
|
||
|
|
local newdist = math.Clamp( vehicle:GetCameraDistance() - iWheel * 0.03 * ( 1.1 + vehicle:GetCameraDistance() ), -1, 10 )
|
||
|
|
vehicle:SetCameraDistance( newdist )
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Name: gamemode:PreUndo( undo )
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function GM:PreUndo( undo )
|
||
|
|
return true
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Name: gamemode:PreUndo( undo )
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function GM:PostUndo( undo, count )
|
||
|
|
end
|