Devices/Configuration

Configuration

Every option in config/, and what the panel can change.

Devices pages

The files in config/ hold the starting values. What admins change in the panel (/evdevices) is kept in the evdev_settings table and wins over the files. Delete a row there to go back to the file value.

Settings in the panel

Values marked (Settings) below can be changed in the panel's Settings dialog. Only the difference to the file is saved, so a later change in the file still counts for every value the dialog left alone. The server applies it at start and after every save, and every player gets it at once.

Rows of evdev_settings: general and kinds (Settings), zones (no-place zones), signal (antennas), brand (the Brand card) and config, the values of the files below that the Settings dialog changed, as { ['os.notes.max'] = 60, ... }.

Security, commands, rate and list limits, item names and all model geometry stay in the files. So do a few values that only make sense next to others in the file: the use key (devices.interaction.key is a GTA control number and keyLabel the letter shown for it), the signal bar levels (signal.bars) and the fine tuning of live screens (keep, lingerMs, fadeMs, detail, upscale).

config/settings.lua

General

  • Config.debug: test mode. Every player may take a tablet out with /evdtablet (without it only admins may), and the panel header says Debug on.
  • Config.framework: 'auto' (the default) takes the first framework that runs: qbx_core, then qb-core, then es_extended. Qbox comes first because qbx_core also answers as qb-core. Set 'qbox', 'qbcore' or 'esx' to skip the search. The framework has to start before evolent_devices; with none running, or an unknown value, the resource stops at start with a line that says so.
  • Config.notifyWith: 'ox_lib' (the default) shows the short notices (placed, picked up, not allowed) with lib.notify. 'framework' sends them through QBCore:Notify on QBCore and esx:showNotification on ESX, for servers that restyle those. Qbox notices are ox_lib either way. The notification cards of apps are not affected.
  • Config.commands: admin opens the panel, tablet takes the tablet out or puts it away. See Commands.
  • Config.database.autoMigrate: on start, create the evdev_ tables from sql/install.sql when they are missing. The file only creates tables and never changes existing data. Set it to false to import the file yourself.
  • Config.trustedResources: scripts whose apps are allowed the moment they register. Any other script's app waits in the panel (Apps) until an admin presses Allow.

Permissions

  • Config.aces: admin may do everything in the panel. manage may list, place, move, edit and remove devices, but has no global settings, app approval, item rules or giving items. Nobody has manage until you add the line:

    server.cfg
    add_ace group.admin evolent_devices.admin allow
    add_ace group.helper evolent_devices.manage allow
  • Config.adminGroups: checked only after the aces, and only on QBCore and ESX. admin lists the QBCore permissions and ESX groups that count as Config.aces.admin (god, superadmin and admin out of the box), manage the ones that count as Config.aces.manage (none). Empty lists leave the aces alone. Qbox uses the aces only. ESX Legacy also gives its groups as group.<name> principals, so the add_ace lines above work there too.

  • Config.admin:

    • tokenIdleMinutes (Settings): a panel left alone this long must be opened again with the command.
    • placeRange (Settings): metres from the admin where the free camera may place a device. placeTolerance adds a few metres for the ped moving a little.
    • rate: calls per second per admin and action: read (lists and pages), write (saves), lookup (the citizen field). burst: all panel calls together, per second per admin.

Config.general

The panel's Settings dialog changes these.

OptionDescription
adminsOpenAnyAdmins may open players' own devices too. Every such open is in the activity list.
auditDaysActivity rows older than this are deleted at start.
removedDaysRemoved devices can be restored from the panel for this many days.
twinRadiusDevices of one kind this close get different models.
watchRangePeople this close see what is on a screen in use.
forceCovertrue shows people nearby only an "In use" cover, never an app's own view.
session.idleMinutesA user who does nothing this long is taken off the device (0 = never).
session.lockMinutesThe laptop and computer lock screen comes on after this many idle minutes (0 = never).
session.leaseSecondsThe server frees a device whose user stopped answering for this long.
session.heartbeatSecondsHow often a user's game tells the server it is still there.
sound.enabledDevice sounds on or off for everyone.
sound.volumeHow loud the user hears them, 0 to 100.
sound.nearbyHow loud other players hear the clicks, 0 to 100 (0 = nothing). It fades with distance and stops at sound.range metres (3 to 10).

