OPX//77
Getting started

Install

Last updated on

Install opx_lib and opx_infinity on an Open77 dedicated server, connect the database, grant staff rights and check the boot log.

OPX//77 is two resources: opx_lib (a client library) and opx_infinity (the framework).

What you need

NeedWhy
An Open77 dedicated serveropx_infinity declares open77_version ">=0.0.1".
A MySQL databaseCharacters, inventories, vehicles… Without it the server boots but nobody can load a character.
opx_libopx_infinity declares dependency "opx_lib"; the platform will not start it without opx_lib running.
The platform's open77_notifications (recommended)Server toasts sent with OPX.Notify go through Open77.notifications.send, drawn by that package on the client (shipped load lists start it). Without it those toasts are not shown. Refusals and command answers are drawn by opx_infinity itself.

Installation

Copy the two resources

One folder per repository under the server's resource root. The folder name must equal the resource name.

resources/
  opx_lib/          open77.lua, init.lua, pure/, client/, boot/
  opx_infinity/     open77.lua, config/, core/, lib/, locales/, modules/, web/
  • The server only needs open77.lua config core lib locales modules web of opx_infinity; the built page is web/index.html.
  • ui/, tests/ and tools/ are for development.

To deploy a commit rather than a working tree:

git archive --format=tar HEAD open77.lua config core lib locales modules web \
  | gzip | ssh root@<host> 'cd /opt/open77-server/resources/opx_infinity && tar xzf -'

Load them in order

opx_lib before opx_infinity in resources.load.

server.jsonc
"resources": {
  "load": [
    // ... the platform's own resources ...
    "opx_lib",
    "opx_infinity"
  ]
}

Connect the database

server.jsonc
"database": { "enabled": true, "connectionString": "Server=...;Database=...;User ID=...;Password=..." }
  • Or put the string in the environment variable named by database.connectionStringEnvironmentVariable (OP77_DATABASE_CONNECTION by default). See the platform's Configure a SQL database guide.
  • The tables are created at the first boot; there is nothing to import.

Grant staff rights

Staff commands are restricted. Add rights to the ACL file named by accessControl.file in server.jsonc (usually acl.jsonc). A staff role typically needs:

command.opx.admin          open the staff menu (F9)
command.opx.admin.*        use the rows inside it
command.opx.garages.*      garage staff commands
command.opx.dealership.*   dealer staff commands
command.opx.clothing.*     wardrobe store commands
command.opx.weather.*      weather controls
command.opx.time           the clock
command.opx.time.*

Both command.opx.admin and command.opx.admin.* are needed: see Permissions. Each module page lists its commands.

Start and read the log

Restart the server and read the journal. A healthy boot ends with one line per module and a version line:

[storage] schema ready: N table(s)
[module] character     started
[module] inventory     started
...
opx_infinity 0.2.0 up
If you seeIt meansFix
no database: nobody will be able to connect until this is fixed.The database is not reachable.Check the connection string, restart.
opx_infinity ... up -- degraded: <reason>Boot finished with a problem.Read the reason; see Troubleshooting.
[module] <id> unavailable requires "<other>", ...A required module is off or failed.Fix or enable <other>.
[boot] <name> is running and also places playersAnother resource also places players.Remove it, or accept the conflict (see CONFLICTING_PLACERS).

Later: /opx.modules (staff) or /opx.version for the same report, /opx.client in a game client's console for the client side.

Next

Configure the server.

On this page