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
| Need | Why |
|---|---|
| An Open77 dedicated server | opx_infinity declares open77_version ">=0.0.1". |
| A MySQL database | Characters, inventories, vehicles… Without it the server boots but nobody can load a character. |
opx_lib | opx_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 webofopx_infinity; the built page isweb/index.html. ui/,tests/andtools/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.
"resources": {
"load": [
// ... the platform's own resources ...
"opx_lib",
"opx_infinity"
]
}Connect the database
"database": { "enabled": true, "connectionString": "Server=...;Database=...;User ID=...;Password=..." }- Or put the string in the environment variable named by
database.connectionStringEnvironmentVariable(OP77_DATABASE_CONNECTIONby 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 see | It means | Fix |
|---|---|---|
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 players | Another 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
Introduction
OPX//77 is a roleplay framework for Open77, the multiplayer platform for Cyberpunk 2077 — one resource, opx_infinity, plus the opx_lib client library.
Configure
Where opx_infinity's settings live — one file per module, the runtime-wide files, what is sent to players, turning a module off, and what changes while the server runs.