--[[ | 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/ --]] if ( SERVER ) then return end local meta = FindMetaTable( "Player" ) local playerOptions = {} local bindTranslation = {} bindTranslation["slot1"] = 1 bindTranslation["slot2"] = 2 bindTranslation["slot3"] = 3 bindTranslation["slot4"] = 4 bindTranslation["slot5"] = 5 bindTranslation["slot6"] = 6 bindTranslation["slot7"] = 7 bindTranslation["slot8"] = 8 bindTranslation["slot9"] = 9 bindTranslation["slot0"] = 0 --[[--------------------------------------------------------- Name: PlayerOption Params: Desc: -----------------------------------------------------------]] function meta:AddPlayerOption( name, timeout, in_func, draw_func ) local option = {} option.timeout = timeout option.in_func = in_func option.draw_func = draw_func if (timeout != -1) then option.timeout = CurTime() + timeout end playerOptions[ name ] = option end local function hook_PlayerOptionInput( pl, bind, down ) if (!down || !bindTranslation[bind]) then return end for k, v in pairs( playerOptions ) do if ( v.timeout == -1 || v.timeout > CurTime() ) then -- If the function returns true then remove this player option if ( v.in_func( bindTranslation[bind] ) ) then playerOptions[k] = nil end return true else playerOptions[k] = nil end end end hook.Add( "PlayerBindPress", "PlayerOptionInput", hook_PlayerOptionInput ) local function hook_PlayerOptionDraw() for k, v in pairs( playerOptions ) do if (v.draw_func) then v.draw_func() end return end end hook.Add( "HUDPaint", "PlayerOptionDraw", hook_PlayerOptionDraw )