Contract
A product looks at the resources running on your server and picks one for each capability it needs. The choice is made once, the first time the product uses that capability, from a fixed order: the first recognised resource that is running at that moment wins. You configure nothing. Installing a supported resource is all that is required, and installing two of them means the one higher in the list is used. A declared implementation (a resource that names itself for a capability, as described on A provider of your own) wins over the list above. The list is used when nothing is declared. A product only looks for the capabilities it actually uses. A product that never shows a notification does not care whether you have a notification resource.Inputs
The tables below list resource names exactly as they appear in yourresources directory, in the
order they are checked.
Framework
Opt-in fallback on the client. By default a product that needs a framework does not start without
one of these. A product that only needs the player’s state on the client — loaded, alive, a name —
may choose to run without a framework: its installation page says so, and it calls the SDK’s opt-in
method itself. On such a product, the account name stands in for the character name, and job, gang
and money read as empty. A product that needs framework data on the server still does not start
without one of these: the server side has no fallback.
Inventory
No fallback. A product that moves items does not start without one of these.
qb-inventory has no hook for watching items move between inventories. A product that needs one
reports it and stops; the qb-inventory swap hook adds the export it
asks for. Nothing else on this list needs an edit.
Database
No fallback. A product that stores data does not start without one of these. Products that store
nothing do not need a database at all.
Notifications
Built-in fallback. With none of these running, notifications are drawn by the product itself.
On-screen help text
Built-in fallback.
Progress bars
Built-in fallback.
Fuel
Built-in fallback, which reports the vehicle’s own fuel level.
Menus
No fallback. A product that opens a menu through your menu resource does not start without one
of these.
Text input
No fallback.
Outputs
The selection is made the first time a product uses the capability, from the resources running at that moment. For most capabilities that is at or shortly after start. Two consequences:- Your
server.cfgorder does not have to put these resources before Element Labs products. A product started first still picks up a framework, inventory or database that starts after it, as long as it has not used that capability yet. - The choice is made once. Starting a second supported resource, or replacing one, after a product has used the capability does not change that product’s choice. Restart the product.
Errors
When a product needs a capability on the server, or a client capability that has no fallback, and finds no recognised resource, it reports one line naming what it looked for:-
A server capability:
Framework,Inventory,Database. The product stops. It finishes starting first, because a resource cannot stop itself: it asks the SDK, which stops it on its next tick. So the console reports the resource started and then stopped, and the end state isstoppedrather than running without something it needs. -
A client capability:
Menu,Text input,Targeting. Stopping a resource is a server operation, so the line appears in the affected player’s own console (F8) followed by:The product keeps running and anything that uses that capability fails where it is used. Install one of the listed resources: this state is a missing prerequisite, not a mode the product supports.
Example
To confirm which resource a product chose, turn on debug output inserver.cfg:
standalone means no recognised resource was found and the built-in fallback is in use. Turn debug
output off again when you are done. See Server settings.