mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
186 lines
5.3 KiB
Lua
186 lines
5.3 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/
|
|
--]]
|
|
|
|
--[[---------------------------------------------------------
|
|
|
|
Sandbox Gamemode
|
|
|
|
This is GMod's default gamemode
|
|
|
|
-----------------------------------------------------------]]
|
|
|
|
-- These files get sent to the client
|
|
|
|
AddCSLuaFile( "cl_hints.lua" )
|
|
AddCSLuaFile( "cl_init.lua" )
|
|
AddCSLuaFile( "cl_notice.lua" )
|
|
AddCSLuaFile( "cl_search_models.lua" )
|
|
AddCSLuaFile( "cl_spawnmenu.lua" )
|
|
AddCSLuaFile( "cl_worldtips.lua" )
|
|
AddCSLuaFile( "persistence.lua" )
|
|
AddCSLuaFile( "player_extension.lua" )
|
|
AddCSLuaFile( "save_load.lua" )
|
|
AddCSLuaFile( "shared.lua" )
|
|
AddCSLuaFile( "gui/IconEditor.lua" )
|
|
|
|
include( 'shared.lua' )
|
|
include( 'commands.lua' )
|
|
include( 'player.lua' )
|
|
include( 'spawnmenu/init.lua' )
|
|
|
|
--
|
|
-- Make BaseClass available
|
|
--
|
|
DEFINE_BASECLASS( "gamemode_base" )
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:PlayerSpawn()
|
|
Desc: Called when a player spawns
|
|
-----------------------------------------------------------]]
|
|
function GM:PlayerSpawn( pl, transiton )
|
|
|
|
player_manager.SetPlayerClass( pl, "player_sandbox" )
|
|
|
|
BaseClass.PlayerSpawn( self, pl, transiton )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:OnPhysgunFreeze( weapon, phys, ent, player )
|
|
Desc: The physgun wants to freeze a prop
|
|
-----------------------------------------------------------]]
|
|
function GM:OnPhysgunFreeze( weapon, phys, ent, ply )
|
|
|
|
-- Don't freeze persistent props (should already be frozen)
|
|
if ( ent:GetPersistent() && GetConVarString( "sbox_persist" ):Trim() != "" ) then return false end
|
|
|
|
BaseClass.OnPhysgunFreeze( self, weapon, phys, ent, ply )
|
|
|
|
ply:SendHint( "PhysgunUnfreeze", 0.3 )
|
|
ply:SuppressHint( "PhysgunFreeze" )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:OnPhysgunReload( weapon, player )
|
|
Desc: The physgun wants to unfreeze
|
|
-----------------------------------------------------------]]
|
|
function GM:OnPhysgunReload( weapon, ply )
|
|
|
|
local num = ply:PhysgunUnfreeze()
|
|
|
|
if ( num > 0 ) then
|
|
ply:SendLua( string.format( "GAMEMODE:UnfrozeObjects(%d)", num ) )
|
|
end
|
|
|
|
ply:SuppressHint( "PhysgunUnfreeze" )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: gamemode:PlayerShouldTakeDamage
|
|
Return true if this player should take damage from this attacker
|
|
Note: This is a shared function - the client will think they can
|
|
damage the players even though they can't. This just means the
|
|
prediction will show blood.
|
|
-----------------------------------------------------------]]
|
|
function GM:PlayerShouldTakeDamage( ply, attacker )
|
|
|
|
-- Global godmode, players can't be damaged in any way
|
|
if ( cvars.Bool( "sbox_godmode", false ) ) then return false end
|
|
|
|
-- No player vs player damage
|
|
if ( attacker:IsValid() && attacker:IsPlayer() && ply != attacker ) then
|
|
return cvars.Bool( "sbox_playershurtplayers", true )
|
|
end
|
|
|
|
-- Default, let the player be hurt
|
|
return true
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Show the search when f1 is pressed
|
|
-----------------------------------------------------------]]
|
|
function GM:ShowHelp( ply )
|
|
|
|
ply:SendLua( "hook.Run( 'StartSearch' )" )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Called once on the player's first spawn
|
|
-----------------------------------------------------------]]
|
|
function GM:PlayerInitialSpawn( ply, transiton )
|
|
|
|
BaseClass.PlayerInitialSpawn( self, ply, transiton )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
A ragdoll of an entity has been created
|
|
-----------------------------------------------------------]]
|
|
function GM:CreateEntityRagdoll( entity, ragdoll )
|
|
|
|
-- Replace the entity with the ragdoll in cleanups etc
|
|
undo.ReplaceEntity( entity, ragdoll )
|
|
cleanup.ReplaceEntity( entity, ragdoll )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Player unfroze an object
|
|
-----------------------------------------------------------]]
|
|
function GM:PlayerUnfrozeObject( ply, entity, physobject )
|
|
|
|
local effectdata = EffectData()
|
|
effectdata:SetOrigin( physobject:GetPos() )
|
|
effectdata:SetEntity( entity )
|
|
util.Effect( "phys_unfreeze", effectdata, true, true )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Player froze an object
|
|
-----------------------------------------------------------]]
|
|
function GM:PlayerFrozeObject( ply, entity, physobject )
|
|
|
|
if ( DisablePropCreateEffect ) then return end
|
|
|
|
local effectdata = EffectData()
|
|
effectdata:SetOrigin( physobject:GetPos() )
|
|
effectdata:SetEntity( entity )
|
|
util.Effect( "phys_freeze", effectdata, true, true )
|
|
|
|
end
|
|
|
|
--
|
|
-- Who can edit variables?
|
|
-- If you're writing prop protection or something, you'll
|
|
-- probably want to hook or override this function.
|
|
--
|
|
function GM:CanEditVariable( ent, ply, key, val, editor )
|
|
|
|
-- Only allow admins to edit admin only variables!
|
|
local isAdmin = ply:IsAdmin() || game.SinglePlayer()
|
|
if ( editor.AdminOnly && !isAdmin ) then
|
|
return false
|
|
end
|
|
|
|
-- This entity decides who can edit its variables
|
|
if ( isfunction( ent.CanEditVariables ) ) then
|
|
return ent:CanEditVariables( ply )
|
|
end
|
|
|
|
-- default in sandbox is.. anyone can edit anything.
|
|
return true
|
|
|
|
end
|