Skip to content

Use Encode / Decode

This tutorial uses Encode / Decode. It needs no game folder. The client and the servers keep three values in an encoded form, and this page converts each one in both directions. Read Handle the values safely before you use it with a real value.

Click Encode / Decode in the sidebar, under Start. There is one card per value, and each card has two sides:

  • The left side is the plain value. The right side is the encoded value.
  • Encrypt → fills the right side from the left side. ← Decrypt fills the left side from the right side. They are the encode and decode buttons.
  • Copy under each side copies that side to the clipboard.
  • A red line under the card says what is wrong with the input, for example “Enter a port from 1 to 65535.” Nothing changes while it shows.

Everything runs in the tab. The page has no storage and sends nothing anywhere: close or reload the tab and every field is empty again.

The encodings are reversible. They hide a value from a quick look, they are not protection. This page shows it: anyone with the encoded form and this tool has the plain value.

  • Treat the encoded form like the plain form. Never post either one on Discord, in an issue, in a screenshot or in a repository.
  • Use the page on your own PC. Copy a value only when you need it, and clear the fields or close the tab when you are done.
  • A value in this wiki or in an example config is always a placeholder. Do not look for real values here; the tools explain the fields and never print one.
  • The one place the tools keep a password is Game Folder, under Pack passwords. It stays in this browser as plain text in the site’s storage, and the field is not masked. Do not enter it on a shared PC, and clear the site data of the tools when you are done (see First steps).

What it is for. The client starts with a launch line, and the last field of that line is the Server ID: the game server’s IPv4 address and port packed into one 64-bit number, address bytes first. The client uses it to find the game server. For how the line is built, see How the login works and Before You Start.

Encode your server’s address

  1. In the Server ID card, type the IP address (IPv4 only) and the Port (1 to 65535) on the left. For a server on your own PC use 127.0.0.1.
  2. Click Encrypt →. The number appears on the right. For 127.0.0.1 and port 21009 it is 90232984699007.
  3. Click Copy and paste it as the last field of the launch line.

Decode a launch line. Paste the last field into Server ID and click ← Decrypt. The address and the port appear on the left. The error line says “Enter the Server ID as a number.” if you pasted anything else, and “That number does not fit in 64 bits.” for a number that is too long.

Safety. A Server ID is not a secret key, but it names your server. If the server is not public, do not post the number: it contains the address. The address must also be one the server really listens on, which the guides above explain.

What it is for. The client’s packs (rs.iop, map.iop and the others) are encrypted with a password that differs per region. The client source keeps it encoded, as szEncPassWord in io3DEngine\ioLocalManagerParent.cpp: twenty signed values. The web tools need the plain password, and for the regions found in the shared sources they already know it (see Game Folder).

Decode a password from source

  1. Copy the twenty values of the array. In the IOP password card, paste them into szEncPassWord. Braces, commas and spaces are ignored. There must be exactly twenty values, each from -128 to 255.
  2. Click ← Decrypt. The plain password appears in Password. The decoding stops at the first zero value, because short passwords are filled up with zero bytes.
  3. Open Game Folder, click Add password under Pack passwords, give it a name, paste the password into Password (type 0) and click Save and read the packs again.

The tool keeps two passwords per profile. Type 0 opens the entries without a comment, Type 1 the entries with comment 1. If you do not know a type 1 password, leave Type 1 (optional) empty and the tool uses the type 0 password for both. Which array of the source holds the type 1 password: not confirmed yet.

Encode a password. Type a password of up to 20 characters (Latin characters only) into Password and click Encrypt →. The right side gets the twenty values to put into your own client source when you build a client with your own pack password. A longer password gives “A pack password has at most 20 characters.”

Safety. Never post a pack password of a private client, plain or encoded. Do not type the built-in passwords of the public regions again; the tools already try them. Do not leave a decoded password in a shared document.

What it is for. Only ls_dbagent talks to SQL Server. Its ini has a [SQL] section with the login ID and the password PW. PW is not the plain password: it is hex text, and a plain password does not work there.

Encode your SQL login password

  1. In the DB agent password card, type the SQL login password into Password (Latin characters only).
  2. Click Encrypt →. The hex text appears in PW value. It is the same result as ls_dbagent.exe -x <password>.
  3. Click Copy and paste it as PW in ls_dbagent.ini. Do this in the file on your own server.

Decode an ini value. Paste the PW value into PW value and click ← Decrypt to read the password the ini holds. The value must be hex text of even length; otherwise the error line says “Enter the PW value from ls_dbagent.ini.”

Safety. The PW value is the SQL login in disguise. Keep every ls_dbagent ini out of repositories, zip files you share and chat messages. Use a SQL login made for the game databases and a password you use nowhere else. The example configs in the guides use a placeholder; replace it only on your own PC.

  • Encode, then decode the result with the other button. You must get your input back.
  • For the DB agent password, compare with the output of ls_dbagent.exe -x.
  • If a server or client still refuses a value, the cause is not always the encoding. The guides list the other settings that stop a local setup.

Encode / Decode changes nothing in your client or your servers. The tools give you values and you put them into the launch line, the pack password list or the ini yourself. Nothing is uploaded.