--[[ | 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/ --]] AddCSLuaFile() if ( SERVER ) then return end local checkList = {} checkList[ "cheat" ] = { tooltip = "#menubar.cheatstip", func = function() return GetConVarNumber( "sv_cheats" ) != 0 end } checkList[ "cheatSP" ] = { tooltip = "#menubar.cheatstip", func = function() return GetConVarNumber( "sv_cheats" ) != 0 or game.SinglePlayer() end } checkList[ "host" ] = { tooltip = "#menubar.host_only", func = function() return IsValid( LocalPlayer() ) and LocalPlayer():IsListenServerHost() end } local function AddCVar( s, checkStr, ... ) local cvar = s:AddCVar( ... ) cvar.OldThink = cvar.Think cvar.Think = function( se ) se:OldThink() local checks = string.Split( checkStr, " " ) for k, v in ipairs( checks ) do if ( checkList[ v ] and !checkList[ v ].func() ) then se:SetEnabled( false ) se:SetTooltip( checkList[ v ].tooltip ) return end end se:SetEnabled( true ) se:SetTooltip() end end local function AddHostCVar( s, ... ) AddCVar( s, "host", ... ) end local function AddCheatCVar( s, ... ) AddCVar( s, "cheat", ... ) end local function AddCheatOrSPCVar( s, ... ) AddCVar( s, "cheatSP host", ... ) end -- Display options hook.Add( "PopulateMenuBar", "DisplayOptions_MenuBar", function( menubar ) local m = menubar:AddOrGetMenu( "#menubar.drawing" ) m:AddCVar( "#menubar.drawing.physgun_beam", "physgun_drawbeams", "1", "0" ) m:AddCVar( "#menubar.drawing.physgun_halo", "physgun_halo", "1", "0" ) m:AddCVar( "#menubar.drawing.freeze", "effects_freeze", "1", "0" ) m:AddCVar( "#menubar.drawing.unfreeze", "effects_unfreeze", "1", "0" ) m:AddSpacer() m:AddCVar( "#menubar.drawing.hud", "cl_drawhud", "1", "0" ) m:AddCVar( "#menubar.drawing.toolhelp", "gmod_drawhelp", "1", "0" ) m:AddCVar( "#menubar.drawing.toolui", "gmod_drawtooleffects", "1", "0" ) m:AddCVar( "#menubar.drawing.world_tooltips", "cl_drawworldtooltips", "1", "0" ) m:AddCVar( "#menubar.drawing.spawn_effect", "cl_drawspawneffect", "1", "0" ) m:AddCVar( "#menubar.drawing.effect_rings", "cl_draweffectrings", "1", "0" ) m:AddCVar( "#menubar.drawing.cameras", "cl_drawcameras", "1", "0" ) m:AddCVar( "#menubar.drawing.thrusters", "cl_drawthrusterseffects", "1", "0" ) m:AddSpacer() m:AddCVar( "#menubar.drawing.shadows", "r_shadows", "1", "0" ) m:AddCVar( "#menubar.drawing.detailprops", "r_drawdetailprops", "1", "0" ) m:AddSpacer() m:AddCVar( "#menubar.drawing.showfps", "cl_showfps", "1", "0" ) AddCheatOrSPCVar( m, "#menubar.drawing.minecraftify", "mat_showlowresimage", "1", "0", function() timer.Simple( 0.1, function() RunConsoleCommand( "mat_reloadallmaterials" ) end ) end ) AddCheatCVar( m, "#menubar.drawing.wireframe", "mat_wireframe", "1", "0" ) m:AddSpacer() m:AddCVar( "#menubar.drawing.hints", "cl_showhints", "1", "0" ) end ) -- AI Options hook.Add( "PopulateMenuBar", "NPCOptions_MenuBar", function( menubar ) local m = menubar:AddOrGetMenu( "#menubar.npcs" ) AddHostCVar( m, "#menubar.npcs.disableai", "ai_disabled", "1", "0" ) AddHostCVar( m, "#menubar.npcs.ignoreplayers", "ai_ignoreplayers", "1", "0" ) AddHostCVar( m, "#menubar.npcs.keepcorpses", "ai_serverragdolls", "1", "0" ) AddHostCVar( m, "#menubar.npcs.autoplayersquad", "npc_citizen_auto_player_squad", "1", "0" ) local wpns = m:AddSubMenu( "#menubar.npcs.weapon" ) wpns:SetDeleteSelf( false ) wpns:AddCVar( "#menubar.npcs.defaultweapon", "gmod_npcweapon", "" ) wpns:AddCVar( "#menubar.npcs.noweapon", "gmod_npcweapon", "none" ) wpns:AddSpacer() local groupedWeps = {} for _, v in pairs( list.Get( "NPCUsableWeapons" ) ) do local cat = ( v.category or "" ):lower() groupedWeps[ cat ] = groupedWeps[ cat ] or {} groupedWeps[ cat ][ v.class ] = language.GetPhrase( v.title ) end for group, items in SortedPairs( groupedWeps ) do wpns:AddSpacer() for class, title in SortedPairsByValue( items ) do wpns:AddCVar( title, "gmod_npcweapon", class ) end end end ) -- Server options hook.Add( "PopulateMenuBar", "MenuBar_ServerOptions", function( menubar ) local m = menubar:AddOrGetMenu( "#menubar.server" ) AddHostCVar( m, "#utilities.allowcslua", "sv_allowcslua", "1", "0" ) AddHostCVar( m, "#utilities.falldamage", "mp_falldamage", "1", "0" ) AddHostCVar( m, "#utilities.gmod_suit", "gmod_suit", "1", "0" ) AddCheatOrSPCVar( m, "#physcannon_mega_enabled", "physcannon_mega_enabled", "1", "0" ) m:AddSpacer() AddHostCVar( m, "#enable_weapons", "sbox_weapons", "1", "0" ) AddHostCVar( m, "#allow_god_mode", "sbox_godmode", "1", "0" ) m:AddSpacer() AddHostCVar( m, "#players_damage_players", "sbox_playershurtplayers", "1", "0" ) AddHostCVar( m, "#allow_noclip", "sbox_noclip", "1", "0" ) AddHostCVar( m, "#bone_manipulate_npcs", "sbox_bonemanip_npc", "1", "0" ) AddHostCVar( m, "#bone_manipulate_players", "sbox_bonemanip_player", "1", "0" ) AddHostCVar( m, "#bone_manipulate_others", "sbox_bonemanip_misc", "1", "0" ) end )