mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
283 lines
8.9 KiB
Lua
283 lines
8.9 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/
|
|
--]]
|
|
|
|
|
|
--[[---------------------------------------------------------
|
|
|
|
This file should contain variables and functions that are
|
|
the same on both client and server.
|
|
|
|
This file will get sent to the client - so don't add
|
|
anything to this file that you don't want them to be
|
|
able to see.
|
|
|
|
-----------------------------------------------------------]]
|
|
|
|
include( "obj_player_extend.lua" )
|
|
|
|
include( "gravitygun.lua" )
|
|
include( "player_shd.lua" )
|
|
include( "animations.lua" )
|
|
include( "player_class/player_default.lua" )
|
|
|
|
GM.Name = "Base Gamemode"
|
|
GM.Author = "Garry Newman"
|
|
GM.Email = "garrynewman@gmail.com"
|
|
GM.Website = "www.garry.tv"
|
|
GM.TeamBased = false
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:KeyPress( )
|
|
Desc: Player pressed a key (see IN enums)
|
|
-----------------------------------------------------------]]
|
|
function GM:KeyPress( player, key )
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:KeyRelease( )
|
|
Desc: Player released a key (see IN enums)
|
|
-----------------------------------------------------------]]
|
|
function GM:KeyRelease( player, key )
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:PlayerConnect( )
|
|
Desc: Player has connects to the server (hasn't spawned)
|
|
-----------------------------------------------------------]]
|
|
function GM:PlayerConnect( name, address )
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:PropBreak( )
|
|
Desc: Prop has been broken
|
|
-----------------------------------------------------------]]
|
|
function GM:PropBreak( attacker, prop )
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:PhysgunPickup( )
|
|
Desc: Return true if player can pickup entity
|
|
-----------------------------------------------------------]]
|
|
function GM:PhysgunPickup( ply, ent )
|
|
|
|
-- Don't pick up players
|
|
if ( ent:GetClass() == "player" ) then return false end
|
|
|
|
return true
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:PhysgunDrop( )
|
|
Desc: Dropped an entity
|
|
-----------------------------------------------------------]]
|
|
function GM:PhysgunDrop( ply, ent )
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: Text to show in the server browser
|
|
-----------------------------------------------------------]]
|
|
function GM:GetGameDescription()
|
|
return self.Name
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: Saved
|
|
-----------------------------------------------------------]]
|
|
function GM:Saved()
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: Restored
|
|
-----------------------------------------------------------]]
|
|
function GM:Restored()
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: EntityRemoved
|
|
Desc: Called right before an entity is removed. Note that this
|
|
isn't going to be totally reliable on the client since the client
|
|
only knows about entities that it has had in its PVS.
|
|
-----------------------------------------------------------]]
|
|
function GM:EntityRemoved( ent )
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: Tick
|
|
Desc: Like Think except called every tick on both client and server
|
|
-----------------------------------------------------------]]
|
|
function GM:Tick()
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: OnEntityCreated
|
|
Desc: Called right after the Entity has been made visible to Lua
|
|
-----------------------------------------------------------]]
|
|
function GM:OnEntityCreated( Ent )
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:EntityKeyValue( ent, key, value )
|
|
Desc: Called when an entity has a keyvalue set
|
|
Returning a string it will override the value
|
|
-----------------------------------------------------------]]
|
|
function GM:EntityKeyValue( ent, key, value )
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:CreateTeams()
|
|
Desc: Note - HAS to be shared.
|
|
-----------------------------------------------------------]]
|
|
function GM:CreateTeams()
|
|
|
|
-- Don't do this if not teambased. But if it is teambased we
|
|
-- create a few teams here as an example. If you're making a teambased
|
|
-- gamemode you should override this function in your gamemode
|
|
|
|
if ( !GAMEMODE.TeamBased ) then return end
|
|
|
|
TEAM_BLUE = 1
|
|
team.SetUp( TEAM_BLUE, "Blue Team", Color( 0, 0, 255 ) )
|
|
team.SetSpawnPoint( TEAM_BLUE, "ai_hint" ) -- <-- This would be info_terrorist or some entity that is in your map
|
|
|
|
TEAM_ORANGE = 2
|
|
team.SetUp( TEAM_ORANGE, "Orange Team", Color( 255, 150, 0 ) )
|
|
team.SetSpawnPoint( TEAM_ORANGE, "sky_camera" ) -- <-- This would be info_terrorist or some entity that is in your map
|
|
|
|
TEAM_SEXY = 3
|
|
team.SetUp( TEAM_SEXY, "Sexy Team", Color( 255, 150, 150 ) )
|
|
team.SetSpawnPoint( TEAM_SEXY, "info_player_start" ) -- <-- This would be info_terrorist or some entity that is in your map
|
|
|
|
team.SetSpawnPoint( TEAM_SPECTATOR, "worldspawn" )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:ShouldCollide( Ent1, Ent2 )
|
|
Desc: This should always return true unless you have
|
|
a good reason for it not to.
|
|
-----------------------------------------------------------]]
|
|
function GM:ShouldCollide( Ent1, Ent2 )
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:Move
|
|
This basically overrides the NOCLIP, PLAYERMOVE movement stuff.
|
|
It's what actually performs the move.
|
|
Return true to not perform any default movement actions. (completely override)
|
|
-----------------------------------------------------------]]
|
|
function GM:Move( ply, mv )
|
|
|
|
if ( drive.Move( ply, mv ) ) then return true end
|
|
if ( player_manager.RunClass( ply, "Move", mv ) ) then return true end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
-- Purpose: This is called pre player movement and copies all the data necessary
|
|
-- from the player for movement. Copy from the usercmd to move.
|
|
-----------------------------------------------------------]]
|
|
function GM:SetupMove( ply, mv, cmd )
|
|
|
|
if ( drive.StartMove( ply, mv, cmd ) ) then return true end
|
|
if ( player_manager.RunClass( ply, "StartMove", mv, cmd ) ) then return true end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:FinishMove( player, movedata )
|
|
-----------------------------------------------------------]]
|
|
function GM:FinishMove( ply, mv )
|
|
|
|
if ( drive.FinishMove( ply, mv ) ) then return true end
|
|
if ( player_manager.RunClass( ply, "FinishMove", mv ) ) then return true end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Called after the player's think.
|
|
-----------------------------------------------------------]]
|
|
function GM:PlayerPostThink( ply )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
A player has started driving an entity
|
|
-----------------------------------------------------------]]
|
|
function GM:StartEntityDriving( ent, ply )
|
|
|
|
drive.Start( ply, ent )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
A player has stopped driving an entity
|
|
-----------------------------------------------------------]]
|
|
function GM:EndEntityDriving( ent, ply )
|
|
|
|
drive.End( ply, ent )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
To update the player's animation during a drive
|
|
-----------------------------------------------------------]]
|
|
function GM:PlayerDriveAnimate( ply )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
The gamemode has been reloaded
|
|
-----------------------------------------------------------]]
|
|
function GM:OnReloaded()
|
|
end
|
|
|
|
function GM:PreGamemodeLoaded()
|
|
end
|
|
|
|
function GM:OnGamemodeLoaded()
|
|
end
|
|
|
|
function GM:PostGamemodeLoaded()
|
|
end
|
|
|
|
--
|
|
-- Name: GM:OnViewModelChanged
|
|
-- Desc: Called when the player changes their weapon to another one - and their viewmodel model changes
|
|
-- Arg1: Entity|viewmodel|The viewmodel that is changing
|
|
-- Arg2: string|old|The old model
|
|
-- Arg3: string|new|The new model
|
|
-- Ret1:
|
|
--
|
|
function GM:OnViewModelChanged( vm, old, new )
|
|
|
|
local ply = vm:GetOwner()
|
|
if ( IsValid( ply ) ) then
|
|
player_manager.RunClass( ply, "ViewModelChanged", vm, old, new )
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Disable properties serverside for all non-sandbox derived gamemodes.
|
|
-----------------------------------------------------------]]
|
|
function GM:CanProperty( pl, property, ent )
|
|
return false
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Allow hooks to override bullet without ignoring all other hooks
|
|
-----------------------------------------------------------]]
|
|
function GM:EntityFireBullets( ent, bullets )
|
|
return true
|
|
end
|