Yecoyz.
Docs/yecoyz_bossmenu

Computers

Setting up every job in game with the creator, and placing boss menu computers.

Get yecoyz_bossmenu

The creator

Type /bossmenucreator in game. You need the permission in Config.Creator.Permission (group.admin by default). A window opens in the middle of the screen with every job on the left. Search for a job and click it to set it up. The top of the page shows how many computers, vehicles, items and ranks it has, and the tabs below hold everything about the job:

Tab What you set up
Computers Where the job's boss menus are: place, move, go to and delete them
Vehicles The job's vehicle shop, see Vehicles
Items The job's item shop, see Items
Access Which pages the job can use and what each rank gets, see Access

Jobs with changes made in game have a dot next to their name.

Placing a computer

On the Computers tab, click New computer, give it a name and choose the monitor. It is placed for the job you picked on the left. The window hides while you place it where you look:

Key Action
E Place
Scroll Rotate
Shift + Scroll Rotate slowly
Page Up / Page Down Raise / lower
Backspace Cancel

With Config.Vehicles.Mode = 'spawn', the next step places the vehicle spawn for that computer: stand the ghost car where bought vehicles should appear and press E. Backspace skips it.

From the list you can also move a computer, give it a new vehicle spawn, teleport to it or delete it. Changes show for every player right away.

Tip

A job can have more than one computer, for example one in the chief's office and one at the front desk.

Keyboard, mouse and clearing the desk

Every monitor gets a keyboard and mouse in front of it, and the small props in the way (cups, papers, an old monitor that was already on the desk) are hidden while the computer is there. They come back when the computer is deleted or moved.

lua
Config.Computer.Desk = {
    Keyboard = { model = 'prop_keyboard_01a', offset = vec3(0.0, -0.33, 0.0), heading = 0.0 },
    Mouse = { model = 'prop_mouse_01a', offset = vec3(0.38, -0.33, 0.0), heading = 0.0 },
    ClearArea = true,
    Area = { min = vec3(-0.6, -0.6, -0.03), max = vec3(0.6, 0.45, 0.9) },
    MaxSize = 0.9,
    HideModels = {},
    HideRadius = 1.0,
}
Option Description
Keyboard / Mouse Model and position in metres from the monitor's base: x right, y forward (negative is towards the user), z up. false leaves it out
ClearArea Hide the small props around the monitor
Area The box that is cleared, on the same axes
MaxSize The biggest prop that may be hidden, so the desk, walls and shelves always stay
HideModels Model names or hashes to hide within HideRadius metres of every monitor
Tip

The keyboard and mouse are set down on the desk. If there is no desk under them, because the monitor stands at the edge, they are left out. The creator shows them as part of the ghost, so place the monitor far enough back.

Note

Some interiors have decoration built in that scripts can't find on their own. If something stays in the way, add its model name to HideModels.

Computers in the config

Computers can also be written in config.lua. They can't be edited in game.

lua
Config.Computers = {
    { job = 'police', label = 'Chief office', model = 'prop_monitor_w_large',
      coords = vec4(447.4, -973.5, 30.6, 180.0), spawn = vec4(446.0, -1025.0, 28.6, 0.0) },
}

Screen or fullscreen

lua
Config.Computer.Mode = 'screen'
Mode What happens
screen The camera moves in on the monitor and the menu is used on its screen
fullscreen The menu opens over the whole screen, like a normal menu

Other monitors

Config.Computer.Models lists the monitors the creator can place, with the corners of the screen in model space (top-left, top-right and bottom-left).

lua
Config.Computer.Models = {
    { model = 'prop_monitor_w_large', label = 'Wide monitor', screen = {
        tl = vec3(-0.3776, -0.073, 0.6256),
        tr = vec3(0.3803, -0.073, 0.6256),
        bl = vec3(-0.3776, -0.073, 0.1700),
    } },
}

To add your own monitor, add an entry with its model, place it with the creator and adjust the three corners until the picture fits the screen.

Opening without a computer

Set a command to open the menu anywhere, with the same access rules:

lua
Config.Command = 'bossmenu'

Other scripts can open it with the OpenBossMenu export.