display is one setting for the screens of every laptop, computer and terminal (Settings, Screens in the panel): brightness 20 to 100 %, light the soft screen light in percent of each kind's own (0 = off, up to 200), color an own light colour ('#rrggbb', '' = the kind's colour), sleep minutes without use before a screen sleeps (3 out of the box, 0 = never), and night with nightFrom and nightTo in minutes after midnight by the game clock. A sleeping screen keeps half its brightness and throws no light. At night hours screens go black. The idle picture, the lock screen name, auto lock, signal and the out of service note stay per device.

Config.brand

The starting brand (the Brand card in the panel wins over it).

OptionDescription
accentThe colour, '#RRGGBB'.
logoAn https link, a small data:image picture or a file of this resource ('' = the Evolent mark).
nameThe name of the OS ('' = Evolent OS, at most 40 letters).
wallpaperevolent (the built-in picture web/build/wallpapers/evolent.webp, drawn in the brand colour) or the id of one of your own pictures from Config.wallpapers.
idle{ laptop = '', pc = '', terminal = '' }: what the screens of each kind show while nobody uses them. '' is the Evolent picture in the brand colour, or the id of an own picture.

A wallpaper or idle id that is not known shows the Evolent picture, and the console names it at start.

Own wallpapers

Config.wallpapers holds your own pictures, empty out of the box. As a wallpaper they are offered next to evolent in Settings on laptops, computers and tablets, in the Brand card and on the Screen of a laptop or computer in the panel. As the picture of an idle screen an admin picks one for every laptop, every computer or every terminal in the Brand card, or for one device on its Screen in the panel. An own picture is shown exactly as you made it, never in the brand colour; where its shape differs from the screen it fills the screen and is cut round the centre.

Add the picture

Put the picture in web/build/wallpapers/: a .webp, .jpg or .png under 1 MB, for example web/build/wallpapers/harbour.webp. Best sizes: 1440 x 900 for a laptop (16:10), 1920 x 1080 for a computer (16:9), 1920 x 720 for a terminal (8:3). One 1920 x 1080 picture works on all three: a terminal loses a third of the height, so keep what matters in the middle.

If you build the web pages yourself, put it in web/public/wallpapers/ instead: the build copies that folder to web/build/wallpapers/.

Add a line

config/settings.lua
Config.wallpapers = {
    { id = 'harbour', name = 'Harbour', file = 'web/build/wallpapers/harbour.webp' },
}

The id is lower-case letters, digits and _ (at most 32, not evolent), name is what players see (at most 40 letters), file the picture from the first step. At most 24 pictures.

Restart

With nobody on the server, run refresh, then ensure evolent_devices. A new picture needs the refresh, because the server only sends files it knew when the resource started.

The console names a line it leaves out (a bad id, a repeated id, a file outside web/build/wallpapers/ or one that is not there). A device, a tablet or the brand that saved a picture you later take out shows evolent instead.

A release carries only evolent.webp in web/build/wallpapers/, so your pictures stay when you copy the new files over the old folder. Carry your Config.wallpapers list and Config.brand.idle over into the new config/settings.lua.

Limits and markers

  • Config.limits: list sizes the panel accepts. rulesPerList rules in one access list, appsPerDevice apps on one device or the tablets, zones no-place zones, labelLength letters in a device, zone or app name, blockedSerials blocked tablet serials, antennas antennas. appWindows (Settings) is the number of app windows one user may have open; people nearby see the top four.
  • Config.marker (Settings): the ground markers shown while placing. color ('' = the brand colour, or an own '#RRGGBB'), scale (the size of the stand spot), motion (false keeps the chevrons still) and draw: 'poly' draws the sharp textured markers, 'marker' one stock GTA ring per marker.

Config.os

