--[[ | 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 -----------------------------------------------------------]] include( "shared.lua" ) include( "cl_spawnmenu.lua" ) include( "cl_notice.lua" ) include( "cl_hints.lua" ) include( "cl_worldtips.lua" ) include( "cl_search_models.lua" ) include( "gui/IconEditor.lua" ) -- -- Make BaseClass available -- DEFINE_BASECLASS( "gamemode_base" ) local physgun_halo = CreateConVar( "physgun_halo", "1", { FCVAR_ARCHIVE }, "Draw the Physics Gun grab effect?" ) function GM:Initialize() BaseClass.Initialize( self ) end function GM:LimitHit( name ) local str = "#SBoxLimit_" .. name local translated = language.GetPhrase( str ) if ( str == translated ) then -- No translation available, apply our own translated = string.format( language.GetPhrase( "hint.hitXlimit" ), language.GetPhrase( name ) ) end self:AddNotify( translated, NOTIFY_ERROR, 6 ) surface.PlaySound( "buttons/button10.wav" ) end function GM:OnUndo( name, strCustomString ) local text = strCustomString if ( !text ) then local strId = "#Undone_" .. name text = language.GetPhrase( strId ) if ( strId == text ) then -- No translation available, generate our own text = string.format( language.GetPhrase( "hint.undoneX" ), language.GetPhrase( name ) ) end end -- This is a hack for SWEPs, Tools, etc, that already have hardcoded English only translations -- TODO: Do this for non English languages only local strMatch = string.match( text, "^Undone (.*)$" ) if ( strMatch ) then text = string.format( language.GetPhrase( "hint.undoneX" ), language.GetPhrase( strMatch ) ) end self:AddNotify( text, NOTIFY_UNDO, 2 ) -- Find a better sound :X surface.PlaySound( "buttons/button15.wav" ) end function GM:OnCleanup( name ) local str = "#Cleaned_" .. name local translated = language.GetPhrase( str ) if ( str == translated ) then -- No translation available, apply our own translated = string.format( language.GetPhrase( "hint.cleanedX" ), language.GetPhrase( name ) ) end self:AddNotify( translated, NOTIFY_CLEANUP, 5 ) -- Find a better sound :X surface.PlaySound( "buttons/button15.wav" ) end function GM:UnfrozeObjects( num ) self:AddNotify( string.format( language.GetPhrase( "hint.unfrozeX" ), num ), NOTIFY_GENERIC, 3 ) -- Find a better sound :X surface.PlaySound( "npc/roller/mine/rmine_chirp_answer1.wav" ) end function GM:HUDPaint() self:PaintWorldTips() -- Draw all of the default stuff BaseClass.HUDPaint( self ) self:PaintNotes() end --[[--------------------------------------------------------- Draws on top of VGUI.. -----------------------------------------------------------]] function GM:PostRenderVGUI() BaseClass.PostRenderVGUI( self ) end local PhysgunHalos = {} --[[--------------------------------------------------------- Name: gamemode:DrawPhysgunBeam() Desc: Return false to override completely -----------------------------------------------------------]] function GM:DrawPhysgunBeam( ply, weapon, bOn, target, boneid, pos ) if ( physgun_halo:GetInt() == 0 ) then return true end if ( IsValid( target ) ) then PhysgunHalos[ ply ] = target end return true end hook.Add( "PreDrawHalos", "AddPhysgunHalos", function() if ( !PhysgunHalos || table.IsEmpty( PhysgunHalos ) ) then return end for k, v in pairs( PhysgunHalos ) do if ( !IsValid( k ) ) then continue end local size = math.random( 1, 2 ) local colr = k:GetWeaponColor() + VectorRand() * 0.3 halo.Add( PhysgunHalos, Color( colr.x * 255, colr.y * 255, colr.z * 255 ), size, size, 1, true, false ) end PhysgunHalos = {} end ) --[[--------------------------------------------------------- Name: gamemode:NetworkEntityCreated() Desc: Entity is created over the network -----------------------------------------------------------]] function GM:NetworkEntityCreated( ent ) -- -- If the entity wants to use a spawn effect -- then create a propspawn effect if the entity was -- created within the last second (this function gets called -- on every entity when joining a server) -- if ( ent:GetSpawnEffect() && ent:GetCreationTime() > ( CurTime() - 1.0 ) ) then local ed = EffectData() ed:SetOrigin( ent:GetPos() ) ed:SetEntity( ent ) util.Effect( "propspawn", ed, true, true ) end end