mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
Upload
This commit is contained in:
185
gamemodes/sandbox/gamemode/init.lua
Normal file
185
gamemodes/sandbox/gamemode/init.lua
Normal file
@@ -0,0 +1,185 @@
|
||||
--[[
|
||||
| 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
|
||||
Reference in New Issue
Block a user