L2Off / PTS

Troubleshoot an L2Off connection

Fix common standalone connector, SQL Server, and extender symptoms

Work from the visible symptom. The connector log covers profile, SQL, and connection failures; SQL Server and extender logs cover the game-side handoff.

Server stays Disconnected

Likely causes: Node is older than 22, the process started in the wrong directory, the generated token is stale, or outbound WSS is blocked.

Check: run node --version, confirm portal.toml sits beside the .mjs, and inspect the first startup error. Download a fresh profile only if the token was regenerated.

Connector exits before connecting

Likely causes: invalid TOML, a missing required SQL parameter, an unreadable catalog path, or incomplete database settings.

Check: use the exact dotted path named in the validation error. Every line marked CHECK in the generated profile must match this pack.

Account linking fails

Likely causes: wrong database, password format, ANSI codepage, md5Key, or account blocking query.

Check: follow Link and create L2Off accounts, then compare one known account through Connector check and a real game login.

Characters do not appear

Likely causes: @account filters the wrong column or the result aliases do not match the row contract.

Check: execute queries.list_characters with the connector SQL login and the linked account. An account with no characters should return zero rows, not an error.

Catalog search returns nothing

Likely causes: a path points at another server root, the file is unreadable, or the name table was uploaded for another game server.

Check: confirm startup record counts, then follow Show item and skill names.

Purchase is queued but item never arrives

Likely causes: no extender consumer, mismatched DLLs/opcodes, delivery is disabled in l2ext.ini, or the player has not reached an eligible state.

Check: observe whether lin_PortalDeliveryAsk runs, whether the live-player call succeeds, and whether lin_PortalDeliveryDone consumes the row. Follow Connect your L2Off extender.

Item arrives more than once

Likely causes: the acknowledgement update fails or the unique command-id guard is absent.

Check immediately: disable sales, verify both procedures store uses_quoted_identifier = 1, verify the filtered unique index, and replay one test command. Resolve affected orders only after checking the in-game inventory.

Queue row is consumed but order stays pending

Likely causes: refused_code / reported_at columns are missing, the connector cannot poll results, or acknowledgement to Forgeport has not completed.

Check: keep reported_at connector-owned, confirm result polling SQL and permissions, and inspect the connection log for retries.

On this page