Difference between revisions of "317 Protocol"

From RuneWiki
Jump to navigationJump to search
Line 405: Line 405:
 
| 6
 
| 6
 
| [[317:Object action 2|Object action 2]]
 
| [[317:Object action 2|Object action 2]]
| Sent when the player clicks the second action available for an object.
+
| Sent when the player clicks the second option available for an object.
 
|-
 
|-
 
|}
 
|}

Revision as of 06:06, 10 October 2009

Login Protocol

Stub

This article is a stub. You can help RuneWiki by expanding it.


Response Codes

Towards the end of the login procedure, we send different values to the client to allow or deny a login. The various values show different messages on the login box on the client or do something internally.

Value Response
-1 Waits for 2000ms and tries again while counting failures.
0 Exchanges session keys, player name, password, etc.
1 Waits for 2000ms and tries again.
2 Client made a successful login.
3 "Invalid username or password."
4 "Your account has been disabled. Please check your message-center for details."
5 "Your account is already logged in. Try again in 60 secs..."
6 "RuneScape has been updated! Please reload this page."
7 "This world is full. Please use a different world."
8 "Unable to connect. Login server offline."
9 "Login limit exceeded. Too many connections from your address."
10 "Unable to connect. Bad session id."
11 "Login server rejected session. Please try again."
12 "You need a members account to login to this world. Please subscribe, or use a different world."
13 "Could not complete login. Please try using a different world."
14 "The server is being updated. Please wait 1 minute and try again."
15 See the notes below.
16 "Login attempts exceeded. Please wait 1 minute and try again."
17 "You are standing in a members-only area. To play on this world move to a free area first."
20 "Invalid loginserver requested. Please try using a different world."
21 "You have only just left another world. Your profile will be transferred in: (number) seconds."
None of the above "Unexpected server response. Please try using a different world."

Regarding response code 15

On the server, players are not unregistered for quite some time. This can be best witnessed when the client forcefully closes the connection while in combat. If you're quick enough before the player dies or kills the NPC, login attempts during that time return that the account is already logged in. This probably explains why the message says "try again in 60 seconds", and they just reused the response when the player is truly logged in.

Going along with this "players aren't offline yet" idea, when the client experiences some lag and performs a reconnect, it byte 18 as it's "connection type" to the server.

The server most likely saves this as a boolean (reconnect = var == 18;). When the login is entirely validated, meaning the password's are okay and the server isn't full, it can either send back the normal response, 2, or 15.

But why 15? If you look at the client code, you'll see that the chat messages aren't cleared. If you've ever had a shitty connection you've noticed that your chat stays there upon a reconnect, and this is exactly why. There are some minor annoyances with implementing response 15, since you can't send the rights byte (or the flagged byte, I forget which).

Game Protocol

(description)

Server -> Client Packets

Opcode Type Length (bytes) Name Description
1 FIXED 0 Animation reset Resets all animations in the immediate area.
68 FIXED 0 Reset button state Resets the button state for all buttons.
71 FIXED 3 Send sidebar interface Assigns an interface to one of the tabs in the game sidebar.
73 FIXED 4 Load map region Loads a new map region.
97 FIXED 2 Show interface Displays a normal interface.
107 FIXED 0 Reset camera Resets the camera position.
109 FIXED 0 Logout Disconnects the client from the server.
110 FIXED 1 Run energy Sends the players run energy level.
114 FIXED 2 System update Sends how many seconds until a 'System Update.'
122 FIXED 4 Interface color Changes the color of an interface.
126 VARIABLE_SHORT N/A Send text Attaches text to an interface.
164 FIXED 2 Chat interface Shows an interface in the chat box.
176 FIXED 10 Open welcome screen Displays the welcome screen.
206 FIXED 3 Chat settings Sends the chat privacy settings.
208 FIXED 2 Walkable interface Displays an interface in walkable mode.
219 FIXED 0 Clear screen Clears the screen of all open interfaces.
240 FIXED 2 Weight Sends the players weight amount.
241 VARIABLE_SHORT N/A Construct map region Constructs a dynamic map region using a palette of 8*8 tiles.
246 FIXED 6 Interface item Displays an item model inside an interface.
249 FIXED 3 Initialize player Sends the player's membership status and their current index on the server's player list.
253 VARIABLE_BYTE N/A Send message Sends a server message (e.g. 'Welcome to RuneScape') or trade/duel request.

Client -> Server Packets

Opcode Type Length (bytes) Name Description
0 FIXED 0 Idle Sent when there are no actions being performed by the player for this cycle.
3 FIXED 1 Focus change Sent when the game client window goes out of focus.
4 VARIABLE BYTE N/A Chat Sent when the player enters a chat message.
41 FIXED 6 Equip item Sent when a player equips an item.
43 FIXED 6 Bank 10 items Sent when a player banks 10 of a certain item.
70 FIXED 6 Object action 3 Sent when the player clicks the third action available for an object.
73 FIXED 2 Trade request Sent when a player requests a trade with another player.
86 FIXED 4 Camera movement Sent when the player moves the camera.
87 FIXED 6 Drop item Sent when a player wants to drop an item onto the ground.
98 VARIABLE_BYTE N/A Walk on command Sent when the player should walk somewhere according to a certain action performed, such as clicking an object.
103 VARIABLE_BYTE N/A Player command Sent when the player enters a command in the chat box (e.g. "::command")
117 FIXED 6 Bank 5 items Sent when a player banks 5 of a certain item.
121 FIXED 0 Loading finished Sent when the client finishes loading a map region.
122 FIXED 6 Item action 1 Sent when the player clicks the first option of an item, such as "Bury" for bones.
129 FIXED 6 Bank all items Sent when a player banks all of a certain item that they have in their inventory.
132 FIXED 6 Object action 1 Sent when the player clicks the first option of an object, such as "Cut" for trees.
135 FIXED 6 Bank X items part-1 Sent when a player requests to bank an X amount of items.
139 FIXED 2 Trade answer Sent when a player answers a trade request from another player.
145 FIXED 6 Unequip item Sent when a player unequips an item.
164 VARIABLE_BYTE N/A Regular walk Sent when the player walks regularly.
185 FIXED 2 Button click Sent when a player clicks an in-game button.
202 FIXED 0 Idle logout Sent when the player has become idle and should be logged out.
208 FIXED 10 Bank X items part-2 Sent when a player enters an X amount of items they want to bank.
214 FIXED 7 Move item Moves an item from one interface to another.
236 FIXED 6 Pickup ground item Sent when the player picks up an item from the ground.
241 FIXED 4 Mouse click Sent when the player clicks somewhere on the game screen.
248 VARIABLE_BYTE N/A Map walk Sent when the player walks using the map. Has 14 additional (assumed to be anticheat) bytes added to the end of it that are ignored.
252 FIXED 6 Object action 2 Sent when the player clicks the second option available for an object.