Support OpenKore:
Learn about
the Fund Pool

Guide to figuring out server information


Contents

Notice

OpenKore/VisualKore comes with a large list of server information. But some servers are not in the list, and sometimes the server information changes (for instance, when a server changes IP address or upgrades the server software). This guide teaches you several ways to figure out the (new) server information. Read this guide completely and carefully! If you encounter problems, finish reading this guide first before asking questions on the forum or IRC!

But before you do that, read the list of (un)supported servers. Your server may not be supported at all - in that case reading this guide would be a waste of time.


OpenKore/VisualKore needs the following information about the Ragnarok Online server before it can login:


Retrieving the address and port

All RO clients have one or more .grf files. Those files are archives which contains information the client needs, and probably contains information about the server too.

1. Download GRF Tool. You need this to read .grf files.

2. Find the .grf files in your RO client's folder. (like C:\Program Files\Gravity\RagnarokOnline)

3. Open one of the .grf files using GRF Tool. It doesn't matter which one.

4. In GRF Tool's search box, type:

clientinfo.xml

You should now see a file named clientinfo.xml or sclientinfo.xml in the file list. Click on it; the preview pane will show it's contents. If you don't see (s)clientinfo.xml in the file list, then try a different .grf file!

Example: GRF Tool displaying iRO's clientinfo.xml

4.1. In case that you are playing in a private server some of them puts their sclientinfo.xml in the data folder, therefore you can skip step 1-4 also you can edit sclientinfo.xml by using notepad.

5. Look for a line called

<address>x.x.x.x</address>

The text between <address> and </address> is the address of the server. Note: if the address 127.0.0.1 then your server is probably using some kind of proxy, like FoxDye. If your (s)clientinfo.xml doesn't contain an address field, then look in other .grf files!

6. Look for a line called

<port>xxxx</port>

The text between <port> and </port> is the port number of the server.

Retrieving the master version number and server version number

Now that you have the address and port of your server, it's time to retrieve the master version number and server version number.

1. Download Wireshark, the network traffic analyzer (formerly known as Ethereal).

2. Open your RO client. Do not login yet!

3. Open Wireshark and click Capture->Options.... A dialog will appear.

4. In the "Interface" dropdown box, select an interface which represents your Internet connection. If you're unsure which interface represents your Internet connection: select the one whose IP address does not begin with 192.168. Alternatively only select your internet connection that has a microsoft packet scheduler text in the far right side.

5. Make sure "Enable network name resolution" is checked. When you're done, click Start.

6. Go back to your RO client. Type in some random gibberish in your login dialog, and press Enter. It doesn't matter what you put in the ID and Password fields, as long as they're both more than 3 characters.
You only have to press Enter, nothing more. It doesn't matter whether the login succeeded or failed.

7. Go back to Wireshark. Click "Stop".

8. In the Wireshark main window you will see the TCP segments that you have captured. You must now fill in a packet filter, but what to fill in depends on whether your server's address is an IP address or a host name.

If your server's address is an IP address (contains only dots and numbers, something like 123.213.45.67):
Enter this in the "Filter" text box:

tcp && tcp.port == XX && ip.addr == Y.Y.Y.Y

Replace XX with your server's port number, and Y.Y.Y.Y with your server's IP address.

If your server's address is a hostname (contains alphabetical characters):
Enter this in the "Filter" text box:

tcp && tcp.port == XX && (ip.src_host == "YY" || ip.dst_host == "YY")

Replace XX with your server's port number, and YY with your server's host name.

After having entered a filter, press Enter.


Example showing the filter for iRO.

9. Right click on the first entry and select "Follow TCP Stream".

10. In the dialog that appears, select "Hex Dump".

11.

  1. The 4 bytes that come after "64 00" are the server version number. However, they're a hexadecimal number (base-16). Kore expects a decimal number (base-10). Use our hexadecimal-to-decimal calculator to convert it to a decimal number.
  2. The last number is the master version number. This number is also in hexadecimal. Use our hexadecimal-to-decimal calculator to convert it to a decimal number.

You should now have the server version number and master version number. In case of iRO, the server version number is 18 and master version number is 1.

Determining the character encoding

The character encoding cannot be automatically detected, but here's a list of possible character encodings that you can use:

Encoding Your server uses this encoding if:
Western Most people write English, or a language which uses a Roman-based alphabet. For example, German, French, Portuguese, etc., but also Indonesian.
Simplified Chinese Most people write Simplified Chinese.
Traditional Chinese Most people write Traditional Chinese.
Korean Most people write Korean.
Russian Most people write Russian, or a Cyrillic-based language.
Japanese Most people write Japanese.
Thai Most people write Thai.


Passing server information to OpenKore/VisualKore

OpenKore/VisualKore reads server information from a file named servers.txt.

In OpenKore, do this: In VisualKore, do this:
Open the file tables\servers.txt
Click Advanced->Open Tables Folder. Then open servers.txt.

If your server is not listed in the file, then add a new entry. If your server is already listed, then modify the existing entry. Here is an example entry:

[International - iRO: Chaos/Loki/Iris]   <-- Fill your server name here. It must be between '[' and ']'
ip 38.144.194.2          <-- Fill the address here
port 6900                <-- Fill the port number here
master_version 1         <-- Fill the (decimal) master version number here
version 18               <-- Fill the (decimal) server version number here
serverType 0             <-- Should be 0 by default; only change this if you experience problems (read on)
serverEncoding Western   <-- Fill the character encoding here

After having modified servers.txt, restart OpenKore or VisualKore.


Help me, it doesn't work!

I get a timeout when trying to login to the map server

Try changing the serverType option in servers.txt. It goes from 0 to 8 (in new version 10 inclusive). Try a different number until you succeed in logging in.

The bot connects to the wrong map server IP

You are probably playing on a private server.

Add

private 1

to your server's entry in servers.txt.

I get wrong name and wrong job class during character login

For example, your name is "bananaSplit" but the server show only "naSplit".

Solution: In servers.txt file (located in table folder) place charBlockSize to your server as the following:

charBlockSize 108 

The value 108 can be changed until you get the right name. Note that this only works on OpenKore/VisualKore 1.9.3 or later.

I get messages like "Unknown packet - 0000"

A few seconds after login I get disconnected

I experience other problems

What to do if your server is not supported

First of all: OpenKore/VisualKore supports a server because developers wrote support for it. Support for a server does not magically come out of the air - it is the result of hard work. Therefore, whether your server will be supported in the future completely depends on whether there is a developer who is willing to work on support for your server. The less developers play on your server, the smaller the chance is that your server will be supported.

If you are not a developer yourself, then there are several things you can do:

  1. Switch to a well-supported server. This is the recommended option.
  2. Ask whether there are any volunteer developers who is willing to do it for you. However, do not constantly whine about it! We have a life too. Some developers have very little free time. You may ask for help, but only do it once. Do not come back every day to ask the same thing over and over.
  3. Learn programming and do it yourself.
  4. Pay a developer to do it for you.