Files
wnsrc/lua/autorun/menubar.lua
lifestorm 94063e4369 Upload
2024-08-04 22:55:00 +03:00

138 lines
5.0 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/
--]]
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 )