The built-in apps (Settings, except photos.library). Laptops and computers have all of them, tablets Store and Settings.

  • apps: switch Notes, Files, Photos, Store and Settings on or off for every device. With store = false nothing has to be installed: every app a device may run is on it.
  • preinstalled: { notes = true } puts Notes on every device from the start. Store, Settings, Files and Photos always are and cannot be removed. What is installed is kept per device on the server, for tablets by serial.
  • notes: max notes per device, title and body lengths in characters, trash deleted notes kept per device and trashDays after which the trash is emptied at start. Notes belong to the device: the next person who uses it sees them.
  • photos: links (off out of the box) lets users add pictures by an https link, only from the sites in hosts (a host also allows its subdomains, at most 20). Everyone who sees such a picture loads it from that site, so keep the list to image hosts you trust. max per device, name length, and library with pictures every device shows, as { name = 'Showroom', url = 'https://...' }.
  • password: the lock screen password is min to max characters of any kind. After tries wrong passwords a player waits waitSeconds. The owner of a player device sets it in the Settings app, admins on the device page of the panel. Only a salted hash is stored.

Config.notifications

What a player notices when an app sends a notification (Settings, the Notifications group). All on out of the box. See Notifications.

OptionDescription
popup.enabledA card in a corner of the game screen when the notification comes while the player is at no device. Up to four show, the rest count as "N more in Notifications".
popup.position'top_right', 'top_center', 'top_left' or 'bottom_right'.
popup.seconds3 to 20 before a card goes.
soundThe cards play their own sound, at the device sound volume.
tablet.enabledA player who carries a tablet and is not holding it gets a short signal and a small "Open your tablet" card instead.
screen.enabledThe idle screen of a player's own laptop or computer shows "N new notifications". People nearby see the count, never the text.
screen.blinkThe screen light of that device blinks when one comes.
keepDays1 to 60: notifications older than this go, read or not.
keep5 to 50: the most kept for one character or one device.

Players switch the cards and their sound off for themselves in Settings, Notifications.

config/kinds.lua

The four device kinds. The models are in stream/. Config.kindOrder is the order the kinds are listed in. Each kind in Config.kinds has:

OptionDescription
enabledThe kind can be placed and used. The panel's Settings can switch it off.
maxMost devices of this kind on the server, 0 = no limit.
variantsModels of one kind, each with its own screen texture <model>_screen. Devices of a kind close to each other get different ones (twinRadius).
placeOn'surface' (table, desk), 'floor', or 'hand' for the tablet.
spacingMetres another device must keep from this one.
osRuns the Evolent OS with apps. A terminal shows one app page full screen instead.
wirelessNeeds an antenna's signal. false is wired, always full signal.
startAccessWho may use a device an admin just placed: { mode = 'everyone' }, { mode = 'owner' } or { mode = 'rules', rules = {} }.

config/items.lua

Player items. See Player Items.

config/signal.lua

Signal for wireless devices (laptop and tablet by default, see wireless above). Antennas are masts an admin places from the panel and the game's own towers they pick there. Wired kinds always have full signal. Without signal the Evolent OS still runs, but apps that need the network show "No signal" and their server calls get no user (appUser answers nil).

OptionDescription
enabled (Settings)false gives every device full signal, antennas or not.
radius, strength (Settings)Metres a new antenna reaches and its signal in percent at the antenna.
barsThe signal in percent each bar needs (1 bar from the first value, 4 bars from the last). The signal falls with the square of the distance.
homeLoss (Settings)Bars a device inside a home loses to the walls.
mastsStock props an admin can place as a mast, in the open world only.
streamDistance (Settings)Metres where a placed mast appears on a client.
towerTypesThe starting radius and strength when an admin picks a map tower of that type.
starterMap towers that become antennas on the very first start, so laptops and tablets work before anyone places one. Saved on that first start: use the panel after that.

config/towers.lua

The game's own masts and radio towers (119 of them). Admins pick them as antennas in the panel; nothing is spawned for them. You may add your own: a unique id, a type from Config.signal.towerTypes, the model name for the panel, the position and the height in metres.