From a2d91461cb903ea612d0d67da355b22c45a8d219 Mon Sep 17 00:00:00 2001 From: moparisthebest Date: Tue, 3 Jul 2018 00:31:18 -0400 Subject: [PATCH] Convert to mdbook --- .gitignore | 1 + 135-Protocol.mediawiki | 1075 - 194-Clear-screen.mediawiki | 8 - 194-Logout.mediawiki | 8 - 194-Protocol.mediawiki | 85 - 194-Show-interface.mediawiki | 19 - 204-Items.mediawiki | 1296 - 204-NPCs.mediawiki | 799 - 204-Objects.mediawiki | 1195 - 289-Construct-Map-Region.mediawiki | 44 - 289-Player-Dialogue-Head.mediawiki | 33 - 289-Protocol.mediawiki | 754 - 289-Send-Player-Head.mediawiki | 17 - 289-Send-sidebar-interface.mediawiki | 19 - 317-Add-friend.mediawiki | 18 - 317-Add-ignore.mediawiki | 18 - 317-Alternate-item-option-2.mediawiki | 26 - 317-Animation-reset.mediawiki | 8 - 317-Attack-(NPC).mediawiki | 18 - 317-Audio.mediawiki | 24 - 317-Bank-10-items.mediawiki | 24 - 317-Bank-5-items.mediawiki | 25 - 317-Bank-X-items-part-1.mediawiki | 24 - 317-Bank-X-items-part-2.mediawiki | 18 - 317-Bank-all-items.mediawiki | 26 - 317-Begin-player-updating.mediawiki | 7 - 317-Button-click.mediawiki | 19 - 317-Camera-movement.mediawiki | 21 - 317-Camera-shake.mediawiki | 99 - 317-Chat-interface-click.mediawiki | 18 - 317-Chat-interface.mediawiki | 18 - 317-Chat-settings.mediawiki | 24 - 317-Clear-inventory.mediawiki | 18 - 317-Clear-screen.mediawiki | 8 - 317-Close-window.mediawiki | 8 - 317-Construct-map-region.mediawiki | 43 - 317-Create-Projectile.mediawiki | 47 - 317-Design-screen.mediawiki | 54 - 317-Display-hint-icon.mediawiki | 59 - 317-Drop-item.mediawiki | 24 - 317-Enter-name.mediawiki | 8 - 317-Equip-item.mediawiki | 25 - 317-Flash-sidebar.mediawiki | 55 - 317-Focus-change.mediawiki | 18 - 317-Follow.mediawiki | 18 - 317-Force-client-setting.mediawiki | 26 - 317-Friends-list-status.mediawiki | 35 - 317-Ground-Item-Action.mediawiki | 22 - 317-Hidden-Interface.mediawiki | 22 - 317-Idle-logout.mediawiki | 8 - 317-Idle.mediawiki | 8 - 317-Initialize-player.mediawiki | 22 - 317-Input-amount.mediawiki | 8 - 317-Interface-animation.mediawiki | 21 - 317-Interface-color.mediawiki | 39 - 317-Interface-item.mediawiki | 21 - 317-Interface-model-rotation.mediawiki | 27 - 317-Interface-offset.mediawiki | 24 - 317-Interface-over-tab.mediawiki | 18 - 317-Inventory-overlay.mediawiki | 27 - 317-Item-action-1.mediawiki | 24 - 317-Item-on-floor.mediawiki | 33 - 317-Item-on-item.mediawiki | 21 - 317-Item-on-object.mediawiki | 33 - 317-Item-on-player.mediawiki | 27 - 317-Light-item.mediawiki | 24 - 317-Load-map-region.mediawiki | 39 - 317-Loading-finished.mediawiki | 8 - 317-Logout.mediawiki | 8 - 317-Mage-NPC.mediawiki | 17 - 317-Magic-on-items.mediawiki | 27 - 317-Magic-on-player.mediawiki | 20 - 317-Minimap-State.mediawiki | 23 - 317-Move-item.mediawiki | 27 - 317-Music.mediawiki | 24 - 317-NPC-action-1.mediawiki | 17 - 317-NPC-action-2.mediawiki | 18 - 317-NPC-action-3.mediawiki | 18 - 317-NPC-head-on-interface.mediawiki | 21 - 317-Object-action-1.mediawiki | 24 - 317-Object-action-2.mediawiki | 23 - 317-Object-action-3.mediawiki | 23 - 317-Object-removal.mediawiki | 20 - 317-Object-spawn.mediawiki | 23 - 317-Open-chatbox-interface.mediawiki | 18 - 317-Open-welcome-screen.mediawiki | 30 - 317-Pickup-ground-item.mediawiki | 24 - 317-Play-song.mediawiki | 18 - 317-Player-Option.mediawiki | 20 - 317-Player-command.mediawiki | 17 - 317-Player-head-to-interface.mediawiki | 18 - 317-Privacy-options.mediawiki | 24 - 317-Protocol.mediawiki | 1267 - 317-Region-change.mediawiki | 8 - 317-Remove-friend.mediawiki | 18 - 317-Remove-ignore.mediawiki | 18 - 317-Report-player.mediawiki | 23 - 317-Reset-button-state.mediawiki | 8 - 317-Reset-camera.mediawiki | 8 - 317-Reset-destination.mediawiki | 8 - 317-Run-energy.mediawiki | 19 - 317-Scroll-position.mediawiki | 21 - 317-Send-Skill.mediawiki | 24 - 317-Send-add-friend.mediawiki | 20 - 317-Send-add-ignore.mediawiki | 27 - 317-Send-message.mediawiki | 21 - 317-Send-private-message.mediawiki | 37 - 317-Send-sidebar-interface.mediawiki | 58 - 317-Set-interface-text.mediawiki | 25 - 317-Show-interface.mediawiki | 19 - 317-Show-multi-combat.mediawiki | 22 - 317-Show-tab.mediawiki | 18 - 317-Skill-level.mediawiki | 24 - 317-Song-Queue.mediawiki | 35 - 317-System-update.mediawiki | 19 - 317-Trade-answer.mediawiki | 18 - 317-Trade-request.mediawiki | 17 - 317-Unequip-item.mediawiki | 24 - 317-Update-item-container.mediawiki | 33 - 317-Walkable-interface.mediawiki | 18 - 317-Weight.mediawiki | 19 - 357-Protocol.mediawiki | 40 - 377-Animation-Reset.mediawiki | 8 - 377-Camera-Shake.mediawiki | 27 - 377-Construct-Map-Region.mediawiki | 48 - 377-Create-Static-Graphic.mediawiki | 27 - 377-Initialize-Player.mediawiki | 21 - 377-Input-Amount.mediawiki | 8 - 377-Interface-Animation.mediawiki | 21 - 377-Interface-Item.mediawiki | 24 - 377-Inventory-Overlay.mediawiki | 21 - 377-Logout.mediawiki | 8 - 377-Move-Camera.mediawiki | 32 - 377-Open-Welcome-Screen.mediawiki | 49 - 377-Play-Ambient-Wave.mediawiki | 24 - 377-Protocol.mediawiki | 209 - 377-Reset-Button-State.mediawiki | 8 - 377-Reset-Ground-Items-and-Objects.mediawiki | 21 - 377-Run-Energy.mediawiki | 18 - 377-Send-Add-Friend.mediawiki | 21 - 377-Send-Ground-Item.mediawiki | 24 - 377-Send-Message.mediawiki | 18 - 377-Send-Sidebar-Interface.mediawiki | 21 - 377-Send-Sound.mediawiki | 26 - 377-Skill-Level.mediawiki | 24 - 377-Walkable-Interface.mediawiki | 18 - 443-Protocol.mediawiki | 1002 - 464-Protocol.mediawiki | 53 - 468-Protocol.mediawiki | 53 - 474-Fourth-Interface-Option.mediawiki | 21 - 474-Protocol.mediawiki | 146 - 474-Remove-ignore.mediawiki | 18 - 508-Protocol.mediawiki | 118 - 634-Protocol.mediawiki | 14 - 666-Protocol.mediawiki | 1957 -- 668-Protocol.mediawiki | 53 - 718-Close-window.mediawiki | 17 - 718-Friends-packet.mediawiki | 25 - 718-Interface.mediawiki | 29 - 718-Music-effect.mediawiki | 21 - 718-Open-URL.mediawiki | 19 - 718-Player-under-NPC-priority.mediawiki | 17 - 718-Protocol.mediawiki | 186 - 742-Protocol.mediawiki | 90 - Archive-Format.mediawiki | 152 - Categories.mediawiki | 13 - Category-Category-RS2.mediawiki | 4 - Category-Data-Type.mediawiki | 6 - Category-Packet-194.mediawiki | 7 - Category-Packet-317.mediawiki | 113 - Category-Packet-377.mediawiki | 27 - Category-Packet-474.mediawiki | 6 - Category-Packet-718.mediawiki | 10 - Category-Packet-{{{revision}}}.mediawiki | 4 - Category-Packet.mediawiki | 151 - Category-RS2.mediawiki | 46 - Category-RSC.mediawiki | 11 - Class-Check.mediawiki | 168 - DMCA-Policy.mediawiki | 1 - Data-Types.mediawiki | 121 - JAGGRAB-Protocol.mediawiki | 38 - Map-Region-System.mediawiki | 278 - Ondemand-Protocol.mediawiki | 29 - QWord.mediawiki | 3 - RS-String.mediawiki | 10 - RSWiki-About.mediawiki | 7 - RSWiki-Privacy-policy.mediawiki | 1 - Template-Packet.mediawiki | 19 - Word.mediawiki | 3 - book.toml | 5 + category.sh | 52 - readme.md | 1 + src/135-Protocol.md | 645 + src/194-Clear-screen.md | 8 + src/194-Logout.md | 9 + src/194-Protocol.md | 37 + src/194-Show-interface.md | 13 + 202-Protocol.mediawiki => src/202-Protocol.md | 97 +- src/204-Items.md | 25833 ++++++++++++++++ src/204-NPCs.md | 13523 ++++++++ src/204-Objects.md | 13096 ++++++++ 204-Protocol.mediawiki => src/204-Protocol.md | 98 +- src/289-Construct-Map-Region.md | 39 + src/289-Player-Dialogue-Head.md | 15 + src/289-Protocol.md | 511 + src/289-Send-Player-Head.md | 12 + src/289-Send-sidebar-interface.md | 11 + src/317-Add-friend.md | 11 + src/317-Add-ignore.md | 13 + src/317-Alternate-item-option-2.md | 20 + src/317-Animation-reset.md | 8 + src/317-Attack-(NPC).md | 11 + src/317-Audio.md | 13 + src/317-Bank-10-items.md | 18 + src/317-Bank-5-items.md | 19 + src/317-Bank-X-items-part-1.md | 16 + src/317-Bank-X-items-part-2.md | 14 + src/317-Bank-all-items.md | 19 + src/317-Begin-player-updating.md | 6 + src/317-Button-click.md | 14 + src/317-Camera-movement.md | 14 + src/317-Camera-shake.md | 56 + src/317-Chat-interface-click.md | 12 + src/317-Chat-interface.md | 12 + src/317-Chat-settings.md | 14 + src/317-Clear-inventory.md | 14 + src/317-Clear-screen.md | 8 + src/317-Close-window.md | 10 + src/317-Construct-map-region.md | 37 + src/317-Create-Projectile.md | 22 + src/317-Design-screen.md | 28 + src/317-Display-hint-icon.md | 31 + src/317-Drop-item.md | 14 + src/317-Enter-name.md | 8 + src/317-Equip-item.md | 17 + src/317-Flash-sidebar.md | 20 + src/317-Focus-change.md | 14 + src/317-Follow.md | 13 + src/317-Force-client-setting.md | 22 + src/317-Friends-list-status.md | 16 + src/317-Ground-Item-Action.md | 13 + src/317-Hidden-Interface.md | 15 + src/317-Idle-logout.md | 10 + src/317-Idle.md | 8 + src/317-Initialize-player.md | 18 + src/317-Input-amount.md | 8 + src/317-Interface-animation.md | 13 + src/317-Interface-color.md | 23 + src/317-Interface-item.md | 16 + src/317-Interface-model-rotation.md | 18 + src/317-Interface-offset.md | 15 + src/317-Interface-over-tab.md | 12 + src/317-Inventory-overlay.md | 22 + src/317-Item-action-1.md | 18 + src/317-Item-on-floor.md | 23 + src/317-Item-on-item.md | 14 + src/317-Item-on-object.md | 22 + src/317-Item-on-player.md | 16 + src/317-Light-item.md | 14 + src/317-Load-map-region.md | 23 + src/317-Loading-finished.md | 9 + src/317-Logout.md | 8 + src/317-Mage-NPC.md | 10 + src/317-Magic-on-items.md | 17 + src/317-Magic-on-player.md | 13 + src/317-Minimap-State.md | 15 + .../317-Mouse-click.md | 6 +- src/317-Move-item.md | 19 + src/317-Music.md | 12 + .../317-NPC-Dialogue.md | 7 +- src/317-NPC-action-1.md | 12 + src/317-NPC-action-2.md | 12 + src/317-NPC-action-3.md | 12 + src/317-NPC-head-on-interface.md | 16 + src/317-Object-action-1.md | 18 + src/317-Object-action-2.md | 19 + src/317-Object-action-3.md | 18 + src/317-Object-removal.md | 9 + src/317-Object-spawn.md | 11 + src/317-Open-chatbox-interface.md | 14 + src/317-Open-welcome-screen.md | 20 + src/317-Pickup-ground-item.md | 18 + src/317-Play-song.md | 12 + src/317-Player-Option.md | 10 + src/317-Player-command.md | 13 + src/317-Player-head-to-interface.md | 11 + src/317-Privacy-options.md | 16 + src/317-Protocol.md | 673 + src/317-Region-change.md | 8 + src/317-Remove-friend.md | 14 + src/317-Remove-ignore.md | 14 + src/317-Report-player.md | 15 + src/317-Reset-button-state.md | 8 + src/317-Reset-camera.md | 8 + src/317-Reset-destination.md | 9 + src/317-Run-energy.md | 13 + src/317-Scroll-position.md | 15 + src/317-Send-Skill.md | 14 + src/317-Send-add-friend.md | 37 + src/317-Send-add-ignore.md | 22 + src/317-Send-message.md | 19 + src/317-Send-private-message.md | 15 + src/317-Send-sidebar-interface.md | 22 + src/317-Set-interface-text.md | 17 + src/317-Show-interface.md | 14 + src/317-Show-multi-combat.md | 15 + src/317-Show-tab.md | 11 + src/317-Skill-level.md | 13 + src/317-Song-Queue.md | 19 + src/317-System-update.md | 19 + src/317-Trade-answer.md | 14 + src/317-Trade-request.md | 12 + src/317-Unequip-item.md | 16 + src/317-Update-item-container.md | 26 + src/317-Walkable-interface.md | 12 + src/317-Weight.md | 13 + src/357-Protocol.md | 17 + src/377-Animation-Reset.md | 8 + src/377-Camera-Shake.md | 17 + src/377-Construct-Map-Region.md | 37 + src/377-Create-Static-Graphic.md | 15 + src/377-Initialize-Player.md | 16 + src/377-Input-Amount.md | 8 + src/377-Interface-Animation.md | 13 + src/377-Interface-Item.md | 15 + src/377-Inventory-Overlay.md | 16 + src/377-Logout.md | 8 + src/377-Move-Camera.md | 17 + src/377-Open-Welcome-Screen.md | 30 + src/377-Play-Ambient-Wave.md | 14 + src/377-Protocol.md | 68 + src/377-Reset-Button-State.md | 8 + src/377-Reset-Ground-Items-and-Objects.md | 14 + src/377-Run-Energy.md | 12 + src/377-Send-Add-Friend.md | 12 + src/377-Send-Ground-Item.md | 15 + src/377-Send-Message.md | 12 + src/377-Send-Sidebar-Interface.md | 15 + src/377-Send-Sound.md | 15 + src/377-Skill-Level.md | 14 + src/377-Walkable-Interface.md | 11 + src/443-Protocol.md | 310 + src/464-Protocol.md | 36 + src/468-Protocol.md | 36 + src/474-Fourth-Interface-Option.md | 14 + src/474-Protocol.md | 69 + src/474-Remove-ignore.md | 13 + src/508-Protocol.md | 108 + src/634-Protocol.md | 27 + src/666-Protocol.md | 394 + src/668-Protocol.md | 39 + src/718-Close-window.md | 14 + src/718-Friends-packet.md | 18 + src/718-Interface.md | 15 + src/718-Music-effect.md | 14 + src/718-Open-URL.md | 13 + src/718-Player-under-NPC-priority.md | 13 + src/718-Protocol.md | 60 + src/742-Protocol.md | 27 + src/Archive-Format.md | 156 + src/Categories.md | 9 + .../Category-Cache.md | 8 +- src/Category-Category-RS2.md | 3 + src/Category-Data-Type.md | 3 + .../Category-NPCs.md | 5 +- src/Category-Packet-194.md | 4 + src/Category-Packet-317.md | 51 + src/Category-Packet-377.md | 13 + src/Category-Packet-474.md | 4 + src/Category-Packet-718.md | 5 + src/Category-Packet-{{{revision}}}.md | 3 + src/Category-Packet.md | 67 + src/Category-RS2.md | 53 + src/Category-RSC.md | 6 + src/Class-Check.md | 85 + src/DMCA-Policy.md | 3 + DWord.mediawiki => src/DWord.md | 2 +- src/Data-Types.md | 85 + Home.md => src/Home.md | 0 src/JAGGRAB-Protocol.md | 48 + src/Map-Region-System.md | 301 + OB3.mediawiki => src/OB3.md | 21 +- src/Ondemand-Protocol.md | 28 + src/QWord.md | 3 + src/RS-String.md | 11 + src/RSWiki-About.md | 20 + .../RSWiki-General-disclaimer.md | 0 RSWiki-IRC.md => src/RSWiki-IRC.md | 0 src/RSWiki-Privacy-policy.md | 32 + Rules.md => src/Rules.md | 0 src/SUMMARY.md | 202 + src/Template-Packet.md | 10 + src/Word.md | 3 + src/chapter_1.md | 1 + 394 files changed, 59088 insertions(+), 15079 deletions(-) create mode 100644 .gitignore delete mode 100644 135-Protocol.mediawiki delete mode 100644 194-Clear-screen.mediawiki delete mode 100644 194-Logout.mediawiki delete mode 100644 194-Protocol.mediawiki delete mode 100644 194-Show-interface.mediawiki delete mode 100644 204-Items.mediawiki delete mode 100644 204-NPCs.mediawiki delete mode 100644 204-Objects.mediawiki delete mode 100644 289-Construct-Map-Region.mediawiki delete mode 100644 289-Player-Dialogue-Head.mediawiki delete mode 100644 289-Protocol.mediawiki delete mode 100644 289-Send-Player-Head.mediawiki delete mode 100644 289-Send-sidebar-interface.mediawiki delete mode 100644 317-Add-friend.mediawiki delete mode 100644 317-Add-ignore.mediawiki delete mode 100644 317-Alternate-item-option-2.mediawiki delete mode 100644 317-Animation-reset.mediawiki delete mode 100644 317-Attack-(NPC).mediawiki delete mode 100644 317-Audio.mediawiki delete mode 100644 317-Bank-10-items.mediawiki delete mode 100644 317-Bank-5-items.mediawiki delete mode 100644 317-Bank-X-items-part-1.mediawiki delete mode 100644 317-Bank-X-items-part-2.mediawiki delete mode 100644 317-Bank-all-items.mediawiki delete mode 100644 317-Begin-player-updating.mediawiki delete mode 100644 317-Button-click.mediawiki delete mode 100644 317-Camera-movement.mediawiki delete mode 100644 317-Camera-shake.mediawiki delete mode 100644 317-Chat-interface-click.mediawiki delete mode 100644 317-Chat-interface.mediawiki delete mode 100644 317-Chat-settings.mediawiki delete mode 100644 317-Clear-inventory.mediawiki delete mode 100644 317-Clear-screen.mediawiki delete mode 100644 317-Close-window.mediawiki delete mode 100644 317-Construct-map-region.mediawiki delete mode 100644 317-Create-Projectile.mediawiki delete mode 100644 317-Design-screen.mediawiki delete mode 100644 317-Display-hint-icon.mediawiki delete mode 100644 317-Drop-item.mediawiki delete mode 100644 317-Enter-name.mediawiki delete mode 100644 317-Equip-item.mediawiki delete mode 100644 317-Flash-sidebar.mediawiki delete mode 100644 317-Focus-change.mediawiki delete mode 100644 317-Follow.mediawiki delete mode 100644 317-Force-client-setting.mediawiki delete mode 100644 317-Friends-list-status.mediawiki delete mode 100644 317-Ground-Item-Action.mediawiki delete mode 100644 317-Hidden-Interface.mediawiki delete mode 100644 317-Idle-logout.mediawiki delete mode 100644 317-Idle.mediawiki delete mode 100644 317-Initialize-player.mediawiki delete mode 100644 317-Input-amount.mediawiki delete mode 100644 317-Interface-animation.mediawiki delete mode 100644 317-Interface-color.mediawiki delete mode 100644 317-Interface-item.mediawiki delete mode 100644 317-Interface-model-rotation.mediawiki delete mode 100644 317-Interface-offset.mediawiki delete mode 100644 317-Interface-over-tab.mediawiki delete mode 100644 317-Inventory-overlay.mediawiki delete mode 100644 317-Item-action-1.mediawiki delete mode 100644 317-Item-on-floor.mediawiki delete mode 100644 317-Item-on-item.mediawiki delete mode 100644 317-Item-on-object.mediawiki delete mode 100644 317-Item-on-player.mediawiki delete mode 100644 317-Light-item.mediawiki delete mode 100644 317-Load-map-region.mediawiki delete mode 100644 317-Loading-finished.mediawiki delete mode 100644 317-Logout.mediawiki delete mode 100644 317-Mage-NPC.mediawiki delete mode 100644 317-Magic-on-items.mediawiki delete mode 100644 317-Magic-on-player.mediawiki delete mode 100644 317-Minimap-State.mediawiki delete mode 100644 317-Move-item.mediawiki delete mode 100644 317-Music.mediawiki delete mode 100644 317-NPC-action-1.mediawiki delete mode 100644 317-NPC-action-2.mediawiki delete mode 100644 317-NPC-action-3.mediawiki delete mode 100644 317-NPC-head-on-interface.mediawiki delete mode 100644 317-Object-action-1.mediawiki delete mode 100644 317-Object-action-2.mediawiki delete mode 100644 317-Object-action-3.mediawiki delete mode 100644 317-Object-removal.mediawiki delete mode 100644 317-Object-spawn.mediawiki delete mode 100644 317-Open-chatbox-interface.mediawiki delete mode 100644 317-Open-welcome-screen.mediawiki delete mode 100644 317-Pickup-ground-item.mediawiki delete mode 100644 317-Play-song.mediawiki delete mode 100644 317-Player-Option.mediawiki delete mode 100644 317-Player-command.mediawiki delete mode 100644 317-Player-head-to-interface.mediawiki delete mode 100644 317-Privacy-options.mediawiki delete mode 100644 317-Protocol.mediawiki delete mode 100644 317-Region-change.mediawiki delete mode 100644 317-Remove-friend.mediawiki delete mode 100644 317-Remove-ignore.mediawiki delete mode 100644 317-Report-player.mediawiki delete mode 100644 317-Reset-button-state.mediawiki delete mode 100644 317-Reset-camera.mediawiki delete mode 100644 317-Reset-destination.mediawiki delete mode 100644 317-Run-energy.mediawiki delete mode 100644 317-Scroll-position.mediawiki delete mode 100644 317-Send-Skill.mediawiki delete mode 100644 317-Send-add-friend.mediawiki delete mode 100644 317-Send-add-ignore.mediawiki delete mode 100644 317-Send-message.mediawiki delete mode 100644 317-Send-private-message.mediawiki delete mode 100644 317-Send-sidebar-interface.mediawiki delete mode 100644 317-Set-interface-text.mediawiki delete mode 100644 317-Show-interface.mediawiki delete mode 100644 317-Show-multi-combat.mediawiki delete mode 100644 317-Show-tab.mediawiki delete mode 100644 317-Skill-level.mediawiki delete mode 100644 317-Song-Queue.mediawiki delete mode 100644 317-System-update.mediawiki delete mode 100644 317-Trade-answer.mediawiki delete mode 100644 317-Trade-request.mediawiki delete mode 100644 317-Unequip-item.mediawiki delete mode 100644 317-Update-item-container.mediawiki delete mode 100644 317-Walkable-interface.mediawiki delete mode 100644 317-Weight.mediawiki delete mode 100644 357-Protocol.mediawiki delete mode 100644 377-Animation-Reset.mediawiki delete mode 100644 377-Camera-Shake.mediawiki delete mode 100644 377-Construct-Map-Region.mediawiki delete mode 100644 377-Create-Static-Graphic.mediawiki delete mode 100644 377-Initialize-Player.mediawiki delete mode 100644 377-Input-Amount.mediawiki delete mode 100644 377-Interface-Animation.mediawiki delete mode 100644 377-Interface-Item.mediawiki delete mode 100644 377-Inventory-Overlay.mediawiki delete mode 100644 377-Logout.mediawiki delete mode 100644 377-Move-Camera.mediawiki delete mode 100644 377-Open-Welcome-Screen.mediawiki delete mode 100644 377-Play-Ambient-Wave.mediawiki delete mode 100644 377-Protocol.mediawiki delete mode 100644 377-Reset-Button-State.mediawiki delete mode 100644 377-Reset-Ground-Items-and-Objects.mediawiki delete mode 100644 377-Run-Energy.mediawiki delete mode 100644 377-Send-Add-Friend.mediawiki delete mode 100644 377-Send-Ground-Item.mediawiki delete mode 100644 377-Send-Message.mediawiki delete mode 100644 377-Send-Sidebar-Interface.mediawiki delete mode 100644 377-Send-Sound.mediawiki delete mode 100644 377-Skill-Level.mediawiki delete mode 100644 377-Walkable-Interface.mediawiki delete mode 100644 443-Protocol.mediawiki delete mode 100644 464-Protocol.mediawiki delete mode 100644 468-Protocol.mediawiki delete mode 100644 474-Fourth-Interface-Option.mediawiki delete mode 100644 474-Protocol.mediawiki delete mode 100644 474-Remove-ignore.mediawiki delete mode 100644 508-Protocol.mediawiki delete mode 100644 634-Protocol.mediawiki delete mode 100644 666-Protocol.mediawiki delete mode 100644 668-Protocol.mediawiki delete mode 100644 718-Close-window.mediawiki delete mode 100644 718-Friends-packet.mediawiki delete mode 100644 718-Interface.mediawiki delete mode 100644 718-Music-effect.mediawiki delete mode 100644 718-Open-URL.mediawiki delete mode 100644 718-Player-under-NPC-priority.mediawiki delete mode 100644 718-Protocol.mediawiki delete mode 100644 742-Protocol.mediawiki delete mode 100644 Archive-Format.mediawiki delete mode 100644 Categories.mediawiki delete mode 100644 Category-Category-RS2.mediawiki delete mode 100644 Category-Data-Type.mediawiki delete mode 100644 Category-Packet-194.mediawiki delete mode 100644 Category-Packet-317.mediawiki delete mode 100644 Category-Packet-377.mediawiki delete mode 100644 Category-Packet-474.mediawiki delete mode 100644 Category-Packet-718.mediawiki delete mode 100644 Category-Packet-{{{revision}}}.mediawiki delete mode 100644 Category-Packet.mediawiki delete mode 100644 Category-RS2.mediawiki delete mode 100644 Category-RSC.mediawiki delete mode 100644 Class-Check.mediawiki delete mode 100644 DMCA-Policy.mediawiki delete mode 100644 Data-Types.mediawiki delete mode 100644 JAGGRAB-Protocol.mediawiki delete mode 100644 Map-Region-System.mediawiki delete mode 100644 Ondemand-Protocol.mediawiki delete mode 100644 QWord.mediawiki delete mode 100644 RS-String.mediawiki delete mode 100644 RSWiki-About.mediawiki delete mode 100644 RSWiki-Privacy-policy.mediawiki delete mode 100644 Template-Packet.mediawiki delete mode 100644 Word.mediawiki create mode 100644 book.toml delete mode 100755 category.sh create mode 100644 readme.md create mode 100644 src/135-Protocol.md create mode 100644 src/194-Clear-screen.md create mode 100644 src/194-Logout.md create mode 100644 src/194-Protocol.md create mode 100644 src/194-Show-interface.md rename 202-Protocol.mediawiki => src/202-Protocol.md (92%) create mode 100644 src/204-Items.md create mode 100644 src/204-NPCs.md create mode 100644 src/204-Objects.md rename 204-Protocol.mediawiki => src/204-Protocol.md (91%) create mode 100644 src/289-Construct-Map-Region.md create mode 100644 src/289-Player-Dialogue-Head.md create mode 100644 src/289-Protocol.md create mode 100644 src/289-Send-Player-Head.md create mode 100644 src/289-Send-sidebar-interface.md create mode 100644 src/317-Add-friend.md create mode 100644 src/317-Add-ignore.md create mode 100644 src/317-Alternate-item-option-2.md create mode 100644 src/317-Animation-reset.md create mode 100644 src/317-Attack-(NPC).md create mode 100644 src/317-Audio.md create mode 100644 src/317-Bank-10-items.md create mode 100644 src/317-Bank-5-items.md create mode 100644 src/317-Bank-X-items-part-1.md create mode 100644 src/317-Bank-X-items-part-2.md create mode 100644 src/317-Bank-all-items.md create mode 100644 src/317-Begin-player-updating.md create mode 100644 src/317-Button-click.md create mode 100644 src/317-Camera-movement.md create mode 100644 src/317-Camera-shake.md create mode 100644 src/317-Chat-interface-click.md create mode 100644 src/317-Chat-interface.md create mode 100644 src/317-Chat-settings.md create mode 100644 src/317-Clear-inventory.md create mode 100644 src/317-Clear-screen.md create mode 100644 src/317-Close-window.md create mode 100644 src/317-Construct-map-region.md create mode 100644 src/317-Create-Projectile.md create mode 100644 src/317-Design-screen.md create mode 100644 src/317-Display-hint-icon.md create mode 100644 src/317-Drop-item.md create mode 100644 src/317-Enter-name.md create mode 100644 src/317-Equip-item.md create mode 100644 src/317-Flash-sidebar.md create mode 100644 src/317-Focus-change.md create mode 100644 src/317-Follow.md create mode 100644 src/317-Force-client-setting.md create mode 100644 src/317-Friends-list-status.md create mode 100644 src/317-Ground-Item-Action.md create mode 100644 src/317-Hidden-Interface.md create mode 100644 src/317-Idle-logout.md create mode 100644 src/317-Idle.md create mode 100644 src/317-Initialize-player.md create mode 100644 src/317-Input-amount.md create mode 100644 src/317-Interface-animation.md create mode 100644 src/317-Interface-color.md create mode 100644 src/317-Interface-item.md create mode 100644 src/317-Interface-model-rotation.md create mode 100644 src/317-Interface-offset.md create mode 100644 src/317-Interface-over-tab.md create mode 100644 src/317-Inventory-overlay.md create mode 100644 src/317-Item-action-1.md create mode 100644 src/317-Item-on-floor.md create mode 100644 src/317-Item-on-item.md create mode 100644 src/317-Item-on-object.md create mode 100644 src/317-Item-on-player.md create mode 100644 src/317-Light-item.md create mode 100644 src/317-Load-map-region.md create mode 100644 src/317-Loading-finished.md create mode 100644 src/317-Logout.md create mode 100644 src/317-Mage-NPC.md create mode 100644 src/317-Magic-on-items.md create mode 100644 src/317-Magic-on-player.md create mode 100644 src/317-Minimap-State.md rename 317-Mouse-click.mediawiki => src/317-Mouse-click.md (52%) create mode 100644 src/317-Move-item.md create mode 100644 src/317-Music.md rename 317-NPC-Dialogue.mediawiki => src/317-NPC-Dialogue.md (50%) create mode 100644 src/317-NPC-action-1.md create mode 100644 src/317-NPC-action-2.md create mode 100644 src/317-NPC-action-3.md create mode 100644 src/317-NPC-head-on-interface.md create mode 100644 src/317-Object-action-1.md create mode 100644 src/317-Object-action-2.md create mode 100644 src/317-Object-action-3.md create mode 100644 src/317-Object-removal.md create mode 100644 src/317-Object-spawn.md create mode 100644 src/317-Open-chatbox-interface.md create mode 100644 src/317-Open-welcome-screen.md create mode 100644 src/317-Pickup-ground-item.md create mode 100644 src/317-Play-song.md create mode 100644 src/317-Player-Option.md create mode 100644 src/317-Player-command.md create mode 100644 src/317-Player-head-to-interface.md create mode 100644 src/317-Privacy-options.md create mode 100644 src/317-Protocol.md create mode 100644 src/317-Region-change.md create mode 100644 src/317-Remove-friend.md create mode 100644 src/317-Remove-ignore.md create mode 100644 src/317-Report-player.md create mode 100644 src/317-Reset-button-state.md create mode 100644 src/317-Reset-camera.md create mode 100644 src/317-Reset-destination.md create mode 100644 src/317-Run-energy.md create mode 100644 src/317-Scroll-position.md create mode 100644 src/317-Send-Skill.md create mode 100644 src/317-Send-add-friend.md create mode 100644 src/317-Send-add-ignore.md create mode 100644 src/317-Send-message.md create mode 100644 src/317-Send-private-message.md create mode 100644 src/317-Send-sidebar-interface.md create mode 100644 src/317-Set-interface-text.md create mode 100644 src/317-Show-interface.md create mode 100644 src/317-Show-multi-combat.md create mode 100644 src/317-Show-tab.md create mode 100644 src/317-Skill-level.md create mode 100644 src/317-Song-Queue.md create mode 100644 src/317-System-update.md create mode 100644 src/317-Trade-answer.md create mode 100644 src/317-Trade-request.md create mode 100644 src/317-Unequip-item.md create mode 100644 src/317-Update-item-container.md create mode 100644 src/317-Walkable-interface.md create mode 100644 src/317-Weight.md create mode 100644 src/357-Protocol.md create mode 100644 src/377-Animation-Reset.md create mode 100644 src/377-Camera-Shake.md create mode 100644 src/377-Construct-Map-Region.md create mode 100644 src/377-Create-Static-Graphic.md create mode 100644 src/377-Initialize-Player.md create mode 100644 src/377-Input-Amount.md create mode 100644 src/377-Interface-Animation.md create mode 100644 src/377-Interface-Item.md create mode 100644 src/377-Inventory-Overlay.md create mode 100644 src/377-Logout.md create mode 100644 src/377-Move-Camera.md create mode 100644 src/377-Open-Welcome-Screen.md create mode 100644 src/377-Play-Ambient-Wave.md create mode 100644 src/377-Protocol.md create mode 100644 src/377-Reset-Button-State.md create mode 100644 src/377-Reset-Ground-Items-and-Objects.md create mode 100644 src/377-Run-Energy.md create mode 100644 src/377-Send-Add-Friend.md create mode 100644 src/377-Send-Ground-Item.md create mode 100644 src/377-Send-Message.md create mode 100644 src/377-Send-Sidebar-Interface.md create mode 100644 src/377-Send-Sound.md create mode 100644 src/377-Skill-Level.md create mode 100644 src/377-Walkable-Interface.md create mode 100644 src/443-Protocol.md create mode 100644 src/464-Protocol.md create mode 100644 src/468-Protocol.md create mode 100644 src/474-Fourth-Interface-Option.md create mode 100644 src/474-Protocol.md create mode 100644 src/474-Remove-ignore.md create mode 100644 src/508-Protocol.md create mode 100644 src/634-Protocol.md create mode 100644 src/666-Protocol.md create mode 100644 src/668-Protocol.md create mode 100644 src/718-Close-window.md create mode 100644 src/718-Friends-packet.md create mode 100644 src/718-Interface.md create mode 100644 src/718-Music-effect.md create mode 100644 src/718-Open-URL.md create mode 100644 src/718-Player-under-NPC-priority.md create mode 100644 src/718-Protocol.md create mode 100644 src/742-Protocol.md create mode 100644 src/Archive-Format.md create mode 100644 src/Categories.md rename Category-Cache.mediawiki => src/Category-Cache.md (54%) create mode 100644 src/Category-Category-RS2.md create mode 100644 src/Category-Data-Type.md rename Category-NPCs.mediawiki => src/Category-NPCs.md (51%) create mode 100644 src/Category-Packet-194.md create mode 100644 src/Category-Packet-317.md create mode 100644 src/Category-Packet-377.md create mode 100644 src/Category-Packet-474.md create mode 100644 src/Category-Packet-718.md create mode 100644 src/Category-Packet-{{{revision}}}.md create mode 100644 src/Category-Packet.md create mode 100644 src/Category-RS2.md create mode 100644 src/Category-RSC.md create mode 100644 src/Class-Check.md create mode 100644 src/DMCA-Policy.md rename DWord.mediawiki => src/DWord.md (83%) create mode 100644 src/Data-Types.md rename Home.md => src/Home.md (100%) create mode 100644 src/JAGGRAB-Protocol.md create mode 100644 src/Map-Region-System.md rename OB3.mediawiki => src/OB3.md (85%) create mode 100644 src/Ondemand-Protocol.md create mode 100644 src/QWord.md create mode 100644 src/RS-String.md create mode 100644 src/RSWiki-About.md rename RSWiki-General-disclaimer.md => src/RSWiki-General-disclaimer.md (100%) rename RSWiki-IRC.md => src/RSWiki-IRC.md (100%) create mode 100644 src/RSWiki-Privacy-policy.md rename Rules.md => src/Rules.md (100%) create mode 100644 src/SUMMARY.md create mode 100644 src/Template-Packet.md create mode 100644 src/Word.md create mode 100644 src/chapter_1.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7585238 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +book diff --git a/135-Protocol.mediawiki b/135-Protocol.mediawiki deleted file mode 100644 index d89925e..0000000 --- a/135-Protocol.mediawiki +++ /dev/null @@ -1,1075 +0,0 @@ -[[Category RSC]] -This page refers to the RSC #135 client revision. You can find a partially refactored RSC #135 client [https://bitbucket.org/_mthd0/rsc here]. - -== '''Packet structure''' == - -
if (len >= 160 {
-    [byte] (160 + (len / 256))
-    [byte] (len & 0xff)
-} else {
-    [byte] len
-    if (len > 0) {
-        len--; // skip it
-        [byte] data[len] // last byte
-    }
-}
-[byte] opcode
-for (int i = 0; i < len; i++)
-    [byte] data[i]
-
- -RSC-135 uses big-endian byte order exclusively. - -'''Data types''' - -int8 - an 8-bit integer, or byte.
-int16 - a 16-bit integer, or short, or WORD.
-int32 - a 32-bit integer, or int, or DWORD.
-int64 - a 64-bit integer, or long, or QWORD.
-u - unsigned
-a - when writing, increment the MSB (most significant byte, or first byte) by 128. When reading, if the first byte unsigned is lower than 128, that's your value, otherwise decrement the first byte by 128 and read as normally.
- -'''Bit Access''' - -
private static final int bitmasks[] = {
-    0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535,
-    0x1ffff, 0x3ffff, 0x7ffff, 0xfffff, 0x1fffff, 0x3fffff, 0x7fffff, 0xffffff, 0x1ffffff,
-    0x3ffffff, 0x7ffffff, 0xfffffff, 0x1fffffff, 0x3fffffff, 0x7fffffff, -1
-};
-
-public void start_bit_access() {
-    bitpos = offset * 8;
-}
-
-public void write_bits(int num, int val) {
-    int bytepos = bitpos >> 3;
-    int bitoffset = 8 - (bitpos & 7);
-    bitpos += num;
-    for (; num > bitoffset; bitoffset = 8) {
-        buffer[bytepos] &= ~bitmasks[bitoffset];
-        buffer[bytepos++] |= (val >> (num - bitoffset)) & bitmasks[bitoffset];
-        num -= bitoffset;
-    }
-    if (num == bitoffset) {
-        buffer[bytepos] &= ~bitmasks[bitoffset];
-        buffer[bytepos] |= val & bitmasks[bitoffset];
-    } else {
-        buffer[bytepos] &= ~(bitmasks[num] << (bitoffset - num));
-        buffer[bytepos] |= (val & bitmasks[num]) << (bitoffset - num);
-    }
-}
-
-public void end_bit_access() {
-    offset = (bitpos + 7) / 8;
-}
- - -== '''Reference''' == -Player usernames are encoded and decoded with the following methods: - -
public static long encode_37(String s) {
-    String s1 = "";
-    for (int i = 0; i < s.length(); i++) {
-        char c = s.charAt(i);
-        if (c >= 'a' && c <= 'z')
-            s1 = s1 + c;
-        else if (c >= 'A' && c <= 'Z')
-            s1 = s1 + (char) ((c + 97) - 65);
-        else if (c >= '0' && c <= '9')
-            s1 = s1 + c;
-        else
-            s1 = s1 + ' ';
-    }
-    s1 = s1.trim();
-    if (s1.length() > 12)
-        s1 = s1.substring(0, 12);
-    long l = 0L;
-    for (int j = 0; j < s1.length(); j++) {
-        char c1 = s1.charAt(j);
-        l *= 37L;
-        if (c1 >= 'a' && c1 <= 'z')
-            l += (1 + c1) - 97;
-        else if (c1 >= '0' && c1 <= '9')
-            l += (27 + c1) - 48;
-    }
-    return l;
-}
-
-public static String decode_37(long l) {
-    String s = "";
-    while (l != 0L) {
-        int i = (int) (l % 37L);
-        l /= 37L;
-        if (i == 0) {
-            s = " " + s;
-        } else if (i < 27) {
-            if (l % 37L == 0L)
-                s = (char) ((i + 65) - 1) + s;
-            else
-                s = (char) ((i + 97) - 1) + s;
-        } else {
-            s = (char) ((i + 48) - 27) + s;
-        }
-    }
-    return s;
-}
-
- -Chat messages are encoded and decoded with the following methods: - -
public static byte encodedmsg[] = new byte[100];
-public static char decodedmsg[] = new char[100];
-private static char charmap[] = {
-    ' ', 'e', 't', 'a', 'o', 'i', 'h', 'n', 's', 'r', 'd', 'l', 'u', 'm', 'w', 'c', 'y', 'f',
-    'g', 'p', 'b', 'v', 'k', 'x', 'j', 'q', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8',
-    '9', ' ', '!', '?', '.', ',', ':', ';', '(', ')', '-', '&', '*', '\\', '\'', '@', '#', '+',
-    '=', '\243', '$', '%', '"', '[', ']'
-};
-
-public static String decode_msg(byte buffer[], int off, int enclen) {
-    try {
-        int i = 0;
-        int j = -1;
-        for (int k = 0; k < enclen; k++) {
-            int l = buffer[off++] & 0xff;
-            int i1 = l >> 4 & 0xf;
-            if (j == -1) {
-                if (i1 < 13)
-                    decodedmsg[i++] = charmap[i1];
-                else
-                    j = i1;
-            } else {
-                decodedmsg[i++] = charmap[((j << 4) + i1) - 195];
-                j = -1;
-            }
-            i1 = l & 0xf;
-            if (j == -1) {
-                if (i1 < 13)
-                    decodedmsg[i++] = charmap[i1];
-                else
-                    j = i1;
-            } else {
-                decodedmsg[i++] = charmap[((j << 4) + i1) - 195];
-                j = -1;
-            }
-        }
-        boolean flag = true;
-        for (int j1 = 0; j1 < i; j1++) {
-            char c = decodedmsg[j1];
-            if (j1 > 4 && c == '@')
-                decodedmsg[j1] = ' ';
-            if (c == '%')
-                decodedmsg[j1] = ' ';
-            if (flag && c >= 'a' && c <= 'z') {
-                decodedmsg[j1] += '\uFFE0';
-                flag = false;
-            }
-            if (c == '.' || c == '!')
-                flag = true;
-        }
-        return new String(decodedmsg, 0, i);
-    } catch (Exception ex) {
-        return "Cabbage";
-    }
-}
-
-public static int encode_msg(String str) {
-    if (str.length() > 80)
-        str = str.substring(0, 80);
-    str = str.toLowerCase();
-    int enclen = 0;
-    int i = -1;
-    for (int j = 0; j < str.length(); j++) {
-        char c = str.charAt(j);
-        int k = 0;
-        for (int l = 0; l < charmap.length; l++) {
-            if (c != charmap[l])
-                continue;
-            k = l;
-            break;
-        }
-        if (k > 12)
-            k += 195;
-        if (i == -1) {
-            if (k < 13)
-                i = k;
-            else
-                encodedmsg[enclen++] = (byte) k;
-        } else if (k < 13) {
-            encodedmsg[enclen++] = (byte) ((i << 4) + k);
-            i = -1;
-        } else {
-            encodedmsg[enclen++] = (byte) ((i << 4) + (k >> 4));
-            i = k & 0xf;
-        }
-    }
-    if (i != -1)
-        encodedmsg[enclen++] = (byte) (i << 4);
-    return enclen;
-}
- -== '''Login''' == -* The username and password are prepared. This is done by replacing any spaces or illegal characters with _ and appending spaces to the string until its length is 20. -* The connection with the server is established. -* The client reads a raw long from the server, this is the "session id". -* The client creates a new frame, opcode 0 or 19 if the player is reconnecting. -* A short, the client's revision number (135) is placed in the buffer. -* A long, the player's username encoded with mod37 (see above) is placed in the buffer. -* A string encoded with RSA and the player's session id (the password) is placed in the buffer. -* An integer, the player's "ranseed" value is placed in the buffer. -** "ranseed" does not seed anything. RSC135 does not use ISAAC ciphering. It is an applet parameter or read from uid.dat. Presumably, it was used to identify players connecting from the same computer. -* The stream is then flushed. -* A byte is read from the stream and discarded. -* Another byte is read, this is the login response code from the server. - -{| class="wikitable" -|- -! Login Resp. -! Description -|- -| 0 -| Successful login -|- -| 1 -|? -|- -| 3 -| Invalid username or password -|- -| 4 -| Username already in use -|- -| 5 -| Client has been updated -|- -| 6 -| IP address is already in use -|- -| 7 -| Login attempts exceeded -|- -| 11 -| Account temporarily disabled -|- -| 12 -| Account permanently disabled -|- -| 15 -| Server is currently full -|- -| 16 -| Members-only server -|- -| 17 -| Members-only area? -|} - -== '''Registration''' == - -* The username and password are prepared. This is done by replacing any spaces or illegal characters with _ and appending spaces to the string until its length is 20. -* The connection with the server is established. -* The client reads a raw long from the server, this is the "session id". -* The client creates a new frame, opcode 2. -* A short, the client's revision number (135) is placed in the buffer. -* A long, the player's username encoded with mod37 (see above) is placed in the buffer. -* A short, the applet's "referid" parameter is placed in the buffer. -* A string encoded with RSA and the player's session id (the password) is placed in the buffer. -* An integer, the player's "ranseed" value is placed in the buffer. -** "ranseed" does not seed anything. RSC135 does not use ISAAC ciphering. It is an applet parameter or read from uid.dat. Presumably, it was used to identify players connecting from the same computer. -* The stream is then flushed. -* A byte is read from the stream and discarded. -* Another byte is read, this is the newplayer response code from the server. - -{| class="wikitable" -|- -! Newp Resp. -! Description -|- -| 2 -| Successful registration -|- -| 3 -| Username already taken -|- -| 5 -| Client has been updated -|- -| 6 -| IP address is already in use -|- -| 7 -| Registration attempts exceeded? -|} - -== '''Mob Appearance Update''' == - -Firstly, create a new packet with the opcode 250. Write the total number of expected updates (uint16). - -Secondly, for each 'thing' to update, write the (server) index of the mob the update applies to (uint16), and the 'update type' (int8) followed by whatever data that type expects. - -'''Update type 1 - Public chat messages''' - -* uint8 - The length of the chat message. -* string (raw) - The encoded chat message. - -'''Update type 2 - Combat damage''' - -* uint8 - The damage recieved. -* uint8 - That mob's 'current' hitpoints level. -* uint8 - That mob's 'base' hitpoints. - -'''Update type 3/4 - Projectiles''' - -The update type is 3 when the target is a NPC, or 4 is the target is a player. - -The standard magic projectile id is 1, and the standard ranged projectile id is 2. - -* uint16 - The projectile's id. -* uint16 - The (server) index of the projectile's target entity. - -'''Update type 5 - Appearance''' - -Hair style, body type, leg type, and colours are as they are sent by the client's character design packet. - -* uint16 - The player's status? Doesn't appear to do anything. -* int64 - The player's username encoded with mod37. -* uint8 - The size of the sub-update. -** uint8 - The player's hair style + 1, or 0 if they are wearing a helmet -** uint8 - The player's body type + 1, or 0 if they are wearing a platebody -** uint8 - The player's leg type + 1, or 0 if they are wearing legs -** uint8 - The animation id + 1 (look in the client) of the player's offhand item or 0. -** uint8 - The animation id + 1 of the player's hand item or 0. -** uint8 - The animation id + 1 of the player's head item or 0. -** uint8 - The animation id + 1 of the player's body item or 0. -** uint8 - The animation id + 1 of the player's leg item or 0. -** uint8 - The animation id + 1 of the player's neck item or 0. -** uint8 - The animation id + 1 of the player's shoes or 0. -** uint8 - The animation id + 1 of the player's gloves or 0. -** uint8 - The animation id + 1 of the player's cape or 0. -* uint8 - The player's hair colour. -* uint8 - The player's top colour. -* uint8 - The player's leg colour. -* uint8 - The player's skin colour. -* uint8 - The player's combat level. -* uint8 - 1 if the player is skulled. - -== '''Packets''' == -The packet opcodes are unchanged from previous revisions, presumably this was before the protocol was being regularly modified to deter the developers of bots such as [[AutoRune]]. The payload/structure is quite similar to most other RSC revisions. - -=== '''Incoming Data''' === -'''TODO: Duelling stuff, 240 ''' -{| class="wikitable" -|- -! scope="col" width="140px" | Name -! scope="col" width="50px" | Opcode -! scope="col" width="350px" | Payload -! scope="col" width="300px" | Description -|- -! Display Message -| 8 || -* string - A raw string, the message. -| Informs the client of a line to be printed in the in-game message box. Messages preceded by @que@ are sent to the quest history box, messages preceded by @pri@ are sent to the private chat history box. -|- -! Close Connection -| 9 || -* None -| Forces the client to log out. -|- -! Logout Failed -| 10 || -* None -| You can't log out now! -|- -! Initialize Friends List -| 23 || -* uint8 - The total number of players in the list. -* int64... - The friend's username, encoded with mod37. -* uint8... - The world the friend is logged in to. 0 indicates the player is logged out. -| Initializes the player's friends list. Variable length. -|- -! Update Friends List -| 24 || -* int64 - The friend's username, encoded with mod37. -* uint8 - 0 if the friend is logged in, 1 if the friend is logged out. -| Informs the client that a friend has logged in/out or that a new friend has been added to the list. -|- -! Initialize Ignore List -| 26 || -* uint8 - The total number of players in the list. -* int64... - The friend's username, encoded with mod37. -| Initializes the player's ignore list. Variable length. -|- -! Initialize Privacy Settings -| 27 || -* int8 - 0/1. Block public chat messages. -* int8 - 0/1. Block private chat messages. -* int8 - 0/1. Block trade requests. -* int8 - 0/1. Block duel requests. -| Initializes the player's privacy settings. -|- -! Private Message -| 28 || -* int64 - The sender's username, encoded with mod37. -* string - The encoded message. -| Sends a private message to the client. -|- -! Player Movement -| 255 || -* bits[10] - This player's x position. -* bits[12] - This player's y position. -* bits[4] - This player's direction. -* bits[8] - The number of players the client already knows about to be sent (but it reads them in order?) -** bits[1]... - If the player has not moved & does not need to be removed, 0 & don't send the next 2 lots of bits, otherwise 1. -** bits[1]... - 1 if the player is to be removed. -** bits[3/4]... - The player's direction. 4 bits with a value of 12 if the player is to be removed, otherwise 3 bits. -* bits[11]... - The new player's (server) index. -* bits[5]... - The new player's offset x position. -* bits[5]... - The new player's offset y position. -* bits[4]... - The new player's direction. -* bits[1]... - something to do with c>s 254? 0 -| Updates the position/movement of the client's player and nearby players. Usually sent every game engine tick (600ms) rather than when needed as with other packets. Offset positions are this_x - player_x and are incremented by 32 if less than zero. Variable length. -|- -! Ground Item Positions -| 254 || -* uint16 - The id of the item to update -* int8 - The x position of the item relative to the player (item_x - player_x) -* int8 - The y position of the item relative to the player (item_y - player_y) -| Updates the positions of nearby ground items. if ((id & 0x8000) == 0), remove the item. Therefore, if the server increments the id by 0x8000, the item will be removed by the client. Variable length. -|- -! Object Positions -| 253 || -* uint16 - The id of the object to update -* int8 - The x position of the object relative to the player (object_x - player_x) -* int8 - The y position of the object relative to the player (object_y - player_y) -| Updates the positions of nearby objects. Variable length. If the id is real fuckin' big, remove it. -|- -! Whole Inventory -| 252 || -* uint8 - The number of items in the player's inventory. -* uint16... - The item's id. If equipped, increment by 0x8000. -* int32a... - The item's stack size. Only sent when the item is stackable. -| Sends over the player's whole inventory. Variable length. -|- -! Player Appearance -| 250 || -* See [[135 Protocol#Mob Appearance Update|Mob Appearance Update]] -| Updates things to do with nearby players that aren't related to movement. -|- -! Boundary Positions -| 249 || -* uint16 - The id of the bound to update -* int8 - The x position of the bound relative to the player (object_x - player_x) -* int8 - The y position of the bound relative to the player (object_y - player_y) -* int8 - The bound's direction -| Updates the positions of nearby bounds. Variable length. If the id is real fuckin' big, remove it. -|- -! NPC Movement -| 248 || -* bits[8] - The number of NPCs the client already knows about to be sent (but it reads them in order?). -** bits[1]... - 1 if the NPC has moved, otherwise 0 & don't send the next 2 lots of bits. -** bits[1]... - 1 if the NPC is to be removed, otherwise 0. -** bits[3/4]... - The NPC's direction, 4 bits with a value of 12 if the NPC is to be removed, otherwise 3 bits. -* bits[11]... - The new NPC's (server) index. -* bits[5]... - The new NPC's offset x position. -* bits[5]... - The new NPC's offset y position. -* bits[4]... - The new NPC's direction. -* bits[9]... - The new NPC's id. -| Updates the positions/movement of nearby NPCs. Usually sent every game engine tick (600ms) rather than when needed as with other packets. Offset positions are player_x - npc_x and are incremented by 32 if less than zero. Variable length. -|- -! NPC Appearance -| 247 || -* See [[135 Protocol#Mob Appearance Update|Mob Appearance Update]]. -| Updates things to do with nearby NPCs that aren't related to movement. Only the first two update types apply (NPCs cannot send projectiles or have changed sprites). NPC server index is used instead of player server index, obviously. -|- -! Display Dialog -| 246 || -* uint8 - The total number of options. -* uint8... - The length of the option string. -* string... - The option string. -| Displays a NPC chat dialog. Variable length. -|- -! Hide Dialog -| 245 || -* None -| Hides the NPC chat dialog. -|- -! Initialize Plane -| 244 || -* uint16 - The player's server index. -* uint16 - The width of the plane. (2304) -* uint16 - The height of the plane. (1776) -* uint16 - The index of the plane. (player_y / multiplier) -* uint16 - The plane multiplier. (944) -| Initializes the plane. Sent when the player first logs in, and when the player is teleported or moves up/down a height. -|- -! All Skills -| 243 || -* for (int i = 0; i < skill_count; i++) -* uint8... - The skill's current level. -* for (int i = 0; i < skill_count; i++) -* uint8... - The skill's base level. -* for (int i = 0; i < skill_count; i++) -* int32... - The skill's xp points. -* uint8 - The player's quest points. -| Updates all of the player's skills and quest points. The 135 client reads 18 skills: Attack, Defense, Strength, Hits, Ranged, Prayer, Magic, Cooking, Woodcutting, Fletching, Fishing, Firemaking, Crafting, Smithing, Mining, Herblaw, Carpentry, Thieving. -|- -! Equipment Bonuses -| 242 || -* uint8 - The armour's bonus. -* uint8 - The weapon's accuracy bonus. -* uint8 - The weapon's strength bonus. -* uint8 - The magic bonus. -* unit8 - The prayer bonus. -| Updates the player's equipment bonuses. Variable length. -|- -! Player Death -| 241 || -* None -| Displays the "Oh dear! You are dead..." screen. -|- -! Environment -| 240 || -* ? -| Doesn't appear to be important when you have everything else. It might be useful to have though, so why don't you be kind and document it? :) -|- -! Display Character Design -| 239 || -* None -| Displays the character design interface. -|- -! Display Trade Offer -| 238 || -* uint16 - The server index of the player we are trading with. -| Displays the trade offer interface. -|- -! Hide Trade -| 237 || -* None -| Hides the trade offer and confirm interfaces. -|- -! Update Trade Offer -| 236 || -* int8 - The number of items the other player has traded. -* uint16... - The item's id. -* int32a... - The item's stack size. -| Updates the other player's trade offer. -|- -! Other's Trade Status -| 235 || -* int8 - 1 = yes, anything else = no -| Has the other player accepted the trade offer? -|- -! Display Shop -| 234 || -* uint8 - The number of items in the shop. -* int8 - 1 if the shop is a general store. -* uint8 - This shop's selling price modifier. -* uint8 - This shop's buying price modifier. -* uint16... - The item's id. -* uint16... - The item's stack size. -* uint8... - The item's price. -| Displays the shop interface. Variable length. -|- -! Hide Shop -| 233 || -* None -| Hides the shop interface. -|- -! Our Trade Status -| 229 || -* int8 - 1 = yes, anything else = no -| Have we accepted the trade offer? -|- -! Init Game Settings -| 228 || -* int8 - Automatic camera rotation. 1 = enabled, anything else is disabled. -* int8 - Single mouse button. 1 = enabled, anything else is disabled. -* int8 - Sound effects. 1 = disabled, anything else is enabled. -| Sets the player's gameplay settings. -|- -! Set Prayers -| 227 || -* int8... - The prayer's status. 1 = enabled, anything else is disabled. -| Sets the status of every prayer. Variable length. -|- -! Set Quests -| 226 || -* int8... - The quest's completion status. 1 = completed, anything else is incomplete. -| Sets the player's quest completion status. Variable length. -|- -! Display Bank -| 222 || -* uint8 - The number of items in the player's bank. -* uint8 - The maximum number of items the player is allowed to store. -* uint16... - The item's id. -* int32a... - The item's stack size. -| Displays the bank interface. Variable length. -|- -! Hide Bank -| 221 || -* None -| Hides the bank interface. -|- -! Bank Update -| 214 || -* uint8 - The item's slot. -* uint16 - The item's id. -* int32a - The item's stack size. 0 to remove. -| Updates/adds/removes a single item in the bank interface to save bytes. -|- -! Single XP Update -| 220 || -* uint8 - The skill's id. -* int32 - The skill's xp. -| Updates a single skill's XP to save bytes. -|- -! Update InvItem -| 213 || -* uint8 - The item's slot. -* uint16 - The item's id. Increment by 0x7fff to change stack size. -* int32a - The item's stack size. May not be read. -| Adds a single item, or changes the ID, or changes the stack size to save bytes. If id / 32768 == 1, the item is equipped. -|- -! Remove InvItem -| 212 || -* uint8 - The item's slot. -| Removes a single item from the player's inventory to save bytes. -|- -! Single Skill Update -| 211 || -* uint8 - The skill's id. -* uint8 - The skill's current level. -* uint8 - The skill's base level. -* int32 - The skill's experience points. -| Updates a single skill to save bytes. -|- -! Play Sound -| 207 || -* byte[] - The name of the sound. -| Plays a sound/audio file in the client. -|- -! Open Character Design Panel -| 203 || -* None. -| Open the character design panel. -|- -|} -=== '''Outgoing Data''' === -'''TODO: recovery questions''' -{| class="wikitable" -|- -! scope="col" width="140px" | Name -! scope="col" width="50px" | Opcode -! scope="col" width="350px" | Payload -! scope="col" width="300px" | Description -|- -! Login -| 0 || -* See [[135 Protocol#Login|Login]] -| Logs the player in. -|- -! Reconnect -| 19 || -* See [[135 Protocol#Login|Login]] -| Reconnects the player after they are disconnected. -|- -! Disconnect -| 1 || -* None -| Sent after the server sends Close Connection (opcode 9), possibly to notify the server that the player is to be removed. -|- -! Newplayer (Registration) -| 2 || -* See [[135 Protocol#Registration|Registration]] -| Registers a new user. -|- -! Public Chat -| 3 || -* String - The encoded message. -| Sends a message to public chat. -|- -! Ping -| 5 || -* None -| Ping -|- -! Attempt Logout -| 6 || -* None -| Inform the server that the client is attempting to log out -|- -! Admin Command -| 7 || -* String - The command -| Sends a command to the server to be executed -|- -! Report Abuse -| 10 || -* int64 - The mod37 encoded username to report -| Sends an abuse report to the server -|- -! Change Password -| 25 || -* RSAString - Your old password + new password encoded with RSA -* Old password substring - RSAString.substring(0,20).trim() -* New password substring - RSAString.substring(20, RSAString.length()).trim(); -| Is used to change your password ingame -|- -! Add Friend -| 26 || -* int64 - mod37 encoded username -| Adds a user to your friends list -|- -! Remove Friend -| 27 || -* int64 - The mod37 encoded username to report -| Removes a user from your friends list -|- -! Private Message -| 28 || -* int64 - The mod37 encoded username to send the message to -* String - The message, scrambed -| Sends a message to the specified user -|- -! Ignore User -| 29 || -* int64 - The mod37 encoded username to ignore -| Adds a user to your ignore list -|- -! Remove Ignore -| 30 || -* int64 - mod37 encoded username -| Removes a user from your ignore list -|- -! Update Privacy Settings -| 31 || -* int8 - 1 to block public chat -* int8 - 1 to block private chat -* int8 - 1 to block trade requests -* int8 - 1 to block duel requests -| Updates the privacy settings -|- -! Walk to Tile -| 255 || -* int16 - (start_x + area_x). The initial position. -* int16 - (start_y + area_y) -* int8... - (route_x[i] - start_x) -* int8... - (route_y[i] - start_y) -| Variable length. Walks to a tile. The number of steps can be calculated by dividing the available data by 2. -|- -! Walk to Entity -| 215 || -* The same as 255. -| Variable length. Walks to an entity. The number of steps can be calculated by dividing the available data by 2. -|- -! Player Response -| 254 || -* int16 - The number of players sent -* int16... - The player's server index -* int16... - The player's status, as sent with the appearance update packet -| Variable length. Informs the server of players the client knows about after a positions/movement update packet. -|- -! Drop Item -| 251 || -* int16 - The slot of the item to drop -| Drops the specified item on the ground -|- -! Cast on Item -| 220 || -* int16 - The slot of the item to cast a spell on -* int16 - The id of the spell to cast -| Casts a spell (such as High Alchemy) on the specified item -|- -! Use with Item -| 240 || -* int16 - The slot of the first item to use -* int16 - The slot of the second item to use -| Uses an item in the player's inventory with another item in the player's inventory -|- -! Remove Item -| 248 || -* int16 - The slot of the item to unequip -| Unequips the specified inventory item -|- -! Wear Item -| 249 || -* int16 - The slot of the item to equip -| Equips the specified inventory item -|- -! Item Command -| 246 || -* int16 - The slot of the item to use -| Buries, eats, etc the specified inventory item -|- -! Select Option -| 237 || -* int8 - The position of the option in the dialog_options array -| Selects an option in a NPC dialog -|- -! Combat Style -| 231 || -* int8 - The position of the combat style in the list -| Sets the player's combat style. -* 0 - Controlled -* 1 - Aggressive -* 2 - Accurate -* 3 - Defensive -|- -! Close Bank -| 207 || -* None -| Informs the server that the player has closed the banking interface. -|- -! Withdraw Item -| 206 || -* int16 - The ID of the item to withdraw -* int16 - The amount of the specified item to withdraw -| Withdraws a single type of item from the player's bank. -|- -! Deposit Item -| 205 || -* int16 - The ID of the item to deposit -* int16 - The amount of the specified item to deposit -| Deposits a single type of item into the player's bank. -|- -! Disable Prayer -| 211 || -* int8 - The ID of the prayer to disable -| Disables a prayer. -|- -! Enable Prayer -| 212 || -* int8 - The ID of the prayer to enable -| Enables a prayer. -|- -! Update Game Setting -| 213 || -* int8 - The setting type -* int8 - The setting value (1 or 0) -| Setting types: -* 0 - Camera angle mode (auto/manual) -* 1 - Number of mouse buttons (1/2) -* 2 - Sound effects (off/on) -|- -! Confirm Trade -| 202 || -* None -| Confirms the trade offer. -|- -! Accept Trade -| 232 || -* None -| Accepts the trade offer. -|- -! Decline Trade -| 233 || -* None -| Declines the trade offer. -|- -! Trade Update -| 234 || -* int8 - The amount of traded items to send to the server -* int16... - The id of the item -* int32... - The amount/stack size of the item -| Variable length. Updates the trade offer. -|- -! Cast on GItem -| 224* || -* int16 - The item's X coordinate -* int16 - The item's Y coordinate -* int16 - The item's ID -* int16 - The spell's ID -| Casts a spell on an item on the ground. -|- -! Use with GItem -| 250* || -* int16 - The item's X coordinate -* int16 - The item's Y coordinate -* int16 - The item's ID -* int16 - The inventory slot -| Uses an item in the player's inventory with an item on the ground. -|- -! Take GItem -| 252* || -* int16 - The item's X coordinate -* int16 - The item's Y coordinate -* int16 - The item's ID -| Picks up an item on the ground. -|- -! Cast on Boundary -| 223* || -* int16 - The bound's X coordinate -* int16 - The bound's Y coordinate -* int8 - The bound's direction -* int16 - The spell's ID -| Casts a spell on a boundary (or 'wall object'). -|- -! Use with Boundary -| 239* || -* int16 - The bound's X coordinate -* int16 - The bound's Y coordinate -* int8 - The bound's direction -* int16 - The inventory slot -| Uses an item in the player's inventory with a boundary (or 'wall object'). -|- -! Boundary Cmd 1 -| 238* || -* int16 - The bound's X coordinate -* int16 - The bound's Y coordinate -* int8 - The bound's direction -| Performs the primary action (usually 'open') on a boundary (or 'wall object'). -|- -! Boundary Cmd 2 -| 229* || -* int16 - The bound's X coordinate -* int16 - The bound's Y coordinate -* int8 - The bound's direction -| Performs the secondary action (usually 'close' or 'picklock') on a boundary (or 'wall object'). -|- -! Cast on Object -| 222* || -* int16 - The object's X coordinate -* int16 - The object's Y coordinate -* int16 - The spell's ID -| Casts a spell on an object. -|- -! Use with Object -| 241* || -* int16 - The object's X coordinate -* int16 - The object's Y coordinate -* int16 - The inventory slot -| Uses an item in the player's inventory with an object. -|- -! Object Cmd 1 -| 241* || -* int16 - The object's X coordinate -* int16 - The object's Y coordinate -| Performs the primary action on an object (for example, 'mine'). -|- -! Object Cmd 2 -| 230* || -* int16 - The object's X coordinate -* int16 - The object's Y coordinate -| Performs the secondary action on an object (for example, 'prospect'). -|- -! Cast on NPC -| 225* || -* int16 - The NPC's server index -* int16 - The spell's ID -| Casts a spell on a non-player character. -|- -! Use with NPC -| 243* || -* int16 - The NPC's server index -* int16 - The inventory slot -| Uses an item in the player's inventory with a non-player character. -|- -! Talk to NPC -| 245* || -* int16 - The NPC's server index -| Starts talking to a non-player character. -|- -! Attack NPC -| 244* || -* int16 - The NPC's server index -| Starts attacking a non-player character. -|- -! NPC Cmd 2 -| 195* || -* int16 - The NPC's server index -| Performs the secondary action on a non-player character, usually 'pickpocket'. -|- -! Cast on Self -| 227 || -* int16 - The spell's ID -| Cast a teleport or charge spell on the local player. -|- -! Cast on Player -| 226* || -* int16 - The player's server index -* int16 - The spell's ID -| Casts a spell on another player. -|- -! Use with Player -| 219* || -* int16 - The player's server index -* int16 - The inventory slot -| Uses an item (for example, a Gnomeball, or a Christmas cracker) on another player. -|- -! Attack Player -| 228* || -* int16 - The player's server index -| Starts attacking another player. -|- -! Trade Player -| 235 || -* int16 - The player's server index -| Sends a trade request to another player. -|- -! Follow Player -| 214 || -* int16 - The player's server index -| Starts following another player. -|- -! Duel Player -| 204 || -* int16 - The player's server index -| Sends a duel request to another player. -|- -! RuntimeException -| 17 || -* String - The text of the error. -| Sent when the client throws an exception while processing data sent by the server. -|- -! Confirm Duel Offer -| 198 || -* None -| Confirms the duel offer. -|- -! Accept Duel Offer -| 199 || -* None -| Accepts the duel offer. -|- -! Duel Settings -| 200 || -* int8 - No retreating, 1 or 0 -* int8 - No magic, 1 or 0 -* int8 - No prayers, 1 or 0 -* int8 - No weapons, 1 or 0 -| Updates the duel settings. -|- -! Duel Items -| 201 || -* int8 - The total number of offered items -* int16... - Offered item ID -* int32... - Offered item stack size -| Variable length. Updates the stake. -|- -! Decline Duel Offer -| 203 || -* None -| Declines the duel offer. -|- -! Character Design -| 236 || -* int8 - The player's gender - 2=Female, 1=Male -* int8 - The player's hair style -* int8 - The player's 'body type' - 4=Female, 1=Male -* int8 - The player's 'leg type' - always 2 -* int8 - The player's hair colour -* int8 - The player's top colour -* int8 - The player's leg colour -* int8 - The player's skin colour -* int8 - The player's class -| Submits the player's chosen design when they log in for the first time. -* 0 - Adventurer class -* 1 - Warrior class -* 2 - Wizard class -* 3 - Ranger class -* 4 - Miner class -|} -Notes: - -* Opcodes marked with * are preceded by Walk to Entity. -* When closing the duel confirm screen, it may send the decline trade packet, for some reason. \ No newline at end of file diff --git a/194-Clear-screen.mediawiki b/194-Clear-screen.mediawiki deleted file mode 100644 index d83366a..0000000 --- a/194-Clear-screen.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 194]] -{{packet|name=Clear screen|description=Clears the screen of all open interfaces.|opcode=240|type=Fixed|length=0|revision=194}} -== Clear Screen == - -=== Description === - -Removes all open interfaces from the players screen. \ No newline at end of file diff --git a/194-Logout.mediawiki b/194-Logout.mediawiki deleted file mode 100644 index 706b213..0000000 --- a/194-Logout.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 194]] -{{packet|name=Logout|description=Forces the client to logout.|opcode=192|type=Fixed|length=0|revision=194}} -== Send Message == - -=== Description === - -Forces the client to logout cleanly and return to the login screen, without attempting a reconnection. \ No newline at end of file diff --git a/194-Protocol.mediawiki b/194-Protocol.mediawiki deleted file mode 100644 index 903d99f..0000000 --- a/194-Protocol.mediawiki +++ /dev/null @@ -1,85 +0,0 @@ -[[Category Packet]] -[[Category Packet 194]] -[[Category RS2]] - -Just in case somebody cares about this. - -== '''Packet structure''' == -? - -== '''Login''' == -? - -== '''Game Protocol''' == - -===Server -> Client Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 137 -| FIXED -| 2 -| [[194 Show interface|Show interface]] -| Displays a normal interface. -|- -| 164 -| VARIABLE_BYTE -| N/A -| [[194 Send message|Send message]] -| Sends a server message (e.g. 'Welcome to RuneScape') or trade/duel request. -|- -| 192 -| FIXED -| 0 -| [[194 Logout|Logout]] -| Disconnects the client from the server. -|- -| 206 -| VARIABLE_BYTE -| N/A -| [[194 Set MIDI|Set MIDI]] -| Sets the current song playing on the client. -|- -| 210 -| FIXED -| 3 -| [[194 Send sidebar interface|Send sidebar interface]] -| Assigns an interface to one of the tabs in the game sidebar. -|- -| 240 -| FIXED -| 0 -| [[194 Clear screen|Clear screen]] -| Clears the screen of all open interfaces. -|- -|} - -===Client -> Server Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 54 -| VARIABLE_BYTE -| N/A -| Send Chat Message -| Sends a chat message to the server. -|- -| 237 -| VARIABLE_BYTE -| N/A -| Send Command -| Sends a command (any message prefixed with ::) to the server. -|- -|} \ No newline at end of file diff --git a/194-Show-interface.mediawiki b/194-Show-interface.mediawiki deleted file mode 100644 index 3a3fc16..0000000 --- a/194-Show-interface.mediawiki +++ /dev/null @@ -1,19 +0,0 @@ -[[Category Packet]] -[[Category Packet 194]] -{{packet|name=Show interface|description=Displays a normal interface.|opcode=137|type=Fixed|length=2|revision=194}} -== Show interface == - -=== Description === - -Displays a normal interface with the given id. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Short]] -| The interface id. -|- -|} \ No newline at end of file diff --git a/204-Items.mediawiki b/204-Items.mediawiki deleted file mode 100644 index 7cee319..0000000 --- a/204-Items.mediawiki +++ /dev/null @@ -1,1296 +0,0 @@ -[[Category RSC]] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -tr> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
iditem namedescriptionwieldablestackable
<0.png>0Iron MaceA spiky maceX-
<1.png>1Iron Short SwordA razor sharp swordX-
<2.png>2Iron Kite ShieldA large metal shieldX-
<3.png>3Iron Square ShieldA medium metal shieldX-
<4.png>4Wooden ShieldA solid wooden shieldX-
<5.png>5Medium Iron HelmetA medium sized helmetX-
<6.png>6Large Iron HelmetA full face helmetX-
<7.png>7Iron Chain Mail BodyA series of connected metal ringsX-
<8.png>8Iron Plate Mail BodyProvides excellent protectionX-
<9.png>9Iron Plate Mail LegsThese look pretty heavyX-
<10.png>10CoinsLovely money!-X
<11.png>11Bronze ArrowsArrows with bronze heads-X
<12.png>12Iron AxeA woodcutters axeX-
<13.png>13KnifeA dangerous looking knife--
<14.png>14LogsA number of wooden logs--
<15.png>15Leather ArmourBetter than no armour!X-
<16.png>16Leather GlovesThese will keep my hands warm!X-
<17.png>17BootsComfortable leather bootsX-
<18.png>18CabbageYuck I don't like cabbage--
<19.png>19EggA nice fresh egg--
<20.png>20BonesEw it's a pile of bones--
<21.png>21BucketIt's a wooden bucket--
<22.png>22MilkIt's a bucket of milk--
<23.png>23FlourA little heap of flour--
<24.png>24Amulet of GhostSpeakIt lets me talk to ghostsX-
<25.png>25Silverlight key 1A key given to me by Wizard Traiborn--
<26.png>26Silverlight key 2A key given to me by Captain Rovin--
<27.png>27skullA spooky looking skull--
<28.png>28Iron daggerShort but pointyX-
<29.png>29grainSome wheat heads--
<30.png>30Book--
<31.png>31Fire-RuneOne of the 4 basic elemental runes-X
<32.png>32Water-RuneOne of the 4 basic elemental runes-X
<33.png>33Air-RuneOne of the 4 basic elemental runes-X
<34.png>34Earth-RuneOne of the 4 basic elemental runes-X
<35.png>35Mind-RuneUsed for low level missile spells-X
<36.png>36Body-RuneUsed for curse spells-X
<37.png>37Life-RuneUsed for summon spells-X
<38.png>38Death-RuneUsed for high level missile spells-X
<39.png>39NeedleUsed with a thread to make clothes-X
<40.png>40Nature-RuneUsed for alchemy spells-X
<41.png>41Chaos-RuneUsed for mid level missile spells-X
<42.png>42Law-RuneUsed for teleport spells-X
<43.png>43ThreadUsed with a needle to make clothes-X
<44.png>44Holy Symbol of saradominThis needs a string putting on it--
<45.png>45Unblessed Holy SymbolThis needs blessingX-
<46.png>46Cosmic-RuneUsed for enchant spells-X
<47.png>47keyThe key to get into the phoenix gang--
<48.png>48keyThe key to the phoenix gang's weapons store--
<49.png>49scrollAn intelligence Report--
<50.png>50WaterIt's a bucket of water--
<51.png>51Silverlight key 3A key I found in a drain--
<52.png>52SilverlightA magic swordX-
<53.png>53Broken shieldHalf of the shield of Arrav--
<54.png>54Broken shieldHalf of the shield of Arrav--
<55.png>55CadavaberriesPoisonous berries--
<56.png>56messageA message from Juliet to Romeo--
<57.png>57CadavaI'm meant to give this to Juliet--
<58.png>58potionthis is meant to be good for spots--
<59.png>59Phoenix CrossbowFormer property of the phoenix gangX-
<60.png>60CrossbowThis fires crossbow boltsX-
<61.png>61CertificateI can use this to claim a reward from the king--
<62.png>62bronze daggerShort but pointyX-
<63.png>63Steel daggerShort but pointyX-
<64.png>64Mithril daggerShort but pointyX-
<65.png>65Adamantite daggerShort but pointyX-
<66.png>66Bronze Short SwordA razor sharp swordX-
<67.png>67Steel Short SwordA razor sharp swordX-
<68.png>68Mithril Short SwordA razor sharp swordX-
<69.png>69Adamantite Short SwordA razor sharp swordX-
<70.png>70Bronze Long SwordA razor sharp swordX-
<71.png>71Iron Long SwordA razor sharp swordX-
<72.png>72Steel Long SwordA razor sharp swordX-
<73.png>73Mithril Long SwordA razor sharp swordX-
<74.png>74Adamantite Long SwordA razor sharp swordX-
<75.png>75Rune long swordA razor sharp swordX-
<76.png>76Bronze 2-handed SwordA very large swordX-
<77.png>77Iron 2-handed SwordA very large swordX-
<78.png>78Steel 2-handed SwordA very large swordX-
<79.png>79Mithril 2-handed SwordA very large swordX-
<80.png>80Adamantite 2-handed SwordA very large swordX-
<81.png>81rune 2-handed SwordA very large swordX-
<82.png>82Bronze ScimitarA vicious curved swordX-
<83.png>83Iron ScimitarA vicious curved swordX-
<84.png>84Steel ScimitarA vicious curved swordX-
<85.png>85Mithril ScimitarA vicious curved swordX-
<86.png>86Adamantite ScimitarA vicious curved swordX-
<87.png>87bronze AxeA woodcutters axeX-
<88.png>88Steel AxeA woodcutters axeX-
<89.png>89Iron battle AxeA vicious looking axeX-
<90.png>90Steel battle AxeA vicious looking axeX-
<91.png>91Mithril battle AxeA vicious looking axeX-
<92.png>92Adamantite battle AxeA vicious looking axeX-
<93.png>93Rune battle AxeA vicious looking axeX-
<94.png>94Bronze MaceA spiky maceX-
<95.png>95Steel MaceA spiky maceX-
<96.png>96Mithril MaceA spiky maceX-
<97.png>97Adamantite MaceA spiky maceX-
<98.png>98Rune MaceA spiky maceX-
<99.png>99Brass keyI wonder what this is the key to--
<100.png>100staffIt's a slightly magical stickX-
<101.png>101Staff of AirA Magical staffX-
<102.png>102Staff of waterA Magical staffX-
<103.png>103Staff of earthA Magical staffX-
<104.png>104Medium Bronze HelmetA medium sized helmetX-
<105.png>105Medium Steel HelmetA medium sized helmetX-
<106.png>106Medium Mithril HelmetA medium sized helmetX-
<107.png>107Medium Adamantite HelmetA medium sized helmetX-
<108.png>108Large Bronze HelmetA full face helmetX-
<109.png>109Large Steel HelmetA full face helmetX-
<110.png>110Large Mithril HelmetA full face helmetX-
<111.png>111Large Adamantite HelmetA full face helmetX-
<112.png>112Large Rune HelmetA full face helmetX-
<113.png>113Bronze Chain Mail BodyA series of connected metal ringsX-
<114.png>114Steel Chain Mail BodyA series of connected metal ringsX-
<115.png>115Mithril Chain Mail BodyA series of connected metal ringsX-
<116.png>116Adamantite Chain Mail BodyA series of connected metal ringsX-
<117.png>117Bronze Plate Mail BodyProvides excellent protectionX-
<118.png>118Steel Plate Mail BodyProvides excellent protectionX-
<119.png>119Mithril Plate Mail BodyProvides excellent protectionX-
<120.png>120Adamantite Plate Mail BodyProvides excellent protectionX-
<121.png>121Steel Plate Mail LegsThese look pretty heavyX-
<122.png>122Mithril Plate Mail LegsThese look pretty heavyX-
<123.png>123Adamantite Plate Mail LegsThese look pretty heavyX-
<124.png>124Bronze Square ShieldA medium metal shieldX-
<125.png>125Steel Square ShieldA medium metal shieldX-
<126.png>126Mithril Square ShieldA medium metal shieldX-
<127.png>127Adamantite Square ShieldA medium metal shieldX-
<128.png>128Bronze Kite ShieldA large metal shieldX-
<129.png>129Steel Kite ShieldA large metal shieldX-
<130.png>130Mithril Kite ShieldA large metal shieldX-
<131.png>131Adamantite Kite ShieldA large metal shieldX-
<132.png>132cookedmeatMmm this looks tasty--
<133.png>133raw chickenI need to cook this first--
<134.png>134burntmeatOh dear--
<135.png>135potThis pot is empty--
<136.png>136flourThere is flour in this pot--
<137.png>137bread doughSome uncooked dough--
<138.png>138breadNice crispy bread--
<139.png>139burntbreadThis bread is ruined!--
<140.png>140jugThis jug is empty--
<141.png>141waterIt's full of water--
<142.png>142wineIt's full of wine--
<143.png>143grapesGood grapes for wine making--
<144.png>144shearsFor shearing sheep--
<145.png>145woolI think this came from a sheep--
<146.png>146furThis would make warm clothing--
<147.png>147cow hideI should take this to the tannery--
<148.png>148leatherIt's a piece of leather--
<149.png>149claySome hard dry clay--
<150.png>150copper orethis needs refining--
<151.png>151iron orethis needs refining--
<152.png>152goldthis needs refining--
<153.png>153mithril orethis needs refining--
<154.png>154adamantite orethis needs refining--
<155.png>155coalhmm a non-renewable energy source!--
<156.png>156Bronze PickaxeUsed for mining--
<157.png>157uncut diamondthis would be worth more cut--
<158.png>158uncut rubythis would be worth more cut--
<159.png>159uncut emeraldthis would be worth more cut--
<160.png>160uncut sapphirethis would be worth more cut--
<161.png>161diamondthis looks valuable--
<162.png>162rubythis looks valuable--
<163.png>163emeraldthis looks valuable--
<164.png>164sapphirethis looks valuable--
<165.png>165HerbI need a closer look to identify this--
<166.png>166tinderboxuseful for lighting a fire--
<167.png>167chiselgood for detailed crafting--
<168.png>168hammergood for hitting things!--
<169.png>169bronze barit's a bar of bronze--
<170.png>170iron barit's a bar of iron--
<171.png>171steel barit's a bar of steel--
<172.png>172gold barthis looks valuable--
<173.png>173mithril barit's a bar of mithril--
<174.png>174adamantite barit's a bar of adamantite--
<175.png>175Pressure gaugeIt looks like part of a machine--
<176.png>176Fish FoodKeeps your pet fish strong and healthy--
<177.png>177PoisonThis stuff looks nasty--
<178.png>178Poisoned fish foodDoesn't seem very nice to the poor fishes--
<179.png>179spinach rollA home made spinach thing--
<180.png>180Bad wineOh dear--
<181.png>181AshesA heap of ashes--
<182.png>182ApronA mostly clean apronX-
<183.png>183CapeA bright red capeX-
<184.png>184Wizards robeI can do magic better in thisX-
<185.png>185wizardshatA silly pointed hatX-
<186.png>186Brass necklaceI'd prefer a gold oneX-
<187.png>187skirtA ladies skirtX-
<188.png>188LongbowA Nice sturdy bowX-
<189.png>189ShortbowShort but effectiveX-
<190.png>190Crossbow boltsGood if you have a crossbow!-X
<191.png>191Apronthis will help keep my clothes cleanX-
<192.png>192Chef's hatWhat a silly hatX-
<193.png>193BeerA glass of frothy ale--
<194.png>194skirtA ladies skirtX-
<195.png>195skirtA ladies skirtX-
<196.png>196Black Plate Mail BodyProvides excellent protectionX-
<197.png>197Staff of fireA Magical staffX-
<198.png>198Magic StaffA Magical staffX-
<199.png>199wizardshatA silly pointed hatX-
<200.png>200silkIt's a sheet of silk--
<201.png>201flierGet your axes from Bob's axes--
<202.png>202tin orethis needs refining--
<203.png>203Mithril AxeA powerful axeX-
<204.png>204Adamantite AxeA powerful axeX-
<205.png>205bronze battle AxeA vicious looking axeX-
<206.png>206Bronze Plate Mail LegsThese look pretty heavyX-
<207.png>207Ball of woolSpun from sheeps wool--
<208.png>208Oil canIts pretty full--
<209.png>209CapeA warm black capeX-
<210.png>210KebabA meaty Kebab--
<211.png>211SpadeA fairly small spade--
<212.png>212Closet KeyA slightly smelly key--
<213.png>213rubber tubeIts slightly charred--
<214.png>214Bronze Plated SkirtDesigner leg protectionX-
<215.png>215Iron Plated SkirtDesigner leg protectionX-
<216.png>216Black robeI can do magic better in thisX-
<217.png>217stakeA very pointy stickX-
<218.png>218GarlicA clove of garlic--
<219.png>219Red spiders eggseewww--
<220.png>220Limpwurt rootthe root of a limpwurt plant--
<221.png>221Strength Potion4 doses of strength potion--
<222.png>222Strength Potion3 doses of strength potion--
<223.png>223Strength Potion2 doses of strength potion--
<224.png>224Strength Potion1 dose of strength potion--
<225.png>225Steel Plated skirtdesigner leg protectionX-
<226.png>226Mithril Plated skirtDesigner Leg protectionX-
<227.png>227Adamantite Plated skirtDesigner leg protectionX-
<228.png>228CabbageYuck I don't like cabbage--
<229.png>229CapeA thick blue capeX-
<230.png>230Large Black HelmetA full face helmetX-
<231.png>231Red BeadA small round red bead--
<232.png>232Yellow BeadA small round yellow bead--
<233.png>233Black BeadA small round black bead--
<234.png>234White BeadA small round white bead--
<235.png>235Amulet of accuracyIt increases my aimX-
<236.png>236RedberriesVery bright red berries--
<237.png>237RopeA Coil of rope--
<238.png>238ReddyeA little bottle of dye--
<239.png>239YellowdyeA little bottle of dye--
<240.png>240PasteA bottle off skin coloured paste--
<241.png>241OnionA strong smelling onion--
<242.png>242Bronze keyA heavy key--
<243.png>243Soft ClayClay that's ready to be used--
<244.png>244wigA blonde wig--
<245.png>245wigA wig made from wool--
<246.png>246Half full wine jugIt's half full of wine--
<247.png>247KeyprintAn imprint of a key in a lump of clay--
<248.png>248Black Plate Mail LegsThese look pretty heavyX-
<249.png>249bananaMmm this looks tasty--
<250.png>250pastry doughSome uncooked dough--
<251.png>251Pie dishFor making pies in--
<252.png>252cooking appleI wonder what i can make with this--
<253.png>253pie shellI need to find a filling for this pie--
<254.png>254Uncooked apple pieI need to cook this first--
<255.png>255Uncooked meat pieI need to cook this first--
<256.png>256Uncooked redberry pieI need to cook this first--
<257.png>257apple pieMmm Apple pie--
<258.png>258Redberry pieLooks tasty--
<259.png>259meat pieMighty and meaty--
<260.png>260burntpieOops--
<261.png>261Half a meat pieMighty and meaty--
<262.png>262Half a Redberry pieLooks tasty--
<263.png>263Half an apple pieMmm Apple pie--
<264.png>264PortraitIt's a picture of a knight--
<265.png>265Faladian Knight's swordA razor sharp swordX-
<266.png>266blurite oreWhat Strange stuff--
<267.png>267Asgarnian AleA glass of frothy ale--
<268.png>268Wizard's Mind BombIt's got strange bubbles in it--
<269.png>269Dwarven StoutA Pint of thick dark beer--
<270.png>270Eye of newtIt seems to be looking at me--
<271.png>271Rat's tailA bit of rat--
<272.png>272BluedyeA little bottle of dye--
<273.png>273Goblin ArmourArmour Designed to fit Goblins--
<274.png>274Goblin ArmourArmour Designed to fit Goblins--
<275.png>275Goblin ArmourArmour Designed to fit Goblins--
<276.png>276unstrung LongbowI need to find a string for this--
<277.png>277unstrung shortbowI need to find a string for this--
<278.png>278Unfired Pie dishI need to put this in a pottery oven--
<279.png>279unfired potI need to put this in a pottery oven--
<280.png>280arrow shaftsI need to attach feathers to these-X
<281.png>281Woad Leafslightly bluish leaves-X
<282.png>282OrangedyeA little bottle of dye--
<283.png>283Gold ringA valuable ring--
<284.png>284Sapphire ringA valuable ring--
<285.png>285Emerald ringA valuable ring--
<286.png>286Ruby ringA valuable ring--
<287.png>287Diamond ringA valuable ring--
<288.png>288Gold necklaceI wonder if this is valuableX-
<289.png>289Sapphire necklaceI wonder if this is valuableX-
<290.png>290Emerald necklaceI wonder if this is valuableX-
<291.png>291Ruby necklaceI wonder if this is valuableX-
<292.png>292Diamond necklaceI wonder if this is valuableX-
<293.png>293ring mouldUsed to make gold rings--
<294.png>294Amulet mouldUsed to make gold amulets--
<295.png>295Necklace mouldUsed to make gold necklaces--
<296.png>296Gold AmuletIt needs a string so I can wear it--
<297.png>297Sapphire AmuletIt needs a string so I can wear it--
<298.png>298Emerald AmuletIt needs a string so I can wear it--
<299.png>299Ruby AmuletIt needs a string so I can make wear it--
<300.png>300Diamond AmuletIt needs a string so I can wear it--
<301.png>301Gold AmuletI wonder if I can get this enchantedX-
<302.png>302Sapphire AmuletI wonder if I can get this enchantedX-
<303.png>303Emerald AmuletI wonder if I can get this enchantedX-
<304.png>304Ruby AmuletI wonder if I can get this enchantedX-
<305.png>305Diamond AmuletI wonder if I can get this enchantedX-
<306.png>306superchiselI wonder if I can get this enchanted--
<307.png>307Mace of ZamorakThis mace gives me the creepsX-
<308.png>308Bronze Plate Mail topArmour designed for femalesX-
<309.png>309Steel Plate Mail topArmour designed for femalesX-
<310.png>310Mithril Plate Mail topArmour designed for femalesX-
<311.png>311Adamantite Plate Mail topArmour designed for femalesX-
<312.png>312Iron Plate Mail topArmour designed for femalesX-
<313.png>313Black Plate Mail topArmour designed for femalesX-
<314.png>314Sapphire Amulet of magicIt improves my magicX-
<315.png>315Emerald Amulet of protectionIt improves my defenseX-
<316.png>316Ruby Amulet of strengthIt improves my damageX-
<317.png>317Diamond Amulet of powerA powerful amuletX-
<318.png>318Karamja RumA very strong spirit brewed in Karamja--
<319.png>319CheeseIt's got holes in it--
<320.png>320TomatoThis would make good ketchup--
<321.png>321Pizza BaseI need to add some tomato next--
<322.png>322Burnt PizzaOh dear!--
<323.png>323Incomplete PizzaI need to add some cheese next--
<324.png>324Uncooked PizzaThis needs cooking--
<325.png>325Plain PizzaA cheese and tomato pizza--
<326.png>326Meat PizzaA pizza with bits of meat on it--
<327.png>327Anchovie PizzaA Pizza with Anchovies--
<328.png>328Half Meat PizzaHalf of this pizza has been eaten--
<329.png>329Half Anchovie PizzaHalf of this pizza has been eaten--
<330.png>330CakeA plain sponge cake--
<331.png>331Burnt CakeArgh what a mess!--
<332.png>332Chocolate CakeThis looks very tasty!--
<333.png>333Partial CakeSomeone has eaten a big chunk of this cake--
<334.png>334Partial Chocolate CakeSomeone has eaten a big chunk of this cake--
<335.png>335Slice of CakeI'd rather have a whole cake!--
<336.png>336Chocolate SliceA slice of chocolate cake--
<337.png>337Chocolate BarIt's a bar of chocolate--
<338.png>338Cake TinUseful for baking cakes--
<339.png>339Uncooked cakeNow all I need to do is cook it--
<340.png>340Unfired bowlI need to put this in a pottery oven--
<341.png>341BowlUseful for mixing things--
<342.png>342Bowl of waterIt's a bowl of water--
<343.png>343Incomplete stewI need to add some meat too--
<344.png>344Incomplete stewI need to add some potato too--
<345.png>345Uncooked stewI need to cook this--
<346.png>346StewIt's a meat and potato stew--
<347.png>347Burnt StewEew it's horribly burnt--
<348.png>348PotatoCan be used to make stew--
<349.png>349Raw ShrimpI should try cooking this--
<350.png>350ShrimpSome nicely cooked fish--
<351.png>351Raw AnchoviesI should try cooking this--
<352.png>352AnchoviesSome nicely cooked fish--
<353.png>353Burnt fishOops!--
<354.png>354Raw SardineI should try cooking this--
<355.png>355SardineSome nicely cooked fish--
<356.png>356Raw SalmonI should try cooking this--
<357.png>357SalmonSome nicely cooked fish--
<358.png>358Raw TroutI should try cooking this--
<359.png>359TroutSome nicely cooked fish--
<360.png>360Burnt fishOops!--
<361.png>361Raw HerringI should try cooking this--
<362.png>362HerringSome nicely cooked fish--
<363.png>363Raw PikeI should try cooking this--
<364.png>364PikeSome nicely cooked fish--
<365.png>365Burnt fishOops!--
<366.png>366Raw TunaI should try cooking this--
<367.png>367TunaWow this is a big fish--
<368.png>368Burnt fishOops!--
<369.png>369Raw SwordfishI should try cooking this--
<370.png>370SwordfishI'd better be careful eating this!--
<371.png>371Burnt SwordfishOops!--
<372.png>372Raw LobsterI should try cooking this--
<373.png>373LobsterThis looks tricky to eat--
<374.png>374Burnt LobsterOops!--
<375.png>375Lobster PotUseful for catching lobsters--
<376.png>376NetUseful for catching small fish--
<377.png>377Fishing RodUseful for catching sardine or herring--
<378.png>378Fly Fishing RodUseful for catching salmon or trout--
<379.png>379HarpoonUseful for catching really big fish--
<380.png>380Fishing BaitFor use with a fishing rod-X
<381.png>381FeatherUsed for fly-fishing-X
<382.png>382Chest keyA key to One eyed Hector's chest--
<383.png>383Silverthis needs refining--
<384.png>384silver barthis looks valuable--
<385.png>385Holy Symbol of saradominThis improves my prayerX-
<386.png>386Holy symbol mouldUsed to make Holy Symbols--
<387.png>387Disk of ReturningUsed to get out of Thordur's blackhole--
<388.png>388Monks robeI feel closer to the God's when I am wearing thisX-
<389.png>389Monks robeKeeps a monk's legs nice and warmX-
<390.png>390Red keyA painted key--
<391.png>391Orange KeyA painted key--
<392.png>392yellow keyA painted key--
<393.png>393Blue keyA painted key--
<394.png>394Magenta keyA painted key--
<395.png>395black keyA painted key--
<396.png>396rune daggerShort but pointyX-
<397.png>397Rune short swordA razor sharp swordX-
<398.png>398rune ScimitarA vicious curved swordX-
<399.png>399Medium Rune HelmetA medium sized helmetX-
<400.png>400Rune Chain Mail BodyA series of connected metal ringsX-
<401.png>401Rune Plate Mail BodyProvides excellent protectionX-
<402.png>402Rune Plate Mail LegsThese look pretty heavyX-
<403.png>403Rune Square ShieldA medium metal shieldX-
<404.png>404Rune Kite ShieldA large metal shieldX-
<405.png>405rune AxeA powerful axeX-
<406.png>406Rune skirtDesigner leg protectionX-
<407.png>407Rune Plate Mail topArmour designed for femalesX-
<408.png>408Runite barit's a bar of runite--
<409.png>409runite orethis needs refining--
<410.png>410PlankThis doesn't look very useful--
<411.png>411TileThis doesn't look very useful--
<412.png>412skullA spooky looking skull--
<413.png>413Big BonesEw it's a pile of bones--
<414.png>414Muddy keyIt looks like a key to a chest--
<415.png>415MapA map showing the way to the Isle of Crandor--
<416.png>416Map PieceI need some more of the map for this to be useful--
<417.png>417Map PieceI need some more of the map for this to be useful--
<418.png>418Map PieceI need some more of the map for this to be useful--
<419.png>419NailsNails made from steel-X
<420.png>420Anti dragon breath ShieldHelps prevent damage from dragonsX-
<421.png>421Maze keyThe key to the entrance of Melzar's maze--
<422.png>422PumpkinHappy halloween--
<423.png>423Black daggerShort but pointyX-
<424.png>424Black Short SwordA razor sharp swordX-
<425.png>425Black Long SwordA razor sharp swordX-
<426.png>426Black 2-handed SwordA very large swordX-
<427.png>427Black ScimitarA vicious curved swordX-
<428.png>428Black AxeA sinister looking axeX-
<429.png>429Black battle AxeA vicious looking axeX-
<430.png>430Black MaceA spikey maceX-
<431.png>431Black Chain Mail BodyA series of connected metal ringsX-
<432.png>432Black Square ShieldA medium metal shieldX-
<433.png>433Black Kite ShieldA large metal shieldX-
<434.png>434Black Plated skirtdesigner leg protectionX-
<435.png>435HerbI need a closer look to identify this--
<436.png>436HerbI need a closer look to identify this--
<437.png>437HerbI need a closer look to identify this--
<438.png>438HerbI need a closer look to identify this--
<439.png>439HerbI need a closer look to identify this--
<440.png>440HerbI need a closer look to identify this--
<441.png>441HerbI need a closer look to identify this--
<442.png>442HerbI need a closer look to identify this--
<443.png>443HerbI need a closer look to identify this--
<444.png>444Guam leafA herb used in attack potion making--
<445.png>445MarrentillA herb used in poison cures--
<446.png>446TarrominA useful herb--
<447.png>447HarralanderA useful herb--
<448.png>448Ranarr WeedA useful herb--
<449.png>449Irit LeafA useful herb--
<450.png>450AvantoeA useful herb--
<451.png>451KwuarmA powerful herb--
<452.png>452CadantineA powerful herb--
<453.png>453Dwarf WeedA powerful herb--
<454.png>454Unfinished potionI need another ingredient to finish this Guam potion--
<455.png>455Unfinished potionI need another ingredient to finish this Marrentill potion--
<456.png>456Unfinished potionI need another ingredient to finish this Tarromin potion--
<457.png>457Unfinished potionI need another ingredient to finish this Harralander potion--
<458.png>458Unfinished potionI need another ingredient to finish this Ranarr potion--
<459.png>459Unfinished potionI need another ingredient to finish this Irit potion--
<460.png>460Unfinished potionI need another ingredient to finish this Avantoe potion--
<461.png>461Unfinished potionI need another ingredient to finish this Kwuarm potion--
<462.png>462Unfinished potionI need another ingredient to finish this Cadantine potion--
<463.png>463Unfinished potionI need another ingredient to finish this Dwarfweed potion--
<464.png>464VialIt's full of water--
<465.png>465VialThis vial is empty--
<466.png>466Unicorn hornPoor unicorn--
<467.png>467Blue dragon scaleA large shiny scale--
<468.png>468Pestle and mortarI can grind things for potions in this--
<469.png>469Snape grassStrange spikey grass--
<470.png>470Medium black HelmetA medium sized helmetX-
<471.png>471White berriesPoisonous berries--
<472.png>472Ground blue dragon scaleThis stuff isn't good for you--
<473.png>473Ground unicorn hornA useful potion ingredient--
<474.png>474attack Potion3 doses of attack potion--
<475.png>475attack Potion2 doses of attack potion--
<476.png>476attack Potion1 dose of attack potion--
<477.png>477stat restoration Potion3 doses of stat restoration potion--
<478.png>478stat restoration Potion2 doses of stat restoration potion--
<479.png>479stat restoration Potion1 dose of stat restoration potion--
<480.png>480defense Potion3 doses of defense potion--
<481.png>481defense Potion2 doses of defense potion--
<482.png>482defense Potion1 dose of defense potion--
<483.png>483restore prayer Potion3 doses of restore prayer potion--
<484.png>484restore prayer Potion2 doses of restore prayer potion--
<485.png>485restore prayer Potion1 dose of restore prayer potion--
<486.png>486Super attack Potion3 doses of attack potion--
<487.png>487Super attack Potion2 doses of attack potion--
<488.png>488Super attack Potion1 dose of attack potion--
<489.png>489fishing Potion3 doses of fishing potion--
<490.png>490fishing Potion2 doses of fishing potion--
<491.png>491fishing Potion1 dose of fishing potion--
<492.png>492Super strength Potion3 doses of strength potion--
<493.png>493Super strength Potion2 doses of strength potion--
<494.png>494Super strength Potion1 dose of strength potion--
<495.png>495Super defense Potion3 doses of defense potion--
<496.png>496Super defense Potion2 doses of defense potion--
<497.png>497Super defense Potion1 dose of defense potion--
<498.png>498ranging Potion3 doses of ranging potion--
<499.png>499ranging Potion2 doses of ranging potion--
<500.png>500ranging Potion1 dose of ranging potion--
<501.png>501wine of ZamorakIt's full of wine--
<502.png>502raw bear meatI need to cook this first--
<503.png>503raw rat meatI need to cook this first--
<504.png>504raw beefI need to cook this first--
<505.png>505enchanted bear meatI don't fancy eating this now--
<506.png>506enchanted rat meatI don't fancy eating this now--
<507.png>507enchanted beefI don't fancy eating this now--
<508.png>508enchanted chicken meatI don't fancy eating this now--
<509.png>509Dramen StaffA magical staff cut from the dramen treeX-
<510.png>510Dramen BranchI need to make this into a staff--
<511.png>511CapeA thick Green capeX-
<512.png>512CapeA thick yellow capeX-
<513.png>513CapeA thick Orange capeX-
<514.png>514CapeA thick purple capeX-
<515.png>515GreendyeA little bottle of dye--
<516.png>516PurpledyeA little bottle of dye--
<517.png>517Iron ore certificateEach certificate exchangable at draynor market for 5 iron ore-X
<518.png>518Coal certificateEach certificate exchangable at draynor market for 5 coal-X
<519.png>519Mithril ore certificateEach certificate exchangable at draynor market for 5 mithril ore-X
<520.png>520silver certificateEach certificate exchangable at draynor market for 5 silver nuggets-X
<521.png>521Gold certificateEach certificate exchangable at draynor market for 5 gold nuggets-X
<522.png>522Dragonstone AmuletA very powerful amuletX-
<523.png>523DragonstoneThis looks very valuable--
<524.png>524Dragonstone AmuletIt needs a string so I can wear it--
<525.png>525Crystal keyA very shiny key--
<526.png>526Half of a keyA very shiny key--
<527.png>527Half of a keyA very shiny key--
<528.png>528Iron bar certificateEach certificate exchangable at draynor market for 5 iron bars-X
<529.png>529steel bar certificateEach certificate exchangable at draynor market for 5 steel bars-X
<530.png>530Mithril bar certificateEach certificate exchangable at draynor market for 5 mithril bars-X
<531.png>531silver bar certificateEach certificate exchangable at draynor market for 5 silver bars-X
<532.png>532Gold bar certificateEach certificate exchangable at draynor market for 5 gold bars-X
<533.png>533Lobster certificateEach certificate exchangable at draynor market for 5 lobsters-X
<534.png>534Raw lobster certificateEach certificate exchangable at draynor market for 5 raw lobsters-X
<535.png>535Swordfish certificateEach certificate exchangable at draynor market for 5 swordfish-X
<536.png>536Raw swordfish certificateEach certificate exchangable at draynor market for 5 raw swordfish-X
<537.png>537DiaryProperty of Nora.T.Hag--
<538.png>538Front door keyA house key--
<539.png>539BallA child's ball--
<540.png>540magnetA very attractive magnet--
<541.png>541Grey wolf furThis would make warm clothing--
<542.png>542uncut dragonstonethis would be worth more cut--
<543.png>543Dragonstone ringA valuable ring--
<544.png>544Dragonstone necklaceI wonder if this is valuableX-
<545.png>545Raw SharkI should try cooking this--
<546.png>546SharkI'd better be careful eating this!--
<547.png>547Burnt SharkOops!--
<548.png>548Big NetUseful for catching lots of fish--
<549.png>549CasketI hope there is treasure in it--
<550.png>550Raw codI should try cooking this--
<551.png>551CodSome nicely cooked fish--
<552.png>552Raw MackerelI should try cooking this--
<553.png>553MackerelSome nicely cooked fish--
<554.png>554Raw BassI should try cooking this--
<555.png>555BassWow this is a big fish--
<556.png>556Ice GlovesThese will keep my hands cold!X-
<557.png>557Firebird FeatherA red hot feather--
<558.png>558Firebird FeatherThis is cool enough to hold now--
<559.png>559Poisoned Iron daggerShort but pointyX-
<560.png>560Poisoned bronze daggerShort but pointyX-
<561.png>561Poisoned Steel daggerShort but pointyX-
<562.png>562Poisoned Mithril daggerShort but pointyX-
<563.png>563Poisoned Rune daggerShort but pointyX-
<564.png>564Poisoned Adamantite daggerShort but pointyX-
<565.png>565Poisoned Black daggerShort but pointyX-
<566.png>566Cure poison Potion3 doses of cure poison potion--
<567.png>567Cure poison Potion2 doses of cure poison potion--
<568.png>568Cure poison Potion1 dose of cure poison potion--
<569.png>569Poison antidote3 doses of anti poison potion--
<570.png>570Poison antidote2 doses of anti poison potion--
<571.png>571Poison antidote1 dose of anti poison potion--
<572.png>572weapon poisonFor use on daggers and arrows--
<573.png>573ID PaperID of Hartigen the black knight--
<574.png>574Poison Bronze ArrowsVenomous looking arrows-X
<575.png>575Christmas crackerUse on another player to pull it--
<576.png>576Party HatParty!!!X-
<577.png>577Party HatParty!!!X-
<578.png>578Party HatParty!!!X-
<579.png>579Party HatParty!!!X-
<580.png>580Party HatParty!!!X-
<581.png>581Party HatParty!!!X-
<582.png>582Miscellaneous keyI wonder what this unlocks--
<583.png>583Bunch of keysSome keys on a keyring--
<584.png>584WhiskyA bottle of Draynor Malt--
<585.png>585CandlestickA valuable candlestick--
<586.png>586Master thief armbandThis denotes a great act of thievery--
<587.png>587Blamish snail slimeYuck--
<588.png>588Blamish oilmade from the finest snail slime--
<589.png>589Oily Fishing RodA rod covered in Blamish oil--
<590.png>590lava eelStrange it looks cooler now it's been cooked--
<591.png>591Raw lava eelA very strange eel--
<592.png>592Poison Crossbow boltsGood if you have a crossbow!-X
<593.png>593Dragon swordA Razor sharp swordX-
<594.png>594Dragon axeA vicious looking axeX-
<595.png>595Jail keysKeys to the black knight jail--
<596.png>596Dusty KeyA key given to me by Velrak--
<597.png>597Charged Dragonstone AmuletA very powerful amuletX-
<598.png>598GrogA murky glass of some sort of drink--
<599.png>599CandleAn unlit candle--
<600.png>600black CandleA spooky but unlit candle--
<601.png>601CandleA small slowly burning candle--
<602.png>602black CandleA spooky candle--
<603.png>603insect repellantDrives away all known 6 legged creatures--
<604.png>604Bat bonesEw it's a pile of bones--
<605.png>605wax BucketIt's a wooden bucket--
<606.png>606ExcaliburThis used to belong to king ArthurX-
<607.png>607Druids robeI feel closer to the Gods when I am wearing thisX-
<608.png>608Druids robeKeeps a druids's knees nice and warmX-
<609.png>609Eye patchIt makes me look very piraticalX-
<610.png>610Unenchanted Dragonstone AmuletI wonder if I can get this enchantedX-
<611.png>611Unpowered orbI'd prefer it if it was powered--
<612.png>612Fire orbA magic glowing orb--
<613.png>613Water orbA magic glowing orb--
<614.png>614BattlestaffIt's a slightly magical stickX-
<615.png>615Battlestaff of fireA Magical staffX-
<616.png>616Battlestaff of waterA Magical staffX-
<617.png>617Battlestaff of airA Magical staffX-
<618.png>618Battlestaff of earthA Magical staffX-
<619.png>619Blood-RuneUsed for high level missile spells-X
<620.png>620Beer glassI need to fill this with beer--
<621.png>621glassblowing pipeUse on molten glass to make things--
<622.png>622seaweedslightly damp seaweed--
<623.png>623molten glasshot glass ready to be blown--
<624.png>624soda ashone of the ingredients for making glass--
<625.png>625sandone of the ingredients for making glass--
<626.png>626air orbA magic glowing orb--
<627.png>627earth orbA magic glowing orb--
<628.png>628bass certificateEach certificate exchangable at Catherby for 5 bass-X
<629.png>629Raw bass certificateEach certificate exchangable at Catherby for 5 raw bass-X
<630.png>630shark certificateEach certificate exchangable at Catherby for 5 shark-X
<631.png>631Raw shark certificateEach certificate exchangable at Catherby for 5 raw shark-X
<632.png>632Oak LogsLogs cut from an oak tree--
<633.png>633Willow LogsLogs cut from a willow tree--
<634.png>634Maple LogsLogs cut from a maple tree--
<635.png>635Yew LogsLogs cut from a yew tree--
<636.png>636Magic LogsLogs made from magical wood--
<637.png>637Headless ArrowsI need to attach arrow heads to these-X
<638.png>638Iron ArrowsArrows with iron heads-X
<639.png>639Poison Iron ArrowsVenomous looking arrows-X
<640.png>640Steel ArrowsArrows with steel heads-X
<641.png>641Poison Steel ArrowsVenomous looking arrows-X
<642.png>642Mithril ArrowsArrows with mithril heads-X
<643.png>643Poison Mithril ArrowsVenomous looking arrows-X
<644.png>644Adamantite ArrowsArrows with adamantite heads-X
<645.png>645Poison Adamantite ArrowsVenomous looking arrows-X
<646.png>646Rune ArrowsArrows with rune heads-X
<647.png>647Poison Rune ArrowsVenomous looking arrows-X
<648.png>648Oak LongbowA Nice sturdy bowX-
<649.png>649Oak ShortbowShort but effectiveX-
<650.png>650Willow LongbowA Nice sturdy bowX-
<651.png>651Willow ShortbowShort but effectiveX-
<652.png>652Maple LongbowA Nice sturdy bowX-
<653.png>653Maple ShortbowShort but effectiveX-
<654.png>654Yew LongbowA Nice sturdy bowX-
<655.png>655Yew ShortbowShort but effectiveX-
<656.png>656Magic LongbowA Nice sturdy bowX-
<657.png>657Magic ShortbowShort but effectiveX-
<658.png>658unstrung Oak LongbowI need to find a string for this--
<659.png>659unstrung Oak ShortbowI need to find a string for this--
<660.png>660unstrung Willow LongbowI need to find a string for this--
<661.png>661unstrung Willow ShortbowI need to find a string for this--
<662.png>662unstrung Maple LongbowI need to find a string for this--
<663.png>663unstrung Maple ShortbowI need to find a string for this--
<664.png>664unstrung Yew LongbowI need to find a string for this--
<665.png>665unstrung Yew ShortbowI need to find a string for this--
<666.png>666unstrung Magic LongbowI need to find a string for this--
<667.png>667unstrung Magic ShortbowI need to find a string for this--
<668.png>668barcrawl cardThe official Alfred Grimhand barcrawl--
<669.png>669bronze arrow headsNot much use without the rest of the arrow!-X
<670.png>670iron arrow headsNot much use without the rest of the arrow!-X
<671.png>671steel arrow headsNot much use without the rest of the arrow!-X
<672.png>672mithril arrow headsNot much use without the rest of the arrow!-X
<673.png>673adamantite arrow headsNot much use without the rest of the arrow!-X
<674.png>674rune arrow headsNot much use without the rest of the arrow!-X
<675.png>675flaxI should use this with a spinning wheel--
<676.png>676bow stringI need a bow handle to attach this too--
<677.png>677Easter eggHappy Easter--
<678.png>678scorpion cageI need to catch some scorpions in this--
<679.png>679scorpion cageIt has 1 scorpion in it--
<680.png>680scorpion cageIt has 2 scorpions in it--
<681.png>681scorpion cageIt has 3 scorpions in it--
<682.png>682Enchanted Battlestaff of fireA Magical staffX-
<683.png>683Enchanted Battlestaff of waterA Magical staffX-
<684.png>684Enchanted Battlestaff of airA Magical staffX-
<685.png>685Enchanted Battlestaff of earthA Magical staffX-
<686.png>686scorpion cageIt has 1 scorpion in it--
<687.png>687scorpion cageIt has 1 scorpion in it--
<688.png>688scorpion cageIt has 2 scorpions in it--
<689.png>689scorpion cageIt has 2 scorpions in it--
<690.png>690goldthis needs refining--
<691.png>691gold barthis looks valuable--
<692.png>692Ruby ringA valuable ring--
<693.png>693Ruby necklaceI wonder if this is valuableX-
<694.png>694Family crestThe crest of a varrocian noble family--
<695.png>695Crest fragmentPart of the Fitzharmon family crest--
<696.png>696Crest fragmentPart of the Fitzharmon family crest--
<697.png>697Crest fragmentPart of the Fitzharmon family crest--
<698.png>698Steel gauntletsVery handy armourX-
<699.png>699gauntlets of goldsmithingmetal gloves for gold makingX-
<700.png>700gauntlets of cookingUsed for cooking fishX-
<701.png>701gauntlets of chaosimproves bolt spellsX-
<702.png>702robe of ZamorakA robe worn by worshippers of ZamorakX-
<703.png>703robe of ZamorakA robe worn by worshippers of ZamorakX-
<704.png>704Address LabelTo lord Handelmort- Handelmort mansion--
<705.png>705Tribal totemIt represents some sort of tribal god--
<706.png>706tourist guideYour definitive guide to Ardougne--
<707.png>707spicePut it in uncooked stew to make curry--
<708.png>708Uncooked curryI need to cook this--
<709.png>709curryIt's a spicey hot curry--
<710.png>710Burnt curryEew it's horribly burnt--
<711.png>711yew logs certificateEach certificate exchangable at Ardougne for 5 yew logs-X
<712.png>712maple logs certificateEach certificate exchangable at Ardougne for 5 maple logs-X
<713.png>713willow logs certificateEach certificate exchangable at Ardougne for 5 willow logs-X
<714.png>714lockpickIt makes picking some locks easier--
<715.png>715Red vine wormsStrange little red worms-X
<716.png>716BlanketA child's blanket--
<717.png>717Raw giant carpI should try cooking this--
<718.png>718giant CarpSome nicely cooked fish--
<719.png>719Fishing competition PassAdmits one to the Hemenster fishing competition--
<720.png>720Hemenster fishing trophyHurrah you won a fishing competition--
<721.png>721Pendant of LucienGets me through the chamber of fearX-
<722.png>722Boots of lightfootednessWearing these makes me feel like I am floatingX-
<723.png>723Ice ArrowsCan only be fired with yew or magic bows-X
<724.png>724LeverThis was once attached to something--
<725.png>725Staff of ArmadylA Magical staffX-
<726.png>726Pendant of ArmadylAllows me to fight LucienX-
<727.png>727Large cog A large old cog--
<728.png>728Large cog A large old cog--
<729.png>729Large cog A large old cog--
<730.png>730Large cog A large old cog--
<731.png>731Rat PoisonThis stuff looks nasty--
<732.png>732shiny KeyQuite a small key--
<733.png>733khazard HelmetA medium sized helmetX-
<734.png>734khazard chainmailA series of connected metal ringsX-
<735.png>735khali brewA bottle of khazard's worst brew--
<736.png>736khazard cell keysKeys for General Khazard's cells--
<737.png>737Poison chaliceA strange looking drink--
<738.png>738magic whistleA small tin whistle--
<739.png>739Cup of teaA nice cup of tea--
<740.png>740orb of protectiona strange glowing green orb--
<741.png>741orbs of protectiontwo strange glowing green orbs--
<742.png>742Holy table napkina cloth given to me by sir Galahad--
<743.png>743bellI wonder what happens when i ring it--
<744.png>744Gnome Emerald Amulet of protectionIt improves my defenseX-
<745.png>745magic golden featherIt will point the way for me--
<746.png>746Holy grailA holy and powerful artifact--
<747.png>747Script of HazeelAn old scroll with strange ancient text--
<748.png>748PineappleIt can be cut up with a knife--
<749.png>749Pineapple ringExotic fruit--
<750.png>750Pineapple PizzaA tropicana pizza--
<751.png>751Half pineapple PizzaHalf of this pizza has been eaten--
<752.png>752Magic scrollMaybe I should read it--
<753.png>753Mark of HazeelA large metal amulet--
<754.png>754bloody axe of zamorakA vicious looking axeX-
<755.png>755carnillean armourthe carnillean family armour--
<756.png>756Carnillean KeyAn old rusty key--
<757.png>757Cattle prodAn old cattle prod--
<758.png>758Plagued sheep remainsThese sheep remains are infected--
<759.png>759Poisoned animal feedThis looks nasty--
<760.png>760Protective jacketA thick heavy leather topX-
<761.png>761Protective trousersA thick pair of leather trousersX-
<762.png>762Plagued sheep remainsThese sheep remains are infected--
<763.png>763Plagued sheep remainsThese sheep remains are infected--
<764.png>764Plagued sheep remainsThese sheep remains are infected--
<765.png>765dwellberriessome rather pretty blue berries--
<766.png>766GasmaskStops me breathing nasty stuffX-
<767.png>767pictureA picture of a lady called Elena--
<768.png>768BookTurnip growing for beginners--
<769.png>769Seasluga rather nasty looking crustacean--
<770.png>770chocolaty milkMilk with chocolate in it--
<771.png>771Hangover cureIt doesn't look very tasty--
<772.png>772Chocolate dustI prefer it in a bar shape--
<773.png>773TorchA unlit home made torch--
<774.png>774TorchA lit home made torch--
<775.png>775warrantA search warrant for a house in Ardougne--
<776.png>776Damp sticksSome damp wooden sticks--
<777.png>777Dry sticksSome dry wooden sticks--
<778.png>778Broken glassGlass from a broken window pane--
<779.png>779oyster pearlsI could work wonders with these and a chisel--
<780.png>780little keyQuite a small key--
<781.png>781Scruffy noteIt seems to say hongorer lure--
<782.png>782Glarial's amuletA bright green gem set in a necklaceX-
<783.png>783Swamp tarA foul smelling thick tar like substance-X
<784.png>784Uncooked Swamp pasteA thick tar like substance mixed with flour-X
<785.png>785Swamp pasteA tar like substance mixed with flour and warmed-X
<786.png>786Oyster pearl boltsGreat if you have a crossbow!-X
<787.png>787Glarials pebbleA small pebble with elven inscription--
<788.png>788book on baxtorianA book on elven history in north runescape--
<789.png>789large keyI wonder what this is the key to--
<790.png>790Oyster pearl bolt tipsCan be used to improve crossbow bolts-X
<791.png>791oysterIt's empty--
<792.png>792oyster pearlsI could work wonders with these and a chisel--
<793.png>793oysterIt's a rare oyster--
<794.png>794SoilIt's a bucket of fine soil--
<795.png>795Dragon medium HelmetA medium sized helmetX-
<796.png>796Mithril seedMagical seeds in a mithril case-X
<797.png>797An old keyA door key--
<798.png>798pigeon cageIt's for holding pigeons--
<799.png>799Messenger pigeonssome very plump birds--
<800.png>800Bird feedA selection of mixed seeds--
<801.png>801Rotten applesYuck!--
<802.png>802Doctors gownI do feel clever wearing thisX-
<803.png>803Bronze keyA heavy key--
<804.png>804DistillatorIt's for seperating compounds--
<805.png>805Glarial's urnAn urn containing glarials ashes--
<806.png>806Glarial's urnAn empty metal urn--
<807.png>807Priest robeI feel closer to saradomin in thisX-
<808.png>808Priest gownI feel closer to saradomin in thisX-
<809.png>809Liquid HoneyThis isn't worth much--
<810.png>810EtheneaAn expensive colourless liquid--
<811.png>811Sulphuric Brolineit's highly poisonous--
<812.png>812Plague sampleAn air tight tin container--
<813.png>813Touch paperFor scientific testing--
<814.png>814Dragon BonesEw it's a pile of bones--
<815.png>815HerbI need a closer look to identify this--
<816.png>816Snake WeedA very rare jungle herb--
<817.png>817HerbI need a closer look to identify this--
<818.png>818ArdrigalAn interesting--
<819.png>819HerbI need a closer look to identify this--
<820.png>820Sito FoilAn rare species of jungle herb--
<821.png>821HerbI need a closer look to identify this--
<822.png>822Volencia MossA very rare species of jungle herb--
<823.png>823HerbI need a closer look to identify this--
<824.png>824Rogues Purse A rare species of jungle herb--
<825.png>825Soul-RuneUsed for high level curse spells-X
<826.png>826king lathas AmuletThe amulet is redX-
<827.png>827Bronze SpearA bronze tipped spearX-
<828.png>828halloween maskaaaarrrghhh ... i'm a monsterX-
<829.png>829Dragon bitterA glass of frothy ale--
<830.png>830Greenmans aleA glass of frothy ale--
<831.png>831halloween maskaaaarrrghhh ... i'm a monsterX-
<832.png>832halloween maskaaaarrrghhh ... i'm a monsterX-
<833.png>833cocktail glassFor sipping cocktails--
<834.png>834cocktail shakerFor mixing cocktails--
<835.png>835Bone KeyA key delicately carved key made from a single piece of bone--
<836.png>836gnome robeA high fashion robeX-
<837.png>837gnome robeA high fashion robeX-
<838.png>838gnome robeA high fashion robeX-
<839.png>839gnome robeA high fashion robeX-
<840.png>840gnome robeA high fashion robeX-
<841.png>841gnomeshatA silly pointed hatX-
<842.png>842gnomeshatA silly pointed hatX-
<843.png>843gnomeshatA silly pointed hatX-
<844.png>844gnomeshatA silly pointed hatX-
<845.png>845gnomeshatA silly pointed hatX-
<846.png>846gnome toprometti - the ultimate in gnome designX-
<847.png>847gnome toprometti - the only name in gnome fashion!X-
<848.png>848gnome toprometti - the only name in gnome fashion!X-
<849.png>849gnome toprometti - the only name in gnome fashion!X-
<850.png>850gnome toprometti - the only name in gnome fashion!X-
<851.png>851gnome cocktail guideA book on tree gnome cocktails--
<852.png>852Beads of the deadA curious looking neck ornamentX-
<853.png>853cocktail glassFor sipping cocktails--
<854.png>854cocktail glassFor sipping cocktails--
<855.png>855lemonIt's very fresh--
<856.png>856lemon slicesIt's very fresh--
<857.png>857orangeIt's very fresh--
<858.png>858orange slicesIt's very fresh--
<859.png>859Diced orangeFresh chunks of orange--
<860.png>860Diced lemonFresh chunks of lemon--
<861.png>861Fresh PineappleIt can be cut up with a knife--
<862.png>862Pineapple chunksFresh chunks of pineapple--
<863.png>863limeIt's very fresh--
<864.png>864lime chunksFresh chunks of lime--
<865.png>865lime slicesIt's very fresh--
<866.png>866fruit blastA cool refreshing fruit mix--
<867.png>867odd looking cocktailA cool refreshing mix--
<868.png>868WhiskyA locally brewed Malt--
<869.png>869vodkaA strong spirit--
<870.png>870ginA strong spirit--
<871.png>871creamFresh cream--
<872.png>872Drunk dragonA warm creamy alcoholic beverage--
<873.png>873Equa leavesSmall sweet smelling leaves--
<874.png>874SGGA short green guy..looks good--
<875.png>875Chocolate saturdayA warm creamy alcoholic beverage--
<876.png>876brandyA strong spirit--
<877.png>877blurberry specialLooks good..smells strong--
<878.png>878wizard blizzardLooks like a strange mix--
<879.png>879pineapple punchA fresh healthy fruit mix--
<880.png>880gnomebatta doughDough formed into a base--
<881.png>881gianne doughIt's made from a secret recipe--
<882.png>882gnomebowl doughDough formed into a bowl shape--
<883.png>883gnomecrunchie doughDough formed into cookie shapes--
<884.png>884gnomebattaA baked dough base--
<885.png>885gnomebowlA baked dough bowl--
<886.png>886gnomebattaIt's burnt to a sinder--
<887.png>887gnomecrunchieThey're burnt to a sinder--
<888.png>888gnomebowlIt's burnt to a sinder--
<889.png>889Uncut Red TopazA semi precious stone--
<890.png>890Uncut JadeA semi precious stone--
<891.png>891Uncut OpalA semi precious stone--
<892.png>892Red TopazA semi precious stone--
<893.png>893JadeA semi precious stone--
<894.png>894OpalA semi precious stone--
<895.png>895Swamp ToadSlippery little blighters--
<896.png>896Toad legsGnome delicacy apparently--
<897.png>897King wormGnome delicacy apparently--
<898.png>898Gnome spiceAluft Giannes secret reciepe--
<899.png>899gianne cook bookAluft Giannes favorite dishes--
<900.png>900gnomecrunchieyum ... smells good--
<901.png>901cheese and tomato battaSmells really good--
<902.png>902toad battaactually smells quite good--
<903.png>903gnome battasmells like pants--
<904.png>904worm battaactually smells quite good--
<905.png>905fruit battaactually smells quite good--
<906.png>906Veg battawell..it looks healthy--
<907.png>907Chocolate bombLooks great--
<908.png>908VegballLooks pretty healthy--
<909.png>909worm holeactually smells quite good--
<910.png>910Tangled toads legsactually smells quite good--
<911.png>911Choc crunchiesyum ... smells good--
<912.png>912Worm crunchiesactually smells quite good--
<913.png>913Toad crunchiesactually smells quite good--
<914.png>914Spice crunchiesyum ... smells good--
<915.png>915Crushed GemstoneA gemstone that has been smashed--
<916.png>916Blurberry badgean official cocktail maker--
<917.png>917Gianne badgean official gianne chef--
<918.png>918tree gnome translationTranslate the old gnome tounge--
<919.png>919Bark sampleA sample from the grand tree--
<920.png>920War shipA model of a karamja warship--
<921.png>921gloughs journalGlough's private notes--
<922.png>922invoiceA note with foreman's timber order--
<923.png>923Ugthanki KebabA strange smelling Kebab made from Ugthanki meat - it doesn't look too good--
<924.png>924special curryIt's a spicy hot curry--
<925.png>925glough's keyGlough left this at anita's--
<926.png>926glough's notesScribbled notes and diagrams--
<927.png>927PebbleThe pebble has an inscription--
<928.png>928PebbleThe pebble has an inscription--
<929.png>929PebbleThe pebble has an inscription--
<930.png>930PebbleThe pebble has an inscription--
<931.png>931Daconia rockA magicaly crafted stone--
<932.png>932Sinister keyYou get a sense of dread from this key--
<933.png>933HerbI need a closer look to identify this--
<934.png>934TorstolA useful herb--
<935.png>935Unfinished potionI need Jangerberries to finish this Torstol potion--
<936.png>936JangerberriesThey don't look very ripe--
<937.png>937fruit blastA cool refreshing fruit mix--
<938.png>938blurberry specialLooks good..smells strong--
<939.png>939wizard blizzardLooks like a strange mix--
<940.png>940pineapple punchA fresh healthy fruit mix--
<941.png>941SGGA short green guy..looks good--
<942.png>942Chocolate saturdayA warm creamy alcoholic beverage--
<943.png>943Drunk dragonA warm creamy alcoholic beverage--
<944.png>944cheese and tomato battaSmells really good--
<945.png>945toad battaactually smells quite good--
<946.png>946gnome battasmells like pants--
<947.png>947worm battaactually smells quite good--
<948.png>948fruit battaactually smells quite good--
<949.png>949Veg battawell..it looks healthy--
<950.png>950Chocolate bombLooks great--
<951.png>951VegballLooks pretty healthy--
<952.png>952worm holeactually smells quite good--
<953.png>953Tangled toads legsactually smells quite good--
<954.png>954Choc crunchiesyum ... smells good--
<955.png>955Worm crunchiesactually smells quite good--
<956.png>956Toad crunchiesactually smells quite good--
<957.png>957Spice crunchiesyum ... smells good--
<958.png>958Stone-PlaqueA stone plaque with carved letters in it--
<959.png>959Tattered ScrollAn ancient tattered scroll--
<960.png>960Crumpled ScrollAn ancient crumpled scroll--
<961.png>961Bervirius Tomb NotesNotes taken from the tomb of Bervirius--
<962.png>962Zadimus CorpseThe remains of Zadimus--
<963.png>963Potion of ZamorakIt looks scary--
<964.png>964Potion of ZamorakIt looks scary--
<965.png>965Potion of ZamorakIt looks scary--
<966.png>966BootsThey're soft and silkyX-
<967.png>967BootsThey're soft and silkyX-
<968.png>968BootsThey're soft and silkyX-
<969.png>969BootsThey're soft and silkyX-
<970.png>970BootsThey're soft and silkyX-
<971.png>971Santa's hatIt's a santa claus' hatX-
<972.png>972Locating CrystalA magical crystal sphere--
<973.png>973Sword PommelAn ivory sword pommel--
<974.png>974Bone ShardA slender piece of bone--
<975.png>975Steel WireUseful for crafting items--
<976.png>976Bone BeadsBeads carved out of bone--
<977.png>977Rashiliya CorpseThe remains of the Zombie Queen--
<978.png>978ResetCrystalHelps reset things in game--
<979.png>979Bronze WireUseful for crafting items--
<980.png>980PresentClick to use this on a friend--
<981.png>981Gnome BallLets play--
<982.png>982PapyrusUsed for making notes--
<983.png>983A lump of Charcoala lump of cooked coal good for making marks.--
<984.png>984Arrowlinen wrapped around an arrow head--
<985.png>985Lit ArrowA flamming arrow-X
<986.png>986RocksA few Large rocks--
<987.png>987Paramaya Rest TicketAllows you to rest in the luxurius Paramaya Inn--
<988.png>988Ship TicketAllows you passage on the 'Lady of the Waves' ship.--
<989.png>989Damp clothIt smells as if it's been doused in alcohol--
<990.png>990Desert BootsBoots made specially for the desertX-
<991.png>991Orb of lightThe orb gives you a safe peaceful feeling--
<992.png>992Orb of lightThe orb gives you a safe peaceful feeling--
<993.png>993Orb of lightThe orb gives you a safe peaceful feeling--
<994.png>994Orb of lightThe orb gives you a safe peaceful feeling--
<995.png>995RailingA broken metal rod--
<996.png>996Randas's journalAn old journal with several pages missing--
<997.png>997Unicorn hornPoor unicorn went splat!--
<998.png>998Coat of ArmsA symbol of truth and all that is good--
<999.png>999Coat of ArmsA symbol of truth and all that is good--
<1000.png>1000Staff of IbanIt's a slightly magical stickX-
<1001.png>1001Dwarf brewIt's a bucket of home made brew--
<1002.png>1002Ibans AshesA heap of ashes--
<1003.png>1003CatShe's sleeping..i think!--
<1004.png>1004A Doll of IbanA strange doll made from sticks and cloth--
<1005.png>1005Old JournalI wonder who wrote this!--
<1006.png>1006Klank's gauntletsHeavy hand protectionX-
<1007.png>1007Iban's shadowA dark mystical liquid--
<1008.png>1008Iban's conscienceThe remains of a dove that died long ago--
<1009.png>1009Amulet of OthainianA strange looking amuletX-
<1010.png>1010Amulet of DoomionA strange looking amuletX-
<1011.png>1011Amulet of HolthionA strange looking amuletX-
<1012.png>1012keep keyA small prison key--
<1013.png>1013Bronze Throwing DartA deadly throwing dart with a bronze tip.XX
<1014.png>1014Prototype Throwing DartA proto type of a deadly throwing dart.-X
<1015.png>1015Iron Throwing DartA deadly throwing dart with an iron tip.XX
<1016.png>1016Full Water SkinA skinful of water--
<1017.png>1017Lens mouldA peculiar mould in the shape of a disc--
<1018.png>1018LensA perfectly formed glass disc--
<1019.png>1019Desert RobeCool light robe to wear in the desertX-
<1020.png>1020Desert ShirtA light cool shirt to wear in the desertX-
<1021.png>1021Metal KeyA large metalic key.--
<1022.png>1022Slaves Robe BottomA dirty desert skirtX-
<1023.png>1023Slaves Robe TopA dirty desert shirtX-
<1024.png>1024Steel Throwing DartA deadly throwing dart with a steel tip.XX
<1025.png>1025Astrology BookA book on Astrology in runescape--
<1026.png>1026Unholy Symbol moulduse this with silver in a furnace--
<1027.png>1027Unholy Symbol of Zamorakthis needs stringing--
<1028.png>1028Unblessed Unholy Symbol of Zamorakthis needs blessingX-
<1029.png>1029Unholy Symbol of Zamoraka symbol indicating allegiance to ZamorakX-
<1030.png>1030Shantay Desert PassAllows you into the desert through the Shantay pass worth 5 gold.-X
<1031.png>1031Staff of IbanThe staff is damaged--
<1032.png>1032Dwarf cannon basebang--
<1033.png>1033Dwarf cannon standbang--
<1034.png>1034Dwarf cannon barrelsbang--
<1035.png>1035Dwarf cannon furnacebang--
<1036.png>1036FingernailsUgh gross!--
<1037.png>1037Powering crystal1An intricately cut gemstone--
<1038.png>1038Mining BarrelA roughly constructed barrel for carrying rock.--
<1039.png>1039Ana in a BarrelA roughly constructed barrel with an Ana in it!--
<1040.png>1040Stolen goldI wish I could spend it--
<1041.png>1041multi cannon ballA heavy metal spiked ball-X
<1042.png>1042RailingA metal railing replacement--
<1043.png>1043Ogre toothbig sharp and nasty--
<1044.png>1044Ogre relicA grotesque symbol of the ogres--
<1045.png>1045Skavid mapA map of cave locations--
<1046.png>1046dwarf remainsThe remains of a dwarf savaged by goblins--
<1047.png>1047KeyA key for a chest--
<1048.png>1048Ogre relic partA piece of a statue--
<1049.png>1049Ogre relic partA piece of a statue--
<1050.png>1050Ogre relic partA piece of a statue--
<1051.png>1051Ground bat bonesThe ground bones of a bat--
<1052.png>1052Unfinished potionI need another ingredient to finish the shaman potion--
<1053.png>1053Ogre potionA strange liquid--
<1054.png>1054Magic ogre potionA strange liquid that bubbles with power--
<1055.png>1055Tool kitThese could be handy!--
<1056.png>1056Nulodion's notesConstruction notes for dwarf cannon ammo--
<1057.png>1057cannon ammo mouldUsed to make cannon ammo--
<1058.png>1058Tenti PineappleThe most delicious in the whole of Kharid--
<1059.png>1059Bedobin Copy KeyA copy of a key for the captains of the mining camps chest--
<1060.png>1060Technical PlansVery technical looking plans for making a thrown weapon of some sort--
<1061.png>1061Rock cakeYum... I think!--
<1062.png>1062Bronze dart tipsDangerous looking dart tips - need feathers for flight-X
<1063.png>1063Iron dart tipsDangerous looking dart tips - need feathers for flight-X
<1064.png>1064Steel dart tipsDangerous looking dart tips - need feathers for flight-X
<1065.png>1065Mithril dart tipsDangerous looking dart tips - need feathers for flight-X
<1066.png>1066Adamantite dart tipsDangerous looking dart tips - need feathers for flight-X
<1067.png>1067Rune dart tipsDangerous looking dart tips - need feathers for flight-X
<1068.png>1068Mithril Throwing DartA deadly throwing dart with a mithril tip.XX
<1069.png>1069Adamantite Throwing DartA deadly throwing dart with an adamantite tip.XX
<1070.png>1070Rune Throwing DartA deadly throwing dart with a runite tip.XX
<1071.png>1071Prototype dart tipDangerous looking dart tip - needs feathers for flight-X
<1072.png>1072info documentread to access variable choices--
<1073.png>1073Instruction manualAn old note book--
<1074.png>1074Unfinished potionI need another ingredient to finish this potion--
<1075.png>1075Iron throwing knifeA finely balanced knifeX-
<1076.png>1076Bronze throwing knifeA finely balanced knifeX-
<1077.png>1077Steel throwing knifeA finely balanced knifeX-
<1078.png>1078Mithril throwing knifeA finely balanced knifeX-
<1079.png>1079Adamantite throwing knifeA finely balanced knifeX-
<1080.png>1080Rune throwing knifeA finely balanced knifeX-
<1081.png>1081Black throwing knifeA finely balanced knifeX-
<1082.png>1082Water Skin mostly fullA half full skin of water--
<1083.png>1083Water Skin mostly emptyA half empty skin of water--
<1084.png>1084Water Skin mouthful leftA waterskin with a mouthful of water left--
<1085.png>1085Empty Water SkinA completely empty waterskin--
<1086.png>1086nightshadeDeadly!--
<1087.png>1087Shaman robeThis has been left by one of the dead ogre shaman--
<1088.png>1088Iron SpearAn iron tipped spearX-
<1089.png>1089Steel SpearA steel tipped spearX-
<1090.png>1090Mithril SpearA mithril tipped spearX-
<1091.png>1091Adamantite SpearAn adamantite tipped spearX-
<1092.png>1092Rune SpearA rune tipped spearX-
<1093.png>1093Catit's fluffs--
<1094.png>1094Seasoned SardineThey don't smell any better--
<1095.png>1095Kittenspurrr--
<1096.png>1096Kittenpurrr--
<1097.png>1097Wrought iron keyThis key clears unlocks a very sturdy gate of some sort.--
<1098.png>1098Cell Door KeyA roughly hewn key--
<1099.png>1099A free Shantay DisclaimerVery important information.--
<1100.png>1100Doogle leavesSmall sweet smelling leaves--
<1101.png>1101Raw Ugthanki MeatI need to cook this first--
<1102.png>1102Tasty Ugthanki KebabA fresh Kebab made from Ugthanki meat--
<1103.png>1103Cooked Ugthanki MeatFreshly cooked Ugthanki meat--
<1104.png>1104Uncooked Pitta BreadI need to cook this.--
<1105.png>1105Pitta BreadMmmm I need to add some other ingredients yet.--
<1106.png>1106Tomato MixtureA mixture of tomatoes in a bowl--
<1107.png>1107Onion MixtureA mixture of onions in a bowl--
<1108.png>1108Onion and Tomato MixtureA mixture of onions and tomatoes in a bowl--
<1109.png>1109Onion and Tomato and Ugthanki MixA mixture of onions and tomatoes and Ugthanki meat in a bowl--
<1110.png>1110Burnt Pitta BreadUrgh - it's all burnt--
<1111.png>1111Panning trayused for panning gold--
<1112.png>1112Panning traythis tray contains gold nuggets--
<1113.png>1113Panning traythis tray contains mud--
<1114.png>1114Rock picka sharp pick for cracking rocks--
<1115.png>1115Specimen brushstiff brush for cleaning specimens--
<1116.png>1116Specimen jara jar for holding soil samples--
<1117.png>1117Rock SampleA rock sample--
<1118.png>1118gold NuggetsReal gold pieces!-X
<1119.png>1119catlooks like a healthy one--
<1120.png>1120Scrumpled piece of paperA piece of paper with barely legible writing - looks like a recipe!--
<1121.png>1121Digsite infoIAN ONLY--
<1122.png>1122Poisoned Bronze Throwing DartA venomous throwing dart with a bronze tip.XX
<1123.png>1123Poisoned Iron Throwing DartA venomous throwing dart with an iron tip.XX
<1124.png>1124Poisoned Steel Throwing DartA venomous throwing dart with a steel tip.XX
<1125.png>1125Poisoned Mithril Throwing DartA venomous throwing dart with a mithril tip.XX
<1126.png>1126Poisoned Adamantite Throwing DartA venomous throwing dart with an adamantite tip.XX
<1127.png>1127Poisoned Rune Throwing DartA deadly venomous dart with a runite tip.XX
<1128.png>1128Poisoned Bronze throwing knifeA finely balanced knife with a coating of venomX-
<1129.png>1129Poisoned Iron throwing knifeA finely balanced knife with a coating of venomX-
<1130.png>1130Poisoned Steel throwing knifeA finely balanced knife with a coating of venomX-
<1131.png>1131Poisoned Mithril throwing knifeA finely balanced knife with a coating of venomX-
<1132.png>1132Poisoned Black throwing knifeA finely balanced knife with a coating of venomX-
<1133.png>1133Poisoned Adamantite throwing knifeA finely balanced knife with a coating of venomX-
<1134.png>1134Poisoned Rune throwing knifeA finely balanced knife with a coating of venomX-
<1135.png>1135Poisoned Bronze SpearA bronze tipped spear with added venom X-
<1136.png>1136Poisoned Iron SpearAn iron tipped spear with added venomX-
<1137.png>1137Poisoned Steel SpearA steel tipped spear with added venomX-
<1138.png>1138Poisoned Mithril SpearA mithril tipped spear with added venomX-
<1139.png>1139Poisoned Adamantite SpearAn adamantite tipped spear with added venomX-
<1140.png>1140Poisoned Rune SpearA rune tipped spear with added venomX-
<1141.png>1141Book of experimental chemistryA book on experiments with volatile chemicals--
<1142.png>1142Level 1 CertificateA Certificate of education--
<1143.png>1143Level 2 CertificateA Certificate of education--
<1144.png>1144Level 3 CertificateA Certificate of education--
<1145.png>1145TrowelA small device for digging--
<1146.png>1146Stamped letter of recommendationA stamped scroll with a recommendation on it--
<1147.png>1147Unstamped letter of recommendationI hereby recommend this student to undertake the Varrock City earth sciences exams--
<1148.png>1148Rock SampleA rock sample--
<1149.png>1149Rock SampleA rock sample--
<1150.png>1150Cracked rock SampleIt's been cracked open--
<1151.png>1151Belt bucklebeen here some time--
<1152.png>1152Powering crystal2An intricately cut gemstone--
<1153.png>1153Powering crystal3An intricately cut gemstone--
<1154.png>1154Powering crystal4An intricately cut gemstone--
<1155.png>1155Old bootthat's been here some time--
<1156.png>1156Bunny earsGet another from the clothes shop if you dieX-
<1157.png>1157Damaged armourthat's been here some time--
<1158.png>1158Damaged armourthat's been here some time--
<1159.png>1159Rusty swordthat's been here some time--
<1160.png>1160Ammonium NitrateAn acrid chemical--
<1161.png>1161NitroglycerinA strong acidic formula--
<1162.png>1162Old tootha large single tooth--
<1163.png>1163Radimus ScrollsScrolls that Radimus gave you--
<1164.png>1164chest keyA small key for a chest--
<1165.png>1165broken arrowthat's been here some time--
<1166.png>1166buttonsthey've been here some time--
<1167.png>1167broken staffthat's been here some time--
<1168.png>1168vaseAn old vase--
<1169.png>1169ceramic remainssome ancient pottery--
<1170.png>1170Broken glasssmashed glass--
<1171.png>1171Unidentified powderwho knows what this is for?--
<1172.png>1172MachetteA purpose built tool for cutting through thick jungle.X-
<1173.png>1173ScrollA letter written by the expert--
<1174.png>1174stone tabletsome ancient script is engraved on here--
<1175.png>1175Talisman of Zarosan ancient item--
<1176.png>1176Explosive compoundA dark mystical powder--
<1177.png>1177Bull RoarerA sound producing instrument - it may attract attention--
<1178.png>1178Mixed chemicalsA pungent mix of 2 chemicals--
<1179.png>1179Ground charcoalPowdered charcoal!--
<1180.png>1180Mixed chemicalsA pungent mix of 3 chemicals--
<1181.png>1181Spell scrollA magical scroll--
<1182.png>1182Yommi tree seedA magical seed that grows into a Yommi tree - these need to be germinated-X
<1183.png>1183Totem PoleA well crafted totem pole--
<1184.png>1184Dwarf cannon basebang--
<1185.png>1185Dwarf cannon standbang--
<1186.png>1186Dwarf cannon barrelsbang--
<1187.png>1187Dwarf cannon furnacebang--
<1188.png>1188Golden BowlA specially made bowl constructed out of pure gold--
<1189.png>1189Golden Bowl with pure waterA golden bowl filled with pure water--
<1190.png>1190Raw Manta rayA rare catch!--
<1191.png>1191Manta rayA rare catch!--
<1192.png>1192Raw Sea turtleA rare catch!--
<1193.png>1193Sea turtleTasty!--
<1194.png>1194Annas Silver NecklaceA necklace coated with silverX-
<1195.png>1195Bobs Silver TeacupA tea cup coated with silver--
<1196.png>1196Carols Silver BottleA little bottle coated with silver--
<1197.png>1197Davids Silver BookAn ornamental book coated with silver--
<1198.png>1198Elizabeths Silver NeedleAn ornamental needle coated with silver--
<1199.png>1199Franks Silver PotA small pot coated with silver--
<1200.png>1200ThreadA piece of red thread discovered at the scene of the crime--
<1201.png>1201ThreadA piece of green thread discovered at the scene of the crime--
<1202.png>1202ThreadA piece of blue thread discovered at the scene of the crime--
<1203.png>1203FlypaperSticky paper for catching flies--
<1204.png>1204Murder Scene PotThe pot has a sickly smell of poison mixed with wine--
<1205.png>1205A Silver DaggerDagger Found at crime sceneX-
<1206.png>1206Murderers fingerprintAn impression of the murderers fingerprint--
<1207.png>1207Annas fingerprintAn impression of Annas fingerprint--
<1208.png>1208Bobs fingerprintAn impression of Bobs fingerprint--
<1209.png>1209Carols fingerprintAn impression of Carols fingerprint--
<1210.png>1210Davids fingerprintAn impression of Davids fingerprint--
<1211.png>1211Elizabeths fingerprintAn impression of Elizabeths fingerprint--
<1212.png>1212Franks fingerprintAn impression of Franks fingerprint--
<1213.png>1213Zamorak CapeA cape from the almighty zamorakX-
<1214.png>1214Saradomin CapeA cape from the almighty saradominX-
<1215.png>1215Guthix CapeA cape from the almighty guthixX-
<1216.png>1216Staff of zamorakIt's a stick of the godsX-
<1217.png>1217Staff of guthixIt's a stick of the godsX-
<1218.png>1218Staff of SaradominIt's a stick of the godsX-
<1219.png>1219A chunk of crystalA reddish crystal fragment - it looks like it formed a shape at one time.--
<1220.png>1220A lump of crystalA reddish crystal fragment - it looks like it formed a shape at one time.--
<1221.png>1221A hunk of crystalA reddish crystal fragment - it looks like it formed a shape at one time.--
<1222.png>1222A red crystalA heart shaped red crystal --
<1223.png>1223Unidentified fingerprintAn impression of the murderers fingerprint--
<1224.png>1224Annas Silver NecklaceA silver necklace coated with flourX-
<1225.png>1225Bobs Silver TeacupA silver tea cup coated with flour--
<1226.png>1226Carols Silver BottleA little silver bottle coated with flour--
<1227.png>1227Davids Silver BookAn ornamental silver book coated with flour--
<1228.png>1228Elizabeths Silver NeedleAn ornamental silver needle coated with flour--
<1229.png>1229Franks Silver PotA small silver pot coated with flour--
<1230.png>1230A Silver DaggerDagger Found at crime scene coated with flourX-
<1231.png>1231A glowing red crystalA glowing heart shaped red crystal - great magic must be present in this item--
<1232.png>1232Unidentified liquidA strong acidic formula--
<1233.png>1233Radimus ScrollsMission briefing and the completed map of Karamja - Sir Radimus will be pleased...--
<1234.png>1234RobeA worn robeX-
<1235.png>1235ArmourAn unusually red armour--
<1236.png>1236DaggerShort but pointyX-
<1237.png>1237eye patchIt makes me look very piraticalX-
<1238.png>1238Booking of BindingAn ancient tome on Demonology--
<1239.png>1239Holy Water VialA deadly potion against evil kinX-
<1240.png>1240Enchanted VialThis enchanted vial is empty - but is ready for magical liquids.--
<1241.png>1241Scribbled notesIt looks like a page ripped from a book--
<1242.png>1242Scrawled notesIt looks like a page ripped from a book--
<1243.png>1243Scatched notesIt looks like a page ripped from a book--
<1244.png>1244Shamans TomeAn ancient tome on various subjects...--
<1245.png>1245Edible seaweedslightly damp seaweed--
<1246.png>1246Rough Sketch of a bowlA roughly sketched picture of a bowl made from metal--
<1247.png>1247Burnt Manta rayoops!--
<1248.png>1248Burnt Sea turtleoops!--
<1249.png>1249Cut reed plantA narrow long tube - it might be useful for something--
<1250.png>1250Magical Fire PassA pass which allows you to cross the flaming walls into the Flaming Octagon--
<1251.png>1251Snakes Weed SolutionSnakes weed in water - part of a potion--
<1252.png>1252Ardrigal SolutionArdrigal herb in water - part of a potion--
<1253.png>1253Gujuo PotionA potion to help against fear of the supernatural--
<1254.png>1254Germinated Yommi tree seedA magical seed that grows into a Yommi tree - these have been germinated.-X
<1255.png>1255Dark DaggerAn unusual looking dagger made of dark shiny obsidianX-
<1256.png>1256Glowing Dark DaggerAn unusual looking dagger made of dark shiny obsidian - it has an unnatural glow .X-
<1257.png>1257Holy Force SpellA powerful incantation - it affects spirits of the underworld--
<1258.png>1258Iron PickaxeUsed for mining--
<1259.png>1259Steel PickaxeRequires level 6 mining to use--
<1260.png>1260Mithril PickaxeRequires level 21 mining to use--
<1261.png>1261Adamantite PickaxeRequires level 31 mining to use--
<1262.png>1262Rune PickaxeRequires level 41 mining to use--
<1263.png>1263Sleeping BagNot as comfy as a bed but better than nothing--
<1264.png>1264A blue wizards hatAn ancient wizards hat.X-
<1265.png>1265Gilded Totem PoleA well crafted totem pole - given to you as a gift from Gujuo--
<1266.png>1266Blessed Golden BowlA specially made bowl constructed out of pure gold - it looks magical somehow--
<1267.png>1267Blessed Golden Bowl with Pure WaterA golden bowl filled with pure water - it looks magical somehow--
<1268.png>1268Raw Oomlie MeatRaw meat from the Oomlie bird--
<1269.png>1269Cooked Oomlie meat ParcelDeliciously cooked Oomlie meat in a palm leaf pouch.--
<1270.png>1270Dragon Bone CertificateEach certificate exchangable at Yanille for 5 Dragon Bones-X
<1271.png>1271Limpwurt Root CertificateEach certificate exchangable at Yanille for 5 Limpwort roots-X
<1272.png>1272Prayer Potion CertificateEach certificate exchangable at Yanille for 5 prayer potions-X
<1273.png>1273Super Attack Potion CertificateExchangable at Yanille for 5-X
<1274.png>1274Super Defense Potion CertificateExchangable at Yanille for 5-X
<1275.png>1275Super Strength Potion CertificateExchangable at Yanille for 5-X
<1276.png>1276Half Dragon Square ShieldThe Right Half of an ancient and powerful looking Dragon Square shield.--
<1277.png>1277Half Dragon Square ShieldLeft Half of an ancient and powerful looking Dragon Square shield.--
<1278.png>1278Dragon Square ShieldAn ancient and powerful looking Dragon Square shield.X-
<1279.png>1279Palm tree leafA thick green plam leaf - natives use this to cook meat in--
<1280.png>1280Raw Oomlie Meat ParcelOomlie meat in a palm leaf pouch - just needs to be cooked.--
<1281.png>1281Burnt Oomlie Meat parcelOomlie meat in a palm leaf pouch - it's burnt.--
<1282.png>1282Bailing BucketIt's a water tight bucket--
<1283.png>1283PlankDamaged remains of the ship--
<1284.png>1284Arcenia rootthe root of an arcenia plant--
<1285.png>1285display teaA nice cup of tea - for display only--
<1286.png>1286Blessed Golden Bowl with plain waterA golden bowl filled with plain water--
<1287.png>1287Golden Bowl with plain waterA golden bowl filled with plain water--
<1288.png>1288Cape of legendsShows I am a member of the legends guildX-
<1289.png>1289ScytheGet another from the clothes shop if you dieX-
\ No newline at end of file diff --git a/204-NPCs.mediawiki b/204-NPCs.mediawiki deleted file mode 100644 index 0afdff3..0000000 --- a/204-NPCs.mediawiki +++ /dev/null @@ -1,799 +0,0 @@ -[[Category RSC]] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/204-Objects.mediawiki b/204-Objects.mediawiki deleted file mode 100644 index c802523..0000000 --- a/204-Objects.mediawiki +++ /dev/null @@ -1,1195 +0,0 @@ -[[Category RSC]] -
idnpc nameleveldescriptionattackable
0Unicorn21It's a unicornX
1Bob2An axe seller-
2Sheep0A very wooly sheep-
3Chicken3Yep definitely a chickenX
4Goblin13An ugly green creatureX
5Hans3A castle servantX
6cow8It's a multi purpose cowX
7cook15The head cook of Lumbridge castle-
8Bear24Eek! A bear!X
9Priest0A priest of Saradomin-
10Urhney8He looks a little grumpy-
11Man9One of runescapes many citizensX
12Bartender0I could get a beer off him-
13Camel0Oh its a camel-
14Gypsy0An old gypsy lady-
15Ghost12Ooh spooky-
16Sir Prysin40One of the king's knights-
17Traiborn the wizard12An old wizard-
18Captain Rovin51The head of the palace guard-
19Rat8Overgrown verminX
20Reldo12I think he's the librarian-
21mugger10He jumps out and attacks peopleX
22Lesser Demon79Lesser but still pretty bigX
23Giant Spider8I think this spider has been genetically modifiedX
24Man30A shifty looking man-
25Jonny the beard10I can see why he's called the beardX
26Baraek30A fur trader-
27Katrine25She doesn't look to friendly-
28Tramp7A scruffy looking chap-
29Rat2A small muddy ratX
30Romeo45He looks mildly confused-
31Juliet2She looks a little stressed-
32Father Lawrence0A kindly looking priest-
33Apothecary6I wonder if he has any good potions-
34spider2Incey winceyX
35Delrith30A freshly summoned demonX
36Veronica2She doesn't look too happy-
37Weaponsmaster25The phoenix gang quartermasterX
38Professor Oddenstein4A mad scientist if I ever saw one-
39Curator2He looks like he's daydreaming-
40skeleton21It rattles as it walksX
41zombie24The living deadX
42king30King Roald the VIII-
43Giant bat32An angry flying rodentX
44Bartender0A friendly barman-
45skeleton31It rattles as it walksX
46skeleton25It rattles as it walksX
47Rat13overgrown verminX
48Horvik the Armourer16He looks strong-
49Bear0A bear-
50skeleton19It rattles when it walksX
51Shopkeeper0Maybe he'd like to buy some of my junk-
52zombie19The living deadX
53Ghost25Ooh spookyX
54Aubury0I think he might be a shop keeper-
55Shopkeeper0I wonder what he's got for sale-
56shopkeeper0I can buy swords off him-
57Darkwizard13He works evil magicX
58lowe0The owner of the archery store-
59Thessalia0A young shop assistant-
60Darkwizard25He works evil magicX
61Giant37A very large foeX
62Goblin7An ugly green creatureX
63farmer15He grows the crops in this areaX
64Thief21He'll take anything that isn't nailed downX
65Guard28He tries to keep order around hereX
66Black Knight46A sinister looking knightX
67Hobgoblin32A large ugly green creatureX
68zombie32The living deadX
69Zaff0He trades in staffs-
70Scorpion21An extremely vicious scorpionX
71silk trader0He sells silk-
72Man9One of Runescapes many citizensX
73Guide1He gives hints to new adventurers-
74Giant Spider31I think this spider has been genetically modifiedX
75Peksa9A helmet salesman-
76Barbarian16Not civilised lookingX
77Fred the farmer9An old farmer-
78Gunthor the Brave37The barbarians fearless leaderX
79Witch25She's got wartsX
80Ghost25Ooh spookyX
81Wizard16An old wizardX
82Shop Assistant0Maybe he'd like to buy some of my junk-
83Shop Assistant0Maybe he'd like to buy some of my junk-
84Zeke0He sells Scimitars-
85Louie Legs0He might want to sell something-
86Warrior18A member of Al Kharid's militaryX
87Shopkeeper0I wonder what he's got for sale-
88Shop Assistant0Maybe she'd like to buy some of my junk-
89Highwayman13He holds up passers byX
90Kebab Seller0A seller of strange food-
91Chicken3Yep definitely a chicken-
92Ernest3A former chicken-
93Monk13A Peaceful monkX
94Dwarf18A short angry guyX
95Banker9He can look after my money-
96Count Draynor43A vicious vampireX
97Morgan9A frigtened villager-
98Dr Harlow9His nose is very red-
99Deadly Red spider36I think this spider has been genetically modifiedX
100Guard28He's here to guard this fortressX
101Cassie25She sells shields-
102White Knight56A chivalrous knightX
103Ranael25A shopkeeper of some sort-
104Moss Giant62his beard seems to have a life of its ownX
105Shopkeeper0I wonder what he's got for sale-
106Shop Assistant0Maybe he'd like to buy some of my junk-
107Witch25She's got warts-
108Black Knight46A sinister looking knightX
109Greldo7A small green warty creatureX
110Sir Amik Varze56The leader of the white knights-
111Guildmaster40He's in charge of this place-
112Valaine25She runs the champion's store-
113Drogo18He runs a mining store-
114Imp5A cheeky little impX
115Flynn16The mace salesman-
116Wyson the gardener8An old gardener-
117Wizard Mizgog12An old wizard-
118Prince Ali20A young prince-
119Hassan20the Chancellor to the emir-
120Osman20He looks a little shifty-
121Joe40Lady Keli's head guard-
122Leela20She comes from Al Kharid-
123Lady Keli20An Infamous bandit-
124Ned20An old sailor-
125Aggie25A witch-
126Prince Ali10That is an effective disguise-
127Jailguard34I wonder what he's guardingX
128Redbeard Frank25A pirate-
129Wydin0A grocer-
130shop assistant0I can buy swords off him-
131Brian0An axe seller-
132squire0A young squire-
133Head chef15He looks after the chef's guild-
134Thurgo18A short angry guy-
135Ice Giant68He's got icicles in his beardX
136King Scorpion36Wow scorpions shouldn't grow that bigX
137Pirate27A vicious pirateX
138Sir Vyvin56One of the white knights of Falador-
139Monk of Zamorak29An evil clericX
140Monk of Zamorak19An evil clericX
141Wayne16An armourer-
142Barmaid25a pretty barmaid-
143Dwarven shopkeeper18I wonder if he wants to buy any of my junk-
144Doric18A dwarven smith-
145Shopkeeper0I wonder what he's got for sale-
146Shop Assistant0Maybe he'd like to buy some of my junk-
147Guide1She gives hints to new adventurers-
148Hetty25A witch-
149Betty25A witch-
150Bartender0I could get a beer off him-
151General wartface13An ugly green creature-
152General Bentnoze13An ugly green creature-
153Goblin13An ugly green creatureX
154Goblin13An ugly green creatureX
155Herquin0A gem merchant-
156Rommik0The owner of the crafting shop-
157Grum0Grum the goldsmith-
158Ice warrior57A strange inhuman warriorX
159Warrior27A skilled fighterX
160Thrander16A smith of some sort-
161Border Guard18a guard from Al Kharid-
162Border Guard18a guard from Al Kharid-
163Customs Officer16She is here to stop smugglers-
164Luthas16The owner of the banana plantation-
165Zambo16He will sell me exotic rum-
166Captain Tobias20An old sailor-
167Gerrant0I wonder what he's got for sale-
168Shopkeeper0I wonder what he's got for sale-
169Shop Assistant0Maybe he'd like to buy some of my junk-
170Seaman Lorris20A young sailor-
171Seaman Thresnor20A young sailor-
172Tanner45He makes leather-
173Dommik0The owner of the crafting shop-
174Abbot Langley13A Peaceful monk-
175Thordur18He runs a a tourist attraction-
176Brother Jered13human-
177Rat13Overgrown verminX
178Ghost25Ooh spookyX
179skeleton31it rattles when it walksX
180zombie32the living deadX
181Lesser Demon79Lesser but still very bigX
182Melzar the mad45He looks totally insaneX
183Scavvo10He has lopsided eyes-
184Greater Demon87big red and incredibly evilX
185Shopkeeper0I wonder what he's got for sale-
186Shop Assistant0Maybe he'd like to buy some of my junk-
187Oziach0A strange little man-
188Bear26Eek! A bear!X
189Black Knight46An armoured follower of ZamorakX
190chaos Dwarf59a dwarf gone badX
191dwarf18A dwarf who looks after the mining guild-
192Wormbrain7Dumb even by goblin standardsX
193Klarense20A young sailor-
194Ned20An old sailor-
195skeleton54A Taller than normal skeletonX
196Dragon110A powerful and ancient dragonX
197Oracle57A mystic of unknown race-
198Duke of Lumbridge30Duke Horacio of Lumbridge-
199Dark Warrior21A warrior touched by chaosX
200Druid29A worshipper of GuthixX
201Red Dragon140A big powerful dragonX
202Blue Dragon105A mother dragonX
203Baby Blue Dragon50Young but still dangerousX
204Kaqemeex29A wise druid-
205Sanfew29An old druid-
206Suit of armour29A dusty old suit of armour-
207Adventurer13A cleric-
208Adventurer12A wizard-
209Adventurer56A Warrior-
210Adventurer25An archer-
211Leprechaun18A funny little man who lives in a tree-
212Monk of entrana13A Peaceful monk-
213Monk of entrana13A Peaceful monk-
214zombie32The living deadX
215Monk of entrana13A Peaceful monk-
216tree spirit95Ooh spookyX
217cow8It's a dairy cow-
218Irksol2Is he invisible or just a set of floating clothes?-
219Fairy Lunderwin2A fairy merchant-
220Jakut2An unusual looking merchant-
221Doorman56He guards the entrance to the faerie market-
222Fairy Shopkeeper0I wonder what he's got for sale-
223Fairy Shop Assistant0Maybe he'd like to buy some of my junk-
224Fairy banker9He can look after my money-
225Giles30He runs an ore exchange store-
226Miles30He runs a bar exchange store-
227Niles30He runs a fish exchange store-
228Gaius16he sells very big swords-
229Fairy Ladder attendant0A worker in the faerie market-
230Jatix29A hard working druid-
231Master Crafter0The man in charge of the crafter's guild-
232Bandit29He's ready for a fightX
233Noterazzo29A bandit shopkeeper-
234Bandit29A wilderness outlawX
235Fat Tony15A Gourmet Pizza chef-
236Donny the lad39A bandit leaderX
237Black Heather39A bandit leaderX
238Speedy Keith39A bandit leaderX
239White wolf sentry31A vicious mountain wolfX
240Boy39He doesn't seem very happy-
241Rat2He seems to live here-
242Nora T Hag25She's got warts-
243Grey wolf64A sinister looking wolfX
244shapeshifter24I've not seen anyone like this beforeX
245shapeshifter34I think this spider has been genetically modified-
246shapeshifter44Eek! A bear!-
247shapeshifter54A sinister looking wolf-
248White wolf41A vicious mountain wolfX
249Pack leader71A vicious mountain wolfX
250Harry0I wonder what he's got for sale-
251Thug18He likes hitting thingsX
252Firebird6Probably not a chickenX
253Achetties46One of Asgarnia's greatest heros-
254Ice queen103The leader of the ice warriorsX
255Grubor15A rough looking thief-
256Trobert13A well dressed thief-
257Garv28A diligent guard-
258guard27A vicious pirate-
259Grip46Scar face petes head guardX
260Alfonse the waiter9He should get a clean apron-
261Charlie the cook15Head cook of the Shrimp and parrot-
262Guard Dog46He doesn't seem pleased to see meX
263Ice spider64I think this spider has been genetically modifiedX
264Pirate30A vicious pirateX
265Jailer51Guards prisoners for the black knightsX
266Lord Darquarius76A black knight commanderX
267Seth30He runs a fish exchange store-
268Banker9He can look after my money-
269Helemos46A retired hero-
270Chaos Druid19A crazy evil druidX
271Poison Scorpion26It has a very vicious looking tailX
272Velrak the explorer3he looks cold and hungry-
273Sir Lancelot56A knight of the round table-
274Sir Gawain56A knight of the round table-
275King Arthur56A wise old king-
276Sir Mordred58An evil knightX
277Renegade knight51He isn't very friendlyX
278Davon27An amulet trader-
279Bartender0I could get some grog off him-
280Arhein0A merchant-
281Morgan le faye25An evil sorceress-
282Candlemaker16He makes and sells candles-
283lady0She has a hint of magic about her-
284lady0She has a hint of magic about her-
285lady0She has a hint of magic about her-
286Beggar7A scruffy looking chap-
287Merlin12An old wizard-
288Thrantax90A freshly summoned demon-
289Hickton0The owner of the archery store-
290Black Demon156A big scary jet black demonX
291Black Dragon200A fierce dragon with black scales!X
292Poison Spider63I think this spider has been genetically modifiedX
293Monk of Zamorak47An evil clericX
294Hellhound114Hello nice doggyX
295Animated axe46a magic axe with a mind of it's ownX
296Black Unicorn31It's a sort of unicornX
297Frincos13A Peaceful monk-
298Otherworldly being66Is he invisible or just a set of floating clothes?X
299Owen30He runs a fish exchange store-
300Thormac the sorceror25A powerful sorcerrer-
301Seer16An old wizard-
302Kharid Scorpion21a smaller less dangerous scorpion-
303Kharid Scorpion21a smaller less dangerous scorpion-
304Kharid Scorpion21a smaller less dangerous scorpion-
305Barbarian guard16Not very civilised-
306Bartender0I could get a beer off him-
307man9A well dressed nobleman-
308gem trader0He sells gems-
309Dimintheis9A well dressed nobleman-
310chef15A busy looking chef-
311Hobgoblin48An ugly green creatureX
312Ogre58A large dim looking humanoidX
313Boot the Dwarf18A short angry guy-
314Wizard16A young wizard-
315Chronozon121Chronozon the blood demonX
316Captain Barnaby20An old sailor-
317Customs Official16She's here to stop smugglers-
318Man9One of Runescape's citizensX
319farmer15An humble peasantX
320Warrior27A skilled fighterX
321Guard28He tries to keep the law and order around hereX
322Knight56A knight of ArdougneX
323Paladin71A paladin of ArdougneX
324Hero83A Hero of ArdougneX
325Baker15He sells hot baked bread-
326silk merchant0He buys silk-
327Fur trader0A buyer and seller of animal furs-
328silver merchant0He deals in silver-
329spice merchant15He sells exotic spices-
330gem merchant0He sells gems-
331Zenesha25A shopkeeper of some sort-
332Kangai Mau0A tribesman-
333Wizard Cromperty12An old wizard-
334RPDT employee12A delivery man-
335Horacio8An old gardener-
336Aemad16He helps run the adventurers store-
337Kortan16He helps run the adventurers store-
338zoo keeper20He looks after Ardougne city zooX
339Make over mage0He can change how I look-
340Bartender0I could get a beer off him-
341chuck0A wood merchant-
342Rogue21He needs a shaveX
343Shadow spider53Is it a spider or is it a shadowX
344Fire Giant109A big guy with red glowing skinX
345Grandpa Jack20A wistful old man-
346Sinister stranger43not your average fisherman-
347Bonzo30Fishing competition organiser-
348Forester21He looks after McGrubor's woodX
349Morris30Fishing competition organiser-
350Brother Omad13A Peaceful monk-
351Thief21A dastardly blanket thiefX
352Head Thief34A dastardly blanket thiefX
353Big Dave15A well built fisherman-
354Joshua15A grumpy fisherman-
355Mountain Dwarf18A short angry guy-
356Mountain Dwarf28A short angry guyX
357Brother Cedric13A Peaceful monk-
358Necromancer34A crazy evil necromancerX
359zombie24The living deadX
360Lucien21He walks with a slight limp-
361The Fire warrior of lesarkus63A strange red humanoidX
362guardian of Armadyl54A worshipper of Armadyl-
363guardian of Armadyl54A worshipper of Armadyl-
364Lucien21He walks with a limpX
365winelda25A witch-
366Brother Kojo13A Peaceful monk-
367Dungeon Rat16Overgrown verminX
368Master fisher15The man in charge of the fishing guild-
369Orven30He runs a fish exchange store-
370Padik30He runs a fish exchange store-
371Shopkeeper0He smells of fish-
372Lady servil2She look's wealthy-
373Guard28It's one of General Khazard's guard's-
374Guard28It's one of General Khazard's guard's-
375Guard28It's one of General Khazard's guard's-
376Guard28It's one of General Khazard's guard's-
377Jeremy Servil0A young squire-
378Justin Servil0Jeremy servil's father-
379fightslave joe0He look's mistreated and weak-
380fightslave kelvin0He look's mistreated and weak-
381local7A scruffy looking chap-
382Khazard Bartender0A tough looking barman-
383General Khazard100He look's real nastyX
384Khazard Ogre58Khazard's strongest ogre warriorX
385Guard28It's one of General Khazard's guard's-
386Khazard Scorpion46A large angry scorpionX
387hengrad0He look's mistreated and weak-
388Bouncer122Hello nice doggyX
389Stankers0A cheerful looking fellow-
390Docky20An old sailor-
391Shopkeeper0Maybe he'd like to buy some of my junk-
392Fairy queen2A very little queen-
393Merlin12An old wizard-
394Crone25A strange old lady-
395High priest of entrana13A Peaceful monk-
396elkoy3It's a tree gnome-
397remsai3It's a tree gnome-
398bolkoy3It's a tree gnome-
399local gnome3It's a young tree gnomeX
400bolren3It's a gnome he look's important-
401Black Knight titan146He is blocking the wayX
402kalron3he look's lostX
403brother Galahad13A Peaceful monk-
404tracker 13It's a tree gnome-
405tracker 23It's a tree gnome-
406tracker 33It's a tree gnome-
407Khazard troop28It's one of General Khazard's warrior'sX
408commander montai3It's a tree gnome-
409gnome troop3It's a tree gnome trooperX
410khazard warlord100He look's real nastyX
411Sir Percival56He's covered in pieces of straw-
412Fisher king30an old king-
413maiden2She has a far away look in her eyes-
414Fisherman30an old fisherman-
415King Percival56The new fisher king-
416unhappy peasant25He looks tired and hungryX
417happy peasant25He looks well fed and full of energyX
418ceril9It's Sir ceril carnillean a local noblemen-
419butler9It's the carnillean family butler-
420carnillean guard28It's a carnillean family guardX
421Tribesman39A primative warriorX
422henryeta2It's a wealthy looking woman-
423philipe0It's a young well dressed boy-
424clivet20A strange looking man in black -
425cult member20An suspicous looking man in black X
426Lord hazeel100He could do with some sunX
427alomone42A musculer looking man in black -
428Khazard commander41It's one of General Khazard's commander'sX
429claus15the carnillean family cook-
4301st plague sheep0The sheep has the plague-
4312nd plague sheep0The sheep has the plague-
4323rd plague sheep0The sheep has the plague-
4334th plague sheep0The sheep has the plague-
434Farmer brumty15He looks after livestock in this area-
435Doctor orbon15A local doctor-
436Councillor Halgrive20A town counceller-
437Edmond20A local civilian-
438Citizen11He look's tiredX
439Citizen10He look's frightenedX
440Citizen12She look's frustratedX
441Citizen20He look's angryX
442Citizen15He look's disillusionedX
443Jethick15A cynical old man-
444Mourner2A mourner or plague healer-
445Mourner2A mourner or plague healer-
446Ted Rehnison9The head of the Rehnison family-
447Martha Rehnison12A fairly poor looking woman-
448Billy Rehnison45The Rehnisons eldest son-
449Milli Rehnison39She doesn't seem very happy-
450Alrena2She look's concerned-
451Mourner2A mourner or plague healer-
452Clerk2A bueracratic administrator-
453Carla2She look's upset-
454Bravek30The city warder of West Ardougne-
455Caroline2A well dressed middle aged lady-
456Holgart20An old sailor-
457Holgart20An old sailor-
458Holgart20An old sailor-
459kent45caroline's husband-
460bailey15the fishing platform cook-
461kennith0A young scared looking boy-
462Platform Fisherman30an emotionless fishermanX
463Platform Fisherman30an emotionless fishermanX
464Platform Fisherman30an emotionless fishermanX
465Elena2She doesn't look too happy-
466jinno30He doesn't seem to mind his lack of legs-
467Watto30He doesn't seem to mind his lack of legs-
468Recruiter51A member of the Ardougne royal army-
469Head mourner2In charge of people with silly outfits-
470Almera2A woman of the wilderness-
471hudon0A young boisterous looking lad-
472hadley30A happy looking fellow-
473Rat7Overgrown verminX
474Combat instructor51He will tell me how to fight-
475golrie3It's a tree gnome-
476Guide1She gives hints to new adventurers-
477King Black Dragon245The biggest meanest dragon aroundX
478cooking instructor15Talk to him to learn about runescape food-
479fishing instructor15He smells of fish-
480financial advisor0He knows about money-
481gerald15An old fisherman-
482mining instructor18A short angry guy-
483Elena2She looks concerned-
484Omart30A nervous looking fellow-
485Bank assistant9She can look after my stuff-
486Jerico15He looks friendly enough-
487Kilron15He looks shifty-
488Guidor's wife2She looks rather concerned-
489Quest advisor51I wonder what advise he has to impart-
490chemist4human-
491Mourner2A mourner or plague healer-
492Mourner2A mourner or plague healer-
493Wilderness guide29He's ready for a fight-
494Magic Instructor12An old wizard-
495Mourner22A mourner or plague healerX
496Community instructor2This is the last advisor - honest-
497boatman20An old sailor-
498skeleton mage21It rattles as it walksX
499controls guide29He's ready for a fight-
500nurse sarah2She's quite a looker-
501Tailor29He's ready for a party-
502Mourner25A mourner or plague healerX
503Guard28He tries to keep order around here-
504Chemist29He looks clever enough-
505Chancy29He's ready for a bet-
506Hops29He's drunk-
507DeVinci29He has a colourful personality-
508Guidor29He's not that ill-
509Chancy29He's ready for a bet-
510Hops29He's drunk-
511DeVinci29He has a colourful personality-
512king Lathas30King Lanthas of east ardounge-
513Head wizard12He runs the wizards guild-
514Magic store owner12An old wizard-
515Wizard Frumscone12A confused looking wizard-
516target practice zombie24The living deadX
517Trufitus6A wise old witch doctor-
518Colonel Radick51A soldier of the town of YanilleX
519Soldier28A soldier of the town of YanilleX
520Bartender0I could get a beer off him-
521Jungle Spider47A venomous deadly spiderX
522Jiminua0She looks very interested in selling some of her wares.-
523Jogre58An aggressive humanoidX
524Guard28He tries to keep order around here-
525Ogre58Useful for ranged trainingX
526Guard28He tries to keep order around here-
527Guard28He tries to keep order around here-
528shop keeper0he sells weapons-
529Bartender0I could get a beer off him-
530Frenita0runs a cookery shop-
531Ogre chieftan78A slightly bigger uglier ogreX
532rometti3It's a well dressed tree gnome-
533Rashiliyia80A willowy ethereal being who floats above the ground-
534Blurberry3It's a red faced tree gnome-
535Heckel funch3It's another jolly tree gnome-
536Aluft Gianne3It's a tree gnome chef-
537Hudo glenfad3It's another jolly tree gnome-
538Irena0human-
539Mosol0A jungle warrior-
540Gnome banker3It's tree gnome banker-
541King Narnode Shareen3It's a gnome he look's important-
542UndeadOne62One of Rashaliyas MinionsX
543Drucas20engraver-
544tourist29human-
545King Narnode Shareen3It's a gnome he look's important-
546Hazelmere3An ancient looking gnome-
547Glough3An rough looking gnome-
548Shar0Concerned about the economy-
549Shantay0human-
550charlie0Poor guy?X
551Gnome guard31A tree gnome guardX
552Gnome pilot3He can fly the glider-
553Mehman29local-
554Ana16This lady doesn't look as if she belongs here.-
555Chaos Druid warrior44A crazy evil druidX
556Gnome pilot3He can fly the glider-
557Shipyard worker44He look's busyX
558Shipyard worker44He look's busyX
559Shipyard worker44He look's busyX
560Shipyard foreman62He look's busy-
561Shipyard foreman62He look's busy-
562Gnome guard23A tree gnome guardX
563Femi3It's a little tree gnome-
564Femi3It's a little tree gnome-
565Anita3It's a little tree gnome-
566Glough3An rough looking gnome-
567Salarin the twisted69A crazy evil druidX
568Black Demon175A big scary jet black demonX
569Gnome pilot3He can fly the glider-
570Gnome pilot3He can fly the glider-
571Gnome pilot3He can fly the glider-
572Gnome pilot3He can fly the glider-
573Sigbert the Adventurer56A Warrior-
574Yanille Watchman33He watches out for invading ogresX
575Tower guard33He stops people going up the tower-
576Gnome Trainer11He can advise on training-
577Gnome Trainer11He can advise on training-
578Gnome Trainer11He can advise on training-
579Gnome Trainer11He can advise on training-
580Blurberry barman3He serves cocktails-
581Gnome waiter3He can serve you gnome food-
582Gnome guard27A tree gnome guardX
583Gnome child3that's a little gnomeX
584Earth warrior52A strange inhuman warriorX
585Gnome child3He's a little fellowX
586Gnome child3hello little gnomeX
587Gulluck10He sells weapons-
588Gunnjorn16Not civilised looking-
589Zadimus0Ghostly Visage of the dead Zadimus-
590Brimstail3An ancient looking gnome-
591Gnome child3He's a little fellow-
592Gnome local9A tree gnome villagerX
593Gnome local3A tree gnome villagerX
594Moss Giant62his beard seems to have a life of its ownX
595Gnome Baller70A tree gnome ball playerX
596Goalie70A gnome ball goal catcher-
597Gnome Baller70A tree gnome ball playerX
598Gnome Baller70A tree gnome ball playerX
599Gnome Baller70A tree gnome ball playerX
600Gnome Baller70A tree gnome ball playerX
601Referee3He controls the game-
602Gnome Baller70A tree gnome ball playerX
603Gnome Baller70A tree gnome ball playerX
604Gnome Baller70A tree gnome ball playerX
605Gnome Baller70A tree gnome ball playerX
606Gnome Baller70A tree gnome ball playerX
607Gnome Baller70A tree gnome ball playerX
608Gnome Baller70A tree gnome ball playerX
609Gnome Baller70He's on your team-
610Gnome Baller70He's on your team-
611Cheerleader3It's a little tree gnome-
612Cheerleader3It's a little tree gnome-
613Nazastarool Zombie83One of Rashaliyas MinionsX
614Nazastarool Skeleton83One of Rashaliyas MinionsX
615Nazastarool Ghost83One of Rashaliyas MinionsX
616Fernahei6An enthusiastic fishing shop owner-
617Jungle Banker9He can look after my money-
618Cart Driver15He drives the cart-
619Cart Driver15He drives the cart-
620Obli0An intelligent looking shop owner-
621Kaleb0This is Kaleb Paramaya - a warm and friendly inn owner-
622Yohnus0This is Yohnus - he runs the local blacksmiths-
623Serevel0This is Serevel - he sells tickets for the 'Lady of the Waves'-
624Yanni0Yanni Salika - He buys and sells antiques.-
625Official3He helps the referee-
626Koftik16The kings top tracker-
627Koftik16The kings top tracker-
628Koftik16The kings top tracker-
629Koftik16The kings top tracker-
630Blessed Vermen14A undead servent of ibanX
631Blessed Spider35One of iban's eight legged friendsX
632Paladin71A paladin of ArdougneX
633Paladin71A paladin of ArdougneX
634slave16He seems possessedX
635slave16He seems possessedX
636slave16He seems to have been here a whileX
637slave16He seems possessedX
638slave16He seems to have been here a whileX
639slave16He seems possessedX
640slave16He seems to have been here a whileX
641Kalrag78I think this is one of Ibans petsX
642Niloof18A short angry guy-
643Kardia the Witch25She's got warts-
644Souless16He seems an empty shellX
645Othainian78big red and incredibly evilX
646Doomion98A big scary jet black demonX
647Holthion78big red and incredibly evilX
648Klank18A short angry guy-
649Iban21You feel terror just looking at him-
650Koftik16The kings top tracker-
651Goblin guard48An imposing green creatureX
652Observatory Professor4He works in the observatory-
653Ugthanki45A dangerous type of spitting camel that can temporarily blind an opponent.X
654Observatory assistant4The Professor's assistant-
655Souless24A servent to zamorakX
656Dungeon spider22A nasty poisonous arachnidX
657Kamen18A short angry guy-
658Iban disciple19An evil follower of IbanX
659Koftik16The kings top tracker-
660Goblin19These goblins have grown strongX
661Chadwell16A sturdy looking gent-
662Professor4The owner of the observatory-
663San Tojalon120The animated spirit of San TojalonX
664Ghost29A doomed victim of zamorakX
665Spirit of Scorpius100The undead spirit of the follower of Zamorak-
666Scorpion21There are nasty scorpions around this grave-
667Dark Mage0He works in the ways of dark magic-
668Mercenary50He seems to be guarding an areaX
669Mercenary Captain64He's in control of the local guards.X
670Mercenary39He seems to be guarding an areaX
671Mining Slave16A chained slave forced to mine rocks.X
672Watchtower wizard12A learned man-
673Ogre Shaman100An intelligent form of ogre-
674Skavid3Servant race to the ogres-
675Ogre guard78These ogres protect the city-
676Ogre guard78These ogres protect the city-
677Ogre guard78These ogres protect the city-
678Skavid3Servant race to the ogres-
679Skavid3Servant race to the ogres-
680Og78The chieftan of this ogre tribe-
681Grew78The chieftan of this ogre tribe-
682Toban78The chieftan of this ogre tribe-
683Gorad78A high ranking ogre officialX
684Ogre guard96this creature looks very toughX
685Yanille Watchman33A captured guard of Yanille-
686Ogre merchant58He sells ogre-inspired items-
687Ogre trader58He trades in metals-
688Ogre trader58He trades in food-
689Ogre trader58He trades in food-
690Mercenary39He seems to be guarding an areaX
691City Guard78high ranking ogre guards-
692Mercenary39He seems to be guarding this areaX
693Lawgof18He guards the mines-
694Dwarf18A short angry guyX
695lollk18He looks scared-
696Skavid3Servant race to the ogres-
697Ogre guard78These ogres protect the cityX
698Nulodion18He's the head of black guard weapon development-
699Dwarf18A short angry guyX
700Al Shabim0The leader of a nomadic Bedabin desert people - sometimes referred to as the 'Tenti's'-
701Bedabin Nomad0A Bedabin nomad - they live in the harshest extremes in the desert-
702Captain Siad48He's in control of the whole mining camp.X
703Bedabin Nomad Guard70A Bedabin nomad guard - he's protecting something importantX
704Ogre citizen58A denizen of Gu'TanothX
705Rock of ages150A huge boulderX
706Ogre58A large dim looking humanoidX
707Skavid3Servant race to the ogres-
708Skavid3Servant race to the ogres-
709Skavid3Servant race to the ogres-
710Draft Mercenary Guard50He's quickly drafted in to deal with trouble makersX
711Mining Cart Driver15He drives the mining cart-
712kolodion12He runs the mage arena-
713kolodion12He runs the mage arenaX
714Gertrude20A busy housewife-
715Shilop0A young boisterous looking lad-
716Rowdy Guard50He looks as if he's spoiling for troubleX
717Shantay Pass Guard32He seems to be guarding the Shantay PassX
718Rowdy Slave16A slave who's looking for trouble.X
719Shantay Pass Guard32He seems to be guarding the Shantay Pass-
720Assistant0He is an assistant to Shantay and helps him to run the pass.-
721Desert Wolf31A vicious Desert wolfX
722Workman9This person is working on the site-
723Examiner2As you examine the examiner you examine that she is indeed an examiner!!-
724Student0A student busily digging!-
725Student20A student busily digging!-
726Guide12This person specialises in panning for gold-
727Student18A student busily digging!-
728Archaeological expert15An expert on archaeology!-
729civillian18He looks aggitated!X
730civillian0She looks aggitated!-
731civillian0She looks aggitated!-
732civillian15He looks aggitated!-
733Murphy15The man in charge of the fishing trawler-
734Murphy15The man in charge of the fishing trawler-
735Sir Radimus Erkle10A huge muscular man in charge of the Legends Guild-
736Legends Guild Guard50This guard is protecting the entrance to the Legends Guild.-
737Escaping Mining Slave16An emancipated slave with cool Desert Clothes.-
738Workman9This person is working in the mine-
739Murphy15The man in charge of the fishing trawler-
740Echned Zekin50An evil spirit of the underworld.-
741Donovan the Handyman9It's the family odd jobs man-
742Pierre the Dog Handler9It's the guy who looks after the family guard dog-
743Hobbes the Butler9It's the family butler-
744Louisa The Cook0It's the family cook-
745Mary The Maid25The family maid-
746Stanford The Gardener8It's the family Gardener-
747Guard28He looks like he's in over his head here-
748Guard Dog46He doesn't seem pleased to see me-
749Guard8***EMPTY PLEASE USE OR REPLACE***-
750Man9A thirsty looking man-
751Anna Sinclair9The first child of the late Lord Sinclair-
752Bob Sinclair9The second child of the late Lord Sinclair-
753Carol Sinclair9The third child of the late Lord Sinclair-
754David Sinclair9The fourth child of the late Lord Sinclair-
755Elizabeth Sinclair9The fifth child of the late Lord Sinclair-
756Frank Sinclair9The sixth child of the late Lord Sinclair-
757kolodion65He's a shape shifterX
758kolodion68He's a shape shifterX
759kolodion46He's a shape shifterX
760kolodion98He's a shape shifterX
761Irvig Senay125The animated spirit of Irvig SenayX
762Ranalph Devere130The animated spirit of Ranalph DevereX
763Poison Salesman7Peter Potter - Poison Purveyor-
764Gujuo60A tall charismatic looking jungle native - he approaches with confidence-
765Jungle Forester15A woodsman who specialises in large and exotic timber-
766Ungadulu75An ancient looking ShamanX
767Ungadulu75An ancient looking Shaman - he looks very strange with glowing red eyes...X
768Death Wing80A supernatural creature of the underworldX
769Nezikchened172An ancient powerful Demon of the Underworld...X
770Dwarf Cannon engineer18He's the head of black guard weapon development-
771Dwarf commander18He guards the mines-
772Viyeldi80The spirit of a dead sorcererX
773Nurmof18He sells pickaxes-
774Fatigue expert10He looks wide awake-
775Karamja Wolf61A hungryX
776Jungle Savage87A savage and fearless Jungle warriorX
777Oomlie Bird32A variety of flightless jungle fowl - it has a sharp beak and a bad temper.X
778Sidney Smith30Sidney Smith - Certification clerk-
779Siegfried Erkle25An eccentric shop keeper - related to the Grand Vizier of the Legends Guild-
780Tea seller9He has delicious tea to buy-
781Wilough0A young son of gertrudes-
782Philop0Gertrudes youngest-
783Kanel0Gertrudes youngest's twin brother-
784chamber guardian15He hasn't seen much sun latley-
785Sir Radimus Erkle10A huge muscular man in charge of the Legends Guild-
786Pit Scorpion35Very vicious little scorpionsX
787Shadow Warrior64A sinsistar shadowy figureX
788Fionella25She runs the legend's general store-
789Battle mage52He kills in the name of guthixX
790Battle mage52He kills in the name of zamarokX
791Battle mage52He kills in the name of SaradominX
792Gundai15He must get lonely out here-
793Lundail15He sells rune stones-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
idobject namedescription
0TreeA pointy tree
1TreeA leafy tree
2WellThe bucket is missing
3TableA mighty fine table
4TreestumpSomeone has chopped this tree down!
5Ladderit's a ladder leading upwards
6Ladderit's a ladder leading downwards
7ChairA sturdy looking chair
8logsA pile of logs
9LongtableIt has nice candles
10ThroneIt looks fancy and expensive
11RangeA hot well stoked range
12GravestoneR I P
13GravestoneIts covered in moss
14BedOoh nice blankets
15BedIts a bed - wow
16barMmm beer
17ChestPerhaps I should search it
18ChestI wonder what is inside...
19AltarIts an Altar
20PostWhat am I examining posts for
21SupportA wooden pole
22barrelIts empty
23BenchIt doesn't look very comfy
24PortraitA painting of our beloved king
25candlesCandles on a fancy candlestick
26fountainThe water looks fairly clean
27landscapeAn oil painting
28MillstonesYou can use these to make flour
29CounterIt's the shop counter
30StallA market stall
31TargetComing soon archery practice
32PalmTreeA nice palm tree
33PalmTreeA shady palm tree
34FernA leafy plant
35CactusIt looks very spikey
36BullrushesI wonder why it's called a bullrush
37FlowerOoh thats pretty
38MushroomI think it's a poisonous one
39CoffinThis coffin is closed
40CoffinThis coffin is open
41stairsThese lead upstairs
42stairsThese lead downstairs
43stairsThese lead upstairs
44stairsThese lead downstairs
45railingnice safety measure
46pillarAn ornate pillar
47BookcaseA large collection of books
48SinkIts fairly dirty
49DummyI can practice my fighting here
50anvilheavy metal
51TorchIt would be very dark without this
52hopperYou put grain in here
53chuteFlour comes out here
54cartA farm cart
55sacksYep they're sacks
56cupboardThe cupboard is shut
57GateThe gate is closed
58gateThe gate is open
59gateThe gate is open
60gateThe gate is closed
61signpostTo Varrock
62signpostTo the tower of wizards
63doorsThe doors are open
64doorsThe doors are shut
65signpostTo player owned houses
66signpostTo Lumbridge Castle
67bookcaseIt's a bookcase
68hengethese look impressive
69DolmenA sort of ancient altar thingy
70TreeThis tree doesn't look too healthy
71cupboardPerhaps I should search it
72Wheatnice ripe looking wheat
73signThe blue moon inn
74sailsThe windmill's sails
75signestate agent
76signThe Jolly boar inn
77DrainThis drainpipe runs from the kitchen to the sewers
78manholeA manhole cover
79manholeHow dangerous - this manhole has been left open
80pipea dirty sewer pipe
81ChestPerhaps I should search it
82ChestI wonder what is inside...
83barrelIt seems to be full of newt's eyes
84cupboardThe cupboard is shut
85cupboardPerhaps I should search it
86fountainI think I see something in the fountain
87signpostTo Draynor Manor
88TreeThis tree doesn't look too healthy
89signGeneral Store
90signLowe's Archery store
91signThe Clothes Shop
92signVarrock Swords
93gateYou can pass through this on the members server
94gateYou can pass through this on the members server
95signBob's axes
96signThe staff shop
97fireA strongly burning fire
98RockA rocky outcrop
99RockA rocky outcrop
100RockA rocky outcrop
101RockA rocky outcrop
102RockA rocky outcrop
103RockA rocky outcrop
104RockA rocky outcrop
105RockA rocky outcrop
106RockA rocky outcrop
107RockA rocky outcrop
108RockA rocky outcrop
109RockA rocky outcrop
110RockA rocky outcrop
111RockA rocky outcrop
112RockA rocky outcrop
113RockA rocky outcrop
114RockA rocky outcrop
115RockA rocky outcrop
116webA spider's web
117webA spider's web
118furnaceA red hot furnace
119Cook's RangeA hot well stoked range
120MachineI wonder what it's supposed to do
121Spinning wheelI can spin wool on this
122LeverThe lever is up
123LeverThe lever is down
124LeverAIt's a lever
125LeverBIt's a lever
126LeverCIt's a lever
127LeverDIt's a lever
128LeverEIt's a lever
129LeverFIt's a lever
130Ladderit's a ladder leading upwards
131signpostTo the forge
132signpostTo the Barbarian's Village
133signpostTo Al Kharid
134Compost HeapA smelly pile of compost
135CoffinThis coffin is closed
136CoffinThis coffin is open
137gateYou can pass through this on the members server
138gateYou can pass through this on the members server
139signThe Bank of runescape
140cupboardThe cupboard is shut
141cupboardPerhaps I should search it
142doorsThe doors are shut
143torchA scary torch
144AltarAn altar to the evil God Zamorak
145ShieldA display shield
146Grillsome sort of ventilation
147CauldronA very large pot
148Grillsome sort of ventilation
149Mine CartIt's empty
150BuffersStop the carts falling off the end
151TrackTrain track
152TrackTrain track
153TrackTrain track
154HoleI can see a witches cauldron directly below it
155shipA ship to Karamja
156shipA ship to Karamja
157shipA ship to Karamja
158Emergency escape ladderit's a ladder leading downwards
159signWydin's grocery
160signThe Rusty Anchor
161shipA ship to Port Sarim
162shipA ship to Port Sarim
163shipA ship to Port Sarim
164RocksA rocky outcrop
165RocksA rocky outcrop
166RocksA rocky outcrop
167RocksA rocky outcrop
168RocksA rocky outcrop
169RocksA rocky outcrop
170RocksA rocky outcrop
171RocksA rocky outcrop
172RocksA rocky outcrop
173hopperYou put grain in here
174cupboardThe cupboard is shut
175cupboardPerhaps I should search it
176RocksA rocky outcrop
177Doric's anvilProperty of Doric the dwarf
178pottery ovenI can fire clay pots in this
179potter's wheelI can make clay pots using this
180gateA gate from Lumbridge to Al Kharid
181gateThis gate is open
182crateA crate used for storing bananas
183Banana treeA tree with nice ripe bananas growing on it
184Banana treeThere are no bananas left on the tree
185crateA crate used for storing bananas
186ChestA battered old chest
187ChestI wonder what is inside...
188FlowerOoh thats pretty
189signFishing Supplies
190signJewellers
191PotatoA potato plant
192fishI can see fish swimming in the water
193fishI can see fish swimming in the water
194fishI can see fish swimming in the water
195RockA rocky outcrop
196RockA rocky outcrop
197RocksA rocky outcrop
198Ladderit's a ladder leading upwards
199Ladderit's a ladder leading downwards
200Monks AltarIts an Altar
201Ladderit's a ladder leading downwards
202CoffinThis coffin is closed
203CoffinThis coffin is open
204Smashed tableThis table has seen better days
205FungusA creepy looking fungus
206Smashed chairThis chair is broken
207Broken pillarThe remains of a pillar
208Fallen treeA fallen tree
209Danger SignDanger!
210RockA rocky outcrop
211RockA rocky outcrop
212RocksA rocky outcrop
213GravestoneA big impressive gravestone
214boneEep!
215boneThis would feed a dog for a month
216carcassI think it's dead
217animalskullI wouldn't like to meet a live one
218VineA creepy creeper
219VineA creepy creeper
220VineA creepy creeper
221ChestPerhaps I should search it
222ChestI wonder what is inside...
223Ladderit's a ladder leading downwards
224shipThe Lumbridge Lady
225shipThe Lumbridge Lady
226holeThis ship isn't much use with that there
227Ladderit's a ladder leading upwards
228ChestPerhaps I should search it
229ChestI wonder what is inside...
230ChestPerhaps I should search it
231ChestI wonder what is inside...
232holeThis ship isn't much use with that there
233shipThe Lumbridge Lady
234shipThe Lumbridge Lady
235Altar of GuthixA sort of ancient altar thingy
236The Cauldron of ThunderA very large pot
237TreeA leafy tree
238shipA ship to Entrana
239shipA ship to Entrana
240shipA ship to Entrana
241shipA ship to Port Sarim
242shipA ship to Port Sarim
243shipA ship to Port Sarim
244Ladderit's a ladder leading downwards
245Dramen TreeThis tree doesn't look too healthy
246hopperYou put grain in here
247ChestPerhaps I should search it
248ChestI wonder what is inside...
249Ladderit's a ladder leading upwards
250sign2-handed swords sold here
251signye olde herbalist
252gateYou can pass through this on the members server
253gateYou can pass through this on the members server
254gateYou can pass through this on the members server
255Door matIf I ever get my boots muddy I know where to come
256gateThe gate is closed
257CauldronA very large pot
258cupboardThe cupboard is shut
259cupboardPerhaps I should search it
260gateThe bank vault gate
261fishI can see fish swimming in the water
262signHarry's fishing shack
263cupboardThe cupboard is shut
264cupboardPerhaps I should search it
265ChestPerhaps I should search it
266ChestI wonder what is inside...
267signThe shrimp and parrot
268signpostPalm Street
269RockslideA pile of rocks blocks your path
270Ladderit's a ladder leading upwards
271fishI can see fish swimming in the lava!
272barrelIts got ale in it
273tableIt's a sturdy table
274FireplaceIt would be very cold without this
275EggThats one big egg!
276EggsThey'd make an impressive omlette
277StalagmitesHmm pointy
278StoolA simple three legged stool
279BenchIt doesn't look to comfortable
280tableA round table ideal for knights
281tableA handy little table
282fountain of herosUse a dragonstone gem here to increase it's abilties
283bushA leafy bush
284hedgeA carefully trimmed hedge
285flowerA nice colourful flower
286plantHmm leafy
287Giant crystalHow unusual a crystal with a wizard trapped in it
288signThe dead man's chest
289signThe rising sun
290crateA large wooden storage box
291crateA large wooden storage box
292shipA merchant ship
293shipA merchant ship
294beehiveIt's guarded by angry looking bees
295Ladderit's a ladder leading upwards
296AltarAn altar to the evil God Zamorak
297signHickton's Archery store
298signpostTo Camelot
299ArchwayA decorative marble arch
300Obelisk of waterIt doesn't look very wet
301Obelisk of fireIt doesn't look very hot
302sand pitI can use a bucket to get sand from here
303Obelisk of airA tall stone pointy thing
304Obelisk of earthA tall stone pointy thing
305gateYou can pass through this on the members server
306Oak TreeA grand old oak tree
307Willow TreeA weeping willow
308Maple TreeIt's got nice shaped leaves
309Yew TreeA tough looking yew tree
310TreeA magical tree
311gateA gate guarded by a fierce barbarian
312signThe forester's arms
313flaxA flax plant
314Large treestumpSomeone has chopped this tree down!
315RocksA rocky outcrop
316LeverIt's a lever
317LeverIt's a lever
318LeverIt's a lever
319gateYou can pass through this on the members server
320shipA ship bound for Ardougne
321shipA ship bound for Ardougne
322Bakers StallA market stall
323Silk StallA market stall
324Fur StallA market stall
325Silver StallA market stall
326Spices StallA market stall
327gems StallA market stall
328crateA large heavy sealed crate
329crateA large heavy sealed crate
330signRPDT depot
331stairsThese lead upstairs
332ChestPerhaps I should search it
333ChestI wonder what is inside...
334ChestI wonder what is inside...
335ChestI wonder what is inside...
336ChestI wonder what is inside...
337ChestI wonder what is inside...
338ChestI wonder what is inside...
339Chestsomeone is stealing something from it
340ChestI wonder what is inside...
341empty stallA market stall
342stairsThese lead upstairs
343hopperYou put grain in here
344signpostArdougne city zoo
345signThe flying horse
346gateYou can pass through this on the members server
347gateYou can pass through this on the members server
348LeverThe lever is up
349LeverThe lever is up
350pipea dirty sewer pipe
351fishI can see fish swimming in the water
352fishI can see fish swimming in the water
353fishI can see fish swimming in the water
354fishI can see fish swimming in the water
355VineA creepy creeper
356gateThe main entrance to McGrubor's wood
357gateThe gate is open
358gateThe gate is closed
359stairsThese lead downstairs
360broken cartA farm cart
361LeverIt's a lever
362clock pole blueA pole - a pole to put cog's on
363clock pole redA pole - a pole to put cog's on
364clock pole purpleA pole - a pole to put cog's on
365clock pole blackA pole - a pole to put cog's on
366wallclockfaceIt's a large clock face
367Lever BracketTheres something missing here
368LeverIt's a lever
369stairsThese lead upstairs
370stairsThese lead downstairs
371gateThe gate is closed
372gateThe gate is open
373LeverThe lever is up
374LeverThe lever is up
375FoodtroughIt's for feeding the rat's
376fishI can see fish swimming in the water
377spearwallIt's a defensive battlement
378hornedskullA horned dragon skull
379ChestI wonder what is inside...
380ChestI wonder what is inside...
381guardscupboardThe cupboard is shut
382guardscupboardPerhaps I should search it
383Coal truckI can use this to transport coal
384shipA ship to Port Birmhaven
385shipA ship to Port Birmhaven
386shipA ship to Port Birmhaven
387TreeIt's a tree house
388BallistaIt's a war machine
389largespear
390spirit treeA grand old spirit tree
391young spirit TreeAncestor of the spirit tree
392gateThe gate is closed
393wallA damaged wall
394treeAn exotic looking tree
395treeAn exotic looking tree
396FernAn exotic leafy plant
397FernAn exotic leafy plant
398FernAn exotic leafy plant
399FernAn exotic leafy plant
400fly trapA small carnivourous plant
401FernAn exotic leafy plant
402FernAn exotic spikey plant
403plantWhat an unusual plant
404plantAn odd looking plant
405plantsome nice jungle foliage
406stone headIt looks like it's been here some time
407dead TreeA rotting tree
408sacksYep they're sacks
409khazard open ChestPerhaps I should search it
410khazard shut ChestI wonder what is inside...
411doorframeIt's a stone doorframe
412Sewer valveIt changes the water flow of the sewer's
413Sewer valve 2It changes the water flow of the sewer's
414Sewer valve 3It changes the water flow of the sewer's
415Sewer valve 4It changes the water flow of the sewer's
416Sewer valve 5It changes the water flow of the sewer's
417Cave entranceI wonder what is inside...
418Log bridgeA tree gnome construction
419Log bridgeA tree gnome construction
420tree platformA tree gnome construction
421tree platformA tree gnome construction
422gateThe gate is open
423tree platformA tree gnome construction
424tree platformA tree gnome construction
425Log bridgeA tree gnome construction
426Log bridgeA tree gnome construction
427tree platformA tree gnome construction
428tree platformA tree gnome construction
429Tribal brewA very large pot
430Pineapple treeA tree with nice ripe pineapples growing on it
431Pineapple treeThere are no pineapples left on the tree
432log raftA mighty fine raft
433log raftA mighty fine raft
434Tomb of hazeelA clay shrine to lord hazeel
435rangeA pot of soup slowly cooking
436BookcaseA large collection of books
437Carnillean ChestPerhaps I should search it
438Carnillean ChestI wonder what is inside...
439crateA crate used for storing food
440Butlers cupboardThe cupboard is shut
441Butlers cupboardThe cupboard is open
442gateThe gate is open
443gateThe gate is closed
444Cattle furnaceA red hot furnace
445Ardounge wallA huge wall seperating east and west ardounge
446Ardounge wall cornerA huge wall seperating east and west ardounge
447Dug up soilA freshly dug pile of mud
448Pile of mudMud caved in from above
449large Sewer pipea dirty sewer pipe
450Ardounge wall gatewayA huge set of heavy wooden doors
451cupboardThe cupboard is shut
452cupboardThe cupboard is open
453Fishing craneFor hauling in large catches of fish
454RowboatA reasonably sea worthy two man boat
455Damaged RowboatA not so sea worthy two man boat
456barrelI wonder what's inside
457gateThe gate is closed
458Ladderit's a ladder leading upwards
459Fishing craneFor hauling in large catches of fish
460Fishing craneFor hauling in large catches of fish
461Waterfallit's a waterfall
462leaflessTreeA pointy tree
463leaflessTreeA pointy tree
464log raftA mighty fine raft
465doorsThe doors are shut
466WellAn oddly placed well
467Tomb of glarialA stone tomb surrounded by flowers
468Waterfallit's a fast flowing waterfall
469Waterfallit's a fast flowing waterfall
470BookcaseA large collection of books
471doorsThe doors are shut
472doorsThe doors are shut
473Stone standOn top is an indent the size of a rune stone
474Stone standOn top is an indent the size of a rune stone
475Stone standOn top is an indent the size of a rune stone
476Stone standOn top is an indent the size of a rune stone
477Stone standOn top is an indent the size of a rune stone
478Stone standOn top is an indent the size of a rune stone
479Glarial's GravestoneThere is an indent the size of a pebble in the stone's center
480gateThe gate is closed
481crateIt's a crate
482leaflessTreeA pointy tree
483Statue of glarialA statue of queen glarial - something's missing
484Chalice of eternityA magically elevated chalice full of treasure
485Chalice of eternityA magically elevated chalice full of treasure
486doorsThe doors are shut
487LeverThe lever is up
488LeverThe lever is up
489log raft remainsoops!
490TreeA pointy tree
491 RangeA hot well stoked range
492crateIt's an old crate
493fishI can see fish swimming in the water
494Watch towerThey're always watching
495signpostTourist infomation
496RocksA rocky outcrop
497doorsThe doors are open
498Rope ladderA hand made ladder
499cupboardThe cupboard is shut
500cupboardPerhaps I should search it
501Rope ladderA hand made ladder
502Cooking potthe mourners are busy enjoying this stew
503GallowBest not hang about!
504gateThe gate is closed
505crateA crate used for storing confiscated goods
506cupboardThe cupboard is shut
507cupboardPerhaps I should search it
508gateYou can pass through this on the members server
509cupboardThe cupboard is shut
510cupboardPerhaps I should search it
511signTailors fancy dress
512grand treethe grand tree
513gateThe gate is closed
514gateThe gate is open
515RocksA rocky outcrop
516RocksA rocky outcrop
517RocksA rocky outcrop
518RocksA rocky outcrop
519RocksA rocky outcrop
520RocksA rocky outcrop
521RocksA rocky outcrop
522RocksA rocky outcrop
523RocksA rocky outcrop
524Log bridgeA tree gnome construction
525Watch towerA tree gnome construction
526Log bridgeA tree gnome construction
527climbing rocksI wonder if I can climb up these
528LedgeIt looks rather thin
529LedgeIt looks rather thin
530logIt looks slippery
531logIt looks slippery
532RocksA rocky outcrop
533RocksA rocky outcrop
534RocksA rocky outcrop
535RocksA rocky outcrop
536RocksA rocky outcrop
537RocksA rocky outcrop
538RocksA rocky outcrop
539RocksA rocky outcrop
540RocksA rocky outcrop
541RocksA rocky outcrop
542RocksA rocky outcrop
543RocksA rocky outcrop
544RocksA rocky outcrop
545RocksA rocky outcrop
546RocksA rocky outcrop
547RocksA rocky outcrop
548RocksA rocky outcrop
549RocksA rocky outcrop
550RocksA rocky outcrop
551RocksA rocky outcrop
552RocksA rocky outcrop
553PalmTreeA shady palm tree
554Scorched EarthAn area of burnt soil
555RocksA moss covered rock
556signThe dancing donkey inn
557fishI can see fish swimming in the water
558Rocky WalkwayA precarious rocky walkway
559Rocky WalkwayA precarious rocky walkway
560Rocky WalkwayA precarious rocky walkway
561Rocky WalkwayA precarious rocky walkway
562fight DummyI can practice my fighting here
563gateThe gate is closed
564Jungle VineA deep jungle Vine
565statuehand carved
566signYe Olde Dragon Inn
567grand treethe grand tree
568grand treethe grand tree
569grand treethe grand tree
570grand treethe grand tree
571grand treethe grand tree
572Hillside EntranceLarge doors that seem to lead into the hillside
573treeA large exotic looking tree
574Log bridgeA tree gnome construction
575Tree platformA tree gnome construction
576Tree platformA tree gnome construction
577Metalic Dungeon GateIt seems to be closed
578Log bridgeA tree gnome construction
579Log bridgeA tree gnome construction
580Watch towerA tree gnome construction
581Watch towerA tree gnome construction
582Shallow waterA small opening in the ground with some spots of water
583DoorsPerhaps you should give them a push
584grand treethe grand tree
585Tree Ladderit's a ladder leading upwards
586Tree Ladderit's a ladder leading downwards
587blurberrys cocktail barthe gnome social hot spot
588Gem RocksA rocky outcrop with a vein of semi precious stones
589Giannes placeEat green eat gnome cruisine
590ropeswingA good place to train agility
591netA good place to train agility
592FrameA good place to train agility
593TreeIt has a branch ideal for tying ropes to
594TreeI wonder who put that rope there
595Treethey look fun to swing on
596cartA farm cart
597fenceit doesn't look too strong
598beamA plank of wood
599Signread me
600SignBlurberry's cocktail bar
601SignGiannes tree gnome cuisine
602SignHeckel funch's grocery store
603SignHudo glenfad's grocery store
604SignRometti's fashion outlet
605SignTree gnome bank and rometti's fashion outlet
606SignTree gnome local swamp
607SignAgility training course
608SignTo the grand tree
609RootTo the grand tree
610RootTo the grand tree
611Metal GateThe gate is closed
612Metal GateThe gate is open
613A farm cartIt is blocking the entrance to the village
614LedgeIt looks rather thin
615LedgeIt looks rather thin
616Ladderit's a ladder leading upwards
617cagei don't like the look of that
618glideri wonder if it flys
619cupboardThe cupboard is shut
620cupboardPerhaps I should search it
621stairsThese lead upstairs
622glideri wonder if it flys
623gateThe gate is open
624gateThe gate is closed
625chaos altarAn altar to the evil God Zamorak
626Gnome stronghold gateThe gate is closed
627ropeswingA good place to train agility
628ropeswingA good place to train agility
629stairsThese lead upstairs
630stairsThese lead downstairs
631ChestPerhaps I should search it
632ChestI wonder what is inside...
633Pile of rubbleWhat a mess
634Stone standOn top our four indents from left to right
635Watch towerA tree gnome construction
636Pile of rubbleWhat a mess
637RootTo the grand tree
638RootTo the grand tree
639RootTo the grand tree
640SignHome to the Head tree guardian
641HammockThey've got to sleep somewhere
642GoalYou're supposed to throw the ball here
643stone tileIt looks as if it might move
644ChestYou get a sense of dread from the chest
645ChestYou get a sense of dread from the chest
646Watch towerA tree gnome construction
647netA good place to train agility
648Watch towerA tree gnome construction
649Watch towerA tree gnome construction
650ropeswingA good place to train agility
651Bumpy DirtSome disturbed earth
652pipea dirty sewer pipe
653netA good place to train agility
654pipea dirty sewer pipe
655logIt looks slippery
656pipea dirty sewer pipe
657pipea dirty sewer pipe
658HandholdsI wonder if I can climb up these
659Ladderit's a ladder leading upwards
660gateThe gate is closed
661stronghold spirit TreeAncestor of the spirit tree
662TreeIt has a branch ideal for tying ropes to
663TreeI wonder who put that rope there
664TreeI wonder who put that rope there
665Spiked pitI don't want to go down there
666Spiked pitI don't want to go down there
667CaveI wonder what is inside...
668stone pebbleLooks like a stone
669Pile of rubbleRocks that have caved in
670Pile of rubbleRocks that have caved in
671pipeI might be able to fit through this
672pipe2
673StoneLooks like a stone
674StoneLooks like a stone
675ropeswingA good place to train agility
676logIt looks slippery
677netA good place to train agility
678LedgeIt looks rather thin
679HandholdsI wonder if I can climb up these
680logIt looks slippery
681logIt looks slippery
682Rotten GallowsA human corpse hangs from the noose
683Pile of rubbleRocks that have caved in
684ropeswingI wonder what's over here
685ropeswingI wonder what's over here
686ocksA moss covered rock
687TreeThis tree doesn't look too healthy
688Well stacked rocksRocks that have been stacked at regular intervals
689Tomb DolmenAn ancient construct for displaying the bones of the deceased
690HandholdsI wonder if I can climb up these
691Bridge BlockadeA crudely constructed fence to stop you going further
692Log BridgeA slippery log that is a make-do bridge
693HandholdsI wonder if I can climb up these
694Treethey look fun to swing on
695Treethey look fun to swing on
696Wet rocksA rocky outcrop
697Smashed tableThis table has seen better days
698Crude RaftA crudely constructed raft
699Daconia rockPiles of daconia rock
700statueA statue to mark Taie Bwo Wannai sacred grounds
701Stepping stonesA rocky outcrop
702gateThe gate is closed
703gateEnter to balance into an agility area
704gateEnter to balance into an agility area
705pipeIt looks a tight squeeze
706ropeswingA good place to train agility
707StoneLooks like a stone
708LedgeIt doesn't look stable
709VineA creepy creeper
710RocksA rocky outcrop
711Wooden GateThe gate is open
712Wooden GateThe gate is closed
713Stone bridgeAn ancient stone construction
714Stone bridgeAn ancient stone construction
715Stone bridgeAn ancient stone construction
716Stone bridgeAn ancient stone construction
717Stone platformAn ancient stone construction
718fenceit doesn't look too strong
719RocksA rocky outcrop
720Stone bridgeThe bridge has partly collapsed
721Stone bridgeThe bridge has partly collapsed
722Gate of IbanIt doesn't look very inviting
723Wooden DoorIt doesn't look very inviting
724Tomb DolmenAn ancient construct for displaying the bones of the deceased
725Cave entranceIt doesn't look very inviting
726Old bridgeThat's been there a while
727Old bridgeThat's been there a while
728Crumbled rockclimb up to above ground
729stalagmiteFormed over thousands of years
730stalagmiteFormed over thousands of years
731RocksA small rocky outcrop
732LedgeI might be able to climb that
733LeverSeems to be some sort of winch
734stalactiteFormed over thousands of years
735stalactiteFormed over thousands of years
736stalactiteFormed over thousands of years
737RocksA small rocky outcrop
738RocksA small rocky outcrop
739RocksA small rocky outcrop
740RocksA small rocky outcrop
741RocksA small rocky outcrop
742RocksA small rocky outcrop
743RocksA small rocky outcrop
744RocksA small rocky outcrop
745RocksA small rocky outcrop
746RocksA small rocky outcrop
747RocksA small rocky outcrop
748RocksA small rocky outcrop
749RocksA small rocky outcrop
750LedgeI might be able to climb that
751LedgeI might be able to climb that
752LedgeI might be able to climb that
753LedgeI might be able to climb that
754SwampThat smells horrid
755SwampThat smells horrid
756RocksA small rocky outcrop
757RocksA small rocky outcrop
758RocksA small rocky outcrop
759RocksA small rocky outcrop
760RocksA small rocky outcrop
761RocksA small rocky outcrop
762RocksA small rocky outcrop
763RocksA small rocky outcrop
764RocksA small rocky outcrop
765RocksA small rocky outcrop
766RocksA small rocky outcrop
767Pile of mudMud caved in from above
768Travel CartA sturdy cart for travelling in
769Travel CartA sturdy cart for travelling in
770RocksA small rocky outcrop
771stalactiteFormed over thousands of years
772RocksYou should be able to move these
773RocksYou should be able to move these
774RocksYou should be able to move these
775signThe Paramaya Hostel
776LadderA ladder that leads to the dormitory - a ticket is needed
777GrillThey looks suspicious
778Spiked pitThey looks suspicious
779signpostTo the Furnace
780ShipA sea faring ship called 'Lady Of The Waves'
781ShipA sea faring ship called 'Lady Of The Waves'
782GrillThey looks suspicious
783sacksYep they're sacks
784Zamorakian TempleScary!
785GrillThey looks suspicious
786GrillThey looks suspicious
787GrillThey looks suspicious
788GrillThey looks suspicious
789GrillThey looks suspicious
790GrillThey looks suspicious
791GrillThey looks suspicious
792RocksA small rocky outcrop
793RocksA small rocky outcrop
794Tomb DoorsOrnately carved wooden doors depicting skeletal warriors
795SwampThat smells horrid
796RocksYou should be able to move these
797RocksYou should be able to move these
798stalactiteFormed over thousands of years
799stalactiteFormed over thousands of years
800Spiked pitThey looks suspicious
801LeverSeems to be some sort of winch
802CageSeems to be mechanical
803CageSeems to be mechanical
804RocksMore rocks!
805Spear trapOuch!
806RocksMore rocks!
807RocksMore rocks!
808RocksMore rocks!
809RocksMore rocks!
810RocksMore rocks!
811RocksMore rocks!
812LedgeI might be able to climb that
813FurnaceCharred bones are slowly burning inside
814WellThe remains of a warrior slump over the strange construction
815PassageA strange metal grill covers the passage
816PassageThe passage way has swung down to a vertical position
817PassageThe passage way has swung down to a vertical position
818stalagmiteFormed over thousands of years
819RocksYou should be able to move these
820RocksYou should be able to move these
821RocksYou should be able to move these
822RocksYou should be able to move these
823RocksYou should be able to move these
824RocksYou should be able to move these
825PassageLooks suspicous!
826snap trapaaaarghh
827Wooden planksYou can walk across these
828PassageLooks suspicous!
829PassageLooks suspicous!
830Flames of zamorakCareful
831PlatformAn ancient construction
832RockScripture has been carved into the rock
833RockScripture has been carved into the rock
834RockScripture has been carved into the rock
835RockScripture has been carved into the rock
836wall grillIt seems to filter the rotten air through the caverns
837LedgeI might be able to make to the other side
838wall grillIt seems to filter the rotten air through the caverns
839Dug up soilA freshly dug pile of mud
840Dug up soilA freshly dug pile of mud
841Pile of mudMud caved in from above
842stalagmiteFormed over thousands of years
843Pile of mudMud and rocks piled up
844Pile of mudMud and rocks piled up
845Pile of mudMud and rocks piled up
846Pile of mudMud and rocks piled up
847Pile of mudMud and rocks piled up
848Spiked pitI don't want to go down there
849RocksA small rocky outcrop
850RocksA small rocky outcrop
851RocksA small rocky outcrop
852RocksA small rocky outcrop
853RocksA small rocky outcrop
854RocksA small rocky outcrop
855RocksA small rocky outcrop
856RocksA small rocky outcrop
857RocksA small rocky outcrop
858RocksA small rocky outcrop
859RocksA small rocky outcrop
860RocksA small rocky outcrop
861LedgeI might be able to climb that
862LedgeI might be able to climb that
863LedgeI might be able to climb that
864LedgeI might be able to climb that
865LedgeI might be able to climb that
866LedgeI might be able to climb that
867BoulderCould be dangerous!
868crateSomeone or something has been here before us
869DoorSpooky!
870PlatformAn ancient construction
871Cage remainsPoor unicorn!
872LedgeI might be able to climb that
873PassageLooks suspicous!
874PassageLooks suspicous!
875Gate of ZamorakIt doesn't look very inviting
876RocksA small rocky outcrop
877Bridge supportAn ancient construction
878Tomb of IbanA clay shrine to lord iban
879Claws of Ibanclaws of iban
880barrelIts stinks of alcohol
881RockScripture has been carved into the rock
882RocksMore rocks
883RocksMore rocks
884SwampThat smells horrid
885ChestPerhaps I should search it
886Stone bridgeAn ancient stone construction
887cageThat's no way to live
888cageThat's no way to live
889Stone stepsThey lead into the darkness
890Pile of mudMud and rocks piled up
891Stone bridgeThe bridge has partly collapsed
892Stone bridgeThe bridge has partly collapsed
893Stone bridgeThe bridge has partly collapsed
894Stone bridgeThe bridge has partly collapsed
895Stone bridgeThe bridge has partly collapsed
896Stone bridgeThe bridge has partly collapsed
897Stone bridgeThe bridge has partly collapsed
898Stone bridgeThe bridge has partly collapsed
899Stone bridgeThe bridge has partly collapsed
900Stone bridgeThe bridge has partly collapsed
901Stone bridgeThe bridge has partly collapsed
902Stone bridgeThe bridge has partly collapsed
903Stone bridgeThe bridge has partly collapsed
904Stone bridgeThe bridge has partly collapsed
905Stone bridgeThe bridge has partly collapsed
906Stone bridgeThe bridge has partly collapsed
907Stone bridgeThe bridge has partly collapsed
908Stone bridgeThe bridge has partly collapsed
909Stone bridgeThe bridge has partly collapsed
910Stone bridgeThe bridge has partly collapsed
911ChestPerhaps I should search it
912ChestI wonder what is inside...
913Pit of the DamnedThe son of zamoracks alter...
914Open DoorSpooky!
915signpostObservatory reception
916Stone GateA mystical looking object
917ChestPerhaps there is something inside
918ZodiacA map of the twelve signs of the zodiac
919ChestPerhaps I should search it
920Ladderit's a ladder leading upwards
921Stone stepsThey lead into the darkness
922RockScripture has been carved into the rock
923RockScripture has been carved into the rock
924RockScripture has been carved into the rock
925TelescopeA device for viewing the heavens
926GateThe entrance to the dungeon jail
927sacksThese sacks feels lumpy!
928Ladderthe ladder goes down into a dark area
929ChestAll these chests look the same!
930ChestAll these chests look the same!
931BookcaseA very roughly constructed bookcase.
932Iron GateA well wrought iron gate - it's locked.
933Ladderthe ladder down to the cavern
934ChestPerhaps there is something inside
935ChestAll these chests look the same!
936ChestPerhaps there is something inside
937ChestAll these chests look the same!
938RockslideA pile of rocks blocks your path
939AltarAn altar to the evil God Zamorak
940columnFormed over thousands of years
941Grave of ScorpiusHere lies Scorpius: dread follower of zamorak
942Bank ChestAllows you to access your bank.
943dwarf multicannonfires metal balls
944Disturbed sandFootprints in the sand show signs of a struggle
945Disturbed sandFootprints in the sand show signs of a struggle
946dwarf multicannon basebang
947dwarf multicannon standbang
948dwarf multicannon barrelsbang
949CaveI wonder what's inside!
950CaveI wonder what's inside!
951fenceThese bridges seem hastily put up
952signposta signpost
953RocksI wonder if I can climb up these
954RocksI wonder if I can climb up these
955Cave entranceA noxious smell emanates from the cave...
956ChestPerhaps I should search it
957ChestI wouldn't like to think where the owner is now
958Wooden DoorsLarge oak doors constantly watched by guards
959Pedestalsomething fits on here
960bushA leafy bush
961bushA leafy bush
962StandardA standard with a human skull on it
963Mining CaveA gaping hole that leads to another section of the mine
964Mining CaveA gaping hole that leads to another section of the mine
965RocksA small rocky outcrop
966LiftTo brings mined rocks to the surface
967Mining BarrelFor loading up mined stone from below ground
968HoleI wonder where this leads...
969HoleI wonder where this leads...
970CaveI wonder what's inside!
971CaveI wonder what's inside!
972CaveI wonder what's inside!
973CounterAn ogre is selling items here
974TrackTrain track
975CaveI wonder what's inside!
976Mine CartA heavily constructed and often used mining cart.
977Lift PlatformA wooden lift that is operated from the surface.
978ChestI wonder what is inside...
979ChestI wonder what is inside...
980Watch towerConstructed by the dwarven black guard
981Ladderit's a ladder leading upwards
982Cave entranceI wonder what is inside...
983Pile of mudMud caved in from above
984CaveI wonder what's inside!
985Ladderit's a ladder leading downwards
986crateA crate
987crateA crate
988GateThis gate barrs your way into gu'tanoth
989GateThis gate barrs your way into gu'tanoth
990bushA leafy bush
991bushA leafy bush
992bushA leafy bush
993bushA leafy bush
994multicannonfires metal balls
995RocksSome rocks are close to the egde
996RocksSome rocks are close to the edge
997Ladderit's a ladder leading downwards
998Cave entranceI wonder what is inside...
999CounterAn ogre is selling cakes here
1000ChestPerhaps I should search it
1001ChestI wonder what is inside...
1002ChestPerhaps I should search it
1003ChestI wonder what is inside...
1004BookcaseA large collection of books
1005Captains ChestI wonder what is inside...
1006Experimental AnvilAn experimental anvil - for developing new techniques in forging
1007RocksA small pile of stones
1008RocksA small rocky outcrop
1009ColumnCreated by ancient mages
1010WallCreated by ancient mages
1011WallCreated by ancient mages
1012WallCreated by ancient mages
1013WallCreated by ancient mages
1014LeverThe lever is up
1015LeverThe lever is down
1016WallCreated by ancient mages
1017Ladderit's a ladder leading downwards
1018WallCreated by ancient mages
1019GateThe gate is closed
1020GateThe gate is closed
1021Ladderit's a ladder leading upwards
1022shockcosmic energy
1023DeskA very strong looking table with some locked drawers.
1024CaveI wonder what's inside!
1025Mining CartA sturdy well built mining cart with barrels full of rock on the back.
1026Rock of DalgrothA mysterious boulder of the ogres
1027entranceCreated by ancient mages
1028Dried CactusIt looks very spikey
1029climbing rocksI wonder if I can climb up these
1030RocksStrange rocks - who knows why they're wanted?
1031lightningblimey!
1032Crude DeskA very roughly constructed desk
1033Heavy Metal GateThis is an immense and very heavy looking gate made out of thick wrought metal
1034CounterAn ogre is selling cakes here
1035Crude bedA flea infested sleeping experience
1036flameslooks hot!
1037Carved RockAn ornately carved rock with a pointed recepticle
1038USEFREE SLOT PLEASE USE
1039crateA crate used for storing materials
1040crateA crate used for storing materials
1041barrelIts shut
1042BrickA stone brick
1043BrickA stone brick
1044BrickA stone brick
1045BrickA stone brick
1046BrickA stone brick
1047BrickA stone brick
1048Barrierthis section is roped off
1049buried skeletonI hope I don't meet any of these
1050BrickA stone brick
1051BrickA stone brick
1052Specimen trayA pile of sifted earth
1053winchThis winches earth from the dig hole
1054crateA crate
1055crateA crate
1056UrnA large ornamental urn
1057buried skeletonI'm glad this isn't around now
1058panning pointa shallow where I can pan for gold
1059RocksA small rocky outcrop
1060signposta signpost
1061signposta signpost
1062signposta signpost
1063signposta signpost
1064signpostDigsite educational centre
1065soilsoil
1066soilsoil
1067soilsoil
1068GateThe gate has closed
1069shipThe ship is sinking
1070barrelThe ship is sinking
1071LeakThe ship is sinking
1072bushA leafy bush
1073bushA leafy bush
1074cupboardThe cupboard is shut
1075sacksYep they're sacks
1076sacksYep they're sacks
1077LeakThe ship is sinking
1078cupboardThe cupboard is shut
1079Wrought Mithril GatesMagnificent wrought mithril gates giving access to the Legends Guild
1080Legends Hall DoorsSolid Oak doors leading to the Hall of Legends
1081Camp bedNot comfortable but useful nonetheless
1082barrelIt has a lid on it - I need something to lever it off
1083barrelI wonder what is inside...
1084ChestPerhaps I should search it
1085ChestI wonder what is inside...
1086Dense Jungle TreeThick vegetation
1087Jungle tree stumpA chopped down jungle tree
1088signpostTo the digsite
1089gateYou can pass through this on the members server
1090BookcaseA large collection of books
1091Dense Jungle TreeAn exotic looking tree
1092Dense Jungle TreeAn exotic looking tree
1093SprayThere's a strong wind
1094SprayThere's a strong wind
1095winchThis winches earth from the dig hole
1096BrickIt seems these were put here deliberately
1097Ropeit's a rope leading upwards
1098Ropeit's a rope leading upwards
1099Dense Jungle PalmA hardy palm tree with dense wood
1100Dense Jungle PalmA hardy palm tree with dense wood
1101Trawler netA huge net to catch little fish
1102Trawler netA huge net to catch little fish
1103BrickThe bricks are covered in the strange compound
1104ChestI wonder what is inside ?
1105ChestPerhaps I should search it
1106Trawler catchSmells like fish!
1107Yommi TreeAn adolescent rare and mystical looking tree in
1108Grown Yommi TreeA fully grown rare and mystical looking tree
1109Chopped Yommi TreeA mystical looking tree that has recently been felled
1110Trimmed Yommi TreeThe trunk of the yommi tree.
1111Totem PoleA nicely crafted wooden totem pole.
1112Baby Yommi TreeA baby Yommi tree - with a mystical aura
1113Fertile earthA very fertile patch of earth
1114Rock Hewn Stairssteps cut out of the living rock
1115Hanging ropeA rope hangs from the ceiling
1116RocksA large boulder blocking the stream
1117BoulderA large boulder blocking the way
1118dwarf multicannonfires metal balls
1119dwarf multicannon basebang
1120dwarf multicannon standbang
1121dwarf multicannon barrelsbang
1122rockA rocky outcrop
1123Rock Hewn Stairssteps cut out of the living rock
1124Rock Hewn Stairssteps cut out of the living rock
1125Rock Hewn Stairssteps cut out of the living rock
1126Compost HeapThe family gardeners' compost heap
1127beehiveAn old looking beehive
1128DrainThis drainpipe runs from the kitchen to the sewers
1129webAn old thick spider's web
1130fountainThere seems to be a lot of insects here
1131Sinclair CrestThe Sinclair family crest
1132barrelAnnas stuff - There seems to be something shiny at the bottom
1133barrelBobs things - There seems to be something shiny at the bottom
1134barrelCarols belongings - there seems to be something shiny at the bottom
1135barrelDavids equipment - there seems to be something shiny at the bottom
1136barrelElizabeths clothes - theres something shiny at the bottom
1137barrelFranks barrel seems to have something shiny at the bottom
1138Flour BarrelIts full of flour
1139sacksFull of various gardening tools
1140gateA sturdy and secure wooden gate
1141Dead Yommi TreeA dead Yommi Tree - it looks like a tough axe will be needed to fell this
1142clawspellforces of guthix
1143RocksThe remains of a large rock
1144crateA crate of some kind
1145Cavernous OpeningA dark and mysterious cavern
1146Ancient Lava FurnaceA badly damaged furnace fueled by red hot Lava - it looks ancient
1147Spellchargeforces of guthix
1148RocksA small rocky outcrop
1149cupboardThe cupboard is shut
1150sacksYep they're sacks
1151RockA rocky outcrop
1152Saradomin stoneA faith stone
1153Guthix stoneA faith stone
1154Zamorak stoneA faith stone
1155Magical poolA cosmic portal
1156Wooden BeamSome sort of support - perhaps used with ropes to lower people over the hole
1157Rope down into darknessA scarey downwards trip into possible doom.
1158Cave entranceA dark cave entrance leading to the surface.
1159Cave entranceA small tunnel that leads to a large room beyond.
1160Ancient Wooden DoorsThe doors are locked shut
1161TableAn old rickety table
1162Crude bedBarely a bed at all
1163Tall ReedsA tall plant with a tube for a stem.
1164Goblin foot printsThey seem to be heading south east
1165Dark Metal GateA dark metalic gate which seems to be fused with the rock
1166Magical poolA cosmic portal
1167Rope UpA welcome rope back up and out of this dark place.
1168Half buried remainsSome poor unfortunate soul
1169Totem PoleA carved and decorated totem pole
1170Totem PoleA carved and decorated totem pole
1171Comfy bedIts a bed - wow
1172Rotten Yommi TreeA decomposing fully grown Yommi Tree
1173Rotten Yommi TreeA decomposing felled Yommi Tree
1174Rotten Yommi TreeA decomposing Yommi Tree Trunk
1175Rotten Totem PoleA decomposing Totem Pole
1176Leafy Palm TreeA shady palm tree
1177Grand Viziers DeskA very elegant desk - you could knock it to get the Grand Viziers attention.
1178Strange BarrelIt might have something inside of it.
1179shipA sturdy sailing ship
1180shipA sturdy sailing ship
1181shipA sturdy sailing ship
1182digsite bedNot comfortable but useful nonetheless
1183Tea stallA stall selling oriental infusions
1184BoulderA large boulder blocking the way
1185BoulderA large boulder blocking the way
1186Damaged EarthDisturbed earth - it will heal itself in time
1187Ladderit's a ladder leading upwards
1188Ladderit's a ladder leading downwards
\ No newline at end of file diff --git a/289-Construct-Map-Region.mediawiki b/289-Construct-Map-Region.mediawiki deleted file mode 100644 index 7f83ce8..0000000 --- a/289-Construct-Map-Region.mediawiki +++ /dev/null @@ -1,44 +0,0 @@ -{{packet|name=Construct Map Region|description=Constructs the map region|opcode=241|type=Variable Short|length=N/A|revision=317}} -== Construct Map Region == - -=== Description === - -This packet constructs the map region. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Additional Short]] -| The players region y plus 6. -|- -| [[Data Types#Standard data types|Short]] -| The players region x plus 6. -|- -|} - -=== Other Information === - -After the region y is sent, you need to initialize the bit access. Then, loop through the z (which can only go up to 3). Still in the for-loop, you need to go through the x's (up to 12). Then, loop through the y's (up to 12). - -All of this is in the all three for-loops! - -Step 1: Then you'll get the tile of x, y, and z. - -Step 2: Then you need to send the bits 1 and (if tile is null) 1 otherwise, 0. - -Step 3: Check if the tile is not null. Within this if-statement, you put these bits... - -{|border=2 -! Method -|- -| putBits(26, tile.getX() << 14 | tile.getY() << 3 | tile.getZ() << 24 | tile.getRotation() << 1) -|- -|} - -Out of the for-loops! - -Step 1: Finish the bit access and send the region x. - -Done. \ No newline at end of file diff --git a/289-Player-Dialogue-Head.mediawiki b/289-Player-Dialogue-Head.mediawiki deleted file mode 100644 index 7ee4f2d..0000000 --- a/289-Player-Dialogue-Head.mediawiki +++ /dev/null @@ -1,33 +0,0 @@ -{{packet|name=Send Player Head|description=Sends player's head on an interface|opcode=185|type=Fixed|length=5|revision=317}} -== Player Dialogue Head == - -=== Description === - -This packet sends the player head to an interface. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| The status of the friends list. -|- -|} - -==== Values ==== -The below are the different values for this packet. -{| border=2 -! Value -! Response -|- -| 0 -| Loading -|- -| 1 -| Connecting -|- -| 2 -| Loaded -|- -|} \ No newline at end of file diff --git a/289-Protocol.mediawiki b/289-Protocol.mediawiki deleted file mode 100644 index 95694dc..0000000 --- a/289-Protocol.mediawiki +++ /dev/null @@ -1,754 +0,0 @@ -[[Category RS2]] - -NOTE: This page will have many further updates, once I rename and document the #289 client more. - - - -== '''Packet structure''' == -When the client sends a packet to the server, the first byte encapsulates its [http://en.wikipedia.org/wiki/Opcode opcode]. This specific opcode is encrypted with a value generated by the [http://en.wikipedia.org/wiki/ISAAC ISAAC] [http://en.wikipedia.org/wiki/Pseudorandom_number_generator PRNG] seeded with a dynamically server generated key during the login block. The server decrypts it and associates the opcode to the packet's respective predefined size. If the packet does not contain a fixed size, the opcode will be followed by either a byte or a word - varying per packet - for its proper size. This is then followed by the [http://en.wikipedia.org/wiki/Payload_(software) payload]. - -== '''Login Protocol Overview''' == -Every connection to the main 'gateway' server sends a single byte of data, mostly well known as the connection type. The connection type tells the main server which type of connection you wish to initiate. The old engine list consists of: -* Login request - connection type 14 -* Update - connection type 15 -* New connection login - connection type 16 -* Reconnecting login - connection type 18 - -The connection type we will cover in the following paragraphs is the login connection type, 14. After the login handshake initiating connection type, the client writes a small bit of data derived from the logging in player's username. This is believed to help select the appropriate login server. On successful handshake, the server sends back 8 ignored bytes. - -
long l = TextUtils.encodeAsBase37Integer(username);
-int i = (int) (l >> 16 & 31L);
-out.offset = 0;
-out.writeByte(14); // Initiate connection type
-out.writeByte(i); // "small bit of data derived from... player's username"
-in.queueBytes(2, out.payload);
-for (int j = 0; j < 8; j++) in.read();
- -At this point, the client reads in one byte, called the status code. The status code 0 is expected to start the login protocol correctly. If the status code is 0, the client reads a long, dubbed by many as the server session key. This is used to help generate a unique seed for the client session's packet opcode masking. The client then stores two ints that are the upper and lower ints of the client session key, which has the same purpose as the server's key. The client then starts writing the login block, which is RSA encrypted. - -The login block starts with the byte 10, which is considered a magic number. Following it is the client session key and server session key longs. After the session keys, the session's UID (unique identifier or user identifier) is written to the block. This is used to distinguish between multiple sessions. Trailing behind the UID comes the client's username and password written as modified C-strings that are rather terminated with a 10 byte than a NUL byte. This block is then RSA encrypted and stored for later use. - -Now starts the login request packet. It starts off with a flag telling the server whether or not the client is reconnecting or connecting for the first time. The byte is 18 or 16, respectively. [NOW CLASSIFIED AS A CONNECTION TYPE] Following is the size of the rest of the login response packet, including the login block that trails at the end, to tip the server how much data it should expect. Later comes the magic number byte 255, and right behind it the client revision short. The packet is just about crafted completely. A flag byte that represents if the client is running in low memory or high memory modes is sent, and after the 9 CRC32 checksums of the file system 0 basic archives (this includes versionlist, media, config, etc.). To top it off, the RSA encrypted login block is appended to the end and the packet is sent to the server. - -The ISAAC ciphers are seeded for packet opcode masking after adding 50 to each int of the session keys, and the status code is reread. This finishes the login protocol. - -== '''Login Protocol Breakdown''' == -The login is comprised of four stages in which the client and server switch in regards to which one is reading and which one is writing. -
-===Variables:=== -The login process has a lot of variable data, compiled here is a list of the variables and their different values. -====Name Hash==== -A hash of the player name, thought to be used to select an appropriate login server. This has no use in current private servers. - -====Server Session Key==== -The server-session-key is one of two ciphers used to encrypt the game protocol, using the ISAAC algorithms. -
-===="Data File Version"==== - -The CRC checks for the cache files. -
- -====User ID==== -The ID of the user. -
-====Username==== -The username of the player, used to identify their account. -
-====Password==== -The password of the player account, used so only they can log into their account. -
-====Client Session Key==== -The client-session-key is one of two ciphers used to encrypt the game protocol, using the ISAAC algorithms. -
-====Connect Status==== -The status of the connection. -{|border=2 -! Value -! Status -|- -| 16 -| Signifies that the connection is new. -|- -| 18 -| Signifies that the session is reconnecting a previously lost connection. -|- -|} - -====Size==== -The size of the unencrypted login packet, used to determine how many bytes need to be read from the stream by the server. -
-====Client Version==== -The memory-version of the game client. -{|border=2 -! Value -! Status -|- -| 0 -| Signifies the client is a low-memory client. -|- -| 1 -| Signifies that the client is a high-memory client. -|- -|} - -====CRC Values==== -9 4-byte values, Each containing the CRC of their respective cache files. Used by the server to verify client is up to date. -
- -====Player Status==== -The in-game player status - player, player moderator, or administrator. -
-{|border=2 -! Value -! Status -|- -| 0 -| Signifies that this player is a normal player. -|- -| 1 -| Signifies that this player is a player moderator. -|- -| 2 -| Signifies that this player is an administrator. -|- -|} - -====Flagged==== -If set to 1, information about mouse movements etc. are sent to the server. Suspected bot accounts are flagged. -
-====Response Codes==== -At the beginning and 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. -
-{| border=2 -! 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 [[#Regarding response code 15|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 sends byte 18 as it's [[#Connect Status|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 poor connection you've noticed that your chat stays there upon a reconnect, and this is exactly why. - -When you implement response code 15 though, you do NOT need to send the "player status" or the "flagged" bytes. - -===Login Process:=== -====Stage 1: Client -> Server==== -{| border=2 -|- -! Data Type -! Value -|- -| ubyte -| 14 -|- -| ubyte -| "name hash" -|- -|} -
- -====Stage 2: Server -> Client==== -{| border=2 -|- -! Data Type -! Value -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| "response code" -|- -| [[QWord|long]] -| "server session key" -|- -|} -
- -====Stage 3: Client -> Server==== -{| border=2 -|- -! Data Type -! Value -|- -| byte -| "connect status" -|- -| byte -| "size" -|- -| byte -| 255 -|- -| [[Word|short]] -| 289 -|- -| byte -| "client version" -|- -| [[DWord|int]] -| "crc values"[0] -|- -| [[DWord|int]] -| "crc values"[1] -|- -| [[DWord|int]] -| "crc values"[2] -|- -| [[DWord|int]] -| "crc values"[3] -|- -| [[DWord|int]] -| "crc values"[4] -|- -| [[DWord|int]] -| "crc values"[5] -|- -| [[DWord|int]] -| "crc values"[6] -|- -| [[DWord|int]] -| "crc values"[7] -|- -| [[DWord|int]] -| "crc values"[8] -|- -| byte -| 10 or "RSA header" -|- -| [[QWord|long]] -| "client session key" -|- -| [[QWord|long]] -| "server session key" -|- -| [[DWord|int]] -| "user id" -|- -| [[RS String|RS String]] -| "username" -|- -| [[RS String|RS String]] -| "password" -|- -|} -
- -====Stage 4: Server -> Client==== -{| border=2 -|- -! Data Type -! Value -|- -| byte -| "response code" -|- -| byte -| "player status" -|- -| byte -| "flagged" -|- -|} -
- -== '''Player Updating''' == - -Yes, the player updating procedure IS different than 317. - -The player updating process consists of 4 parts: -* a) Our player movement updates -* b) Other player movement updates -* c) Player list updating -* c.a) Apperance updating -* c.b) Location updating -* d) Player update block flag-based updates - -'''Our player movement updates''' - -The client begins by reading 1 bit. This bit tells the client whether or not it is currently updating -'our player', or the player the client is controlling. If it's not updating our player, it exits and goes onto step b. -If it is, it then reads 2 bits. The value is called the movement update type. There are 4 recognized movement update types: - - -* Type 0 basically tells the client there is nothing to update for our player, just add its index to the local updating list. - -* Type 1 tells the client you moved in one direction. The client reads 3 bits, which represents the direction you moved in, and then 1 bit, which states whether further update is required. If so, it adds it to the updating list. This is used in walking. - -* Type 2 functions in much of the same way as its previous, only this time it reads two 3 bit values. The first represents the player's last direction, and the second it's current direction. Trailing behind it is also the 1 bit 'update required' flag as type 1. This is used in running. - -* Type 3 on the other hand is different. It reads in 2 bits which represents our player's plane, or its level of height, in the game world. Only 0-3 inclusive are appropriate planes supported by the client. It then reads two 7 bit quantities, representing the new relative X and relative Y coordinates of our player to our current map region's origin. It then sets our players position to the plane, x, and y positions as told to. Directly after it reads 1 bit, which describes whether or not to clear the awaiting-waypoint queue, basically to stop client from further queued stepping, such as used in teleporting. -Finally, it reads the 'update required' bit, and checks to see if further update is required. - -'''Other player movement updates''' - -The client begins by reading an 8 bit value telling the client how many players there are to update. It then enters a loop -for each player there is to update. - -Inside this loop, the client reads 1 bit. This is the movement update required flag. If the flag is 0, it sets the current updating player's last update cycle time to the current game logic loop cycle time, and adds the player to the local player list. If the flag is not 0, it then reads the movement update type, which is a 2 bit quantity. The following known types are: - - -* 0, the client updates the current player's last update cycle time, adds the current player to the local player list, and adds it to the updating list. - -* 1, the client updates the current player's last update cycle time and adds the current player to the local player list as well, but also reads in 3 bit quantity. This represents the current player's direction it walked to. It then reads the a 1 bit value that specifies whether or not to add the player to the updating list. - -* 2, the client does the exact same thing as the type 2 update, except it reads in two of the 3 bit quantities. The first represents the current player's last direction, and the second its current direction running. - -* 3, it only adds the player to the needing-update list, or so believed. Type 3 is not well known. - - -'''Player list updating''' - -The next step in the player updating procedure is the player list updating, or where the client recieves data on every player in its local list, such as appearance and location relative to ours. The client loops through a process for each player in the updating. - -The client reads an 11 bit quantity from the buffer, which is the next player in the updated list to be informed about. The client then checks if it has a cached buffer for that player's updating, and if it does, it updates the player appearance. - - - -'''Appearance updating''' - -Appearance updating starts off by first reading an unsigned byte that represents the current player's gender. Then it reads another unsigned byte that represents the player's over-head icon id. This is used with prayer icons above heads. Next, a loop occurs 12 times to read equipment data. - -In the loop, the client reads an unsigned byte that is the equipment slot's item id high byte. If it is 0, the player's equpment slot has no item. If it is not 0, another unsigned byte is read the merged with the previous to create the equipment's item id. If the id is 65535 (written as a -1 signed short), then the player's appearance is that of an NPC. The client reads in an unsigned short representing the NPC's id and sets the player's definition to that NPC's. - -After the equipment loop, it loops 5 times, once for each type of coloured body part. In each loop, the client reads an unsigned short and assigns it as the color of the current loop idx (which represents the body part). - - -Finally, after the color loop, the client reads 7 unsigned shorts representing animation indices; the animations belong to: -* Standing still -* Turning while standing -* Walking -* Turning around (backwards) -* Turning a quarter-way clockwise -* Turning a quarter-way counter clockwise -* Running - - - -After these animation indices are read, a long representing the player's name is read, an unsigned byte representing the combat level, and an unsigned short representing -the players skill level (for things where players arent ranked by levels, such as where it states ' (skill )' as an action menu text). - - - -'''Location updating''' - -After the appearance updating, the client starts to update that player's location relative to our player. The player is added to the local player list and it's last update cycle time. It then reads to 5 bit values that determine the players relative X and Y coordinates to our player. The local player area is 16x16, so if the delta of the two coordinates is > 15, 32 is subtracted from it to signify the player is on the other side of ours. It then reads a 1 bit quantity that defines whether or not the client has a chunk in the player update block list. If it does, it adds it to the updating list. At this point the client then sets the player's position. The next bit states whether or not to discard the awaiting-waypoint queue, such as when teleporting, ending the player list updating process. - - - -'''Update block flag-based updating''' - -The following is what most people think of when they say 'update mask' and 'update flag'. This process of the updating procedure is very important. It begins with looping through ALL players in the local player update list, reading an unsigned byte which from now on will be called the update flag. All further updates are seen to be 'included' by comparing a bitwise mask to this flag. If the flag has the bits for 0x40 all on, this signifies that the flag was too large for a simple unsigned byte and reads in another unsigned byte, which it uses as the upper unsigned byte, therefore the update flag is an unsigned little-endian short. The client then passes off the data to a helper method which processes all updates this flag signifies. - - - -Inside this method, many different bitwise masks are compared to the player's flag, and if the mask is set, logic is performed. These masks are frequently called update masks. A list of player update masks are below: - -* '''0x200''' The 0x200 mask is used to update the player so they appear to be asynchronously animating and walking. This mask is often used for the [http://runescape.wikia.com/wiki/Agility Agility] skill. The data associated goes in order of: byte (type C) which is the first location's X coordinate value, byte (type S) which is the first location's Y coordinate value, byte (type S) which is the second location's X coordinate value, byte (type C) the second location's Y coordinate value. After the locations are written, there is a required movement speed which is written as a short which marks how fast to move from position 1 to position 2. Another short (type A) is written as the movement speed going from position 2 to position 1. Finally one byte is written to end the mask block, which marks the direction. - - -* '''0x100''' The 0x100 mask is responsible for player graphics updating. The data associated is a little-endian unsigned short which represents the graphics id, and an int which is the graphics delay. - - -* '''0x2''' Animations are handled by the 0x2 mask. The payload for this update is a little-endian unsigned short that is the animation id, and an unsigned inversed byte which states the animation's delay. - - -* '''0x8''' The beloved 0x8 mask takes care of forced player text that is only displayed above the player's model. The only data associated with this is a jagex ASCII string with a terminator of 10. - - -* '''0x40''' Unlike the previous, the 0x40 mask handles normal player chat text. The client will read a little-endian unsigned short which holds chat text attributes. It holds the text color and chat effects. Next, the client reads an unsigned byte which states the player's priveleges (normal player, player moderator, moderator, staff) to give the chatter's name a crown. Right behind it trails an unsigned inversed byte that gives chat text length in bytes. Trailing afterwards is dictionary-compressed chat text. All chat text characters become indexes into a valid character table and are written as nibbles (4 bit quantities). - - -* '''0x4''' Updating the player's current interacting-entity is done via mask 0x4. The entity id is written as a little-endian unsigned short. - - -* '''0x1''' The 0x1 mask updates appearance of the player in exact same way as in updating player list. Only difference is that appearance is updated from a set-sized buffer filled from the current buffer. An unsigned inversed byte is read first which describes appearance buffer size, and the buffer is filled. - - -* '''0x20''' Facing coordinate updating is signified by the 0x20 mask. The player's facing-towards X and Y are set to read values; specifically, an unsigned lower-inverted short and little-endian unsigned short, respectively. - - -* '''0x10''' Notifying client's of a player's health is done via the 0x10 mask. The hitpoint damage done to the player is sent as an unsigned byte, followed by the hit type as a positive inverted byte. The player's current and max health are read as an unsigned inverted byte and unsigned byte, respectively. - - -* '''0x400''' The 0x400 mask acts in the same way as the 0x10 mask and is most likely associated with special attacks from weapons that have the ability to hit twice at the same time. Hitpoint damage is an unsigned byte, the hit type an unsigned inverted byte, and the current and maximum health being an unsigned byte and unsigned inverted byte, respectively. - - -After the client processes every single player in the update player list, it ends player updating. - -==Game Protocol== -The game protocol is the in-game communication of player actions between the server and client. -
-===Server -> Client Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 13 -| FIXED -| 3 -| [[289 Chat settings|Chat settings]] -| Sends the chat privacy settings. -|- -| 18 -| FIXED -| 6 -| [[289 Interface item|Interface item]] -| Displays an item model inside an interface. -|- -| 21 -| VARIABLE_BYTE -| N/A -| [[289 Send player option|Send player option]] -| Sends a player option (when a player is right clicked, i.e. "Follow"). -|- -| 23 -| FIXED -| 0 -| [[289 Clear screen|Clear screen]] -| Clears the screen of all open interfaces. -|- -| 30 -| FIXED -| 5 -| [[289 Send player head|Send player head]] -| Sends the players dialogue head on an interface. -|- -| 46 -| FIXED -| 2 -| [[289 Weight|Weight]] -| Sends the players weight. -|- -| 47 -| VARIABLE_SHORT -| N/A -| [[289 Send add ignore|Send add ignore]] -| Sends a ignored player to the ignore list. -|- -| 55 -| FIXED -| 4 -| [[289 Inventory overlay|Inventory overlay]] -| Displays an interface over the sidebar area. -|- -| 59 -| VARIABLE_SHORT -| N/A -| [[289 Set interface text|Set interface text]] -| Attaches text to an interface. -|- -| 63 -| FIXED -| 3 -| [[289 Send sidebar interface|Send sidebar interface]] -| Assigns an interface to one of the tabs in the game sidebar. -|- -| 76 -| FIXED -| 32 -| [[289 Send update item|Send update item]] -| Updates an item on an interface. -|- -| 79 -| FIXED -| 6 -| [[289 Interface offset|Interface offset]] -| Sets the offset for drawing of an interface. -|- -| 81 -| FIXED -| 2 -| [[289 Chat interface|Chat interface]] -| Shows an interface in the chat box. -|- -| 107 -| FIXED -| 2048 -| [[289 Send update items|Send update items]] -| Updates more than one item on an interface. -|- -| 119 -| FIXED -| 2 -| [[289 Show interface|Show interface]] -| Displays a normal interface. -|- -| 120 -| FIXED -| 3 -| [[289 Initialize player|Initialize player]] -| Sends their current index on the server's player list and the player's membership status. -|- -| 121 -| FIXED -| 0 -| [[289 Logout|Logout]] -| Disconnects the client from the server. -|- -| 133 -| FIXED -| 0 -| [[289 Reset camera|Reset camera]] -| Resets the camera position. -|- -| 154 -| FIXED -| N/A -| [[317 Send Skill|Send Skill]] -| Sends a specific skill. -|- -| 155 -| FIXED -| 3 -| [[317 Send position|Send position]] -| Sends the coordinates of the player. -|- -| 160 -| FIXED -| 4 -| [[289 Interface color|Interface color]] -| Changes the color of an interface. -|- -| 168 -| FIXED -| 9 -| [[289 Send add friend|Send add friend]] -| Sends a friend to the friend list. -|- -| 172 -| FIXED -| 0 -| [[289 Reset button state|Reset button state]] -| Resets the button state for all buttons. -|- -| 177 -| FIXED -| 6 -| [[289 Send sound|Send sound]] -| Instructs the client to play a sound. -|- -| 181 -| FIXED -| 1 -| [[289 Flash sidebar|Flash sidebar]] -| Causes a sidebar icon to start flashing. -|- -| 184 -| FIXED -| 4 -| [[289 Scroll position|Scroll position]] -| Sets the scrollbar position of an interface. -|-| -| 185 -| FIXED -| 5 -| [[289 Send Player Head|Send Player Head]] -| Sends the player's head on an interface. -|- -| 187 -| FIXED -| 3 -| [[289 Play song|Play song]] -| Instructs the client to play a song. -|- -| 188 -| N/A -| N/A -| [[289 Protocol#Player Updating|Player updating]] -| See player updating (above) for more information. -|- -| 195 -| FIXED -| 1 -| [[289 Run energy|Run energy]] -| Sends the players run energy level. -|- -| 196 -| VARIABLE_BYTE -| N/A -| [[289 Send message|Send message]] -| Sends a server message (e.g. 'Welcome to RuneScape') or trade/duel request. -|- -| 200 -| FIXED -| 4 -| [[289 Interface animation|Interface animation]] -| Sets an interface's model animation. -|- -| 201 -| FIXED -| 0 -| [[289 Animation reset|Animation reset]] -| Resets all animations in the immediate area. -|- -| 204 -| FIXED -| 2 -| [[289 System update|System update]] -| Sends how many seconds until a 'System Update.' -|- -| 208 -| FIXED -| 4 -| [[289 Camera shake|Camera shake]] -| Causes the camera to shake. -|- -| 219 -| FIXED -| 4 -| [[289 Load map region|Load map region]] -| Loads a new map region. -|- -| 221 -| FIXED -| 1 -| [[317 Friends list status|Friends list status]] -| Friends list load status. -|- -| 243 -| VARIABLE_BYTE -| N/A -| [[289 Send private message|Send private message]] -| Sends a private message to another player. -|- -| 241 -| VARIABLE_SHORT -| N/A -| [[289 Construct Map Region|Construct Map Region]] -| Constructs the map region. -|- -| 244 -| FIXED -| 5 -| [[289 Send Npc Head|Send Npc Head]] -| Sends the dialogue head of an npc on an interface. -|- -| 247 -| FIXED -| 1 -| [[289 Minimap State|Minimap State]] -| Sets the mini map's state. -|- -| 253 -| FIXED -| 10 -| [[289 Open welcome screen|Open welcome screen]] -| Displays the welcome screen. -|- -|} - -===Client -> Server Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 235 -| FIXED -| 8 -| [[289 Add friend|Add friend]] -| Sent when a player adds a friend to their friend list. -|- -|} \ No newline at end of file diff --git a/289-Send-Player-Head.mediawiki b/289-Send-Player-Head.mediawiki deleted file mode 100644 index e53f20b..0000000 --- a/289-Send-Player-Head.mediawiki +++ /dev/null @@ -1,17 +0,0 @@ -{{packet|name=Send player head|description=Sends the player head on an interface|opcode=185|type=Fixed|length=5|revision=317}} - -== Friends List Status == - -=== Description === - -This packet sends the first list load status. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Little Endian Short-A]] -| The interface Id. -|- -|} \ No newline at end of file diff --git a/289-Send-sidebar-interface.mediawiki b/289-Send-sidebar-interface.mediawiki deleted file mode 100644 index a027bb0..0000000 --- a/289-Send-sidebar-interface.mediawiki +++ /dev/null @@ -1,19 +0,0 @@ -{{packet|name=Send Sidebar Interface|description=Sends the sidebar interfaces|opcode=63|type=Fixed|length=3|revision=317}} -== Send Sidebar Interface == - -=== Description === - -This packet sends the sidebar interfaces - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] -| The interface Id. -|- -| [[Data Types#Standard data types|Byte]] -| The icon. -|- -|} \ No newline at end of file diff --git a/317-Add-friend.mediawiki b/317-Add-friend.mediawiki deleted file mode 100644 index 3d5ac12..0000000 --- a/317-Add-friend.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Add friend|description=Sent when a player adds a friend to their friends list.|opcode=188|type=Fixed|length=8|revision=317}} -== Add Friend == - -=== Description === - -This packet is sent when a player adds a friend to their friends list. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Long]] -| The other players ID. -|- -|} \ No newline at end of file diff --git a/317-Add-ignore.mediawiki b/317-Add-ignore.mediawiki deleted file mode 100644 index 1847311..0000000 --- a/317-Add-ignore.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Add ignore|description=Sent when a player adds another player to their ignore list.|opcode=133|type=Fixed|length=8|revision=317}} -== Add Ignore == - -=== Description === - -This packet is sent when a player adds another player to their ignore list. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Long]] -| The other players ID. -|- -|} \ No newline at end of file diff --git a/317-Alternate-item-option-2.mediawiki b/317-Alternate-item-option-2.mediawiki deleted file mode 100644 index c18e007..0000000 --- a/317-Alternate-item-option-2.mediawiki +++ /dev/null @@ -1,26 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Alternate Item Option 2|description=Sent when the player clicks the alternate second option of an item.|opcode=16|type=Fixed|length=6|revision=317}} -== Alternate Item Option 2 == - -=== Description === - -This packet is sent when a player clicks the alternate second option of an item. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The ID of the item. -|- -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The slot the item is in. -|- -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The frame ID. -|- -|} \ No newline at end of file diff --git a/317-Animation-reset.mediawiki b/317-Animation-reset.mediawiki deleted file mode 100644 index 5609c86..0000000 --- a/317-Animation-reset.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Animation reset|description=Resets all animations in the immediate area. |opcode=1|type=Fixed|length=0|revision=317}} -== Animation Reset == - -=== Description === - -Resets all animations for players and npcs in the surrounding area. \ No newline at end of file diff --git a/317-Attack-(NPC).mediawiki b/317-Attack-(NPC).mediawiki deleted file mode 100644 index c2a307f..0000000 --- a/317-Attack-(NPC).mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Attack (NPC)|description=Sent when a player attacks an NPC|opcode=72|type=Fixed|length=2|revision=317}} -== Attack (NPC) == - -=== Description === - -This packet is sent when a player attacks an NPC. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| Unsigned [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The NPC ID. -|- -|} \ No newline at end of file diff --git a/317-Audio.mediawiki b/317-Audio.mediawiki deleted file mode 100644 index 55f561e..0000000 --- a/317-Audio.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Audio|description=Sets what audio/sound is to play at a certain moment.|opcode=147|type=Fixed|length=N/A|revision=317}} -== Audio == - -=== Description === - -Sets what audio/sound is to play at a certain moment. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Word|Word]] -| The sound id. -|- -| [[Data Types#Byte|Byte]] -| The volume. -|- -| [[Data Types#Word|Word]] -| The delay. -|- -|} \ No newline at end of file diff --git a/317-Bank-10-items.mediawiki b/317-Bank-10-items.mediawiki deleted file mode 100644 index d3907d6..0000000 --- a/317-Bank-10-items.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Bank 10 items|description=Sent when a player banks 10 of a certain item.|opcode=43|type=Fixed|length=6|revision=317}} -== Bank 10 Items == - -=== Description === - -This packet is sent when the player attempts to bank 10 of a certain item.
-'''Note:''' This packet is also used for selling/buying 5 of an item from a shop. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The frame ID. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The item ID. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The slot ID. -|} \ No newline at end of file diff --git a/317-Bank-5-items.mediawiki b/317-Bank-5-items.mediawiki deleted file mode 100644 index 6f8b41c..0000000 --- a/317-Bank-5-items.mediawiki +++ /dev/null @@ -1,25 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Bank 5 items|description=Sent when a player attempts to bank 5 of a certain item.|opcode=117|type=Fixed|length=6|revision=317}} -== Bank 5 Items == - -=== Description === - -This packet is sent when a player attempts to bank 5 of a certain item.
-'''Note:''' This packet is also used for buying/selling 1 of an item from a shop. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The frame ID. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The item ID. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The slot ID. -|- -|} \ No newline at end of file diff --git a/317-Bank-X-items-part-1.mediawiki b/317-Bank-X-items-part-1.mediawiki deleted file mode 100644 index b3972c8..0000000 --- a/317-Bank-X-items-part-1.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Bank x items part-1|description=Sent when a player requests to bank an X amount of items.|opcode=135|type=Fixed|length=6|revision=317}} -== Bank X Items Part-1 == - -=== Description === - -This packet is sent when a player requests to bank an X amount of items. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The items slot. -|- -| Unsigned [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The interface ID. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The item ID. -|- -|} \ No newline at end of file diff --git a/317-Bank-X-items-part-2.mediawiki b/317-Bank-X-items-part-2.mediawiki deleted file mode 100644 index fca29f2..0000000 --- a/317-Bank-X-items-part-2.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=bank x items part-2|description=Sent when a player enters an X amount of items they want to bank.|opcode=208|type=Fixed|length=4|revision=317}} -== Bank X Items Part-2 == - -=== Description === - -This packet is sent when a player enters an X amount of items they want to bank. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Integer]] -| The amount of the item you want to bank. -|- -|} \ No newline at end of file diff --git a/317-Bank-all-items.mediawiki b/317-Bank-all-items.mediawiki deleted file mode 100644 index 8d5156d..0000000 --- a/317-Bank-all-items.mediawiki +++ /dev/null @@ -1,26 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Bank all items|description=Sent when a player banks all of a certain item they have in their inventory.|opcode=129|type=Fixed|length=6|revision=317}} -== Bank 10 Items == - -=== Description === - -This packet is sent when a player banks all of a certain item they have in their inventory. -
-'''Note:''' This packet is also used for selling/buying 10 items at a shop. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| Unsigned [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The items slot ID. -|- -| Unsigned [[Data Types#Standard data types|Short]] -| The interface ID. -|- -| Unsigned [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The item ID. -|- -|} \ No newline at end of file diff --git a/317-Begin-player-updating.mediawiki b/317-Begin-player-updating.mediawiki deleted file mode 100644 index 85c5d27..0000000 --- a/317-Begin-player-updating.mediawiki +++ /dev/null @@ -1,7 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -== Player Updating == - -=== Description === - -This packet begins the player updating. \ No newline at end of file diff --git a/317-Button-click.mediawiki b/317-Button-click.mediawiki deleted file mode 100644 index 7c71792..0000000 --- a/317-Button-click.mediawiki +++ /dev/null @@ -1,19 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Button click|description=Sent when a player clicks an in-game button.|opcode=185|type=Fixed|length=2|revision=317}} -== Button click == - -=== Description === - -This is sent when a player clicks a button in-game, with the id of the button being clicked. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Short]] -| The button id. -|- -|} \ No newline at end of file diff --git a/317-Camera-movement.mediawiki b/317-Camera-movement.mediawiki deleted file mode 100644 index 3c41b33..0000000 --- a/317-Camera-movement.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Camera movement|description=Sent when the player moves the camera.|opcode=86|type=Fixed|length=4|revision=317}} -== Camera Movement == - -=== Description === - -This packet is sent when a player moves their game camera. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] -| The Y coordinate of the camera. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The X coordinate of the camera. -|- -|} \ No newline at end of file diff --git a/317-Camera-shake.mediawiki b/317-Camera-shake.mediawiki deleted file mode 100644 index c4db8fa..0000000 --- a/317-Camera-shake.mediawiki +++ /dev/null @@ -1,99 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Camera oscillate|description=Begin camera oscillation|opcode=35|type=Fixed|length=4|revision=317}} -== Camera oscillate == - -=== Description === -Begins camera oscillation, which is implemented using a configurable sinusoidal oscillator to offset a specific degree of freedom. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| Parameter (camera X, Z, Y, yaw, pitch) -|- -| [[Data Types#Standard data types|Byte]] -| Jitter - for randomization -|- -| [[Data Types#Standard data types|Byte]] -| Amplitude -|- -| [[Data Types#Standard data types|Byte]] -| Frequency (scaled by 100) -|- -|} - -=== Other Information === -The oscillate event enables the client to oscillate one of 5 of it's position parameters, i.e. corresponding to the camera's degrees of freedom; parameters 0, 1, and 2 refer to the location of the camera, while 3 and 4 deal with the camera's orientation. Together, these enable complex effects involving manipulation of the camera position to give rise to simulated earth-quakes and camera shock. -{| border=2 -! Parameter -! Description -|- -| 0 -| Camera location along world X axis (a horizontal axis, aligned with map grid X) -|- -| 1 -| Camera location along world Z axis (vertical axis) -|- -| 2 -| Camera location along world Y axis (a horizontal axis, aligned with map grid Y) -|- -| 3 -| Camera orientation in world X plane w.r.t. world Z axis, i.e. yaw -|- -| 4 -| Camera orientation in world Z plane w.r.t. world X axis, i.e. pitch -|- -|} -Note there is no built-in way to manipulate camera roll, as this is not one of the camera's degrees of freedom. - -=== What it's doing === -Every time the world is rendered, each camera parameter that is enabled for oscillation is offset by a value computed as follows: -{| border=2 -! Calculation -! Formula -|- -| Delta -| (int) ((Math.random() * (double) (jitter * 2 + 1) - (double) jitter) + Math.sin((double) phase * ((double) frequency / 100D)) * (double) amplitude); -|- -|} -Each parameter's phase accumulator (phase) is incremented by 1 each logic update. - -=== Parameter === -The offset itself is detailed as follows for each parameter: -{| border=2 -! Parameter -! Action -|- -| 0 -| camera_x += delta -|- -| 1 -| camera_z += delta -|- -| 2 -| camera_y += delta -|- -| 3 -| camera_yaw = camera_yaw + delta & 0x7ff; -|- -| 4 -| camera_pitch += delta -|- -|} -Note that the camera's yaw is corrected modulo 0x7ff, or 2048, which is equivalent to 2{{{pi}}} radians in Jagex's binary angle system. -This is not done to the camera pitch, which is instead clamped (see below). - -=== Note === -For oscillating the camera pitch, clamping is done to ensure the angle not out of bounds: -{| border=2 -|- -|if (camera_pitch < 128) then camera_pitch = 128 -|- -|if (camera_pitch > 383) then camera_pitch = 383 -|- -|} -This is do to Jagex restricting the possible range of orientations the camera may take. \ No newline at end of file diff --git a/317-Chat-interface-click.mediawiki b/317-Chat-interface-click.mediawiki deleted file mode 100644 index 7ce7723..0000000 --- a/317-Chat-interface-click.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Chat interface click|description=Received when a button is pressed, in a chat interface.|opcode=40|type=Fixed|length=2|revision=317}} -== Chat interface click == - -=== Description === - -Received by the server when a button is pressed in a chat interface [http://rswiki.moparisthebest.com/index.php?title=317:Chat_interface]. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] -| Frame ID. -|- -|} \ No newline at end of file diff --git a/317-Chat-interface.mediawiki b/317-Chat-interface.mediawiki deleted file mode 100644 index 91ee1f4..0000000 --- a/317-Chat-interface.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Chat interface|description=Shows an interface in the chat box.|opcode=164|type=Fixed|length=2|revision=317}} -== Chat Interface == - -=== Description === - -This packet attaches an interface to the chat box. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The interface ID. -|- -|} \ No newline at end of file diff --git a/317-Chat-settings.mediawiki b/317-Chat-settings.mediawiki deleted file mode 100644 index d1ab4b8..0000000 --- a/317-Chat-settings.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Chat settings|description=Sends the chat privacy settings|opcode=206|type=Fixed|length=3|revision=317}} -== Chat Settings == - -=== Description === - -This packet sends the chat privacy settings. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| Public chat setting. -|- -| [[Data Types#Standard data types|Byte]] -| Private chat setting. -|- -| [[Data Types#Standard data types|Byte]] -| Trade setting. -|- -|} \ No newline at end of file diff --git a/317-Clear-inventory.mediawiki b/317-Clear-inventory.mediawiki deleted file mode 100644 index a4cdb15..0000000 --- a/317-Clear-inventory.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Clear Inventory|description=Used to set all of the items and item stacks in an inventory to nothing.|opcode=72|type=Fixed|length=2|revision=317}} -== Clear inventory == - -=== Description === - -This packet creates a loop through a given inventory interface id and sets the item ids to negative one and the item stacks to zero. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The interface ID. -|- -|} \ No newline at end of file diff --git a/317-Clear-screen.mediawiki b/317-Clear-screen.mediawiki deleted file mode 100644 index 85ae8b0..0000000 --- a/317-Clear-screen.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Clear screen|description=Clears the screen of all open interfaces.|opcode=219|type=Fixed|length=0|revision=317}} -== Clear Screen == - -=== Description === - -Removes all open interfaces from the players screen. \ No newline at end of file diff --git a/317-Close-window.mediawiki b/317-Close-window.mediawiki deleted file mode 100644 index 71a1df3..0000000 --- a/317-Close-window.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Close window|description=Sent when a player presses the close, exit or cancel button on an interface.|opcode=130|type=Fixed|length=0|revision=317}} -== Close Window == - -=== Description === - -This packet is sent when a player presses the close, exit or cancel button on an interface. \ No newline at end of file diff --git a/317-Construct-map-region.mediawiki b/317-Construct-map-region.mediawiki deleted file mode 100644 index 2f0c0ff..0000000 --- a/317-Construct-map-region.mediawiki +++ /dev/null @@ -1,43 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Construct map region|description=Constructs a new map region from a palette of 8x8 tiles.|opcode=241|type=Variable Short|length=N/A|revision=317}} -== Construct Map Region == - -=== Description === - -The construct map region packet sends a dynamic map region that is constructed by using groups of 8*8 tiles. It is generally used for instanced areas, such as fight caves, and in later revisions, player owned houses. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The region Y coordinate (absolute Y coordinate / 8), plus 6. -|- -| [[#Bit block|Bit block]] -| See below. -|- -| [[Data Types#Standard data types|Short]] -| The region X coordinate (absolute X coordinate / 8), plus 6. -|} - -==== Bit block ==== - -The bit block actually contains the 'palette' of map regions to make up the new region. - -There is a loop, like this, used to construct it: - - for(int z = 0; z < 4; z++) { - for(int x = 0; x < 13; x++) { - for(int y = 0; y < 13; y++) { - // data for this region - } - } - } - -The individual format in each iteration of the loop is: - -* '''1 bit''' - set to 0 to indicate to display nothing, 1 to display a region -* '''26 bits''' - if the flag above is set to 1 - region x << 14 | region y << 3 \ No newline at end of file diff --git a/317-Create-Projectile.mediawiki b/317-Create-Projectile.mediawiki deleted file mode 100644 index 5f11d45..0000000 --- a/317-Create-Projectile.mediawiki +++ /dev/null @@ -1,47 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -== Create Projectile == - -=== Description === - -Creates a projectile. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| Position offset -|- -| [[Data Types#Standard data types|Byte]] -| Second X offset -|- -| [[Data Types#Standard data types|Byte]] -| Second Y offset -|- -| [[Data Types#Standard data types|Short]] -| Target -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| Graphic ID -|- -| [[Data Types#Standard data types|Byte]] -| Starting height -|- -| [[Data Types#Standard data types|Byte]] -| Ending height -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| Starting time -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| Speed -|- -| [[Data Types#Standard data types|Byte]] -| Initial slope -|- -| [[Data Types#Standard data types|Byte]] -| Initial distance from source -|- -|} \ No newline at end of file diff --git a/317-Design-screen.mediawiki b/317-Design-screen.mediawiki deleted file mode 100644 index 5f54cf0..0000000 --- a/317-Design-screen.mediawiki +++ /dev/null @@ -1,54 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Design screen|description=Sent when a player is choosing their character design options.|opcode=101|type=Fixed|length=13|revision=317}} -== Design Screen == - -=== Description === - -This packet is sent when a player is choosing their character design options. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| The players gender. -|- -| [[Data Types#Standard data types|Byte]] -| The players head model. -|- -| [[Data Types#Standard data types|Byte]] -| The players beard model. -|- -| [[Data Types#Standard data types|Byte]] -| The players torso model. -|- -| [[Data Types#Standard data types|Byte]] -| The players arm model. -|- -| [[Data Types#Standard data types|Byte]] -| The players hand model. -|- -| [[Data Types#Standard data types|Byte]] -| The players leg model -|- -| [[Data Types#Standard data types|Byte]] -| The players foot model. -|- -| [[Data Types#Standard data types|Byte]] -| The players hair color. -|- -| [[Data Types#Standard data types|Byte]] -| The players torso color. -|- -| [[Data Types#Standard data types|Byte]] -| The players leg color. -|- -| [[Data Types#Standard data types|Byte]] -| The players foot color. -|- -| [[Data Types#Standard data types|Byte]] -| The players skin color. -|- -|} \ No newline at end of file diff --git a/317-Display-hint-icon.mediawiki b/317-Display-hint-icon.mediawiki deleted file mode 100644 index 89ee70c..0000000 --- a/317-Display-hint-icon.mediawiki +++ /dev/null @@ -1,59 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Display hint icon|description=Display a hint icon to the player.|opcode=254|type=Variable Byte|length=N/A|revision=317}} - -== Display Hint Icon == - -=== Description === - -Displays a hint icon. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| The Icon type -|- -|} - -=== if type == 1 === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data type|Short]] -| Icon NPC target -|- -|} - -=== if type >= 2 && type <= 6 === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data type|Short]] -| Icon X -|- -| [[Data Types#Standard data type|Short]] -| Icon Y -|- -| [[Data Types#Standard data types|Byte]] -| Icon draw height -|- -|} - -=== if type == 10 === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data type|Short]] -| Icon player target -|- -|} \ No newline at end of file diff --git a/317-Drop-item.mediawiki b/317-Drop-item.mediawiki deleted file mode 100644 index 8f2aa25..0000000 --- a/317-Drop-item.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Drop item|description=Sent when a player wants to drop an item onto the ground.|opcode=87|type=Fixed|length=6|revision=317}} -== Drop Item == - -=== Description === - -This packet is sent when a player wants to drop an item onto the ground. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The item ID. -|- -| [[Data Types#Standard data types|Short]] -| The frame ID. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The slot ID. -|- -|} \ No newline at end of file diff --git a/317-Enter-name.mediawiki b/317-Enter-name.mediawiki deleted file mode 100644 index 4ef046a..0000000 --- a/317-Enter-name.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Enter name|description=Opens up the name entry interface. |opcode=187|type=Fixed|length=0|revision=317}} -== Enter name == - -=== Description === - -Sending the packet to the client will make the client open up the "Enter name" interface for things such as friend-adding. \ No newline at end of file diff --git a/317-Equip-item.mediawiki b/317-Equip-item.mediawiki deleted file mode 100644 index dcb6f37..0000000 --- a/317-Equip-item.mediawiki +++ /dev/null @@ -1,25 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Equip item|description=Sent when a player equips an item.|opcode=41|type=Fixed|length=6|revision=317}} -== Equip Item == - -=== Description === - -This is sent when a player equips an item in-game. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| Unsigned [[Data Types#Standard data types|Short]] -| The ID of the item. -|- -| Unsigned [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The slot of the item. -|- -| Unsigned [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The ID of the interface. -|- -|} \ No newline at end of file diff --git a/317-Flash-sidebar.mediawiki b/317-Flash-sidebar.mediawiki deleted file mode 100644 index 438f44b..0000000 --- a/317-Flash-sidebar.mediawiki +++ /dev/null @@ -1,55 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Flash sidebar|description=Causes a sidebar icon to start flashing.|opcode=24|type=Fixed|length=1|revision=317}} -== Flash sidebar == - -=== Description === - -This packet causes a sidebar icon to start flashing. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Byte]] [[Data Types#Non Standard data types|Special S]] -| The sidebar ID. -|- -|} - - -==== Values ==== -The below are the different values for this packet. -{| border=2 -! Value -! Icon -|- -| 0 || Attack type -|- -| -1 || Stats -|- -| -2 || Quests -|- -| -3 || Inventory -|- -| -4 || Wearing -|- -| -5 || Prayer -|- -| -6 || Magic -|- -| -7 || '''EMPTY''' -|- -| -8 || Friends list -|- -| -9 || Ignore list -|- -| -10 || Log out -|- -| -11 || Settings -|- -| -12 || Emotes -|- -| -13 || Music -|- -|} \ No newline at end of file diff --git a/317-Focus-change.mediawiki b/317-Focus-change.mediawiki deleted file mode 100644 index 019ca19..0000000 --- a/317-Focus-change.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Focus change|description=Sent when the game client window goes in and out of focus.|opcode=3|type=Fixed|length=1|revision=317}} -== Focus Change == - -=== Description === - -This packet is sent when the game client window goes in and out of focus. The payload consists of one byte that is either 1 or 0; 1 if the client is in focus and 0 if not. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| Whether or not the client is in focus. -|- -|} \ No newline at end of file diff --git a/317-Follow.mediawiki b/317-Follow.mediawiki deleted file mode 100644 index 875658e..0000000 --- a/317-Follow.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Follow|description=Sent when a player clicks the follow option on another player|opcode=39|type=Fixed|length=2|revision=317}} -== Follow == - -=== Description === - -This packet is sent when a player clicks the follow option on another player. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| Unsigned [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The other players ID. -|- -|} \ No newline at end of file diff --git a/317-Force-client-setting.mediawiki b/317-Force-client-setting.mediawiki deleted file mode 100644 index ac9c405..0000000 --- a/317-Force-client-setting.mediawiki +++ /dev/null @@ -1,26 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Force client setting|description=Forcefully alters a client setting value and default value to some supplied value.|opcode=36|type=Fixed|length=3|revision=317}} -== Force Client Setting == - -=== Description === - -The client stores various user settings in an array, the default values are also stored in another array. This packet changes the default value for a setting and its current value to the one given. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Byte Order|Little Endian]] -| Setting ID number. -|- -| [[Data Types#Standard data types|Byte]] -| New value (and default value) for the setting. -|- -|} - - -=== Other Information === -Opcode 87 (length 6) is extremely similar in structure, but the new value is received as an Middle Endian Small Int. This suggests its for use with bigger setting values. \ No newline at end of file diff --git a/317-Friends-list-status.mediawiki b/317-Friends-list-status.mediawiki deleted file mode 100644 index 5ae6bfb..0000000 --- a/317-Friends-list-status.mediawiki +++ /dev/null @@ -1,35 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Friends list status|description=Sends the friends list load status|opcode=221|type=Fixed|length=1|revision=317}} -== Friends List Status == - -=== Description === - -This packet sends the first list load status. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| The status of the friends list. -|- -|} - -==== Values ==== -The below are the different values for this packet. -{| border=2 -! Value -! Response -|- -| 0 -| Loading -|- -| 1 -| Connecting -|- -| 2 -| Loaded -|- -|} \ No newline at end of file diff --git a/317-Ground-Item-Action.mediawiki b/317-Ground-Item-Action.mediawiki deleted file mode 100644 index 5540c7d..0000000 --- a/317-Ground-Item-Action.mediawiki +++ /dev/null @@ -1,22 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -== Ground Item Action == - -=== Description === - -This packet is sent when a player clicks the first option on a ground item. -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The items X coordinate. -|- -| Additional [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The items Y coordinate. -|- -| Additional [[Data Types#Standard data types|Short]] -| The item ID. -|- -|} \ No newline at end of file diff --git a/317-Hidden-Interface.mediawiki b/317-Hidden-Interface.mediawiki deleted file mode 100644 index f5e8e3d..0000000 --- a/317-Hidden-Interface.mediawiki +++ /dev/null @@ -1,22 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Hidden interface|description=Sets an interface to be hidden until hovered over.|opcode=171|type=Fixed|length=3|revision=317}} - -== Hidden Interface == - -=== Description === - -Sets an interface to be hidden until hovered over. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| Hidden until hovered -|- -| [[Data Types#Standard data types|Short]] -| Interface Id -|- -|} \ No newline at end of file diff --git a/317-Idle-logout.mediawiki b/317-Idle-logout.mediawiki deleted file mode 100644 index 57668e3..0000000 --- a/317-Idle-logout.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Idle logout|description=Sent when the player has become idle and should be logged out. |opcode=202|type=Fixed|length=0|revision=317}} -== Idle logout == - -=== Description === - -This is sent when the player becomes idle and should be logged out. This is sent after the player is idle for 60 seconds, after that it is sent every 10 seconds as long as the player is idle. \ No newline at end of file diff --git a/317-Idle.mediawiki b/317-Idle.mediawiki deleted file mode 100644 index 5189a79..0000000 --- a/317-Idle.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Idle|description=Idle packet..|opcode=0|type=Fixed|length=0|revision=317}} -== Idle == - -=== Description === - -Sent when the player is idle for the current cycle, and acts as a "ping" packet. \ No newline at end of file diff --git a/317-Initialize-player.mediawiki b/317-Initialize-player.mediawiki deleted file mode 100644 index 177ded6..0000000 --- a/317-Initialize-player.mediawiki +++ /dev/null @@ -1,22 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Initialize player|description=Sends the player's membership status and their current index on the server's player list.|opcode=249|type=Fixed|length=3|revision=317}} -== Initialize Player == - -=== Description === - -Sends the player membership flag and player list index. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Byte]] [[Data Types#Non Standard Data Types|Special A]] -| Membership flag (1 = member, 0 = free). -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| Player list index. -|- -|} \ No newline at end of file diff --git a/317-Input-amount.mediawiki b/317-Input-amount.mediawiki deleted file mode 100644 index 444496e..0000000 --- a/317-Input-amount.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Input amount|description=Opens up the amount input interface. |opcode=27|type=Fixed|length=0|revision=317}} -== Input amount == - -=== Description === - -Sending the packet to the client will make the client open up the "Input amount" interface over the chatbox for things such as Buy X and Bank X. \ No newline at end of file diff --git a/317-Interface-animation.mediawiki b/317-Interface-animation.mediawiki deleted file mode 100644 index c29d889..0000000 --- a/317-Interface-animation.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Interface animation|description=Sets an interface's model animation|opcode=200|type=Fixed|length=4|revision=317}} -== Interface animation == - -=== Description === - -Sets an interface's model animation. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] -| The interface ID -|- -| [[Data Types#Standard data types|Short]] -| The animation ID -|- -|} \ No newline at end of file diff --git a/317-Interface-color.mediawiki b/317-Interface-color.mediawiki deleted file mode 100644 index 5d2db68..0000000 --- a/317-Interface-color.mediawiki +++ /dev/null @@ -1,39 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Interface color|description=This packet changes the color of an interface that is text.|opcode=122|type=Fixed|length=4|revision=317}} -== Interface Color == - -=== Description === - -This packet changes the color of an interface that is text. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The interface ID. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The color. -|- -|} - -=== Information === -You use this packet to change the color of text in an interface. - -{|border=2 -! Color -! Code -|- -| Green -| 0x3366 -|- -| Yellow -| 0x33FF66 -|- -| Red -| 0x6000 -|- -|} \ No newline at end of file diff --git a/317-Interface-item.mediawiki b/317-Interface-item.mediawiki deleted file mode 100644 index abca96c..0000000 --- a/317-Interface-item.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Interface item|description=Displays an item model inside an interface.|opcode=246|type=Fixed|length=6|revision=317}} -== Interface Item == - -=== Description === - -Displays an item model inside an interface. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] || Interface ID. -|- -| [[Data Types#Standard data types|Short]] || The item's model zoom. -|- -| [[Data Types#Standard data types|Short]] || The item ID. -|} \ No newline at end of file diff --git a/317-Interface-model-rotation.mediawiki b/317-Interface-model-rotation.mediawiki deleted file mode 100644 index 2c4dfa2..0000000 --- a/317-Interface-model-rotation.mediawiki +++ /dev/null @@ -1,27 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Interface model rotation|description=Changes the zoom and rotation of the interface id's media given.|opcode=230|type=Fixed|length=8|revision=317}} -== Interface Color == - -=== Description === - -Changes the zoom and rotation of the interface id's media given. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Word]] [[Data Types#Non Standard Data Types|Special A]] -| The zoom. -|- -| [[Data Types#Standard data types|Word]] -| The interface id. -|- -| [[Data Types#Standard data types|Word]] -| The rotation1. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Word]] [[Data Types#Non Standard data types|Special A]] -| The rotation2. -|- -|} \ No newline at end of file diff --git a/317-Interface-offset.mediawiki b/317-Interface-offset.mediawiki deleted file mode 100644 index b3c51c5..0000000 --- a/317-Interface-offset.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Interface offset|description=Sets the offset for drawing of an interface|opcode=70|type=Fixed|length=6|revision=317}} -== Interface offset == - -=== Description === - -Sets the offset for drawing of an interface. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] -| The X offset -|- -| [[Data Types#Byte Order|Little Endian]] [[Data Types#Standard data types|Short]] -| The Y offset -|- -| [[Data Types#Byte Order|Little Endian]] [[Data Types#Standard data types|Short]] -| The interface ID -|- -|} \ No newline at end of file diff --git a/317-Interface-over-tab.mediawiki b/317-Interface-over-tab.mediawiki deleted file mode 100644 index 12a469f..0000000 --- a/317-Interface-over-tab.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Interface over tab|description=Draws an interface over the tab area.|opcode=106|type=Fixed|length=1|revision=317}} -== Open Welcome Screen == - -=== Description === - -This packet draws an interface over the tab area. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data type|Byte]] [[Data Types#Non Standard data types|Special C]] -| Interface ID -|- -|} \ No newline at end of file diff --git a/317-Inventory-overlay.mediawiki b/317-Inventory-overlay.mediawiki deleted file mode 100644 index f0d0196..0000000 --- a/317-Inventory-overlay.mediawiki +++ /dev/null @@ -1,27 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Inventory Overlay|description=Overlays an interface on the inventory|opcode=248|type=Fixed|length=4|revision=317}} -== Child Frame == - -=== Description === - -This packet overlays an interface in the inventory area. This is used in trading and staking. - -=== Example === - -
sendFrame248(3323, 3321);
- -That will set the open interface to interface 3323, which is the trade interface, with the inventory overlay interface as 3321, which is an inventory type interface with offer actions. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard data types|Special A]] -| The interface to open. -|- -| [[Data Types#Standard data types|Short]] -| The interface to overlay the inventory area. -|- -|} \ No newline at end of file diff --git a/317-Item-action-1.mediawiki b/317-Item-action-1.mediawiki deleted file mode 100644 index 9ce42c9..0000000 --- a/317-Item-action-1.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Item action 1|description=Sent when the player clicks the first option of an item.|opcode=122|type=Fixed|length=6|revision=317}} -== Item Action 1 == - -=== Description === - -This packet is sent when a player clicks the first option of an item, such as "Bury" for bones or "Eat" for food. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The frame ID. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The slot the item is in. -|- -| [[Data Types#LITTLE Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The ID of the item. -|- -|} \ No newline at end of file diff --git a/317-Item-on-floor.mediawiki b/317-Item-on-floor.mediawiki deleted file mode 100644 index 49488d1..0000000 --- a/317-Item-on-floor.mediawiki +++ /dev/null @@ -1,33 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Item on floor|description=Sent when a player uses an item on another item thats on the floor.|opcode=25|type=Fixed|length=10|revision=317}} -== Item on Floor== - -=== Description === - -This packet is sent when a player uses an item on another item thats on the floor. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The interface ID. -|- -| Unsigned [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The item being used ID. -|- -| [[Data Types#Standard data types|Short]] -| The floor items ID. -|- -| Unsigned [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The Y coordinate of the item. -|- -| Unsigned [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The items slot ID. -|- -| [[Data Types#Standard data types|Short]] -| The X coordinate of the item. -|- -|} \ No newline at end of file diff --git a/317-Item-on-item.mediawiki b/317-Item-on-item.mediawiki deleted file mode 100644 index b16f6bd..0000000 --- a/317-Item-on-item.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Item on item|description=Sent when a player uses an item on another item.|opcode=53|type=Fixed|length=4|revision=317}} -== Item on Item == - -=== Description === - -This packet is sent when a player uses an item on another item. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] -| The item being used on's slot. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The item being used's slot. -|- -|} \ No newline at end of file diff --git a/317-Item-on-object.mediawiki b/317-Item-on-object.mediawiki deleted file mode 100644 index 8eb013e..0000000 --- a/317-Item-on-object.mediawiki +++ /dev/null @@ -1,33 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Item on object|description=Sent when a player uses an item on an objet.|opcode=192|type=Fixed|length=12|revision=317}} -== Item on Object == - -=== Description === - -This packet is sent when a player uses an item on object. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The frame ID. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The object ID. -|- -| [[Data Types#Big Endian|Big Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The objects Y coordinate. -|- -| [[Data Types#Big Endian|Big Endian]] [[Data Types#Standard data types|Short]] -| The items slot ID. -|- -| [[Data Types#Big Endian|Big Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The objects X coordinate. -|- -| [[Data Types#Standard data types|Short]] -| The item ID. -|- -|} \ No newline at end of file diff --git a/317-Item-on-player.mediawiki b/317-Item-on-player.mediawiki deleted file mode 100644 index 2e2cb40..0000000 --- a/317-Item-on-player.mediawiki +++ /dev/null @@ -1,27 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Item on player|description=Sent when a player uses an item on another player.|opcode=14|type=Fixed|length=8|revision=317}} -== Item on Player == - -=== Description === - -This packet is sent when a player uses an item on another player. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The frame ID. -|- -| [[Data Types#Standard data types|Short]] -| The other players ID. -|- -| [[Data Types#Standard data types|Short]] -| The item ID. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The items slot ID. -|- -|} \ No newline at end of file diff --git a/317-Light-item.mediawiki b/317-Light-item.mediawiki deleted file mode 100644 index 124ed05..0000000 --- a/317-Light-item.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Light item|description=Sent when a player attempts to light logs on fire.|opcode=79|type=Fixed|length=6|revision=317}} -== Light Item == - -=== Description === - -This packet is sent when a player attempts to light logs on fire. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] -| The items Y coordinate. -|- -| Unsigned [[Data Types#Standard data types|Short]] -| The item ID. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The items X coordinate. -|- -|} \ No newline at end of file diff --git a/317-Load-map-region.mediawiki b/317-Load-map-region.mediawiki deleted file mode 100644 index ab79621..0000000 --- a/317-Load-map-region.mediawiki +++ /dev/null @@ -1,39 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Load map region|description=Makes the client load the specified map region.|opcode=73|type=Fixed|length=4|revision=317}} -== Load Map Region == - -=== Description === - -Makes the client load the specified map region. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| Region X coordinate (absolute X / 8) plus 6. -|- -| [[Data Types#Standard data types|Short]] -| Region Y coordinate (absolute Y / 8) plus 6. -|- -|} - -=== Other Information === -There are various loops/arrays within the map region loading functionality of the client which have been misunderstood by many. -{| border=2 -! Loop type -! Description -|- -| 104 x 104 -| Maximum size of the client's load area -|- -| 8 x 8 -| Load blocks to speed up loading NPCs, Items and Objects -|- -| 13 x 13 -| Number of load blocks to load -|- -|} \ No newline at end of file diff --git a/317-Loading-finished.mediawiki b/317-Loading-finished.mediawiki deleted file mode 100644 index c5eba3a..0000000 --- a/317-Loading-finished.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Loading finished|description=Sent when the player is finished loading a map region|opcode=121|type=Fixed|length=0|revision=317}} -== Loading Finished == - -=== Description === - -This packet is sent when a player is finished loading a new map region. \ No newline at end of file diff --git a/317-Logout.mediawiki b/317-Logout.mediawiki deleted file mode 100644 index 4d2d043..0000000 --- a/317-Logout.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Logout|description=Forces the client to logout.|opcode=109|type=Fixed|length=0|revision=317}} -== Logout == - -=== Description === - -Forces the client to logout cleanly and return to the login screen, without attempting a reconnection. \ No newline at end of file diff --git a/317-Mage-NPC.mediawiki b/317-Mage-NPC.mediawiki deleted file mode 100644 index 69ed040..0000000 --- a/317-Mage-NPC.mediawiki +++ /dev/null @@ -1,17 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Mage NPC|description=Sent when a player attempts to use a magic attack on an NPC.|opcode=131|type=Fixed|length=4|revision=317}} -== Mage NPC == - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Non Standard Data Types|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| ? -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| ? -|- -|} \ No newline at end of file diff --git a/317-Magic-on-items.mediawiki b/317-Magic-on-items.mediawiki deleted file mode 100644 index 14a9451..0000000 --- a/317-Magic-on-items.mediawiki +++ /dev/null @@ -1,27 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Magic on items|description=Sent when a player casts magic on the items in their inventory.|opcode=237|type=Fixed|length=8|revision=317}} -== Magic on Items == - -=== Description === - -This packet is sent when a player casts magic (i.e. High Level Alchemy) on the items in their inventory. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] -| The items slot ID. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The item ID. -|- -| [[Data Types#Standard data types|Short]] -| The frame ID. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The spell ID. -|- -|} \ No newline at end of file diff --git a/317-Magic-on-player.mediawiki b/317-Magic-on-player.mediawiki deleted file mode 100644 index 3b2c3ca..0000000 --- a/317-Magic-on-player.mediawiki +++ /dev/null @@ -1,20 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] - -{{packet|name=Magic on player|description=This packet is send when a player attempts to cast magic on another|opcode=249|type=Fixed|length=4|revision=317}} -== Magic on Player == -=== Description === -This packet is sent when the player attempts to cast magic onto another. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The player index. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Byte Order|Little]] -| The spell ID. -|- -|} \ No newline at end of file diff --git a/317-Minimap-State.mediawiki b/317-Minimap-State.mediawiki deleted file mode 100644 index 944c513..0000000 --- a/317-Minimap-State.mediawiki +++ /dev/null @@ -1,23 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Minimap State|description=Sets the state of the clients minimap.|opcode=99|type=Fixed|length=1|revision=317}} -== Minimap State == - -=== Description === - -This packet sets the Minimaps state - -'''States:''' -* 0 - '''Active''': Clickable and viewable -* 1 - '''Locked''': viewable but not clickable -* 2 - '''Blacked-out''': Minimap is replaced with black background - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#byte|byte]] -| The state. -|- -|} \ No newline at end of file diff --git a/317-Move-item.mediawiki b/317-Move-item.mediawiki deleted file mode 100644 index ad916a1..0000000 --- a/317-Move-item.mediawiki +++ /dev/null @@ -1,27 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Move item|description=Sent when the player moves an item from one slot to another.|opcode=214|type=Fixed|length=7|revision=317}} -== Move Item == - -=== Description === - -This packet is sent when a player moves an item from one slot to another. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The frame ID. -|- -| [[Data Types#Standard data types|Byte]] -| Insert mode. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| Starting slot. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| New slot. -|- -|} \ No newline at end of file diff --git a/317-Music.mediawiki b/317-Music.mediawiki deleted file mode 100644 index 986d5c6..0000000 --- a/317-Music.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Audio|description=Sets the audio to play.|opcode=174|type=Fixed|length=N/A|revision=317}} -== Audio == - -=== Description === - -Sets what audio to play at a certain moment. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Word|Word]] -| The sound id. -|- -| [[Data Types#Byte|Byte]] -| The volume. -|- -| [[Data Types#Word|Word]] -| The delay. -|- -|} \ No newline at end of file diff --git a/317-NPC-action-1.mediawiki b/317-NPC-action-1.mediawiki deleted file mode 100644 index 08d111a..0000000 --- a/317-NPC-action-1.mediawiki +++ /dev/null @@ -1,17 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=NPC action 1|description=Sent when a player clicks the first option of an NPC.|opcode=155|type=Fixed|length=2|revision=317}} -== NPC Action 1 == - -=== Description === - -This packet is sent when a player clicks the first option of an NPC. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The NPC index. -|} \ No newline at end of file diff --git a/317-NPC-action-2.mediawiki b/317-NPC-action-2.mediawiki deleted file mode 100644 index 4109d4b..0000000 --- a/317-NPC-action-2.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=NPC action 2|description=Sent when a player clicks the second action of an NPC.|opcode=17|type=Fixed|length=2|revision=317}} -== NPC Action 2 == - -=== Description === - -This packet is sent when a player clicks the second action of an NPC. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The NPC index. -|- -|} \ No newline at end of file diff --git a/317-NPC-action-3.mediawiki b/317-NPC-action-3.mediawiki deleted file mode 100644 index feae39e..0000000 --- a/317-NPC-action-3.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=NPC action 3|description=Sent when a player clicks the third option of an NPC.|opcode=21|type=Fixed|length=2|revision=317}} -== NPC Action 3 == - -=== Description === - -This packet is sent when a player clicks the third option of an NPC. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| Unsigned [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The NPC index. -|- -|} \ No newline at end of file diff --git a/317-NPC-head-on-interface.mediawiki b/317-NPC-head-on-interface.mediawiki deleted file mode 100644 index a635214..0000000 --- a/317-NPC-head-on-interface.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=NPC head on interface|description=Places the head of an NPC on an interface|opcode=75|type=Fixed|length=4|revision=317}} -== NPC head on interface == - -=== Description === - -Places the head of an NPC on an interface - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The NPC ID -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The 'slot' ID for where you wish to place the head -|- -|} \ No newline at end of file diff --git a/317-Object-action-1.mediawiki b/317-Object-action-1.mediawiki deleted file mode 100644 index c3e936e..0000000 --- a/317-Object-action-1.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Object action 1|description=Sent when the player clicks the first option of an object.|opcode=132|type=Fixed|length=6|revision=317}} -== Object Action 1 == - -=== Description === - -This packet is sent when a player clicks the first option of an object, such as "Cut" for trees or "Mine" for rocks. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The objects X coordinate. -|- -| [[Data Types#Standard data types|Short]] -| The objects ID. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The objects Y coordinate. -|- -|} \ No newline at end of file diff --git a/317-Object-action-2.mediawiki b/317-Object-action-2.mediawiki deleted file mode 100644 index b7784cd..0000000 --- a/317-Object-action-2.mediawiki +++ /dev/null @@ -1,23 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Object action 2|description=Sent when the player clicks the second option available for an an object.|opcode=252|type=Fixed|length=6|revision=317}} -== Object action 2 == - -=== Description === - -This packet is sent when a player clicks the second option available of an object, such as "Prospect" for rocks. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The objects ID. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The objects Y coordinate. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The objects X coordinate. -|} \ No newline at end of file diff --git a/317-Object-action-3.mediawiki b/317-Object-action-3.mediawiki deleted file mode 100644 index 0d0f120..0000000 --- a/317-Object-action-3.mediawiki +++ /dev/null @@ -1,23 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Object action 3|description=Sent when a player clicks the third action available for an object.|opcode=70|type=Fixed|length=6|revision=317}} -== Object Action 3 == - -=== Description === - -This packet is sent when a player clicks the third action available for an object. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The X coordinate of the object. -|- -| [[Data Types#Standard data types|Short]] -| The Y coordinate of the object. -|- -| [[Data Types#Big Endian|Big Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The object ID. -|} \ No newline at end of file diff --git a/317-Object-removal.mediawiki b/317-Object-removal.mediawiki deleted file mode 100644 index 54f0a2c..0000000 --- a/317-Object-removal.mediawiki +++ /dev/null @@ -1,20 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -== Object removal == - -=== Description === - -This packet requests the client to remove an object. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| Negated [[Data Types#byte|byte]] -| object type << 2 + object rotation & 3 -|- -| [[Data Types#byte|byte]] -| 0 -|- -|} \ No newline at end of file diff --git a/317-Object-spawn.mediawiki b/317-Object-spawn.mediawiki deleted file mode 100644 index 837ec05..0000000 --- a/317-Object-spawn.mediawiki +++ /dev/null @@ -1,23 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -== Object spawn == - -=== Description === - -This packet requests the client to spawn an object. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| subtrahend [[Data Types#byte|byte]] -| 0 -|- -| Little endian [[Data Types#byte|byte]] -| ObjectID -|- -| subtrahend [[Data Types#byte|byte]] -| object type << 2 + object rotation & 3 -|- -|} \ No newline at end of file diff --git a/317-Open-chatbox-interface.mediawiki b/317-Open-chatbox-interface.mediawiki deleted file mode 100644 index 4251957..0000000 --- a/317-Open-chatbox-interface.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Open chatbox interface|description=Displays an interface over the chatbox.|opcode=218|type=Fixed|length=2|revision=317}} -== Open chatbox interface == - -=== Description === - -Sending this packet to the client will cause the client to open an interface over the chatbox. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard data types|Special A]] -| Interface ID. -|- -|} \ No newline at end of file diff --git a/317-Open-welcome-screen.mediawiki b/317-Open-welcome-screen.mediawiki deleted file mode 100644 index 21e7baa..0000000 --- a/317-Open-welcome-screen.mediawiki +++ /dev/null @@ -1,30 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Open welcome screen|description=Displays the welcome screen.|opcode=176|type=Fixed|length=10|revision=317}} -== Open Welcome Screen == - -=== Description === - -This packet displays the welcome screen. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data type|Byte]] [[Data Types#Non Standard data types|Special C]] -| Days since last recovery change (200 for not yet set, 201 for members server). -|- -| [[Data Types#Standard data type|Short]] [[Data Types#Non Standard data types|Special A]] -| Number of unread messages. -|- -| [[Data Types#Standard data types|Byte]] -| Member warning (1 for member, 0 for non-member). -|- -| [[Data Types#Non Standard data types|Middle-Endian Big Integer]] -| Last logged IP. -|- -| [[Data Types#Standard data types|Short]] -| Last logged successful log-n. -|- -|} \ No newline at end of file diff --git a/317-Pickup-ground-item.mediawiki b/317-Pickup-ground-item.mediawiki deleted file mode 100644 index 0e27e6f..0000000 --- a/317-Pickup-ground-item.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Pickup ground item|description=Sent when the player picks up an item from the ground.|opcode=236|type=Fixed|length=6|revision=317}} -== Pickup Ground Item == - -=== Description === - -This packet is sent when a player clicks the "Pick Up" option on an item when its on the ground. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The Y coordinate of the item. -|- -| [[Data Types#Standard data types|Short]] -| The item ID. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The X coordinate of the item. -|- -|} \ No newline at end of file diff --git a/317-Play-song.mediawiki b/317-Play-song.mediawiki deleted file mode 100644 index 1d315bb..0000000 --- a/317-Play-song.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Play song|description=Starts playing a song.|opcode=74|type=Fixed|length=2|revision=317}} -== Play song == - -=== Description === - -Sending this packet to the client will cause the client to start playing a song. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The song ID. -|- -|} \ No newline at end of file diff --git a/317-Player-Option.mediawiki b/317-Player-Option.mediawiki deleted file mode 100644 index dbb7247..0000000 --- a/317-Player-Option.mediawiki +++ /dev/null @@ -1,20 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Player Option|description=Adds an option to a player's right click context menu.|opcode=104|type=Variable|length=N/A|revision=317}} -== Player Option == - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Byte]] C -| The option position. -|- -| [[Data Types#Standard data types|Byte]] A -| Flag -|- -| [[Data Types#Standard data types|String]] -| Action text. -|- -|} \ No newline at end of file diff --git a/317-Player-command.mediawiki b/317-Player-command.mediawiki deleted file mode 100644 index 06d7111..0000000 --- a/317-Player-command.mediawiki +++ /dev/null @@ -1,17 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Player command|description=Sent when a player types a command in the chat box.|opcode=103|type=Variable Byte|length=N/A|revision=317}} -== Player Command == - -=== Description === - -This packet is sent when a player types a message with the prefix '::', the message is then sent to the server and an appropriate action is taken (e.g. spawning an item). - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[RS String|RS String]] -| The command name and parameters. -|} \ No newline at end of file diff --git a/317-Player-head-to-interface.mediawiki b/317-Player-head-to-interface.mediawiki deleted file mode 100644 index 859c750..0000000 --- a/317-Player-head-to-interface.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Send head model to interface.|description=Sends the player head model to an interface.|opcode=185|type=Fixed|length=2|revision=317}} -== Send player head model to an interface == - -=== Description === - -This packet sends a players head to an interface - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Little Endian Short A]] -| The interface ID. -|- -|} \ No newline at end of file diff --git a/317-Privacy-options.mediawiki b/317-Privacy-options.mediawiki deleted file mode 100644 index de0e199..0000000 --- a/317-Privacy-options.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Privacy options|description=Sent when a player changes their privacy options.|opcode=95|type=Fixed|length=3|revision=317}} -== Privacy Options == - -=== Description === - -This packet is sent when a player changes their privacy options (i.e. public chat). - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| Unsigned [[Data Types#Standard data types|Byte]] -| The public chat options. -|- -| Unsigned [[Data Types#Standard data types|Byte]] -| The private chat options. -|- -| Unsigned [[Data Types#Standard data types|Byte]] -| The trade/compete options. -|- -|} \ No newline at end of file diff --git a/317-Protocol.mediawiki b/317-Protocol.mediawiki deleted file mode 100644 index cbffca2..0000000 --- a/317-Protocol.mediawiki +++ /dev/null @@ -1,1267 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -[[Category RS2]] -== '''Packet structure''' == -When the client sends a packet to the server, the first byte encapsulates its [http://en.wikipedia.org/wiki/Opcode opcode]. This specific opcode is encrypted with a value generated by the [http://en.wikipedia.org/wiki/ISAAC_(cipher) ISAAC] [http://en.wikipedia.org/wiki/Pseudorandom_number_generator PRNG] seeded with a dynamically server generated key during the login block. The server decrypts it and associates the opcode to the packet's respective predefined size. If the packet does not contain a fixed size, the opcode will be followed by either a byte or a word - varying per packet - for its proper size. This is then followed by the [http://en.wikipedia.org/wiki/Payload_(software) payload]. - -A list of the 317 Packets may be found [http://rswiki.moparisthebest.com/index.php?title=Category:Packet:317 here]. - -== '''Login Protocol Overview''' == -Every connection to the main 'gateway' server sends a single byte of data, mostly well known as the connection type. The connection type tells the main server which type of connection you wish to initiate. The old engine list consists of: -* Login request - connection type 14 -* Update - connection type 15 -* New connection login - connection type 16 -* Reconnecting login - connection type 18 - -The connection type we will cover in the following paragraphs is the login connection type, 14. After the login handshake initiating connection type, the client writes hash derived from the logging in player's username. This is believed to help select the appropriate login server. On successful handshake, the server sends back 8 ignored bytes. - -
long encodedUsername = TextUtils.encodeAsBase37Integer(username);
-int usernameHash = (int) (encodedUsername >> 16 & 31L);
-out.offset = 0;
-out.writeByte(14); // Initiate connection type
-out.writeByte(usernameHash);
-in.queueBytes(2, out.payload);
-for (int j = 0; j < 8; j++) in.read();
- -At this point, the client reads in one byte, called the status code. The status code 0 is expected to start the login protocol correctly. If the status code is 0, the client reads a long, dubbed by many as the server session key. This is used to help generate a unique seed for the client session's packet opcode masking. The client then stores two ints that are the upper and lower ints of the client session key, which has the same purpose as the server's key. The client then starts writing the login block, which is RSA encrypted. - -The login block starts with the byte 10, which is considered a magic number. Following it is the client session key and server session key longs. After the session keys, the session's UID (unique identifier or user identifier) is written to the block. This is used to distinguish between multiple sessions. Trailing behind the UID comes the client's username and password written as modified C-strings that are rather terminated with a 10 byte than a NUL byte. This block is then RSA encrypted and stored for later use. - -Now starts the login request packet. It starts off with a flag telling the server whether or not the client is reconnecting or connecting for the first time. The byte is 18 or 16, respectively. [NOW CLASSIFIED AS A CONNECTION TYPE] Following is the size of the rest of the login response packet, including the login block that trails at the end, to tip the server how much data it should expect. Later comes the magic number byte 255, and right behind it the client revision short. The packet is just about crafted completely. A flag byte that represents if the client is running in low memory or high memory modes is sent, and after the 9 CRC32 checksums of the file system 0 basic archives (this includes versionlist, media, config, etc.). To top it off, the RSA encrypted login block is appended to the end and the packet is sent to the server. - -The ISAAC ciphers are seeded for packet opcode masking after adding 50 to each int of the session keys, and the status code is reread. This finishes the login protocol. - -== '''Login Protocol Breakdown''' == -The login is comprised of four stages in which the client and server switch in regards to which one is reading and which one is writing. -
-===Variables:=== -The login process has a lot of variable data, compiled here is a list of the variables and their different values. -====Name Hash==== -A hash of the player name, thought to be used to select an appropriate login server. This has no use in current private servers. - -====Server Session Key==== -The server-session-key is one of two ciphers used to encrypt the game protocol, using the ISAAC algorithms. -
-===="Data File Version"==== - -The CRC checks for the cache files. -
- -====User ID==== -A client-side randomly generated integer. This could be used in reassigning sessions to players that have lost connection. It is stored as a packed integer in a file named 'uid.dat' in the cache directory. -
- -====Username==== -The username of the player, used to identify their account. -
-====Password==== -The password of the player account, used so only they can log into their account. -
-====Client Session Key==== -The client-session-key is one of two ciphers used to encrypt the game protocol, using the ISAAC algorithms. -
-====Connect Status==== -The status of the connection. -{|border=2 -! Value -! Status -|- -| 16 -| Signifies that the connection is new. -|- -| 18 -| Signifies that the session is reconnecting a previously lost connection. -|- -|} - -====Size==== -The size of the unencrypted login packet, used to determine how many bytes need to be read from the stream by the server. -
-====Client Version==== -The memory-version of the game client. -{|border=2 -! Value -! Status -|- -| 0 -| Signifies the client is a low-memory client. -|- -| 1 -| Signifies that the client is a high-memory client. -|- -|} - -====CRC Values==== -9 4-byte values, Each containing the CRC of their respective cache files. Used by the server to verify client is up to date. -
- -====Player Status==== -The in-game player status - player, player moderator, or administrator. -
-{|border=2 -! Value -! Status -|- -| 0 -| Signifies that this player is a normal player. -|- -| 1 -| Signifies that this player is a player moderator. -|- -| 2 -| Signifies that this player is an administrator. -|- -|} - -====Flagged==== -If set to 1, information about mouse movements etc. are sent to the server. Suspected bot accounts are flagged. -
-====Response Codes==== -At the beginning and 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. -
-{| border=2 -! 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. Please 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 [[#Regarding response code 15|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 sends byte 18 as it's [[#Connect Status|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 poor connection you've noticed that your chat stays there upon a reconnect, and this is exactly why. - -When you implement response code 15 though, you do NOT need to send the "player status" or the "flagged" bytes. - -===Login Process:=== -====Stage 1: Client -> Server==== -{| border=2 -|- -! Data Type -! Value -|- -| ubyte -| 14 -|- -| ubyte -| "name hash" -|- -|} -
- -====Stage 2: Server -> Client==== -{| border=2 -|- -! Data Type -! Value -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| 0 -|- -| byte -| "response code" -|- -| [[QWord|long]] -| "server session key" -|- -|} -
- -====Stage 3: Client -> Server==== -{| border=2 -|- -! Data Type -! Value -|- -| byte -| "connect status" -|- -| byte -| "size" -|- -| byte -| 255 -|- -| [[Word|short]] -| 317 -|- -| byte -| "client version" -|- -| [[DWord|int]] -| "crc values"[0] -|- -| [[DWord|int]] -| "crc values"[1] -|- -| [[DWord|int]] -| "crc values"[2] -|- -| [[DWord|int]] -| "crc values"[3] -|- -| [[DWord|int]] -| "crc values"[4] -|- -| [[DWord|int]] -| "crc values"[5] -|- -| [[DWord|int]] -| "crc values"[6] -|- -| [[DWord|int]] -| "crc values"[7] -|- -| [[DWord|int]] -| "crc values"[8] -|- -| byte -| 10 -|- -| [[QWord|long]] -| "client session key" -|- -| [[QWord|long]] -| "server session key" -|- -| [[DWord|int]] -| "user id" -|- -| [[RS String|RS String]] -| "username" -|- -| [[RS String|RS String]] -| "password" -|- -|} -
- -====Stage 4: Server -> Client==== -{| border=2 -|- -! Data Type -! Value -|- -| byte -| "response code" -|- -| byte -| "player status" -|- -| byte -| "flagged" -|- -|} -
- -== '''Player Updating''' == -The player updating process consists of 4 parts: -* a) Our player movement updates -* b) Other player movement updates -* c) Player list updating -* c.a) Apperance updating -* c.b) Location updating -* d) Player update block flag-based updates - -'''Our player movement updates''' - -The client begins by reading 1 bit. This bit tells the client whether or not it is currently updating -'our player', or the player the client is controlling. If it's not updating our player, it exits and goes onto step b. -If it is, it then reads 2 bits. The value is called the movement update type. There are 4 recognized movement update types: - - -* Type 0 basically tells the client there is nothing to update for our player, just add its index to the local updating list. - -* Type 1 tells the client you moved in one direction. The client reads 3 bits, which represents the direction you moved in, and then 1 bit, which states whether further update is required. If so, it adds it to the updating list. This is used in walking. - -* Type 2 functions in much of the same way as its previous, only this time it reads two 3 bit values. The first represents the player's last direction, and the second it's current direction. Trailing behind it is also the 1 bit 'update required' flag as type 1. This is used in running. - -* Type 3 on the other hand is different. It reads in 2 bits which represents our player's plane, or its level of height, in the game world. - - -Only 0-3 inclusive are appropriate planes supported by the client. It then reads 1 bit, which describes whether or not to clear the awaiting-waypoint queue, basically to stop client from further queued stepping, such as used in teleporting. -After this, it reads the 'update required' bit, and checks to see if further update is required. Directly after, it reads two 7 bit quantities, representing the new relative X and relative Y coordinates of our player to our current map region's origin. It then sets our players position to the plane, x, and y positions as told to. - - - -'''Other player movement updates''' - -The client begins by reading an 8 bit value telling the client how many players there are to update. It then enters a loop -for each player there is to update. - -Inside this loop, the client reads 1 bit. This is the movement update required flag. If the flag is 0, it sets the current updating player's last update cycle time to the current game logic loop cycle time, and adds the player to the local player list. If the flag is not 0, it then reads the movement update type, which is a 2 bit quantity. The following known types are: - - -* 0, the client updates the current player's last update cycle time, adds the current player to the local player list, and adds it to the updating list. - -* 1, the client updates the current player's last update cycle time and adds the current player to the local player list as well, but also reads in 3 bit quantity. This represents the current player's direction it walked to. It then reads the a 1 bit value that specifies whether or not to add the player to the updating list. - -* 2, the client does the exact same thing as the type 2 update, except it reads in two of the 3 bit quantities. The first represents the current player's last direction, and the second its current direction running. - -* 3, the client queues to remove the player from the list of players to be updated but it is possible such as in the instances for when players teleport to add them back to the list of players to be updated during the populate update. - - - -'''Player list updating''' - -The next step in the player updating procedure is the player list updating, or where the client recieves data on every player in its local list, such as appearance and location relative to ours. The client loops through a process for each player in the updating. - -The client reads an 11 bit quantity from the buffer, which is the next player in the updated list to be informed about. The clietn then checks if it has a cached buffer for that player's updating, and if it does, it updates the player appearance. - - - -'''Appearance updating''' - -Appearance updating starts off by first reading an unsigned byte that represents the current player's gender. Then it reads another unsigned byte that represents the player's over-head icon id. This is used with prayer icons above heads. Next, a loop occurs 12 times to read equipment data. - -In the loop, the client reads an unsigned byte that is the equipment slot's item id high byte. If it is 0, the player's equpment slot has no item. If it is not 0, another unsigned byte is read the merged with the previous to create the equipment's item id. If the id is 65535 (written as a -1 signed short), then the player's appearance is that of an NPC. The client reads in an unsigned short representing the NPC's id and sets the player's definition to that NPC's. - -After the equipment loop, it loops 5 times, once for each type of coloured body part. In each loop, the client reads an unsigned short and assigns it as the color of the current loop idx (which represents the body part). - - -Finally, after the color loop, the client reads 7 unsigned shorts representing animation indices; the animations belong to: -* Standing still -* Turning while standing -* Walking -* Turning around (backwards) -* Turning a quarter-way clockwise -* Turning a quarter-way counter clockwise -* Running - - - -After these animation indices are read, a long representing the player's name is read, an unsigned byte representing the combat level, and an unsigned short representing -the players skill level (for things where players arent ranked by levels, such as where it states ' (skill )' as an action menu text). - - - -'''Location updating''' - -After the appearance updating, the client starts to update that player's location relative to our player. The player is added to the local player list and it's last update cycle time. It then reads a 1 bit quantity that defines whether or not the client has a chunk in the player update block list. If it does, it adds it to the updating list. The next bit states whether or not to discard the awaiting-waypoint queue, such as when teleporting. It then reads to 5 bit values that determine the players relative X and Y coordinates to our player. The local player area is 16x16, so if the delta of the two coordinates is > 15, 32 is subtracted from it to signify the player is on the other side of ours. The client then sets the player's position, ending the player list updating process. - - - -'''Update block flag-based updating''' - -The following is what most people think of when they say 'update mask' and 'update flag'. This process of the updating procedure is very important. It begins with looping through ALL players in the local player update list, reading an unsigned byte which from now on will be called the update flag. All further updates are seen to be 'included' by comparing a bitwise mask to this flag. If the flag has the bits for 0x40 all on, this signifies that the flag was too large for a simple unsigned byte and reads in another unsigned byte, which it uses as the upper unsigned byte, therefore the update flag is an unsigned little-endian short. The client then passes off the data to a helper method which processes all updates this flag signifies. - - - -Inside this method, many different bitwise masks are compared to the player's flag, and if the mask is set, logic is performed. These masks are frequently called update masks. A list of player update masks are below: - -* '''0x400''' The 0x400 mask is used to update the player so they appear to be asynchronously animating and walking. This mask is often used for the [http://runescape.wikia.com/wiki/Agility Agility] skill. The data associated goes in order of: byte (type C) which is the first location's X coordinate value, byte (type S) which is the first location's Y coordinate value, byte (type S) which is the second location's X coordinate value, byte (type C) the second location's Y coordinate value. After the locations are written, there is a required movement speed which is written as a short which marks how fast to move from position 1 to position 2. Another short (type A) is written as the movement speed going from position 2 to position 1. Finally one byte is written to end the mask block, which marks the direction. - - -* '''0x100''' The 0x100 mask is responsible for player graphics updating. The data associated is a little-endian unsigned short which represents the graphics id, and an int which is the graphics delay. - - -* '''0x8''' Animations are handled by the 0x8 mask. The payload for this update is a little-endian unsigned short that is the animation id, and an unsigned inversed byte (Special C) which states the animation's delay. - - -* '''0x4''' The beloved 0x4 mask takes care of forced player text that is only displayed above the player's model. The only data associated with this is a jagex ASCII string with a terminator of 10. - - -* '''0x80''' Unlike the previous, the 0x80 mask handles normal player chat text. The client will read a little-endian unsigned short which holds chat text attributes. It holds the text color and chat effects. Next, the client reads an unsigned byte which states the player's priveleges (normal player, player moderator, moderator, staff) to give the chatter's name a crown. Right behind it trails an unsigned inversed byte that gives chat text length in bytes. Trailing afterwards is dictionary-compressed chat text. All chat text characters become indexes into a valid character table and are written as nibbles (4 bit quantities). - - -* '''0x1''' Updating the player's current interacting-entity is done via mask 0x1. The entity id is written as a little-endian unsigned short. - - -* '''0x10''' The 0x10 mask updates appearance of the player in exact same way as in updating player list. Only difference is that appearance is updated from a set-sized buffer filled from the current buffer. An unsigned inversed byte is read first which describes appearance buffer size, and the buffer is filled. - - -* '''0x2''' Facing coordinate updating is signified by the 0x2 mask. The player's facing-towards X and Y are set to read values; specifically, an unsigned lower-inverted short and little-endian unsigned short, respectively. - - -* '''0x20''' Notifying client's of a player's health is done via the 0x20 mask. The hitpoint damage done to the player is sent as an unsigned byte, followed by the hit type as a positive inverted byte. The player's current and max health are read as an unsigned inverted byte and unsigned byte, respectively. - - -* '''0x200''' The 0x200 mask acts in the same way as the 0x20 mask and is most likely associated with special attacks from weapons that have the ability to hit twice at the same time. Hitpoint damage is an unsigned byte, the hit type an unsigned inverted byte, and the current and maximum health being an unsigned byte and unsigned inverted byte, respectively. - - -After the client processes every single player in the update player list, it ends player updating. - -==Game Protocol== -The game protocol is the in-game communication of player actions between the server and client. -
-===Server -> Client Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 1 -| FIXED -| 0 -| [[317 Animation reset|Animation reset]] -| Resets all animations in the immediate area. -|- -| 4 -| FIXED -| 6 -| [[317 Draw graphic at position|Draw graphic at position]] -| Draw a graphic at a given x/y position after a delay. -|- -| 8 -| FIXED -| 4 -| [[317 Set interface model|Set interface model]] -| Draw a given model on a given interface. -|- -| 24 -| FIXED -| 1 -| [[317 Flash sidebar|Flash sidebar]] -| Causes a sidebar icon to start flashing. -|- -| 27 -| FIXED -| 0 -| [[317 Input amount|Input amount]] -| Displays the "Input amount" interface. -|- -| 34 -| VARIABLE_SHORT -| N/A -| [[317 Draw items on interface|Draw items on interface]] -| Draw a collection of items on an interface. -|- -| 35 -| FIXED -| 4 -| [[317 Camera shake|Camera shake]] -| Causes the camera to shake. -|- -| 36 -| FIXED -| 3 -| [[317 Force client setting|Force client setting]] -| Forcefully changes a client's setting's value. Also changes the default value for that setting. -|- -| 44 -| FIXED -| 5 -| [[317 Send ground item|Send ground item]] -| Place an item stack on the ground. -|- -| 50 -| FIXED -| 9 -| [[317 Send add friend|Send add friend]] -| Sends a friend to the friend list. -|- -| 53 -| VARIABLE_SHORT -| N/A -| [[317 Draw items on interface|Draw items on interface]] -| Draw a collection of items on an interface. -|- -| 60 -| VARIABLE_SHORT -| N/A -| [[317 Begin processing position related packets|Begin processing position related packets]] -| Begin processing position related packets. -|- -| 61 -| FIXED -| 1 -| [[317 Show multi-combat|Show multi-combat]] -| Shows the player that they are in a multi-combat zone. -|- -| 64 -| FIXED -| 2 -| [[317 Delete ground item|Delete ground item]] -| Delete ground item. -|- -| 65 -| VARIABLE_SHORT -| N/A -| [[317 NPC updating|NPC updating]] -| NPC updating -|- -| 68 -| FIXED -| 0 -| [[317 Reset button state|Reset button state]] -| Resets the button state for all buttons. -|- -| 70 -| FIXED -| 6 -| [[317 Interface offset|Interface offset]] -| Sets the offset for drawing of an interface. -|- -| 71 -| FIXED -| 3 -| [[317 Send sidebar interface|Send sidebar interface]] -| Assigns an interface to one of the tabs in the game sidebar. -|- -| 72 -| FIXED -| 2 -| [[317 Clear inventory|Clear inventory]] -| Clears an interface's inventory. -|- -| 73 -| FIXED -| 4 -| [[317 Load map region|Load map region]] -| Loads a new map region. -|- -| 74 -| FIXED -| 4 -| [[317 Play song|Play song]] -| Starts playing a song. -|- -| 75 -| FIXED -| 4 -| [[317 NPC head on interface|NPC head on interface]] -| Place the head of an NPC on an interface -|- -| 78 -| FIXED -| 0 -| [[317 Reset destination|Reset destination]] -| Resets the players' destination. -|- -| 79 -| FIXED -| 4 -| [[317 Scroll position|Scroll position]] -| Sets the scrollbar position of an interface. -|- -| 81 -| VARIABLE -| N/A -| [[317 Begin player updating|Begin player updating]] -| Begins the player update procedure -|- -| 84 -| FIXED -| 7 -| [[317 Edit ground item amount|Edit ground item amount]] -| Edit ground item amount -|- -| 85 -| FIXED -| 2 -| [[317 Set local player coordinates|Set local player coordinates]] -| Set local player coordinates -|- -| 87 -| FIXED -| 7 -| [[317 Force client setting|Force client setting]] -| Forcefully changes a client's setting's value. Also changes the default value for that setting. -|- -| 97 -| FIXED -| 2 -| [[317 Show interface|Show interface]] -| Displays a normal interface. -|- -| 99 -| FIXED -| 1 -| [[317 Minimap State|Minimap State]] -| Sets the mini map's state. -|- -| 101 -| FIXED -| 3 -| [[317 Object removal|Object removal]] -| Sends an object removal request to the client. -|- -| 104 -| VARIABLE -| N/A -| [[317 Player Option|Player Option]] -| Adds a player option to the right click menu of player(s). -|- -| 105 -| FIXED -| 4 -| [[317 Play sound in location|Play sound in location]] -| Play sound in location. -|- -| 106 -| FIXED -| 1 -| [[317 Interface over tab|Interface over tab]] -| Draws an interface over the tab area. -|- -| 107 -| FIXED -| 0 -| [[317 Reset camera|Reset camera]] -| Resets the camera position. -|- -| 109 -| FIXED -| 0 -| [[317 Logout|Logout]] -| Disconnects the client from the server. -|- -| 110 -| FIXED -| 1 -| [[317 Run energy|Run energy]] -| Sends the players run energy level. -|- -| 114 -| FIXED -| 2 -| [[317 System update|System update]] -| Sends how many seconds until a 'System Update.' -|- -| 117 -| N/A -| N/A -| [[317 Create Projectile|Create Projectile]] -| Creates a projectile. -|- -| 121 -| FIXED -| 4 -| [[317 Song Queue|Song Queue]] -| Queues a song to be played next. -|- -| 122 -| FIXED -| 4 -| [[317 Interface color|Interface color]] -| Changes the color of an interface. -|- -| 126 -| VARIABLE_SHORT -| N/A -| [[317 Set interface text|Set interface text]] -| Attaches text to an interface. -|- -| 134 -| FIXED -| 6 -| [[317 Skill level|Skill level]] -| Sends a skill level to the client. -|- -| 142 -| FIXED -| 2 -| [[317 Show inventory interface|Show inventory interface]] -| Show inventory interface -|- -| 147 -| FIXED -| 14 -| [[317 Player to object transformation|Player to object transformation]] -| Player to object transformation -|- -| 151 -| FIXED -| 5 -| [[317 Object spawn|Object spawn]] -| Sends an object spawn request to the client. -|- -| 156 -| FIXED -| 3 -| [[317 Remove non-specified ground items???|Remove non-specified ground items???]] -| Remove non-specified ground items?????? -|- -| 160 -| FIXED -| 4 -| [[317 Spawn an animated object???|Spawn an animated object???]] -| Shows an interface in the chat box?????? -|- -| 164 -| FIXED -| 2 -| [[317 Chat interface|Chat interface]] -| Shows an interface in the chat box. -|- -| 166 -| FIXED -| 6 -| [[317 Spin camera|Spin camera]] -| Spin camera -|- -| 171 -| FIXED -| 3 -| [[317 Hidden Interface|Hidden Interface]] -| Sets an interface to be hidden until hovered over. -|- -| 174 -| FIXED -| N/A -| [[317 Audio|Audio]] -| Sets what audio/sound is to play at a certain time. -|- -| 176 -| FIXED -| 10 -| [[317 Open welcome screen|Open welcome screen]] -| Displays the welcome screen. -|- -| 177 -| FIXED -| 6 -| [[317 Set cutscene camera|Set cutscene camera]] -| Set cutscene camera -|- -| 185 -| FIXED -| 2 -| [[317 Player head to interface|Player head to interface]] -| Sends the players head model to an interface -|- -| 187 -| FIXED -| 0 -| [[317 Enter name|Enter name]] -| Displays the "Enter name" interface. -|- -| 196 -| VARIABLE_BYTE -| N/A -| [[317 Send private message|Send private message]] -| Sends a private message to another player. -|- -| 200 -| FIXED -| 4 -| [[317 Interface animation|Interface animation]] -| Sets an interface's model animation. -|- -| 206 -| FIXED -| 3 -| [[317 Chat settings|Chat settings]] -| Sends the chat privacy settings. -|- -| 208 -| FIXED -| 2 -| [[317 Walkable interface|Walkable interface]] -| Displays an interface in walkable mode. -|- -| 214 -| VARIABLE_SHORT -| N/A -| [[317 Send add ignore|Send add ignore]] -| Sends a ignored player to the ignore list. -|- -| 215 -| FIXED -| 7 -| [[317 Spawn ground item for all except specified player|Spawn ground item for all except specified player]] -| Spawn ground item for all except specified player -|- -| 218 -| FIXED -| 2 -| [[317 Open chatbox interface|Open chatbox interface]] -| Opens an interface over the chatbox. -|- -| 219 -| FIXED -| 0 -| [[317 Clear screen|Clear screen]] -| Clears the screen of all open interfaces. -|- -| 221 -| FIXED -| 1 -| [[317 Friends list status|Friends list status]] -| Friends list load status. -|- -| 230 -| FIXED -| 8 -| [[317 Interface model rotation|Interface model rotation]] -| Sets an interface's model rotation and zoom -|- -| 240 -| FIXED -| 2 -| [[317 Weight|Weight]] -| Sends the players weight amount. -|- -| 241 -| VARIABLE_SHORT -| N/A -| [[317 Construct map region|Construct map region]] -| Constructs a dynamic map region using a palette of 8*8 tiles. -|- -| 246 -| FIXED -| 6 -| [[317 Interface item|Interface item]] -| Displays an item model inside an interface. -|- -| 248 -| FIXED -| 4 -| [[317 Inventory overlay|Inventory overlay]] -| Displays an interface over the sidebar area. -|- -| 249 -| FIXED -| 3 -| [[317 Initialize player|Initialize player]] -| Sends the player's membership status and their current index on the server's player list. -|- -| 253 -| VARIABLE_BYTE -| N/A -| [[317 Send message|Send message]] -| Sends a server message (e.g. 'Welcome to RuneScape') or trade/duel request. -|- -| 254 -| VARIABLE_BYTE -| N/A -| [[317 Display hint icon|Display hint icon]] -| Displays a hint icon. -|- -|} - -===Client -> Server Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 0 -| FIXED -| 0 -| [[317 Idle|Idle]] -| Sent when there are no actions being performed by the player for this cycle. -|- -| 3 -| FIXED -| 1 -| [[317 Focus change|Focus change]] -| Sent when the game client window goes out of focus. -|- -| 4 -| VARIABLE BYTE -| N/A -| [[317 Chat|Chat]] -| Sent when the player enters a chat message. -|- -| 14 -| FIXED -| 8 -| [[317 Item on player|Item on player]] -| Sent when a player uses an item on another player. -|- -| 16 -| FIXED -| 1 -| [[317 Alternate item option 2|Alternate item option 2]] -| Sent when a player uses an item. This is an alternate item option. -|- -| 17 -| FIXED -| 2 -| [[317 NPC action 2|NPC action 2]] -| Sent when a player clicks the second option of an NPC. -|- -| 18 -| FIXED -| 2 -| [[317 NPC action 4|NPC action 4]] -| Sent when a player clicks the fourth option of an NPC. -|- -| 21 -| FIXED -| 2 -| [[317 NPC action 3|NPC action 3]] -| Sent when a player clicks the third option of an NPC. -|- -| 25 -| FIXED -| 10 -| [[317 Item on floor|Item on floor]] -| Sent when a player uses an item on another item thats on the floor. -|- -| 39 -| FIXED -| 2 -| [[317 Trade answer|Trade answer]] -| Sent when a player answers a trade request from another player. -|- -| 40 -| FIXED -| N/A -| [[317 NPC Dialogue|NpcDialogue]] -| Sent when a player clicks the "Click here to continue" on any dialogue. -|- -| 41 -| FIXED -| 6 -| [[317 Equip item|Equip item]] -| Sent when a player equips an item. -|- -| 43 -| FIXED -| 6 -| [[317 Bank 10 items|Bank 10 items]] -| Sent when a player banks 10 of a certain item. -|- -| 53 -| FIXED -| 4 -| [[317 Item on item|Item on item]] -| Sent when a player uses an item with another item. -|- -| 70 -| FIXED -| 6 -| [[317 Object action 3|Object action 3]] -| Sent when the player clicks the third action available for an object. -|- -| 72 -| FIXED -| 2 -| [[317 Attack (NPC)|Attack (NPC)]] -| Sent when a player attacks an NPC. -|- -| 73 -| FIXED -| 2 -| [[317 Trade request|Trade request]] -| Sent when a player requests a trade with another player. -|- -| 74 -| FIXED -| 8 -| [[317 Remove ignore|Remove ignore]] -| Sent when a player removes a player from their ignore list. -|- -| 79 -| FIXED -| 6 -| [[317 Light item|Light item]] -| Sent when a player attempts to light logs on fire. -|- -| 86 -| FIXED -| 4 -| [[317 Camera movement|Camera movement]] -| Sent when the player moves the camera. -|- -| 87 -| FIXED -| 6 -| [[317 Drop item|Drop item]] -| Sent when a player wants to drop an item onto the ground. -|- -| 95 -| FIXED -| 3 -| [[317 Privacy options|Privacy options]] -| Sent when a player changes their privacy options (i.e. public chat). -|- -| 98 -| VARIABLE_BYTE -| N/A -| [[317 Walk on command|Walk on command]] -| Sent when the player should walk somewhere according to a certain action performed, such as clicking an object. -|- -| 101 -| FIXED -| 13 -| [[317 Design screen|Design screen]] -| Sent when a player is choosing their character design options. -|- -| 103 -| VARIABLE_BYTE -| N/A -| [[317 Player command|Player command]] -| Sent when the player enters a command in the chat box (e.g. "::command") -|- -| 117 -| FIXED -| 6 -| [[317 Bank 5 items|Bank 5 items]] -| Sent when a player banks 5 of a certain item. -|- -| 121 -| FIXED -| 0 -| [[317 Loading finished|Loading finished]] -| Sent when the client finishes loading a map region. -|- -| 122 -| FIXED -| 6 -| [[317 Item action 1|Item action 1]] -| Sent when the player clicks the first option of an item, such as "Bury" for bones. -|- -| 126 -| VARIABLE BYTE -| N/A -| [[317 Private message|Private message]] -| Sent when a player sends a private message to another player. -|- -| 129 -| FIXED -| 6 -| [[317 Bank all items|Bank all items]] -| Sent when a player banks all of a certain item that they have in their inventory. -|- -| 130 -| FIXED -| 0 -| [[317 Close window|Close window]] -| Sent when a player presses the close, exit or cancel button on an interface. -|- -| 131 -| FIXED -| 4 -| [[317 Mage NPC|Mage NPC]] -| Sent when a player uses magic attacks on an NPC. -|- -| 132 -| FIXED -| 6 -| [[317 Object action 1|Object action 1]] -| Sent when the player clicks the first option of an object, such as "Cut" for trees. -|- -| 133 -| FIXED -| 8 -| [[317 Add ignore|Add ignore]] -| Sent when a player adds a player to their ignore list. -|- -| 135 -| FIXED -| 6 -| [[317 Bank X items part-1|Bank X items part-1]] -| Sent when a player requests to bank an X amount of items. -|- -| 139 -| FIXED -| 2 -| [[317 Follow|Follow]] -| Sent when a player clicks the follow option on another player. -|- -| 145 -| FIXED -| 6 -| [[317 Unequip item|Unequip item]] -| Sent when a player unequips an item. -|- -| 155 -| FIXED -| 2 -| [[317 NPC action 1|NPC action 1]] -| Sent when a player clicks first option of an NPC, such as "Talk." -|- -| 164 -| VARIABLE_BYTE -| N/A -| [[317 Regular walk|Regular walk]] -| Sent when the player walks regularly. -|- -| 185 -| FIXED -| 2 -| [[317 Button click|Button click]] -| Sent when a player clicks an in-game button. -|- -| 188 -| FIXED -| 8 -| [[317 Add friend|Add friend]] -| Sent when a player adds a friend to their friend list. -|- -| 192 -| FIXED -| 12 -| [[317 Item on object|Item on object]] -| Sent when a a player uses an item on an object. -|- -| 202 -| FIXED -| 0 -| [[317 Idle logout|Idle logout]] -| Sent when the player has become idle and should be logged out. -|- -| 208 -| FIXED -| 4 -| [[317 Bank X items part-2|Bank X items part-2]] -| Sent when a player enters an X amount of items they want to bank. -|- -| 210 -| FIXED -| 0 -| [[317 Region change|Region change]] -| Sent when a player enters a new map region. -|- -| 214 -| FIXED -| 7 -| [[317 Move item|Move item]] -| Sent when a player moves an item from one slot to another. -|- -| 215 -| FIXED -| 8 -| [[317 Remove friend|Remove friend]] -| Sent when a player removes a friend from their friend list. -|- -| 218 -| FIXED -| 8 -| [[317 Report player|Report player]] -| Sent when a player reports another player. -|- -| 236 -| FIXED -| 6 -| [[317 Pickup ground item|Pickup ground item]] -| Sent when the player picks up an item from the ground. -|- -| 237 -| FIXED -| 8 -| [[317 Magic on items|Magic on items]] -| Sent when a player casts magic on the items in their inventory. -|- -| 241 -| FIXED -| 4 -| [[317 Mouse click|Mouse click]] -| Sent when the player clicks somewhere on the game screen. -|- -| 248 -| VARIABLE_BYTE -| N/A -| [[317 Map walk|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. -|- -| 249 -| FIXED -| 4 -| [[317 Magic on player|Magic on player]] -| Sent when a player attempts to cast magic on another player. -|- -| 252 -| FIXED -| 6 -| [[317 Object action 2|Object action 2]] -| Sent when the player clicks the second option available for an object. -|- -| 253 -| FIXED -| 6 -| [[317 Ground Item Action|Ground Item Action]] -| Sent when the player clicks the first option for a ground item (I.E. 'Light Logs') -|- -|} \ No newline at end of file diff --git a/317-Region-change.mediawiki b/317-Region-change.mediawiki deleted file mode 100644 index 028454f..0000000 --- a/317-Region-change.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Region change|description=Sent when a player enters a new map region.|opcode=210|type=Fixed|length=0|revision=317}} -== Region Change == - -=== Description === - -This packet is sent when a player enters a new map region. \ No newline at end of file diff --git a/317-Remove-friend.mediawiki b/317-Remove-friend.mediawiki deleted file mode 100644 index 80702fa..0000000 --- a/317-Remove-friend.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Remove friend|description=Sent when a player removes a friend from their friend list.|opcode=215|type=Fixed|length=8|revision=317}} -== Remove Friend == - -=== Description === - -This packet is sent when a player removes a friend from their friends list. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Long]] -| The other players ID. -|- -|} \ No newline at end of file diff --git a/317-Remove-ignore.mediawiki b/317-Remove-ignore.mediawiki deleted file mode 100644 index 5546ef6..0000000 --- a/317-Remove-ignore.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Remove ignore|description=Sent when a player removes another player from their ignore list.|opcode=74|type=Fixed|length=8|revision=317}} -== Remove Ignore == - -=== Description === - -This packet is sent when a player removes another player from their ignore list. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Long]] -| The other players ID. -|- -|} \ No newline at end of file diff --git a/317-Report-player.mediawiki b/317-Report-player.mediawiki deleted file mode 100644 index 9b9c1aa..0000000 --- a/317-Report-player.mediawiki +++ /dev/null @@ -1,23 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Report player|description=Sent when a player reports another player.|opcode=218|type=Fixed|length=8|revision=317}} -== Report Player == - -=== Description === - -This packet is sent when a player reports another player. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Long]] -| The players name as a long. -|- -| [[Data Types#Standard data types|Byte]] -| The rule that's being reported -|- -| [[Data Types#Standard data types|Byte]] -| Mute for 48 hours - Sent as either 1 or 0 for a boolean client-side -|} \ No newline at end of file diff --git a/317-Reset-button-state.mediawiki b/317-Reset-button-state.mediawiki deleted file mode 100644 index 853213e..0000000 --- a/317-Reset-button-state.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Reset setting states|description=Resets the states for all settings.|opcode=68|type=Fixed|length=0|revision=317}} -== Reset setting states == - -=== Description === - -This packet resets the states for all user settings (inc. buttons). \ No newline at end of file diff --git a/317-Reset-camera.mediawiki b/317-Reset-camera.mediawiki deleted file mode 100644 index f4a9f36..0000000 --- a/317-Reset-camera.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Reset camera|description=Resets the camera position.|opcode=107|type=Fixed|length=0|revision=317}} -== Reset Camera == - -=== Description === - -Resets the game's camera position to the client default. \ No newline at end of file diff --git a/317-Reset-destination.mediawiki b/317-Reset-destination.mediawiki deleted file mode 100644 index 5899d63..0000000 --- a/317-Reset-destination.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Reset destination|description=Resets the player's destination.|opcode=78|type=Fixed|length=0|revision=317}} -== Reset destination == - -=== Description === - -Sending the packet to the client will make the client reset the player's destination and effectively stop them from walking. \ No newline at end of file diff --git a/317-Run-energy.mediawiki b/317-Run-energy.mediawiki deleted file mode 100644 index 7edb0f8..0000000 --- a/317-Run-energy.mediawiki +++ /dev/null @@ -1,19 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Run energy|description=Sends the players run energy level.|opcode=110|type=Fixed|length=1|revision=317}} -== Run Energy == - -=== Description === - -Sends how much run energy the player currently has. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| The energy level. -|- -|} \ No newline at end of file diff --git a/317-Scroll-position.mediawiki b/317-Scroll-position.mediawiki deleted file mode 100644 index 27b526c..0000000 --- a/317-Scroll-position.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Scroll position|description=Sets the scrollbar position of an interface.|opcode=79|type=Fixed|length=4|revision=317}} -== Scroll Position == - -=== Description === - -This packet sets the scrollbar position of an interface. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The interface ID. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard data types|Special A]] -| The position of the scrollbar. -|- -|} \ No newline at end of file diff --git a/317-Send-Skill.mediawiki b/317-Send-Skill.mediawiki deleted file mode 100644 index 4c20b12..0000000 --- a/317-Send-Skill.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Send Skill|description=Sends a specific skill|opcode=154|type=Fixed|length=N/A|revision=317}} -== Send Skill == - -=== Description === - -This packet sends a specific skill. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| The skill you want to send. -|- -| [[Data Types#Standard data types|Int]] -| The experience of that skill. -|- -| [[Data Types#Standard data types|Byte]] -| The level of that skill. -|- -|} \ No newline at end of file diff --git a/317-Send-add-friend.mediawiki b/317-Send-add-friend.mediawiki deleted file mode 100644 index 0c39cac..0000000 --- a/317-Send-add-friend.mediawiki +++ /dev/null @@ -1,20 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -

Description

- -

Sends friend data to the client - -Attempts to update player node, if player isn't in the friends list and there is space, -the player is added to the friend list. -

-

Packet Structure

- - - - - - - -
Data type - Description -
Long The player name
Byte The world (10 = "online" for most clients, 0 = logged out)
\ No newline at end of file diff --git a/317-Send-add-ignore.mediawiki b/317-Send-add-ignore.mediawiki deleted file mode 100644 index db6916c..0000000 --- a/317-Send-add-ignore.mediawiki +++ /dev/null @@ -1,27 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Send ignored users|description=Sends a list of all the ignored player IDs|opcode=214|type=VARIABLE_SHORT|length=N/A|revision=317}} -== Send ignored users == - -=== Description === - -Sends the IDs of all the users that this player has in their ignore. - -This packet has a slightly different structure than the other packets. - - int entries = packetSize / 8; - for (int i = 0; i < entries; i++) { - ignoreList[i] = stream.readLong(); - } - -By looking at the rest of the 317 protocol, there doesn't seem to be a way to change the list dynamically. It seems as though that whenever the player decides to add or remove a player from their list, it must send all the values again. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard Data Types|Long]] -| The Unique Identifier of the player(s) (possibly determined by their username). -|- -|} \ No newline at end of file diff --git a/317-Send-message.mediawiki b/317-Send-message.mediawiki deleted file mode 100644 index d21282d..0000000 --- a/317-Send-message.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Send message|description=Sends a server message, trade or duel request to the client's chat panel.|opcode=253|type=Variable Byte|length=N/A|revision=317}} -== Send Message == - -=== Description === - -Sends a server side message (e.g. 'Welcome to RuneScape'), or trade/duel/challenge request. - -The format for sending such requests is: '[player name][request type]'. Where request type can be one of the following: ':duelreq:', ':chalreq:' or ':tradereq:'. An example for trading the player 'mopar' would be: 'mopar:tradereq:'. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[RS String|RS String]] -| The message. -|- -|} \ No newline at end of file diff --git a/317-Send-private-message.mediawiki b/317-Send-private-message.mediawiki deleted file mode 100644 index 0a7040c..0000000 --- a/317-Send-private-message.mediawiki +++ /dev/null @@ -1,37 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -== Send Private Message == -{| style="float:right;margin:1em; width:250px;" cellpadding="3" cellspacing="0" border="1" -|- -! scope="col" colspan="2" style="background-color:#3c5;" | Send Message -Sends Message to another user. -|- -! scope="row"| Opcode -| 196 -|- -! scope="row"| Type -| VARIABLE_SHORT -|- -! scope="row"| Length -| N/A -|} - -=== Description === - -Sending a private message to another user on the server. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Long]] -| Player name. -|- -| [[Data Types#Standard data types|Int]] -| ? -|- -| [[Data Types#Standard data types|Byte]] -| Player rights. -|- -|} \ No newline at end of file diff --git a/317-Send-sidebar-interface.mediawiki b/317-Send-sidebar-interface.mediawiki deleted file mode 100644 index c43c58d..0000000 --- a/317-Send-sidebar-interface.mediawiki +++ /dev/null @@ -1,58 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Send sidebar interface|description=Assigns an interface to on of the tabs in the game sidebar.|opcode=71|type=Fixed|length=3|revision=317}} -== Send Sidebar Interface == - -=== Description === - -This packet assigns an interface to one of the tabs in the game sidebar. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] -| The sidebar ID. -|- -| [[Data Types#Standard data types|Byte]] [[Data Types#Non Standard Data Types|Special A]] -| The interface ID. -|- -|} - -=== Values === -The below are the different values for this packet. -{| border=2 -! Value -! Icon -! Norm. ID -|- -| 0 || Attack type || 2433 -|- -| 1 || Stats || 3917 -|- -| 2 || Quests || 638 -|- -| 3 || Inventory || 3213 -|- -| 4 || Wearing || 1644 -|- -| 5 || Prayer || 5608 -|- -| 6 || Magic || 1151 -|- -| 7 || '''EMPTY''' -|- -| 8 || Friends list || 5065 -|- -| 9 || Ignore list || 5715 -|- -| 10 || Log out || 2449 -|- -| 11 || Settings || 4445 -|- -| 12 || Emotes || 147 -|- -| 13 || Music || 6299 -|- -|} \ No newline at end of file diff --git a/317-Set-interface-text.mediawiki b/317-Set-interface-text.mediawiki deleted file mode 100644 index f3b6f29..0000000 --- a/317-Set-interface-text.mediawiki +++ /dev/null @@ -1,25 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Set interface text|description=Sets the text for a specified interface|opcode=126|type=VARIABLE_SHORT|length=N/A|revision=317}} -== Set Interface Text == - -=== Description === - -Sets the text for the specific interface. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Non Standard Data Types|RS_String]] -| The new text for the interface -|- -| [[Data Types#Non Standard Data Types|Short A]] -| The interface id -|- -|} - -=== Information === -I do not recommend you use this to change the text color. -I refer you to [[317 Interface color|Interface Color]] for the proper way to do so. \ No newline at end of file diff --git a/317-Show-interface.mediawiki b/317-Show-interface.mediawiki deleted file mode 100644 index 6208cf7..0000000 --- a/317-Show-interface.mediawiki +++ /dev/null @@ -1,19 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Show interface|description=Displays a normal interface.|opcode=97|type=Fixed|length=2|revision=317}} -== Show Interface == - -=== Description === - -Displays a normal non-walkable [[Interfaces|interface]] with the given id. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Short]] -| The interface id. -|- -|} \ No newline at end of file diff --git a/317-Show-multi-combat.mediawiki b/317-Show-multi-combat.mediawiki deleted file mode 100644 index 68be78a..0000000 --- a/317-Show-multi-combat.mediawiki +++ /dev/null @@ -1,22 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Show multi-combat|description=Shows the player if they are in a multi-combat zone.|opcode=61|type=Fixed|length=1|revision=317}} -== Show multi-combat == - -=== Description === - -Sending this packet to the client will make the client show the player if they are in a multi-combat zone. - -'''States:''' -* 0 - Not in a multi-combat zone, no crossbones in bottom-right. -* 1 - In a multi-combat zone, crossbones in bottom-right. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#byte|byte]] -| The state. -|- -|} \ No newline at end of file diff --git a/317-Show-tab.mediawiki b/317-Show-tab.mediawiki deleted file mode 100644 index fdf75f0..0000000 --- a/317-Show-tab.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Show Tab|description=Shows the given tab.|opcode=106|type=Fixed|length=1|revision=317}} -== Show Tab == - -=== Description === - -Shows the given tab id. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| U [[Data Types#Standard data types|Byte]] [[Data Types#Non Standard Data Types|Special C]] -| Tab ID. -|- -|} \ No newline at end of file diff --git a/317-Skill-level.mediawiki b/317-Skill-level.mediawiki deleted file mode 100644 index 57705d4..0000000 --- a/317-Skill-level.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Skill level|description=Changes the experience and level of a given skill id.|opcode=134|type=Fixed|length=6|revision=317}} -== Skill Level == - -=== Description === - -This packet changes the experience and level of a given skill id. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Byte|Byte]] -| The skill ID. -|- -| [[Data Types#Non Standard data types|Middle-Endian Small Integer]] -| The skill experience. -|- -| [[Data Types#Byte|Byte]] -| The skill level. -|- -|} \ No newline at end of file diff --git a/317-Song-Queue.mediawiki b/317-Song-Queue.mediawiki deleted file mode 100644 index e9511d4..0000000 --- a/317-Song-Queue.mediawiki +++ /dev/null @@ -1,35 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{| style="float:right; margin:1em; width:250px;" cellpadding="3" cellspacing="0" border="1" -|- -| colspan="2" style="background-color:#3c5;" | '''Song Queue'''
Queue's a song to be played next. -|- -! '''Opcode''' -| 121 -|- -! '''Type''' -| FIXED -|- -! '''Length''' -| 4 -|- -|} -== Song Queue == - -=== Description === - -This packet queue's a song to be played next. The client then proceeds to request the queued song using the ondemand protocol. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The id of the next song. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The id of the previous song. -|- -|} -[[Category Packet]] [[Category Packet 317]] \ No newline at end of file diff --git a/317-System-update.mediawiki b/317-System-update.mediawiki deleted file mode 100644 index 9e29df8..0000000 --- a/317-System-update.mediawiki +++ /dev/null @@ -1,19 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=System update|description=Sends how many seconds until a 'System Update.'|opcode=114|type=Fixed|length=2|revision=317}} -== System Update == - -=== Description === - -A timer showing how many seconds until a 'System Update' will appear in the lower left hand corner of the game screen. After the timer reaches 0 all players are disconnected and are unable to log in again until server is restarted. Players connecting will receive a message stating, "The server is being updated. Please wait 1 minute and try again." (unless stated otherwise). - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| Time until an update. -|- -|} \ No newline at end of file diff --git a/317-Trade-answer.mediawiki b/317-Trade-answer.mediawiki deleted file mode 100644 index 43d8e1d..0000000 --- a/317-Trade-answer.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Trade answer|description=Sent when a player answers a trade request from another player.|opcode=139|type=Fixed|length=2|revision=317}} -== Trade Answer == - -=== Description === - -This packet is sent when a player answers a trade request from another player. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The player requesting the trade's ID. -|- -|} \ No newline at end of file diff --git a/317-Trade-request.mediawiki b/317-Trade-request.mediawiki deleted file mode 100644 index 3cfa790..0000000 --- a/317-Trade-request.mediawiki +++ /dev/null @@ -1,17 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Trade request|description=Sent when a player requests a trade with another player.|opcode=73|type=Fixed|length=2|revision=317}} -== Trade Request == - -=== Description === - -This packet is sent when a player requests a trade with another player. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| The other players ID. -|} \ No newline at end of file diff --git a/317-Unequip-item.mediawiki b/317-Unequip-item.mediawiki deleted file mode 100644 index ee999ad..0000000 --- a/317-Unequip-item.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Unequip item|description=Sent when a player unequips an item.|opcode=145|type=Fixed|length=6|revision=317}} -== Unequip Item == - -=== Description === - -This packet is sent when a player unequips an item. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| Unsigned [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The interface ID. -|- -| Unsigned [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The items slot ID. -|- -| Unsigned [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| The item ID. -|- -|} \ No newline at end of file diff --git a/317-Update-item-container.mediawiki b/317-Update-item-container.mediawiki deleted file mode 100644 index c0ba718..0000000 --- a/317-Update-item-container.mediawiki +++ /dev/null @@ -1,33 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Update item container|description=Updates items in an interface component.|opcode=53|type=VARIABLE_SHORT|length=N/A|revision=317}} -== Update item container == - -=== Description === -Updates the items in a given interface component. - -=== Packet Structure === - - -{| border=2 -! Data type -! Description -|- -| Unsigned [[Data Types#Standard data types|Short]] -| Interface ID. -|- -| Unsigned [[Data Types#Standard data types|Short]] -| Amount of items. -|- -|} - -The rest in pseudo-code: - - for (i = 0; i < amt_of_items; i++) { - item_amount = read_u_byte(); // Item Amount: U Byte - - if (item_amount == 255) - item_amount = read_int_me_b(); // Item Amount (if entered as 255 previously - to allow bigger amounts than 254): Integer Middle-Endian Big (Inverse middle) - - item_id = read_u_short_le_a(); // Item ID: U Short Little Endian Special A - } \ No newline at end of file diff --git a/317-Walkable-interface.mediawiki b/317-Walkable-interface.mediawiki deleted file mode 100644 index d9b9789..0000000 --- a/317-Walkable-interface.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Walkable interface|description=Displays an interface in walkable mode.|opcode=208|type=Fixed|length=2|revision=317}} -== Walkable Interface == - -=== Description === - -This packet displays an interface in walkable mode. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| Interface ID. -|- -|} \ No newline at end of file diff --git a/317-Weight.mediawiki b/317-Weight.mediawiki deleted file mode 100644 index 00ebe2b..0000000 --- a/317-Weight.mediawiki +++ /dev/null @@ -1,19 +0,0 @@ -[[Category Packet]] -[[Category Packet 317]] -{{packet|name=Weight|description=Sends the players weight amount.|opcode=240|type=Fixed|length=2|revision=317}} -== Weight == - -=== Description === - -Sends how much weight of equipment the player is wearing (e.g. Rune plate-body is 9.04kg). - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Short]] -| The amount of weight. -|- -|} \ No newline at end of file diff --git a/357-Protocol.mediawiki b/357-Protocol.mediawiki deleted file mode 100644 index 976363e..0000000 --- a/357-Protocol.mediawiki +++ /dev/null @@ -1,40 +0,0 @@ -[[Category RS2]] -== '''Login Protocol''' == - -The Login protocol is identical to the [[317 Protocol#Login Protocol Overview|317 Login protocol]]. - -== Game Protocol == - -=== Server -> Client Packets === -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -! 31 -! VARIABLE_BYTE -! N/A -! [[357 Send Message|Send Message]] -! Sends a message to the client, such as 'Welcome to RuneScape'. -|- -! 96 -! VARIBLE_BYTE -! N/A -! [[357 Send Inventory|Send Inventory]] -! Sends the players inventory to the client. -|- -! 121 -! FIXED -! 4 -! [[357 Load Map Region|Load Map Region]] -! Tells the client to load a map region depending on the region's X and Y coordinates. -|- -! 163 -! FIXED -! 3 -! [[357 Send Sidebar Interface|Send Sidebar Interface]] -! Assigns an interface to one of the tabs in the game sidebar. -|-} \ No newline at end of file diff --git a/377-Animation-Reset.mediawiki b/377-Animation-Reset.mediawiki deleted file mode 100644 index 114fbbc..0000000 --- a/377-Animation-Reset.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Animation Reset|description=Resets all animations in the immediate area.|opcode=13|type=Fixed|length=0|revision=377}} -== Animation Reset == - -=== Description === - -Resets all animations in the immediate area. \ No newline at end of file diff --git a/377-Camera-Shake.mediawiki b/377-Camera-Shake.mediawiki deleted file mode 100644 index 0ec20ba..0000000 --- a/377-Camera-Shake.mediawiki +++ /dev/null @@ -1,27 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Camera Shake|description=Set camera shake parameters.|opcode=67|type=Fixed|length=4|revision=377}} -== Camera Shake == - -=== Description === -Set camera shake parameters. It may be worth reading about Sine Waves [http://en.wikipedia.org/wiki/Sine_wave]. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| The index of the shake parameter to modify. -|- -| [[Data Types#Standard data types|Byte]] -| The range of the shake randomness. -|- -| [[Data Types#Standard data types|Byte]] -| The amplitude (maximum displacement from 0) of the shake. -|- -| [[Data Types#Standard data types|Byte]] -| The phase (where in its cycle the oscillation is at t = 0) of the shake. -|- -|} \ No newline at end of file diff --git a/377-Construct-Map-Region.mediawiki b/377-Construct-Map-Region.mediawiki deleted file mode 100644 index 41733ab..0000000 --- a/377-Construct-Map-Region.mediawiki +++ /dev/null @@ -1,48 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Construct Map Region|description=Creates a map region.|opcode=53|type=Variable Short|length=N/A|revision=377}} -== Interface Animation == - -=== Description === -Sets the animation for a model on an interface. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Non Standard Data Types|Big Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| Map Region Y (absolute Y coordinate / 8 + 6) -|- -| [[Data Types#Standard data types|Bit Block]] -| 1 bit (0 or 1) to decide if a tile exists. 26 bits for data about the tile (only if it exists) -|- -| [[Data Types#Non Standard Data Types|Big Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| Map Region X (absolute X coordinate / 8 + 6) -|- -|} - -=== Information === - -If the tile exists then a 1 gets written to the output stream as a 1 otherwise a zero gets written to the stream. - -If the tile does exist then you would follow that 1 bit with 26 bits of information about the tile. - - int info = inStream.readBits(26); - int heightLevel = info >> 24 & 3; - int rotation = info >> 1 & 3; - int regionX = info >> 14 & 0x3ff; - int regionY = info >> 3 & 0x7ff; - -=== Implementation === - - for(int z = 0; z < 4; z++) { - for(int x = 0; x < 13; x++) { - for(int y = 0; y < 13; y++) { - outStream.writeBit(1, tileExists ? 1 : 0); - if(tileExists) - outStream.writeBits(26, TILE_INFORMATION); - } - } - } \ No newline at end of file diff --git a/377-Create-Static-Graphic.mediawiki b/377-Create-Static-Graphic.mediawiki deleted file mode 100644 index fbbd536..0000000 --- a/377-Create-Static-Graphic.mediawiki +++ /dev/null @@ -1,27 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Create Static Graphic|description=Creates a static graphic.|opcode=59|type=Fixed|length=6|revision=377}} -== Create Static Graphic == - -=== Description === -Creates a static graphic. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| Position (xxxxyyyy) of the graphic. -|- -| [[Data Types#Standard data types|Short]] -| Graphic ID. -|- -| [[Data Types#Standard data types|Byte]] -| Height offset. -|- -| [[Data Types#Standard data types|Short]] -| Placement delay. -|- -|} \ No newline at end of file diff --git a/377-Initialize-Player.mediawiki b/377-Initialize-Player.mediawiki deleted file mode 100644 index 497672a..0000000 --- a/377-Initialize-Player.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Initialize Player|description=Sends the player's membership status and their current index on the server's player list.|opcode=249|type=Fixed|length=3|revision=377}} -== Initialize Player == - -=== Description === -Sends the player's membership status and their current index on the server's player list. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| Unsigned [[Data Types#Standard data types|Byte]] -| Membership flag (1 = member, 0 = free). -|- -| Unsigned [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| Player list index. -|- -|} \ No newline at end of file diff --git a/377-Input-Amount.mediawiki b/377-Input-Amount.mediawiki deleted file mode 100644 index 0a60f24..0000000 --- a/377-Input-Amount.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Input Amount|description=Forces the client to open the input amount interface.|opcode=58|type=Fixed|length=0|revision=377}} -== Input Amount == - -=== Description === - -Forces the client to open the input amount interface. \ No newline at end of file diff --git a/377-Interface-Animation.mediawiki b/377-Interface-Animation.mediawiki deleted file mode 100644 index f8b0fc9..0000000 --- a/377-Interface-Animation.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Interface Animation|description=Sets a model's animation on an interface.|opcode=2|type=Fixed|length=4|revision=377}} -== Interface Animation == - -=== Description === -Sets the animation for a model on an interface. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Byte Order|Little Endian]] [[Data Types#Standard data types|Short]] -| Interface ID -|- -| [[Data Types#Standard data types|Short]] -| Animation ID -|- -|} \ No newline at end of file diff --git a/377-Interface-Item.mediawiki b/377-Interface-Item.mediawiki deleted file mode 100644 index 08ca8f3..0000000 --- a/377-Interface-Item.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Interface Item|description=Sends an item to an interface.|opcode=21|type=Fixed|length=6|revision=377}} -== Interface Item == - -=== Description === -Sends an item to an interface. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Short]] -| Zoom factor. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] -| Item ID. -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| Interface ID. -|- -|} \ No newline at end of file diff --git a/377-Inventory-Overlay.mediawiki b/377-Inventory-Overlay.mediawiki deleted file mode 100644 index 254d9b0..0000000 --- a/377-Inventory-Overlay.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Inventory Overlay|description=Displays the specified interface over the specified inventory.|opcode=128|type=Fixed|length=4|revision=377}} -== Inventory Overlay == - -=== Description === -Displays the specified interface over the specified inventory. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Standard data types|Special A]] -| Interface ID. -|- -| [[Data Types#Byte Order|Little Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| Inventory interface ID -|- -|} \ No newline at end of file diff --git a/377-Logout.mediawiki b/377-Logout.mediawiki deleted file mode 100644 index 1fd7aee..0000000 --- a/377-Logout.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Logout|description=Forces the client to logout.|opcode=5|type=Fixed|length=0|revision=377}} -== Logout == - -=== Description === - -Forces the client to logout cleanly and return to the login screen, without attempting a reconnection. \ No newline at end of file diff --git a/377-Move-Camera.mediawiki b/377-Move-Camera.mediawiki deleted file mode 100644 index 1d8cf09..0000000 --- a/377-Move-Camera.mediawiki +++ /dev/null @@ -1,32 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Move Camera|description=Moves the camera.|opcode=3|type=Fixed|length=6|revision=377}} -== Move Camera == - -=== Description === -Moves the camera. - -See: void client#updateCamera - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| Tile X coordinate. -|- -| [[Data Types#Standard data types|Byte]] -| Tile Y coordinate. -|- -| [[Data Types#Standard data types|Short]] -| Height offset. -|- -| [[Data Types#Standard data types|Byte]] -| Position offset. -|- -| [[Data Types#Standard data types|Byte]] -| Move speed. -|- -|} \ No newline at end of file diff --git a/377-Open-Welcome-Screen.mediawiki b/377-Open-Welcome-Screen.mediawiki deleted file mode 100644 index 1013acc..0000000 --- a/377-Open-Welcome-Screen.mediawiki +++ /dev/null @@ -1,49 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Open Welcome Screen|description=Displays the welcome screen.|opcode=21|type=Fixed|length=23|revision=377}} -== Open Welcome Screen == - -=== Description === -Displays the welcome screen. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Big Endian|Big Endian]] [[Data Types#Standard data types|Short]] -| Last password change occurance -|- -| [[Data Types#Big Endian|Big Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| Unknown #1. -|- -| [[Data Types#Standard data types|Short]] -| Unused #1. -|- -| [[Data Types#Standard data types|Short]] -| Unknown #2. -|- -| [[Data Types#Big Endian|Big Endian]] [[Data Types#Standard data types|Short]] -| Current server time. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| Inbox message count. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| Last log-in time. -|- -| [[Data Types#Standard data types|Short]] -| Amount of members credit (days) remaining. -|- -| [[Data Types#Big Endian|Big Endian]] [[Data Types#Standard data types|Int]] -| Last log-in IPV4 address. -|- -| [[Data Types#Big Endian|Big Endian]] [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| Recovery question change status. -|- -| [[Data Types#Standard data types|Byte]] [[Data Types#Non Standard Data Types|Special A]] -| Unused #2. -|- -|} -* May be inaccurate. \ No newline at end of file diff --git a/377-Play-Ambient-Wave.mediawiki b/377-Play-Ambient-Wave.mediawiki deleted file mode 100644 index b9af478..0000000 --- a/377-Play-Ambient-Wave.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Play Ambient Wave|description=Plays an ambient wave.|opcode=41|type=Fixed|length=4|revision=377}} -== Play Ambient Wave == - -=== Description === -Plays an ambient wave. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Byte]] -| Packed (xxxxyyyy) coordinates of sound. -|- -| [[Data Types#Standard data types|Short]] -| Wave index (ID). -|- -| [[Data Types#Standard data types|Byte]] -| Packed (rrrruuuu) sound settings, where r is the range of the sound. -|- -|} \ No newline at end of file diff --git a/377-Protocol.mediawiki b/377-Protocol.mediawiki deleted file mode 100644 index 950c1a0..0000000 --- a/377-Protocol.mediawiki +++ /dev/null @@ -1,209 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -[[Category RS2]] - -== '''Login Protocol''' == - -The Login protocol is identical to the [[317 Protocol#Login Protocol Overview|317 Login protocol]]. - -==Game Protocol== -The game protocol is the in-game communication of player actions between the server and client. -
- -===Server -> Client Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -! 2 -! FIXED -! 4 -! [[377 Interface Animation|Interface Animation]] -! Sets an interface's model animation. -|- -! 3 -! FIXED -! 6 -! [[377 Move Camera|Camera Move]] -! Moves the camera. -|- -! 5 -! FIXED -! 0 -! [[377 Logout|Logout]] -! Disconnects the client from the server. -|- -! 10 -! FIXED -! 3 -! [[377 Send Sidebar Interface|Send Sidebar Interface]] -! Assigns an interface to one of the tabs in the game sidebar. -|- -! 13 -! FIXED -! 0 -! [[377 Animation Reset|Animation Reset]] -! Resets all entity animations in the immediate area. -|- -! 18 -! FIXED -! 6 -! [[377 Interface Model Rotation|Interface Model Rotation]] -! Sets the rotation speed of an item in an interface. -|- -! 21 -! FIXED -! 6 -! [[377 Interface Item|Interface Item]] -! Displays an item model inside an interface. -|- -! 26 -! FIXED -! 5 -! [[377 Send Sound|Send Sound]] -! Sends a sound to be played. -|- -! 29 -! FIXED -! 0 -! [[377 Reset Open Interfaces|Reset Open Interfaces]] -! Resets all opened interfaces. -|- -! 40 -! FIXED -! 2 -! [[377 Reset Ground Items and Objects|Reset Ground Items and Objects]] -! Resets all ground items and objects in a 8x8 region. -|- -|- -! 41 -! FIXED -! 4 -! [[377 Play Ambient Wave|Play Ambient Wave]] -! Plays an ambient wave. -|- -! 49 -! FIXED -! 6 -! [[377 Skill Level|Skill Level]] -! Sends a skill level to the client. -|- -! 50 -! FIXED -! 2 -! [[377 Walkable Interface|Walkable Interface]] -! Displays an interface in walkable mode. -|- -! 53 -! VARIABLE_SHORT -! N/A -! [[377 Construct Map Region|Construct Map Region]] -! Constructs a map region given the region's x and y coordinate. -|- -! 58 -! FIXED -! 0 -! [[377 Input Amount|Input Amount]] -! Displays the "Input amount" interface. -|- -! 59 -! FIXED -! 6 -! [[377 Create Static Graphic|Create Static Graphic]] -! Creates a static graphic. -|- -! 61 -! FIXED -! 0 -! [[377 Clear Waypoint|Clear Waypoint]] -! Resets the waypoint. -|- -! 63 -! VARIABLE_BYTE -! N/A -! [[377 Send Message|Send Message]] -! Sends a server message (e.g. 'Welcome to RuneScape') or trade/duel request. -|- -! 67 -! FIXED -! 4 -! [[377 Camera Shake|Camera Shake]] -! Causes the camera to shake. -|- -! 71 -! VARIABLE_SHORT -! N/A -! [[377 Update Npcs|Update Npcs]] -! Updates NPCs. -|- -! 75 -! FIXED -! 2 -! [[377 Send Position|Send Position]] -! Sends a position (used for packets such as Ground Items and Projectiles) -|- -! 76 -! FIXED -! 23 -! [[377 Open Welcome Screen|Open Welcome Screen]] -! Displays the welcome screen. -|- -! 78 -! FIXED -! 9 -! [[377 Send Add Friend|Send Add Friend]] -! Sends a friend to be added to the friend list. -|- -! 82 -! FIXED -! 3 -! [[377 Set Widget Mouse Triggered|Set Widget Mouse Triggered]] -! Set widget mouse triggered. -|- -! 88 -! FIXED -! 2 -! [[377 Create Object|Create Object]] -! Sends a friend to be added to the friend list. -|- -! 90 -! VARIABLE_SHORT -! N/A -! [[377 Update Players|Update Players]] -! Updates players. -|- -! 107 -! FIXED -! 5 -! [[377 Send Ground Item|Send Ground Item]] -! Adds a ground item to the server. -|- -! 113 -! FIXED -! 0 -! [[377 Reset Button State|Reset Button State]] -! Resets the button state for all buttons. -|- -! 125 -! FIXED -! 1 -! [[377 Run Energy|Run Energy]] -! Sends the players run energy level. -|- -! 126 -! FIXED -! 3 -! [[377 Initialize Player|Initialize Player]] -! Sends the player's membership status and their current index on the server's player list. -|- -! 128 -! FIXED -! 4 -! [[377 Inventory Overlay|Inventory Overlay]] -! Displays an interface over the sidebar area. -|-} \ No newline at end of file diff --git a/377-Reset-Button-State.mediawiki b/377-Reset-Button-State.mediawiki deleted file mode 100644 index 601d3ed..0000000 --- a/377-Reset-Button-State.mediawiki +++ /dev/null @@ -1,8 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Reset Button State|description=Resets the button state for all buttons.|opcode=113|type=Fixed|length=0|revision=377}} -== Reset Button State == - -=== Description === - -Resets the button state for all buttons. \ No newline at end of file diff --git a/377-Reset-Ground-Items-and-Objects.mediawiki b/377-Reset-Ground-Items-and-Objects.mediawiki deleted file mode 100644 index 87cb9a6..0000000 --- a/377-Reset-Ground-Items-and-Objects.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Reset Ground Items and Objects|description=Resets ground items in potential viewing area.|opcode=40|type=Fixed|length=2|revision=377}} -== Reset Ground Items and Objects == - -=== Description === -Resets ground items in potential viewing area. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Byte]] [[Data Types#Non Standard Data Types|Special C]] -| X coordinate in potential viewing area. -|- -| [[Data Types#Standard data types|Byte]] [[Data Types#Non Standard Data Types|Special S]] -| Y coordinate in potential viewing area. -|- -|} \ No newline at end of file diff --git a/377-Run-Energy.mediawiki b/377-Run-Energy.mediawiki deleted file mode 100644 index dae1ea3..0000000 --- a/377-Run-Energy.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Run Energy|description=Sends the players run energy level.|opcode=125|type=Fixed|length=1|revision=377}} -== Run Energy == - -=== Description === -Sends the players run energy level. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| Unsigned [[Data Types#Standard data types|Byte]] -| The amount of energy remaining. -|- -|} \ No newline at end of file diff --git a/377-Send-Add-Friend.mediawiki b/377-Send-Add-Friend.mediawiki deleted file mode 100644 index a650daa..0000000 --- a/377-Send-Add-Friend.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Send Add Friend|description=Sends a friend to be added to the friend list.|opcode=78|type=Fixed|length=9|revision=377}} -== Send Add Friend == - -=== Description === -Sends a friend to be added to the friend list. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Long]] -| Player name (as long). -|- -| Unsigned [[Data Types#Standard data types|Byte]] -| World. -|- -|} \ No newline at end of file diff --git a/377-Send-Ground-Item.mediawiki b/377-Send-Ground-Item.mediawiki deleted file mode 100644 index 469dce7..0000000 --- a/377-Send-Ground-Item.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Send Ground Item|description=Adds a ground item to the server. |opcode=107|type=Fixed|length=5|revision=377}} -== Send Ground Item == - -=== Description === -Adds a ground item to the server. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Short]] -| Item ID. -|- -| [[Data Types#Standard data types|Byte]] [[Data Types#Non Standard Data Types|Special S]] -| Packed (xxxxyyyy) coordinates of the ground item. -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| Stack amount of the item. -|- -|} \ No newline at end of file diff --git a/377-Send-Message.mediawiki b/377-Send-Message.mediawiki deleted file mode 100644 index e82e62e..0000000 --- a/377-Send-Message.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Send Message|description=Sends a server message (e.g. 'Welcome to RuneScape') or trade/duel request.|opcode=63|type=Variable Byte|length=N/A|revision=377}} -== Send Message == - -=== Description === -Sends a server message (e.g. 'Welcome to RuneScape') or trade/duel request. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[RS String|RS String]] -| Message. -|- -|} \ No newline at end of file diff --git a/377-Send-Sidebar-Interface.mediawiki b/377-Send-Sidebar-Interface.mediawiki deleted file mode 100644 index 4d45483..0000000 --- a/377-Send-Sidebar-Interface.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Set Sidebar Interface|description=Sets the interface for the sidebar.|opcode=10|type=Fixed|length=3|revision=377}} -== Interface Animation == - -=== Description === -Sets the specified interface to the specified sidebar. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Byte]] [[Data Types#Standard data types|Special S]] -| Sidebar Index -|- -| [[Data Types#Standard data types|Short]] [[Data Types#Non Standard Data Types|Special A]] -| Interface ID -|- -|} \ No newline at end of file diff --git a/377-Send-Sound.mediawiki b/377-Send-Sound.mediawiki deleted file mode 100644 index 251e248..0000000 --- a/377-Send-Sound.mediawiki +++ /dev/null @@ -1,26 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Send Sound|description=Sends a sound to be played.|opcode=26|type=Fixed|length=5|revision=377}} -== Send Sound == - -=== Description === -Sends a sound to be played. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Short]] -| Unknown #1 -|- -| [[Data Types#Standard data types|Byte]] -| Unknown #2 -|- -| [[Data Types#Standard data types|Short]] -| Unknown #2 -|- -|} - -* Needs more work. \ No newline at end of file diff --git a/377-Skill-Level.mediawiki b/377-Skill-Level.mediawiki deleted file mode 100644 index a6beac6..0000000 --- a/377-Skill-Level.mediawiki +++ /dev/null @@ -1,24 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Skill Level|description=Sends a skill level to the client.|opcode=49|type=Fixed|length=6|revision=377}} -== Skill Level == - -=== Description === -Sends a skill level to the client. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Byte]] [[Data Types#Non Standard Data Types|Special C]] -| Skill ID. -|- -| [[Data Types#Standard data types|Byte]] -| Skill level. -|- -| [[Data Types#Standard data types|Int]] -| Skill experience. -|- -|} \ No newline at end of file diff --git a/377-Walkable-Interface.mediawiki b/377-Walkable-Interface.mediawiki deleted file mode 100644 index bb1735a..0000000 --- a/377-Walkable-Interface.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 377]] -{{packet|name=Walkable interface|description=Displays an interface in walkable mode.|opcode=50|type=Fixed|length=2|revision=377}} -== Walkable Interface == - -=== Description === - -This packet displays an interface in walkable mode. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Short]] -| Interface ID. -|- -|} \ No newline at end of file diff --git a/443-Protocol.mediawiki b/443-Protocol.mediawiki deleted file mode 100644 index 378c8ff..0000000 --- a/443-Protocol.mediawiki +++ /dev/null @@ -1,1002 +0,0 @@ -[[Category RS2]] - -==Client States== - -Client states are used to switch between different graphic and logic procedures. The state of the client is global. There may be cases where two states will be handled the same graphically but different logically, vice versa. - -{| border=3 -|- -! Opcode -! Name -! Description -|- -! 0 -! Loading (initial) -! Client state where the client is initially loading itself to the login screen. -|- -! 5 -! Loading -! Client state where the client is loading itself to the login screen. -|- -! 10 -! Login Screen -! Client state where the client is on the login screen. -|- -! 20 -! Login (initial) -! Client state where the client initially engages to log in to the server. -|- -! 25 -! Map Rebuild -! Ingame client state where the client rebuilds the map. -|- -! 30 -! Ingame -! Default ingame client state. -|- -! 35 -! Ingame (screen overlay) -! Client state where the client screen is overlayed with a widget. -|- -! 40 -! Login -! Client state where the client engages to log in to the server. -|- -! 1000 -! Fatal Ondemand Error -! Client state where the client has encountered a fatal ondemand error and will no longer use the ondemand service. -|} - -==Client Actions== - -===Social=== - -{| border=3 -|- -! Opcode -! Frame Name -! Variable 0 -! Variable 1 -! Variable 2 -! Description -|- -! 31 -! [[443 Add Friend|Add Friend]] -! NA -! NA -! NA -! Action for when a friend is added. -|- -! 2 -! [[443 Remove Friend|Remove Friend]] -! NA -! NA -! NA -! Action for when a friend is removed. -|- -! 21 -! [[443 Add Ignore|Add Ignore]] -! NA -! NA -! NA -! Action for when an ignore is added. -|- -! 50 -! [[443 Remove Ignore|Remove Ignore]] -! NA -! NA -! NA -! Action for when an ignore is removed. -|} - -===Entities=== - -{| border=3 -|- -! Opcode -! Frame Name -! Variable 0 -! Variable 1 -! Variable 2 -! Description -|- -! 44 -! [[443 Player Option 0|Player Option 0]] -! id -! position x -! position y -! Action for the first option of a player. -|- -! 22 -! [[443 Player Option 1|Player Option 1]] -! id -! position x -! position y -! Action for the second option of a player. -|- -! 52 -! [[443 Player Option 2|Player Option 2]] -! id -! position x -! position y -! Action for the third option of a player. -|- -! 56 -! [[443 Player Option 3|Player Option 3]] -! id -! position x -! position y -! Action for the fourth option of a player. -|- -! 1 -! [[443 Player Option 4|Player Option 4]] -! id -! position x -! position y -! Action for the fifth option of a player. -|- -! 41 -! [[443 Npc Option 0|Npc Option 0]] -! id -! position x -! position y -! Action for the first option of a NPC. -|- -! 17 -! [[443 Npc Option 1|Npc Option 1]] -! id -! position x -! position y -! Action for the second option of a NPC. -|- -! 13 -! [[443 Npc Option 2|Npc Option 2]] -! id -! position x -! position y -! Action for the third option of a NPC. -|- -! 53 -! [[443 Npc Option 3|Npc Option 3]] -! id -! position x -! position y -! Action for the fourth option of a NPC. -|- -! 46 -! [[443 Npc Option 4|Npc Option 4]] -! id -! position x -! position y -! Action for the fifth option of a NPC. -|- -! 40 -! [[443 Ground Item Option 0|Ground Item Option 0]] -! item id -! position x -! position y -! Action for the first option of a ground item. -|- -! 38 -! [[443 Ground Item Option 1|Ground Item Option 1]] -! item id -! position x -! position y -! Action for the second option of a ground item. -|- -! 34 -! [[443 Ground Item Option 2|Ground Item Option 2]] -! item id -! position x -! position y -! Action for the third option of a ground item. -|- -! 11 -! [[443 Ground Item Option 3|Ground Item Option 3]] -! item id -! position x -! position y -! Action for the fourth option of a ground item. -|- -! 3 -! [[443 Ground Item Option 4|Ground Item Option 4]] -! item id -! position x -! position y -! Action for the fifth option of a ground item. -|- -! 55 -! [[443 Object Option 0|Object Option 0]] -! info hash -! position x -! position y -! Action for the first option of an object. -|- -! 57 -! [[443 Object Option 1|Object Option 1]] -! info hash -! position x -! position y -! Action for the second option of an object. -|- -! 43 -! [[443 Object Option 2|Object Option 2]] -! info hash -! position x -! position y -! Action for the third option of an object. -|- -! 6 -! [[443 Object Option 3|Object Option 3]] -! info hash -! position x -! position y -! Action for the fourth option of an object. -|- -! 1005 -! [[443 Object Option 4|Object Option 4]] -! info hash -! position x -! position y -! Action for the fifth option of an object. -|- -|} - -===Widget=== - -{| border=3 -|- -! Opcode -! Frame Name -! Variable 0 -! Variable 1 -! Variable 2 -! Description -|- -! 28 -! [[443 Item On Widget Option 0|Item on Widget Option 0]] -! id -! slot -! widget id -! Action for the first option of an item on a widget. -|- -! 16 -! [[443 Item On Widget Option 1|Item on Widget Option 1]] -! id -! slot -! widget id -! Action for the second option of an item on a widget. -|- -! 54 -! [[443 Item On Widget Option 2|Item on Widget Option 2]] -! id -! slot -! widget id -! Action for the third option of an item on a widget. -|- -! 32 -! [[443 Item On Widget Option 3|Item on Widget Option 3]] -! id -! slot -! widget id -! Action for the fourth option of an item on a widget. -|- -! 19 -! [[443 Item On Widget Option 4|Item on Widget Option 4]] -! id -! slot -! widget id -! Action for the fifth option of an item on a widget. -|- -! 35 -! [[443 Widget Item Option 0|Widget Item Option 0]] -! id -! slot -! widget id -! Action for the first option of an item on a widget. -|- -! 30 -! [[443 Widget Item Option 1|Widget Item Option 1]] -! id -! slot -! widget id -! Action for the second option of an item on a widget. -|- -! 26 -! [[443 Widget Item Option 2|Widget Item Option 2]] -! id -! slot -! widget id -! Action for the third option of an item on a widget. -|- -! 25 -! [[443 Widget Item Option 3|Widget Item Option 3]] -! id -! slot -! widget id -! Action for the fourth option of an item on a widget. -|- -! 49 -! [[443 Widget Item Option 4|Widget Item Option 4]] -! id -! slot -! widget id -! Action for the fifth option of an item on a widget. -|} - -===Examine=== - -{| border=3 -|- -! Opcode -! Frame Name -! Variable 0 -! Variable 1 -! Variable 2 -! Description -|- -! 1006 -! [[443 Object Examine|Object Examine]] -! id -! position x -! position y -! Action for the examine option of an object. -|- -! 1001 -! [[443 Npc Examine|Npc Examine]] -! id -! position x -! position y -! Action for the examine option of a Npc. -|- -! 1003 -! [[443 Ground Item Examine|Ground Item Examine]] -! id -! position x -! position y -! Action for the examine option of a ground item. -|- -! 1004 -! [[443 Item Examine|Item Examine]] -! id -! slot -! widget id -! Action for the examine option of an item. -|} - -===Other=== - -{| border=3 -|- -! Opcode -! Frame Name -! Variable 0 -! Variable 1 -! Variable 2 -! Description -|- -! 29 -! [[443 Close Window|Close Window]] -! NA -! NA -! NA -! Action for when the currently open window is closed. -|} - -==Game Protocol== - -===Server Frames=== - -{| border=3 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -! 29 -! VARIABLE SHORT -! NA -! [[443 Player Update|Player Update]] -! Updates the players within the client's view. -|- -! 238 -! VARIABLE SHORT -! NA -! [[443 NPC Update|NPC Update]] -! Updates the npcs within the client's view. -|- -! 121 -! VARIABLE SHORT -! NA -! [[443 Rebuild Scene Graph|Rebuild Scene Graph]] -! Rebuilds the players scene graph. -|- -! 193 -! VARIABLE SHORT -! NA -! [[443 Rebuild Scene Graph|Rebuild Custom Scene Graph]] -! Builds a custom scene graph. -|- -! 199 -! FIXED -! 3 -! [[443 Set Location|Set Location]] -! Sets the location on the map of where the player is. -|- -! 111 -! FIXED -! 6 -! [[443 Move Camera To|Move Camera To]] -! Moves the camera to a location on the map. -|- -! 157 -! VARIABLE BYTE -! NA -! [[443 Send Message|Send Message]] -! Sends a message to the client's chatbox. -|- -! 58 -! FIXED -! 6 -! [[443 Update Skill|Update Skill]] -! Updates a skill by sending its experience and dynamic level. -|- -! 226 -! FIXED -! 1 -! [[443 Update Run Energy|Update Run Energy]] -! Updates the amount of run energy the player has. -|- -! 87 -! FIXED -! 1 -! [[443 Set Minimap State|Set Minimap State]] -! Sets the minimap state. -|- -! 117 -! FIXED -! 1 -! [[443 System Update|System Update]] -! Informs the client that a system update will be happening. -|- -! 192 -! VARIABLE SHORT -! NA -! [[443 Execute Client Script|Execute Client Script]] -! Executes a client script. -|- -! 204 -! VARIABLE SHORT -! NA -! [[Class Check|Class Check Request]] -! Parses a request for a class check request. -|- -! 89 -! FIXED -! 5 -! [[443 Player Sound Effect|Player Sound Effect]] -! Plays a sound effect. -|- -! 74 -! FIXED -! 6 -! [[443 Set State Value|Set State Value (large)]] -! Sets the value of a client state variable. -|- -! 62 -! FIXED -! 3 -! [[443 Set State Value|Set State Value (small)]] -! Sets the value of a client state variable. -|- -! 163 -! FIXED -! 0 -! [[443 Reset States|Reset States]] -! Resets all the client state variables. -|- -! 160 -! FIXED -! 4 -! [[443 Display Window|Display Window]] -! Displays a widget as a window. -|- -! 221 -! FIXED -! 4 -! [[443 Display Screen Overlay|Display Screen Overlay]] -! Displays widgets over the entire screen of the client. -|- -! 6 -! FIXED -! 2 -! [[443 Display Chatbox Interface|Display Chatbox Interface]] -! Displays the chatbox as a widget. -|- -! 178 -! FIXED -! 0 -! [[443 Close Displayed Widgets|Close Displayed Widgets]] -! Closes all the displayed widgets except for the chatbox interface. -|- -! 51 -! FIXED -! 0 -! [[443 Fetch Input|Fetch Input]] -! Fetches input from the chatbox. -|- -! 3 -! FIXED -! 6 -! [[443 Change Inactive Color|Change Inactive Color]] -! Changes the widget's inactive color. -|- -! 232 -! FIXED -! 10 -! [[443 Set Offset|Set Offset]] -! Sets the x and y offset of a widget. -|- -! 31 -! FIXED -! 4 -! [[443 Display Player On Widget|Display Player on Widget]] -! Displays the local player on a widget. -|- -! 137 -! FIXED -! 10 -! [[443 Display Item On Widget|Display Item on Widget]] -! Displays the model of an item on a widget. -|- -! 147 -! FIXED -! 10 -! [[443 Set Model Rotation|Set Model Rotation]] -! Sets the x and y rotation of a model on a widget. -|- -! 73 -! FIXED -! 8 -! [[443 Rotate Model|Rotate Model]] -! Sets the step amount to rotate the model continuously about the x axis. -|- -! 228 -! VARIABLE SHORT -! NA -! [[443 Send Items|Send Items]] -! Sends the items in an item container. -|- -! 213 -! VARIABLE SHORT -! NA -! [[443 Update Items|Update Items]] -! Updates the items in an item container from their slot id. -|- -! 245 -! FIXED -! 0 -! [[443 Reset Items|Reset Items]] -! Resets all the items in an item container. -|- -! 82 -! FIXED -! 2 -! [[443 Set Spawn Sector|Set Spawn Sector]] -! Sets the sector on the map where entities will be spawned. -|- -! 244 -! VARIABLE SHORT -! NA -! [[443 Spawn Sector|Spawn Sector]] -! Parses the sector of the map to spawn entities, then the actual entity spawns. -|- -! 207 -! FIXED -! 5 -! [[443 Spawn Ground Item|Spawn Ground Item]] -! Spawns a ground item. -|- -! 94 -! FIXED -! 7 -! [[443 Spawn Ground Item|Spawn Ground Item]] -! Spawns a ground item that will ignore whoever it has already been spawned to. -|- -! 79 -! FIXED -! 7 -! [[443 Update Ground Item|Update Ground Item]] -! Updates the item amount for a ground item. -|- -! 84 -! FIXED -! 3 -! [[443 Remove Ground Item|Remove Ground Item]] -! Removes a ground item. -|- -! 122 -! FIXED -! 4 -! [[443 Spawn Still Object|Spawn Still Object]] -! Spawns a still object. -|- -! 170 -! FIXED -! 4 -! [[443 Animate Still Object|Animate Still Object]] -! Animates a still object. -|- -! 69 -! FIXED -! 2 -! [[443 Remove Still Object|Remove Still Object]] -! Removes a still object. -|- -! 115 -! FIXED -! 6 -! [[443 Spawn Still Graphic|Spawn Still Graphic]] -! Spawns a still graphic. -|- -! 101 -! FIXED -! 15 -! [[443 Spawn Projectile|Spawn Projectile]] -! Spawns a projectile. -|- -! 109 -! FIXED -! 5 -! [[443 Spawn Ambient Sound Effect|Spawn Ambient Sound Effect]] -! Spawns an ambient sound effect. -|- -! 133 -! FIXED -! 2 -! [[443 Reset Sector|Reset Sector]] -! Resets all the ground items and still objects in a sector. -|- -! 41 -! FIXED -! 0 -! [[443 Logout|Logout]] -! Logs the client out from the server. -|} - -===Client Frames=== - -==== Actions ==== - - -{| border = 3, padding = 2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -! 90 -! FIXED -! 8 -! [[443 Add Friend|Add Friend]] -! Called when a new name has been added to the friend list. -|- -! 159 -! FIXED -! 8 -! [[443 Remove Friend|Remove Friend]] -! Called when a name has been removed from the friend list. -|- -! 198 -! FIXED -! 8 -! [[443 Add Ignore|Add Ignore]] -! Called when a new name has been added to the ignore list. -|- -! 250 -! FIXED -! 8 -! [[443 Remove Ignore|Remove Ignore]] -! Called when a name has been removed from the ignore list. -|- -! 11 -! FIXED -! 2 -! [[443 Player Option 0|Player Option 0]] -! Called when the first option of a player is activated. -|- -! 169 -! FIXED -! 2 -! [[443 Player Option 1|Player Option 1]] -! Called when the second option of a player is activated. -|- -! 229 -! FIXED -! 2 -! [[443 Player Option 2|Player Option 2]] -! Called when the third option of a player is activated. -|- -! 101 -! FIXED -! 2 -! [[443 Player Option 3|Player Option 3]] -! Called when the fourth option of a player is activated. -|- -! 206 -! FIXED -! 2 -! [[443 Player Option 4|Player Option 4]] -! Called when the fifth option of a player is activated. -|- -! -! -! -! [[443 Npc Option 0|Npc Option 0]] -! -|- -! -! -! -! [[443 Npc Option 1|Npc Option 1]] -! -|- -! -! -! -! [[443 Npc Option 2|Npc Option 2]] -! -|- -! -! -! -! [[443 Npc Option 3|Npc Option 3]] -! -|- -! -! -! -! [[443 Npc Option 4|Npc Option 4]] -! -|- -! -! -! -! [[443 Ground Item Option 0|Ground Item Option 0]] -! -|- -! -! -! -! [[443 Ground Item Option 1|Ground Item Option 1]] -! -|- -! -! -! -! [[443 Ground Item Option 2|Ground Item Option 2]] -! -|- -! -! -! -! [[443 Ground Item Option 3|Ground Item Option 3]] -! -|- -! -! -! -! [[443 Ground Item Option 4|Ground Item Option 4]] -! -|- -! -! -! -! [[443 Still Object Option 0|Still Object Option 0]] -! -|- -! -! -! -! [[443 Still Object Option 1|Still Object Option 1]] -! -|- -! -! -! -! [[443 Still Object Option 2|Still Object Option 2]] -! -|- -! -! -! -! [[443 Still Object Option 3|Still Object Option 3]] -! -|- -! -! -! -! [[443 Still Object Option 4|Still Object Option 4]] -! -|- -! -! -! -! [[443 Item On Player|Item On Player]] -! -|- -! -! -! -! [[443 Item On NPC|Item On NPC]] -! -|- -! -! -! -! [[443 Item On Ground Item|Item On Ground Item]] -! -|- -! -! -! -! [[443 Item On Still Object|Item On Still Object]] -! -|- -! -! -! -! [[443 Item On Item|Item On Item]] -! -|- -! -! -! -! [[443 Widget On Player|Widget On Player]] -! -|- -! -! -! -! [[443 Widget On NPC|Widget On NPC]] -! -|- -! -! -! -! [[443 Widget On Ground Item|Widget On Ground Item]] -! -|- -! -! -! -! [[443 Widget On Still Object|Widget On Still Object]] -! -|- -! -! -! -! [[443 Widget On Item|Widget On Item]] -! -|- -! -! -! -! [[443 Widget On Widget|Widget On Widget]] -! -|- -! -! -! -! [[443 Still Object Examine|Still Object Examine]] -! -|- -! -! -! -! [[443 Npc Examine|Npc Examine]] -! -|- -! -! -! -! [[443 Item Examine|Item Examine]] -! -|- -! 54 -! FIXED -! 4 -! [[443 Widget Action|Widget Action]] -! Called when a widget action is activated. -|- -! 70 -! FIXED -! 0 -! [[443 Closed Overlays|Closed Overlays]] -! Called when the currently opened overlays are closed. -|} - -==== Other ==== - -{| border = 3, padding = 2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -! 194 -! VARIABLE BYTE -! NA -! [[Class Check|Class Check Response]] -! Response to a class check request sent from the server. -|- -! 4 -! NA -! VARIABLE BYTE -! [[443 Chat|Chat]] -! Called when the client enters in a chat message. -|- -! 21 -! 0 -! FIXED -! [[443 Map Rebuilt|Map Rebuilt]] -! Called when the map has been successfully rebuilt. -|- -! 174 -! NA -! VARIABLE BYTE -! [[443 Command|Command]] -! Called when the client inputs a command. -|} - -=== Update Flags === - -All flags are listed in order in which they are parsed. - -==== Player ==== - -==== NPC ==== - -{| border=3px -! Opcode -! Name -! Description -|- -! 0x2 -! Face Position -! Turns to face the NPC to a position on the map. -|- -! 0x20 -! Animate -! Animates the NPC. -|- -! 0x40 -! Display Hit One -! Displays a hit on the NPC. -|- -! 0x4 -! Display Still Graphic -! Displays a still graphic on the NPC. -|- -! 0x10 -! Turn to mobile entity -! Turns to face the NPC to a mobile entity on the map. -|- -! 0x80 -! Display Hit Two -! Displays a hit on the npc. -|- -! 0x1 -! Turn into NPC -! Changes the id of the NPC and its animations. -|- -! 0x8 -! Display chat text -! Displays chat text above the head of the NPC. -|} \ No newline at end of file diff --git a/464-Protocol.mediawiki b/464-Protocol.mediawiki deleted file mode 100644 index 101f801..0000000 --- a/464-Protocol.mediawiki +++ /dev/null @@ -1,53 +0,0 @@ -[[Category RS2]] - -Currently under development. - -== '''Packet structure''' == -When the client sends a packet to the server, the first byte encapsulates its opcode. This specific opcode is encrypted with a value generated by the ISAAC PRNG seeded with a dynamically server generated key during the login block. The server decrypts it and associates the opcode to the packet's respective predefined size. If the packet does not contain a fixed size, the opcode will be followed by either a byte or a word - varying per packet - for its proper size. This is then followed by the payload. - -== '''Login''' == -Blank at the moment. - -=='''Game Protocol'''== - -===Server -> Client Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 163 -| Fixed -| 1 -| [[317 Run Energy|Run Energy]] -| Sends the players run energy percentage. -|- -|} - -===Client -> Server Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 49 -| VARIABLE BYTE -| 13 -| [[464 Character Design|Character Design]] -| Sent when accepting the player's appearance on the design screen. -|- -| 115 -| VARIABLE BYTE -| N/A -| [[464 Chat|Chat]] -| Sent when the player enters a chat message. -|- -|} \ No newline at end of file diff --git a/468-Protocol.mediawiki b/468-Protocol.mediawiki deleted file mode 100644 index 448ff79..0000000 --- a/468-Protocol.mediawiki +++ /dev/null @@ -1,53 +0,0 @@ -[[Category RS2]] - -Currently under development. - -== '''Packet structure''' == -When the client sends a packet to the server, the first byte encapsulates its opcode. This specific opcode is encrypted with a value generated by the ISAAC PRNG seeded with a dynamically server generated key during the login block. The server decrypts it and associates the opcode to the packet's respective predefined size. If the packet does not contain a fixed size, the opcode will be followed by either a byte or a word - varying per packet - for its proper size. This is then followed by the payload. - -== '''Login''' == -Blank at the moment. - -=='''Game Protocol'''== - -===Server -> Client Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 147 -| DataType.SHORT, DataOrder.LITTLE, -| 1 -| [[317 Run Energy|Run Energy]] -| Sends the Mapregion -|- -|} - -===Client -> Server Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 49 -| VARIABLE BYTE -| 13 -| [[464 Character Design|Character Design]] -| Sent when accepting the player's appearance on the design screen. -|- -| 115 -| VARIABLE BYTE -| N/A -| [[464 Chat|Chat]] -| Sent when the player enters a chat message. -|- -|} \ No newline at end of file diff --git a/474-Fourth-Interface-Option.mediawiki b/474-Fourth-Interface-Option.mediawiki deleted file mode 100644 index 9219064..0000000 --- a/474-Fourth-Interface-Option.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 474]] -{{packet|name=Fourth Interface Option|description=Triggered when a fourth interface option has been clicked.|opcode=3|type=Fixed|length=6|revision=474}} -== Fourth Interface Option == - -=== Description === - -This is triggered when a fourth interface option has been clicked. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Int]] -| The button ID. -|- -| [[Data Types#Standard data types|Short]] -| The item container slot. -|- -|} \ No newline at end of file diff --git a/474-Protocol.mediawiki b/474-Protocol.mediawiki deleted file mode 100644 index c170a8f..0000000 --- a/474-Protocol.mediawiki +++ /dev/null @@ -1,146 +0,0 @@ -[[Category Packet]] -[[Category Packet 474]] -[[Category RS2]] - -Not much progress has been made with this revision, don't worry about it too much. - - -== '''Packet structure''' == -When the client sends a packet to the server, the first byte encapsulates its opcode. This specific opcode is encrypted with a value generated by the ISAAC PRNG seeded with a dynamically server generated key during the login block. The server decrypts it and associates the opcode to the packet's respective predefined size. If the packet does not contain a fixed size, the opcode will be followed by either a byte or a word - varying per packet - for its proper size. This is then followed by the payload. - -== '''Login''' == -? - -== '''Game Protocol''' == - -===Server -> Client Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 209 -| VARIABLE_BYTE -| N/A -| [[474 Send message|Send message]] -| Sends a server message (e.g. 'Welcome to RuneScape') or trade/duel request. -|- -| 231 -| VARIABLE_SHORT -| N/A -| [[474 Send string|Send string]] -| Replaces a string of text. (e.g. Replace: 'Click here to Play' with 'Play Now!') -|- -|} - -===Client -> Server Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 1 -| FIXED -| 8 -| [[474 Remove ignore|Remove ignore]] -| Sent when a player removes a player from their ignore list. -|- -| 3 -| FIXED -| 6 -| [[474 Fourth Interface Option|Fourth Interface Option]] -| This is triggered when a fourth interface option has been clicked. -|- -| 4 -| FIXED -| N/A -| [[474 Fourth Object Option|Fourth Object Option]] -| This is triggered when a fourth object option has been clicked. -|- -| 11 -| FIXED -| N/A -| [[474 Minimap Walk|Minimap Walk]] -| Sends walking data to the server. -|- -| 13 -| FIXED -| 12 -| [[474 Item on NPC|Item on NPC]] -| Sent when a player uses an item on an NPC. -|- -| 21 -| FIXED -| 2 -| [[474 Npc action 2|Npc action 2]] -| Sent when a player clicks the second option of an NPC. -|- -| 22 -| FIXED -| N/A -| [[474 Kick Clanchat Participant|Kick Clanchat Participant]] -| Indicates a friend of the clanChat owner attempts to kick a fellow clanChatParticipant (non-owner). -|- -| 29 -| FIXED -| N/A -| [[474 Sixth Interface Option|Sixth Interface Option]] -| Tells the server a sixth interface option has been clicked. -|- -| 31 -| FIXED -| 6 -| [[474 Object action 1|Object action 1]] -| Sent when the player clicks the first option of an object, such as "Cut" for trees. -|- -| 34 -| FIXED -| N/A -| [[474 Client Focus|Client Focus]] -| Tells the server the clients focus has changed. -|- -| 35 -| FIXED -| N/A -| [[474 Use Magic On Player|Use Magic On Player]] -| Indicates the player wants to use a spell on another player. -|- -| 37 -| FIXED -| N/A -| [[474 Third interface option|Third interface option]] -| This is triggered when one a third interface option has been clicked. -|- -| 203 -| FIXED -| 6 -| [[474 Object action 2|Object action 2]] -| Sent when the player clicks the second option of an object, such as "Use-quickly" for Bank Booths. -|- -| 34 -| FIXED -| 1 -| [[474 Focus change|Focus change]] -| Sent when the game client window goes out of focus. -|- -| 35 -| FIXED -| 8 -| [[474 Magic on player|Magic on player]] -| Sent when the player casts magic on another player. -|- -| 226 -| FIXED -| 2 -| [[474 Examine object|Examine object]] -| Sent when you examine an object. -|- -|} \ No newline at end of file diff --git a/474-Remove-ignore.mediawiki b/474-Remove-ignore.mediawiki deleted file mode 100644 index 01706a8..0000000 --- a/474-Remove-ignore.mediawiki +++ /dev/null @@ -1,18 +0,0 @@ -[[Category Packet]] -[[Category Packet 474]] -{{packet|name=Remove ignore|description=Sent when a player removes a player from their ignore list.|opcode=1|type=Fixed|length=8|revision=474}} -== Remove ignore == - -=== Description === - -Signals the player wants to remove an ignore. - -=== Packet Structure === -{|border=2 -! Data Type -! Description -|- -| [[Data Types#Standard data types|Long]] -| The player that is going to be removed from the ignore's name. -|- -|} \ No newline at end of file diff --git a/508-Protocol.mediawiki b/508-Protocol.mediawiki deleted file mode 100644 index 3b307f1..0000000 --- a/508-Protocol.mediawiki +++ /dev/null @@ -1,118 +0,0 @@ -[[Category RS2]] - - -== '''Packet structure''' == -When the client sends a packet to the server, the first byte encapsulates its opcode. This specific opcode is encrypted with a value generated by the ISAAC PRNG seeded with a dynamically server generated key during the login block. The server decrypts it and associates the opcode to the packet's respective predefined size. If the packet does not contain a fixed size, the opcode will be followed by either a byte or a word - varying per packet - for its proper size. This is then followed by the payload. - -== '''Login''' == -Every connection to the main 'gateway' server sends a single byte of data, mostly well known as the connection type. The connection type tells the main server which type of connection you wish to initiate. The old engine list consists of: - -* Login initiation - connection type 14 -* Update - connection type 15 -* Fresh login - connection type 16 -* JAGGRAB - connection type 17 -* Reconnecting login - connection type 18 -* Worldlist - varies, connection type 255 in #508 -* Potentially more... - - -The connection type we will cover in the following paragraphs is the login connection type, 14. After the login handshake initiating connection type, the client writes a small bit of data derived from the logging in player's username. This is believed to help select the appropriate login server. On successful handshake, the server sends back 8 ignored by - - -At this point, the client reads in one byte, called the status code. The status code 0 is expected to start the login protocol correctly. If the status code is 0, the client reads a long, dubbed by many as the server session key. This is used to help generate a unique seed for the client session's packet opcode masking. The client then stores two ints that are the upper and lower ints of the client session key, which has the same purpose as the server's key. The client then starts writing the login block, which is RSA encrypted. - - -The login block starts with the byte 10, which is considered a magic number. Following it is the client session key and server session key longs. Trailing behind the session keys comes the client's username packed to a 64-bit long and password written as a C-string (NUL-terminated ASCII). This block is then RSA encrypted and stored for later use. - - -Now starts the login request packet. It starts off with a flag telling the server whether or not the client is reconnecting or connecting for the first time [NOW CLASSIFIED AS CONNECTION TYPE]. The byte is 18 or 16, respectively. Following is the size of the rest of the login response packet, including the login block that trails at the end, to tip the server how much data it should expect. Later comes the client revision int. After the client revision, an unknown byte is written that seems to always be zero (possibly the memory usage game-type flag [low mem/high mem]), followed by constantly zero byte and yet another zero byte. Next the packet writes the game applet width and height in pixels as shorts, followed quickly after by the UID (unique identifier or user identifier). Next comes the C-string settings string passed as a param to the applet, and after it the int affiliate identifier (probably identifies the game affiliate it was run on) with another int right after it. This int that trails behind is an unknown int that only has 22 bits used, all of which represent various flags within the client. Any clues as to what they are would be nice. The packet is just about crafted completely. [In 525, a strange short is written here]. To finish off the main chunk, the client writes all cache's reference table index-based CRC32 checksums as ints (29 in 539, 27 in 508, etc). To top it off, the RSA encrypted login block is appended to the end and the packet is sent to the server. - - -The ISAAC ciphers are seeded for packet opcode masking after adding 50 to each int of the session keys, and the status code is reread. This finishes the login protocol. - -== '''Game Protocol''' == -Game packet header: - -
-ubyte - opcode
-ubyte - packet size only if packet size is sent as -1 (length: VAR_BYTE)
-ushort - packet size only if packet size is sent as -2 (length: VAR_SHORT)
-
- -After the header is read by the server, the packet specific data is then read and decoded by the server. - -===Server -> Client Packets=== -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 8 -| FIXED -| 2 -| [[508 System update|System update]] -| Displays the system update counter on the player's client. -|- -| 93 -| FIXED -| 7 -| [[508 Send interface|Send interface]] -| -|- -| 99 -| FIXED -| 1 -| [[508 Run energy|Run energy]] -| Sets the players run energy. -|- -| 104 -| FIXED -| 0 -| [[508 Logout|Logout]] -| Logs the player out. -|- -| 217 -| FIXED -| 6 -| [[508 Send skill levels|Send skill levels]] -| Sends the player's skill levels to the client to be drawn on the skill tab. -|- -| 218 -| VARIABLE BYTE -| N/A -| [[508 Send message|Send message]] -| Writes a string to the client's chat box. -|- -| 239 -| FIXED -| 3 -| [[508 Set window pane|Set window pane]] -| -|- -| 252 -| VARIABLE BYTE -| N/A -| [[508 Send player option|Send player option]] -| -|} - -===Client -> Server Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 63 -| FIXED -| 6 -| [[508 Dialogue Options|Dialogue Options.]] -| Sent when a player clicks an dialogue button. The data sent is InterfaceId, buttonId, and something yet not discovered. -|- -|} \ No newline at end of file diff --git a/634-Protocol.mediawiki b/634-Protocol.mediawiki deleted file mode 100644 index 1ba3600..0000000 --- a/634-Protocol.mediawiki +++ /dev/null @@ -1,14 +0,0 @@ -[[Category RS2]] - - -== '''Packet structure''' == -When the client sends a packet to the server, the first byte encapsulates its opcode. This specific opcode is encrypted with a value generated by the ISAAC PRNG seeded with a dynamically server generated key during the login block. The server decrypts it and associates the opcode to the packet's respective predefined size. If the packet does not contain a fixed size, the opcode will be followed by either a byte or a word - varying per packet - for its proper size. This is then followed by the payload. - -An addition to modern emulation protocols was the addition to allow packets with an opcode of a word to be deciphered from the buffer. This is done by taking the first two ISAAC PRNG seeds; each byte from the buffer at the current offset is deciphered sequentially. If the first byte deciphered is less than the maximum of a signed byte then the packet is assumed to be byte length, otherwise it's considered to be word length. - -== '''Login''' == -Every connection to the main 'gateway' server sends a single byte of data, mostly well known as the connection type. The connection type tells the main server which type of connection you wish to initiate. The old engine list consists of: - -
-Needs documentation on how to login
-
\ No newline at end of file diff --git a/666-Protocol.mediawiki b/666-Protocol.mediawiki deleted file mode 100644 index 203005d..0000000 --- a/666-Protocol.mediawiki +++ /dev/null @@ -1,1957 +0,0 @@ -[[Category RS2]] -This page is an attempt to document the protocol and other relevant information for client build 666. - -== '''Handshakes''' == -This section documents the handshake packets sent from the client to the server. - -{| class="wikitable" style="text-align: center" -|- -! Name -! Opcode -! Length -! Fields -! Description -|- -! Init Game Connection -| 14 -| 0 -| None -| Indicates that the connection is for logging the client into the lobby or game. -|- -! Init Update Connection -| 15 -| 4 -| style="text-align: left" | -* client_build: int32 -| Indicates that the connection is for streaming the game's resources to the client. -|- -! Game Login -| 16 -| Variable (short) -| style="text-align: left" | -* client_build: int32 -* reconnecting: int8 -* rsa_block_len: int16 -* RSA block -** block_header: int8 -** xtea_key: int32[4] -** unknown: int64 -** password: cstring -** server_session_key: int64 -** client_session_key: int64 -* XTEA block -** username: cstring -** unknown: int8 -** screen_type: int8 -** screen_width: int16 -** screen_height: int16 -** multisampling_level: int8 -** uid: int8[24] -** settings: cstring -** affiliate_id: int32 -** preferences_length: int8 -** preferences_data: int8[preferences_length] -** System info -*** sysinfo_version: int8 -*** os_type: int8 -*** is_64bit: int8 -*** os_version: int8 -*** java_vendor: int8 -*** java_release: int8 -*** java_version: int8 -*** java_update: int8 -*** unsigned: int8 -*** heap_size: int16 -*** processor_count: int8 -*** total_memory: int24 -*** unknown: int16 -*** unknown: int8 -*** unknown: int8 -*** unknown: int8 -*** unknown: jstring -*** unknown: jstring -*** unknown: jstring -*** unknown: jstring -*** unknown: int8 -*** unknown: int16 -** unknown: int32 -** user_flow: int64 -** has_additional_info: int8 -*** additional_info: cstring -** has_jagtheora: int8 -** using_javascript: int8 -** archive_checksums: int32[36] -| Attempts to login to the game server. -|- -! Handshake 17 -| 17 -| 0 -| None -| Not used but present in the client. -|- -! Lobby Login -| 19 -| Variable (short) -| style="text-align: left" | -* client_build: int32 -* rsa_block_len: int16 -* RSA block -** block_header: int8 -** xtea_key: int32[4] -** unknown: int64 -** password: cstring -** server_session_key: int64 -** client_session_key: int64 -* XTEA block -** username: cstring -** game_id: int8 -** language: int8 -** uid: int8[24] -** settings: cstring -** affiliate_id: int32 -** archive_checksums: int32[36] -| Attempts to login to the lobby server. -|- -! Create Account -| 22 -| Variable (short) -| style="text-align: left" | -* client_build: int32 -* rsa_block_len: int16 -* RSA block -** block_header: int8 -** xtea_key: int32[4] -** padding: int32[10] -** unknown: int16 -* XTEA block -** email: cstring -** affiliate_id: int16 -** password: cstring -** user_flow: int64 -** language: int8 -** game_id: int8 -** uid: int8[24] -** has_additional_info: int8 -*** additional_info: cstring -** age: int8 -** email_updates: int8 -** padding: int8[7] -| Attempts to create an account with the given information. -|- -! Handshake 23 -| 23 -| 4 -| None -| Not used but present in the client. -|- -! Handshake 24 -| 24 -| Variable (byte) -| None -| Not used but present in the client. -|- -! Finished Advertisement -| 26 -| 0 -| None -| Notifies the server that the client has finished viewing the advertisement. -|- -! Handshake 27 -| 27 -| 0 -| None -| Not used but present in the client. -|- -! Check Email -| 28 -| Variable (short) -| style="text-align: left" | -* client_build: int32 -* rsa_block_len: int16 -* RSA block -** block_header: int8 -** xtea_key: int32[4] -** padding: int32[10] -** unknown: int16 -* XTEA block -** email: cstring -** language: int8 -** padding: int8[7] -| Asks the server to verify whether the given email can be used to create an account. -|- -! Init Social Network Connection -| 29 -| Variable (short) -| style="text-align: left" | -* client_build: int32 -* reconnecting: int8 (if game server connection) -* rsa_block_len: int16 -* RSA block -** block_header: int8 -** xtea_key: int32[4] -** social_network_id: int8 -** unknown: int16 -** language: int8 -** affiliate_id: int32 -** padding: int32[6] -** client_session_key: int64 -** game_id: int8 -** unknown: int8 -| Initializes a connection using a social network. -|- -! Social Network Login -| 30 -| Variable (short) -| style="text-align: left" | -* Game login -** XTEA block -*** unknown: int8 -*** screen_type: int8 -*** screen_width: int16 -*** screen_height: int16 -*** multisampling_level: int8 -*** uid: int8[24] -*** settings: cstring -*** affiliate_id: int32 -*** preferences_length: int8 -*** preferences_data: int8[preferences_length] -*** System info -**** sysinfo_version: int8 -**** os_type: int8 -**** is_64bit: int8 -**** os_version: int8 -**** java_vendor: int8 -**** java_release: int8 -**** java_version: int8 -**** java_update: int8 -**** unsigned: int8 -**** heap_size: int16 -**** processor_count: int8 -**** total_memory: int24 -**** unknown: int16 -**** unknown: int8 -**** unknown: int8 -**** unknown: int8 -**** unknown: jstring -**** unknown: jstring -**** unknown: jstring -**** unknown: jstring -**** unknown: int8 -**** unknown: int16 -*** unknown: int32 -*** user_flow: int64 -*** has_additional_info: int8 -**** additional_info: cstring -*** has_jagtheora: int8 -*** using_javascript: int8 -*** archive_checksums: int32[36] -* Lobby login -** XTEA block -*** game_id: int8 -*** language: int8 -*** uid: int8[24] -*** settings: cstring -*** affiliate_id: int32 -*** archive_checksums: int32[36] -| Attempts to login to either the game or lobby server using a social network. -|- -|} - -== '''Game Protocol''' == - -=== '''Packets''' === -This section documents the packets sent between the client and server during normal gameplay. - -==== '''Client-to-Server''' ==== -{| class="wikitable" style="text-align: center" -|- -! Name -! Opcode -! Length -! Fields -! Description -|- -! Map Build Complete -| 0 -| 0 -| None -| Indicates that the client has just finished rebuilding its map. -|- -! Location Option 1 -| 1 -| 7 -| style="text-align: left" | -* pos_y: int16a -* pos_x: le_int16a -* location_id: le_int16 -* ctrl_pressed: int8 -| Sent when the first option for a location is selected. -|- -! Remove Ignore -| 2 -| Variable (byte) -| style="text-align: left" | -* name: cstring -| Sent when the client wants to stop ignoring a player. -|- -! Packet 3 -| 3 -| 8 -| -| -|- -! Player Option 8 -| 4 -| 3 -| style="text-align: left" | -* player_index: int16 -* ctrl_pressed: int8 -| Sent when the eighth option for a player is selected. -|- -! Packet 5 -| 5 -| Variable (byte) -| -| -|- -! Packet 6 -| 6 -| 15 -| -| -|- -! Packet 7 -| 7 -| 8 -| -| -|- -! Packet 8 -| 8 -| 6 -| -| -|- -! Packet 9 -| 9 -| Variable (byte) -| -| -|- -! Npc Option 3 -| 10 -| 3 -| style="text-align: left" | -* npc_index: le_int16a -* ctrl_pressed: int8c -| Sent when the third option for an npc is selected. -|- -! Packet 11 -| 11 -| 8 -| -| -|- -! Packet 12 -| 12 -| Variable (byte) -| -| -|- -! Packet 13 -| 13 -| Variable (byte) -| -| -|- -! Player Option 10 -| 14 -| 3 -| style="text-align: left" | -* player_index: int16 -* ctrl_pressed: int8 -| Sent when the tenth option for a player is selected. -|- -! Packet 15 -| 15 -| 4 -| -| -|- -! Ground Object Option 5 -| 16 -| 7 -| style="text-align: left" | -* pos_y: int16 -* object_id: int16 -* pos_x: int16 -* ctrl_pressed: int8 -| Sent when the fifth option for a ground object is selected. -|- -! Packet 17 -| 17 -| 8 -| -| -|- -! Packet 18 -| 18 -| 1 -| -| -|- -! Packet 19 -| 19 -| Variable (byte) -| -| -|- -! Packet 20 -| 20 -| 4 -| -| -|- -! Packet 21 -| 21 -| 2 -| -| -|- -! Packet 22 -| 22 -| Variable (byte) -| -| -|- -! Ground Object Option 2 -| 23 -| 7 -| style="text-align: left" | -* pos_y: int16 -* object_id: int16 -* pos_x: int16 -* ctrl_pressed: int8 -| Sent when the second option for a ground object is selected. -|- -! Ground Object Option 3 -| 24 -| 7 -| style="text-align: left" | -* pos_y: int16 -* object_id: int16 -* pos_x: int16 -* ctrl_pressed: int8 -| Sent when the third option for a ground object is selected. -|- -! Packet 25 -| 25 -| 8 -| -| -|- -! Packet 26 -| 26 -| 16 -| -| -|- -! Npc Option 6 -| 27 -| 3 -| style="text-align: left" | -* npc_index: le_int16a -* ctrl_pressed: int8c -| Sent when the sixth option for an npc is selected. -|- -! Ground Object Option 6 -| 28 -| 7 -| style="text-align: left" | -* pos_y: int16 -* object_id: int16 -* pos_x: int16 -* ctrl_pressed: int8 -| Sent when the sixth option for a ground object is selected. -|- -! Npc Option 1 -| 29 -| 3 -| style="text-align: left" | -* npc_index: le_int16a -* ctrl_pressed: int8c -| Sent when the first option for an npc is selected. -|- -! Packet 30 -| 30 -| Variable (byte) -| -| -|- -! Add Friend -| 31 -| Variable (byte) -| style="text-align: left" | -* name: cstring -| Sent when the client wants to be friends with a player. -|- -! Detect Modified Client -| 32 -| 4 -| style="text-align: left" | -* value: int32 -| Sent on each map rebuild if the client detects that it is not running as an applet. -The ''value'' field will always have value 0x3f008edd. -|- -! No Timeout -| 33 -| 0 -| None -| Sent if the client has not sent the server any data for 50 ticks. -|- -! Packet 34 -| 34 -| 6 -| -| -|- -! Remove Friend -| 35 -| Variable (byte) -| style="text-align: left" | -* name: cstring -| Sent when the client wants to stop being friends with a player. -|- -! Packet 36 -| 36 -| 6 -| -| -|- -! Packet 37 -| 37 -| 4 -| -| -|- -! Location Option 5 -| 38 -| 7 -| style="text-align: left" | -* pos_y: int16a -* pos_x: le_int16a -* location_id: le_int16 -* ctrl_pressed: int8 -| Sent when the fifth option for a location is selected. -|- -! Location Option 2 -| 39 -| 7 -| style="text-align: left" | -* pos_y: int16a -* pos_x: le_int16a -* location_id: le_int16 -* ctrl_pressed: int8 -| Sent when the second option for a location is selected. -|- -! Packet 40 -| 40 -| 8 -| -| -|- -! Packet 41 -| 41 -| 12 -| -| -|- -! Packet 42 -| 42 -| 15 -| -| -|- -! Player Option 1 -| 43 -| 3 -| style="text-align: left" | -* player_index: int16 -* ctrl_pressed: int8 -| Sent when the first option for a player is selected. -|- -! Player Option 2 -| 44 -| 3 -| style="text-align: left" | -* player_index: int16 -* ctrl_pressed: int8 -| Sent when the second option for a player is selected. -|- -! Ground Object Option 1 -| 45 -| 7 -| style="text-align: left" | -* pos_y: int16 -* object_id: int16 -* pos_x: int16 -* ctrl_pressed: int8 -| Sent when the first option for a ground object is selected. -|- -! Packet 46 -| 46 -| Variable (byte) -| -| -|- -! Player Option 5 -| 47 -| 3 -| style="text-align: left" | -* player_index: int16 -* ctrl_pressed: int8 -| Sent when the fifth option for a player is selected. -|- -! Packet 48 -| 48 -| 8 -| -| -|- -! Ground Object Option 4 -| 49 -| 7 -| style="text-align: left" | -* pos_y: int16 -* object_id: int16 -* pos_x: int16 -* ctrl_pressed: int8 -| Sent when the fourth option for a ground object is selected. -|- -! Packet 50 -| 50 -| Variable (byte) -| -| -|- -! Player Option 9 -| 51 -| 3 -| style="text-align: left" | -* player_index: int16 -* ctrl_pressed: int8 -| Sent when the ninth option for a player is selected. -|- -! Packet 52 -| 52 -| 4 -| -| -|- -! Minimap Walk -| 53 -| 18 -| style="text-align: left" | -* dest_y: le_int16 -* ctrl_pressed: int8c -* dest_x: le_int16a -* dummy1: int8 -* dummy2: int8 -* camera_yaw: int16 -* dummy3: int8 -* yaw_random: int8 -* scale_random: int8 -* dummy4: int8 -* world_x: int16 -* world_y: int16 -* dummy5: int8 -| Sent when a position on the minimap is clicked. -Fields ''dummy1'' and ''dummy2'' should have value -1. ''dummy3'' should have value 57. ''dummy4'' should have value 89. ''dummy5'' should have value 63. - -The ''yaw_random'' and ''scale_random'' contain the current random offsets added to the client's camera yaw and minimap scale values. - -The ''world_x'' and ''world_y'' fields contain the client's current position in world coordinates. -|- -! Packet 54 -| 54 -| 8 -| -| -|- -! Packet 55 -| 55 -| Variable (byte) -| -| -|- -! Game View Walk -| 56 -| 5 -| style="text-align: left" | -* dest_y: le_int16 -* ctrl_pressed: int8c -* dest_x: le_int16a -| Sent when a position in the 3d game world is clicked. -|- -! Packet 57 -| 57 -| 11 -| -| -|- -! Location Option 4 -| 58 -| 7 -| style="text-align: left" | -* pos_y: int16a -* pos_x: le_int16a -* location_id: le_int16 -* ctrl_pressed: int8 -| Sent when the fourth option for a location is selected. -|- -! Packet 59 -| 59 -| Variable (byte) -| -| -|- -! Packet 60 -| 60 -| 1 -| -| -|- -! Npc Option 5 -| 61 -| 3 -| style="text-align: left" | -* npc_index: le_int16a -* ctrl_pressed: int8c -| Sent when the fifth option for an npc is selected. -|- -! Packet 62 -| 62 -| Variable (byte) -| -| -|- -! Packet 63 -| 63 -| 4 -| -| -|- -! Packet 64 -| 64 -| 0 -| -| -|- -! Packet 65 -| 65 -| 11 -| -| -|- -! Packet 66 -| 66 -| 8 -| -| -|- -! Packet 67 -| 67 -| 2 -| -| -|- -! Add Ignore -| 68 -| Variable (byte) -| style="text-align: left" | -* name: cstring -* temporary: int8 -| Sent when the client wants to ignore a player. -|- -! Npc Option 4 -| 69 -| 3 -| style="text-align: left" | -* npc_index: le_int16a -* ctrl_pressed: int8c -| Sent when the fourth option for an npc is selected. -|- -! Npc Option 2 -| 70 -| 3 -| style="text-align: left" | -* npc_index: le_int16a -* ctrl_pressed: int8c -| Sent when the second option for an npc is selected. -|- -! Packet 71 -| 71 -| 16 -| -| -|- -! Player Option 7 -| 72 -| 3 -| style="text-align: left" | -* player_index: int16 -* ctrl_pressed: int8 -| Sent when the seventh option for a player is selected. -|- -! Packet 73 -| 73 -| 2 -| -| -|- -! Packet 74 -| 74 -| Variable (byte) -| -| -|- -! Location Option 6 -| 75 -| 7 -| style="text-align: left" | -* pos_y: int16a -* pos_x: le_int16a -* location_id: le_int16 -* ctrl_pressed: int8 -| Sent when the sixth option for a location is selected. -|- -! Packet 76 -| 76 -| 4 -| -| -|- -! Packet 77 -| 77 -| 2 -| -| -|- -! Packet 78 -| 78 -| 3 -| -| -|- -! Packet 79 -| 79 -| Variable (byte) -| -| -|- -! Packet 80 -| 80 -| Variable (byte) -| -| -|- -! Packet 81 -| 81 -| Variable (byte) -| -| -|- -! Packet 82 -| 82 -| Variable (byte) -| -| -|- -! Player Option 4 -| 83 -| 3 -| style="text-align: left" | -* player_index: int16 -* ctrl_pressed: int8 -| Sent when the fourth option for a player is selected. -|- -! Packet 84 -| 84 -| 8 -| -| -|- -! Packet 85 -| 85 -| 8 -| -| -|- -! Location Option 3 -| 86 -| 7 -| style="text-align: left" | -* pos_y: int16a -* pos_x: le_int16a -* location_id: le_int16 -* ctrl_pressed: int8 -| Sent when the third option for a location is selected. -|- -! Packet 87 -| 87 -| 0 -| -| -|- -! Packet 88 -| 88 -| Variable (byte) -| -| -|- -! Packet 89 -| 89 -| Variable (byte) -| -| -|- -! Player Option 3 -| 90 -| 3 -| style="text-align: left" | -* player_index: int16 -* ctrl_pressed: int8 -| Sent when the third option for a player is selected. -|- -! Player Option 6 -| 91 -| 3 -| style="text-align: left" | -* player_index: int16 -* ctrl_pressed: int8 -| Sent when the sixth option for a player is selected. -|- -! Packet 92 -| 92 -| 4 -| -| -|- -! Packet 93 -| 93 -| Variable (byte) -| -| -|- -|} - -==== '''Server-to-Client''' ==== -{| class="wikitable" style="text-align: center" -|- -! Name -! Opcode -! Length -! Fields -! Description -|- -! Packet 0 -| 0 -| 2 -| -| -|- -! Packet 1 -| 1 -| 0 -| -| -|- -! Packet 2 -| 2 -| Variable (byte) -| -| -|- -! Packet 3 -| 3 -| Variable (byte) -| -| -|- -! Packet 4 -| 4 -| 0 -| -| -|- -! Packet 5 -| 5 -| Variable (short) -| -| -|- -! Packet 6 -| 6 -| Variable (short) -| -| -|- -! Packet 7 -| 7 -| 20 -| -| -|- -! Packet 8 -| 8 -| 6 -| -| -|- -! Packet 9 -| 9 -| 10 -| -| -|- -! Packet 10 -| 10 -| 2 -| -| -|- -! Packet 11 -| 11 -| Variable (short) -| -| -|- -! Packet 12 -| 12 -| 7 -| -| -|- -! Packet 13 -| 13 -| Variable (short) -| -| -|- -! Packet 14 -| 14 -| 6 -| -| -|- -! Packet 15 -| 15 -| Variable (byte) -| -| -|- -! Packet 16 -| 16 -| 2 -| -| -|- -! Packet 17 -| 17 -| Variable (byte) -| -| -|- -! Packet 18 -| 18 -| 1 -| -| -|- -! Packet 19 -| 19 -| Variable (short) -| -| -|- -! Packet 20 -| 20 -| 4 -| -| -|- -! Packet 21 -| 21 -| 3 -| -| -|- -! Packet 22 -| 22 -| 6 -| -| -|- -! Packet 23 -| 23 -| Variable (short) -| -| -|- -! Packet 24 -| 24 -| 5 -| -| -|- -! Packet 25 -| 25 -| 17 -| -| -|- -! Packet 26 -| 26 -| 6 -| -| -|- -! Packet 27 -| 27 -| 16 -| -| -|- -! Packet 28 -| 28 -| 0 -| -| -|- -! Packet 29 -| 29 -| 4 -| -| -|- -! Packet 30 -| 30 -| 3 -| -| -|- -! Packet 31 -| 31 -| 10 -| -| -|- -! Packet 32 -| 32 -| Variable (short) -| -| -|- -! Packet 33 -| 33 -| 6 -| -| -|- -! Packet 34 -| 34 -| 6 -| -| -|- -! Packet 35 -| 35 -| 7 -| -| -|- -! Packet 36 -| 36 -| Variable (byte) -| -| -|- -! Packet 37 -| 37 -| 6 -| -| -|- -! Packet 38 -| 38 -| Variable (short) -| -| -|- -! Packet 39 -| 39 -| 6 -| -| -|- -! Packet 40 -| 40 -| 9 -| -| -|- -! Packet 41 -| 41 -| Variable (short) -| -| -|- -! Packet 42 -| 42 -| 12 -| -| -|- -! Packet 43 -| 43 -| 2 -| -| -|- -! Packet 44 -| 44 -| 1 -| -| -|- -! Packet 45 -| 45 -| Variable (byte) -| -| -|- -! Packet 46 -| 46 -| 3 -| -| -|- -! Packet 47 -| 47 -| 8 -| -| -|- -! Packet 48 -| 48 -| 4 -| -| -|- -! Packet 49 -| 49 -| 3 -| -| -|- -! Packet 50 -| 50 -| Variable (byte) -| -| -|- -! Packet 51 -| 51 -| 4 -| -| -|- -! Packet 52 -| 52 -| Variable (byte) -| -| -|- -! Packet 53 -| 53 -| 0 -| -| -|- -! Packet 54 -| 54 -| Variable (byte) -| -| -|- -! Packet 55 -| 55 -| 3 -| -| -|- -! Packet 56 -| 56 -| Variable (short) -| -| -|- -! Packet 57 -| 57 -| 8 -| -| -|- -! Packet 58 -| 58 -| 2 -| -| -|- -! Packet 59 -| 59 -| 0 -| -| -|- -! Packet 60 -| 60 -| 4 -| -| -|- -! Packet 61 -| 61 -| 6 -| -| -|- -! Packet 62 -| 62 -| Variable (byte) -| -| -|- -! Packet 63 -| 63 -| Variable (byte) -| -| -|- -! Packet 64 -| 64 -| 10 -| -| -|- -! Packet 65 -| 65 -| 3 -| -| -|- -! Packet 66 -| 66 -| 4 -| -| -|- -! Packet 67 -| 67 -| 4 -| -| -|- -! Packet 68 -| 68 -| 0 -| -| -|- -! Packet 69 -| 69 -| Variable (short) -| -| -|- -! Packet 70 -| 70 -| Variable (short) -| -| -|- -! Packet 71 -| 71 -| Variable (byte) -| -| -|- -! Packet 72 -| 72 -| 8 -| -| -|- -! Packet 73 -| 73 -| 3 -| -| -|- -! Packet 74 -| 74 -| 6 -| -| -|- -! Packet 75 -| 75 -| 4 -| -| -|- -! Packet 76 -| 76 -| 7 -| -| -|- -! Packet 77 -| 77 -| 3 -| -| -|- -! Packet 78 -| 78 -| 4 -| -| -|- -! Packet 79 -| 79 -| 1 -| -| -|- -! Packet 80 -| 80 -| 6 -| -| -|- -! Packet 81 -| 81 -| 10 -| -| -|- -! Packet 82 -| 82 -| Variable (short) -| -| -|- -! Packet 83 -| 83 -| 1 -| -| -|- -! Packet 84 -| 84 -| Variable (short) -| -| -|- -! Packet 85 -| 85 -| 0 -| -| -|- -! Packet 86 -| 86 -| Variable (short) -| -| -|- -! Packet 87 -| 87 -| 8 -| -| -|- -! Packet 88 -| 88 -| Variable (byte) -| -| -|- -! Packet 89 -| 89 -| 8 -| -| -|- -! Packet 90 -| 90 -| Variable (byte) -| -| -|- -! Packet 91 -| 91 -| 10 -| -| -|- -! Packet 92 -| 92 -| 28 -| -| -|- -! Packet 93 -| 93 -| 12 -| -| -|- -! Packet 94 -| 94 -| 0 -| -| -|- -! Packet 95 -| 95 -| Variable (short) -| -| -|- -! Packet 96 -| 96 -| Variable (byte) -| -| -|- -! Packet 97 -| 97 -| 8 -| -| -|- -! Packet 98 -| 98 -| Variable (byte) -| -| -|- -! Packet 99 -| 99 -| Variable (short) -| -| -|- -! Packet 100 -| 100 -| 3 -| -| -|- -! Packet 101 -| 101 -| 4 -| -| -|- -! Packet 102 -| 102 -| 5 -| -| -|- -! Packet 103 -| 103 -| 0 -| -| -|- -! Packet 104 -| 104 -| 1 -| -| -|- -! Packet 105 -| 105 -| 6 -| -| -|- -! Packet 106 -| 106 -| Variable (byte) -| -| -|- -! Packet 107 -| 107 -| 5 -| -| -|- -! Packet 108 -| 108 -| 9 -| -| -|- -! Packet 109 -| 109 -| 6 -| -| -|- -! Packet 110 -| 110 -| 2 -| -| -|- -! Packet 111 -| 111 -| 3 -| -| -|- -! Packet 112 -| 112 -| Variable (short) -| -| -|- -! Packet 113 -| 113 -| 1 -| -| -|- -! Packet 114 -| 114 -| Variable (byte) -| -| -|- -! Packet 115 -| 115 -| 6 -| -| -|- -! Packet 116 -| 116 -| 12 -| -| -|- -! Packet 117 -| 117 -| Variable (byte) -| -| -|- -! Packet 118 -| 118 -| Variable (byte) -| -| -|- -! Packet 119 -| 119 -| 11 -| -| -|- -! Packet 120 -| 120 -| 6 -| -| -|- -! Packet 121 -| 121 -| 4 -| -| -|- -! Packet 122 -| 122 -| Variable (short) -| -| -|- -! Packet 123 -| 123 -| 3 -| -| -|- -! Packet 124 -| 124 -| 7 -| -| -|- -! Packet 125 -| 125 -| 0 -| -| -|- -! Packet 126 -| 126 -| 0 -| -| -|- -! Packet 127 -| 127 -| Variable (byte) -| -| -|- -! Packet 128 -| 128 -| 0 -| -| -|- -! Packet 129 -| 129 -| 2 -| -| -|- -! Packet 130 -| 130 -| Variable (byte) -| -| -|- -! Packet 131 -| 131 -| 6 -| -| -|- -! Packet 132 -| 132 -| 5 -| -| -|- -! Packet 133 -| 133 -| 6 -| -| -|- -! Packet 134 -| 134 -| Variable (short) -| -| -|- -! Packet 135 -| 135 -| 6 -| -| -|- -! Packet 136 -| 136 -| 6 -| -| -|- -! Packet 137 -| 137 -| 2 -| -| -|- -! Packet 138 -| 138 -| Variable (short) -| -| -|- -! Packet 139 -| 139 -| 7 -| -| -|- -! Packet 140 -| 140 -| 1 -| -| -|- -! Packet 141 -| 141 -| Variable (short) -| -| -|- -! Packet 142 -| 142 -| 10 -| -| -|- -! Packet 143 -| 143 -| 6 -| -| -|- -! Packet 144 -| 144 -| Variable (byte) -| -| -|- -|} - -== '''Update Protocol''' == - -This section documents the communication between the client and server over the connection used to stream resources. - -=== '''Handshake Response''' === - -After receiving a handshake for the update protocol, the server responds with one of the following packets: - -{| class="wikitable" style="text-align: center" -|- -! Name -! Id -! Fields -! Description -|- -! OK -| 0 -| style="text-align: left" | -* required_resource_sizes: int32[27] -| Indicates a successful connection. -|- -! OUT_OF_DATE -| 6 -| None -| Indicates that the client is outdated. -|- -! SERVER_FULL -| 7 -| None -| Indicates that the server is full at the moment. -|- -! IP_LIMIT -| 9 -| None -| Indicates that the client is being rate limited. -|- -|} - -=== '''Packets''' === -This section documents the packets sent between the client and server over the update connection. - -==== '''Client-to-Server''' ==== -All packets sent by the client are 4 bytes long. Each packet includes a 1-byte opcode and a 3-byte payload. - -{| class="wikitable" style="text-align: center" -|- -! Name -! Opcode -! Fields -! Description -|- -! Prefetch Request -| 0 -| style="text-align: left" | -* index: int8 -* file: int16 -| A passive request for a resource. -|- -! Urgent Request -| 1 -| style="text-align: left" | -* index: int8 -* file: int16 -| An urgent request for a resource. -|- -! Client Logged In -| 2 -| style="text-align: left" | -* padding: int24 -| Indicates that the client has logged in. May be useful for adjusting response rate. -|- -! Client Logged Out -| 3 -| style="text-align: left" | -* padding: int24 -| Indicates that the client has logged out. May be useful for adjusting response rate. -|- -! Update XOR Code -| 4 -| style="text-align: left" | -* xor_code: int8 -* padding: int16 -| Proposes a code to be used to encrypt all traffic. May be used to bypass firewalls or related software. -|- -! Connection Information -| 6 -| style="text-align: left" | -* version: int24 -| Sent after a connection is established. The ''version'' field always has the value 3. -|- -! Drop Request Queue -| 7 -| style="text-align: left" | -* padding: int24 -| Asks for currently pending requests to be dropped by the server. This packet is restricted to administrators by the client. -|- -|} - -==== '''Server-to-Client''' ==== -The server responds to the client's requests for particular resources by sending back the (possibly compressed) files. The data is in the following format: - -{| class="wikitable" style="text-align: center" -|- -! Field -! Description -|- -| index: int8 -| The resource's index. -|- -| file: int16 -| The resource's file number. -|- -| compression_type: int8 -| The compression type of the file. Can be 0 (uncompressed), 1 (compressed using BZIP2), or 2 (compressed using GZIP). -|- -| file_size: int32 -| The (possibly compressed) size of the file. -|- -| uncompressed_size: int32 -| The uncompressed size of the file. This is only present if the file is compressed (i.e. the ''compression_type'' field is set to 1 or 2). -|- -| data: int8[file_size] -| The (possibly compressed) file data. -|- -|} - -Of particular note is that the response is grouped into 512-byte blocks. For every block after the first, the first byte of the block '''must''' be 0xff (decimal 255). - -In addition, if the client has updated its XOR code to be nonzero, the server must XOR each byte of the response with the chosen code before it sends it to the client. \ No newline at end of file diff --git a/668-Protocol.mediawiki b/668-Protocol.mediawiki deleted file mode 100644 index a7361d4..0000000 --- a/668-Protocol.mediawiki +++ /dev/null @@ -1,53 +0,0 @@ -[[Category RS2]] - - -== '''Packet structure''' == -When the client sends a packet to the server, the first byte encapsulates its opcode. This specific opcode is encrypted with a value generated by the ISAAC PRNG seeded with a dynamically server generated key during the login block. The server decrypts it and associates the opcode to the packet's respective predefined size. If the packet does not contain a fixed size, the opcode will be followed by either a byte or a word - varying per packet - for its proper size. This is then followed by the payload. - -== '''Login''' == -Every connection to the main 'gateway' server sends a single byte of data, mostly well known as the connection type. The connection type tells the main server which type of connection you wish to initiate. The old engine list consists of: - -* Login initiation - connection type 14 -* JAGGRAB - connection type 15 -* Create account - connection type 28 -* Facebook login - connection type 29 -* Potentially more... - -
-Needs documentation on how to login
-
- -===Server -> Client Packets=== -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 69 -| VARIABLE_SHORT -| - -| [[668 System update|System update]] -| Displays the system update counter on the player's client. -|- -|} - -===Client -> Server Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 63 -| FIXED -| 6 -| [[508 Dialogue Options|Dialogue Options.]] -| Sent when a player clicks an dialogue button. The data sent is InterfaceId, buttonId, and something yet not discovered. -|- -|} \ No newline at end of file diff --git a/718-Close-window.mediawiki b/718-Close-window.mediawiki deleted file mode 100644 index 01b43c4..0000000 --- a/718-Close-window.mediawiki +++ /dev/null @@ -1,17 +0,0 @@ -[[Category Packet]] -[[Category Packet 718]] -{{packet|name=Close window|description=Closes a window/interface.|opcode=5|type=Fixed|length=4|revision=718}} -== Close window == - -=== Description === - -Closes an interface that is displayed (NOT CHATBOX INTERFACES!). - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Little Endian|Little Endian]] [[Data Types#Standard data types|Int]] || Window ID. -|} \ No newline at end of file diff --git a/718-Friends-packet.mediawiki b/718-Friends-packet.mediawiki deleted file mode 100644 index fdd669a..0000000 --- a/718-Friends-packet.mediawiki +++ /dev/null @@ -1,25 +0,0 @@ -[[Category Packet]] -[[Category Packet 718]] -{{packet|name=Friends packet|description=Sends friend data to the client|opcode=2|type=VARIABLE_SHORT|length=-2|revision=718}} -== Friends packet == - -=== Description === - -Sends friend data to the client - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| [[Data Types#Standard data types|Short]] || If it is a warning message. -|- -| [[Data Types#Standard data types|String]] || Display name -|- -| [[Data Types#Standard data types|String]] || If the display name does not equal the player's username, then this sends the username -|- -| [[Data Types#Standard data types|Short]] || The World ID -|- -| [[Data Types#Standard data types|Byte]] || The player's rank -|} \ No newline at end of file diff --git a/718-Interface.mediawiki b/718-Interface.mediawiki deleted file mode 100644 index d7bd1f8..0000000 --- a/718-Interface.mediawiki +++ /dev/null @@ -1,29 +0,0 @@ -[[Category Packet]] -[[Category Packet 718]] -{{packet|name=Send Interface|description=Sends an interface to be opened.|opcode=14|type=Fixed|length=23|revision=718}} -== Send Interface == - -=== Description === - -Opens an interface (NOT CHATBOX INTERFACES!). - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| Short || The interface ID. -|- -| Int || ? -|- -| Int V2 || ? -|- -| Int V1 || Window ID. -|- -| Byte || If it is a walkable interface (1) or not (0). -|- -| Int V1 || ? -|- -| Int V2 || ? -|} \ No newline at end of file diff --git a/718-Music-effect.mediawiki b/718-Music-effect.mediawiki deleted file mode 100644 index e8ef626..0000000 --- a/718-Music-effect.mediawiki +++ /dev/null @@ -1,21 +0,0 @@ -[[Category Packet]] -[[Category Packet 718]] -{{packet|name=Music effect|description=Plays a music effect.|opcode=9|type=Fixed|length=6|revision=718}} -== Music effect == - -=== Description === - -Plays a sound effect (like the birds chirping). - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| 128 Byte || The volume (0 - 255). -|- -| 24 Bit Integer V2 || ? -|- -| Short || Music effect ID. -|} \ No newline at end of file diff --git a/718-Open-URL.mediawiki b/718-Open-URL.mediawiki deleted file mode 100644 index 3475d0c..0000000 --- a/718-Open-URL.mediawiki +++ /dev/null @@ -1,19 +0,0 @@ -[[Category Packet]] -[[Category Packet 718]] -{{packet|name=Open URL|description=Opens a hyperlink.|opcode=17|type=VARIABLE_SHORT|length=-2|revision=718}} -== Close window == - -=== Description === - -Opens a hyperlink sent (doesn't write to the chatbox, just opens). - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| Byte || ? -|- -| String || The URL. -|} \ No newline at end of file diff --git a/718-Player-under-NPC-priority.mediawiki b/718-Player-under-NPC-priority.mediawiki deleted file mode 100644 index c2f1534..0000000 --- a/718-Player-under-NPC-priority.mediawiki +++ /dev/null @@ -1,17 +0,0 @@ -[[Category Packet]] -[[Category Packet 718]] -{{packet|name=Player under NPC priority|description=Prioritizes the player under the NPC.|opcode=6|type=Fixed|length=1|revision=718}} -== Player under NPC priority == - -=== Description === - -Prioritizes the player under the NPC. - -=== Packet Structure === - -{| border=2 -! Data type -! Description -|- -| Byte C || If is to prioritize (1) or not (0). -|} \ No newline at end of file diff --git a/718-Protocol.mediawiki b/718-Protocol.mediawiki deleted file mode 100644 index fabf923..0000000 --- a/718-Protocol.mediawiki +++ /dev/null @@ -1,186 +0,0 @@ -[[Category Packet]] -[[Category Packet 718]] -[[Category RS2]] - - -== '''Packet structure''' == -? - -== '''Login''' == -? - -== '''Game Protocol''' == - -===Server -> Client Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 2 -| VARIABLE_SHORT -| -2 -| [[718 Friends packet|Friends packet]] -| Sends a friend to the friend list. -|- -| 5 -| FIXED -| 4 -| [[718 Close window|Close window]] -| Closes an interface. -|- -| 6 -| FIXED -| 1 -| [[718 Player under NPC priority|Player under NPC priority]] -| N/A -|- -| 9 -| FIXED -| 6 -| [[718 Music effect|Music effect]] -| Plays a music effect. -|- -| 10 -| VARIABLE_BYTE -| -1 -| [[718 Set mouse|Set mouse]] -| N/A -|- -| 11 -| FIXED -| -2 -| [[718 World list|World list]] -| Sends the world list. -|- -| 14 -| FIXED -| 23 -| [[718 Interface|Interface]] -| Opens an interface. -|- -| 17 -| VARIABLE_SHORT -| -2 -| [[718 Open URL|Open URL]] -| Opens a hyperlink. -|- -| 20 -| FIXED -| 16 -| [[718 Projectile|Projectile]] -| Plays a projectile. -|- -| 23 -| FIXED -| 4 -| [[718 Player on IComponent|Music effect]] -| N/A -|- -| 25 -| FIXED -| 1 -| [[718 Run energy|Run energy]] -| Sends the run energy. -|- -| 30 -| VARIABLE_BYTE -| -1 -| [[718 Send friend quick chat|Send friend quick chat]] -| Sends a friend a quick chat message. -|- -| 31 -| FIXED -| 8 -| [[718 Model on IComponent|Model on IComponent]] -| Sends a model to an IComponent (child interface). -|- -| 32 -| FIXED -| -1 -| [[718 Receive friend quick chat|Receive friend quick chat]] -| Displays a received quick chat message to a friend. -|- -| 33 -| VARIABLE_BYTE -| -1 -| [[718 Receive personal message|Receive personal message]] -| Received a private message (PM) and displays it. -|- -| 39 -| FIXED -| 19 -| [[718 Game pane|Game pane]] -| Sends the game pane. -|- -| 40 -| FIXED -| 12 -| [[718 IComponent Settings|IComponent Settings]] -| N/A -|- -| 42 -| VARIABLE_SHORT -| -2 -| [[718 Load map scene|Load map scene]] -| Loads a map. -|- -| 44 -| FIXED -| 6 -| [[718 Shake camera|Shake camera]] -| Shakes the camera of the character. -|- -| 45 -| FIXED -| 2 -| [[718 Destroy object|Destroy object]] -| Removes an object from the screen. -|- -| 55 -| VARIABLE_SHORT -| -2 -| [[718 Ignores|Ignores]] -| Sends a player to a player's ignore list. -|- -|} - -===Client -> Server Packets=== - -{| border=2 -|- -! Opcode -! Type -! Length (bytes) -! Name -! Description -|- -| 3 -| FIXED -| 16 -| [[718 Item on item|Item on item]] -| Send an item on item request. -|- -| 4 -| VARIABLE_BYTE -| -1 -| [[718 Add ignore|Add ignore]] -| Sends a request to add a person to a person's ignore list. -|- -| 8 -| VARIABLE_BYTE -| -1 -| [[718 Walk|Walk]] -| Sends a request to walk to specific coordinates. -|- -| 9 -| FIXED -| 3 -| [[718 NPC Examine|NPC Examine]] -| Sends a request to examine an NPC. -|- -|} \ No newline at end of file diff --git a/742-Protocol.mediawiki b/742-Protocol.mediawiki deleted file mode 100644 index fc806a4..0000000 --- a/742-Protocol.mediawiki +++ /dev/null @@ -1,90 +0,0 @@ -[[Category RS2]] - -===Server -> Client Packets=== -{| border=2 -|- -! Opcode -! Type -! Size -! Name -! Description -|- -| 47 -| Unknown -| 23 -| [[742 Interface Packet|Interface Packet]] -| Produces an interface for the player to see. -|- -| 116 -| Unknown -| -1 -| [[742 Commands Packet|Commands Packet]] -| The packet to utilize commands. -|- -| 156 -| Unknown -| -3 -| [[742 A Config Packet|A Config Packet]] -| A packet to send one of the four/five types of configs. -|- -| 89 -| Unknown -| -2 -| [[742 Maps Packet|Maps Packet]] -| A packet that sends the loading of maps. -|- -| 90 -| Unknown -| -2 -| [[742 Player Update Packet|Player Update Packet]] -| A packet to update the player's appearance etcetera. -|- -| 72 -| Unknown -| -2 -| [[742 NPC Update Packet|NPC Update Packet]] -| A packet to update a NPC's appearance etcetera. -|- -| 29 -| Unkown -| -2 -| [[742 RunScripts Packet|RunScripts Packet]] -| A packet to send Runscripts. -|- -| 67 -| Unkown -| -2 -| [[742 Items Packet|Items Packet]] -| A packet to load items in a way? -|- -| 120 -| Unkown -| -1 -| [[742 Friends Chat Receive Message Packet|Friends Chat Receive Message Packet]] -| A packet that sends the FC message. -|- -| 147 -| Unkown -| 2 -| [[742 System Update Packet|System Update Packet]] -| A packet for the system update timer. -|- -| 6 -| Unkown -| 3 -| [[742 World Tile Packet|World Tile Packet]] -| A packet to send the World Tile. -|- -| 29 -| Unkown -| -2 -| [[742 RunScripts Packet|RunScripts Packet]] -| A packet to send Runscripts. -|- -| 40 -| Unkown -| 1 -| [[742 Send Skills Packet|Send Skills Packet]] -| A packet to send the skills of a player. -|- -|} \ No newline at end of file diff --git a/Archive-Format.mediawiki b/Archive-Format.mediawiki deleted file mode 100644 index fcbae49..0000000 --- a/Archive-Format.mediawiki +++ /dev/null @@ -1,152 +0,0 @@ -[[Category Cache]] - -== Introduction == - -Since 194 all way up until 377, all the files in cache 0 have an archive-like format which contains a collection of named files (e.g. '''BADENC.TXT''' is a file which contains bad words in the '''wordenc''' archive). - -=== Diagram === - ----- - -[http://img263.imageshack.us/img263/9678/68481568.png External Diagram Image] - -== Usage == - -These files are used by the client for a variety of purposes. Some, such as the '''DATA''' file contain data themselves (in this case the interfaces). Others, such as the '''MAP_INDEX''' file, contain information about where to locate the map and landscape files in the cache. - -== Format == - - tribyte uncompressedsize - tribyte compressedsize - -If the uncompressed and compressed sizes are equal, the whole file is not compressed but the individual entries are compressed using bzip2. If they are not equal, the entire file is compressed using bzip2 but the individual entries are not. - -Also note, the magic id at the start of the bzip2 entries are not included in the cache. If you use an existing API to read the files and want to add this back, you must append the four characters: BZh1 before you decompress. - - short fileCount - -Each file entry has the format: - - int nameHash - tribyte uncompressedSize - tribyte compressedSize - -When you are looping through the files, you need to keep track of the file offset yourself. This psuedocode demonstrates how: - - int offset = buffer.getCurrentOffset() + numFiles * 10; - for(int i = 0; i < numFiles; i++) { - // read values - int thisFileOffset = offset; - offset += thisFileCompressedSize; - } - -To get a named file by its name, you should first hash the name using this method: - - public static int hash(String name) { - int hash = 0; - name = name.toUpperCase(); - for(int j = 0; j < name.length(); j++) { - hash = (hash * 61 + name.charAt(j)) - 32; - } - return hash; - } - -Then, loop through the file entries you loaded earlier to find a matching hash. Read the compressed file size from the offset. If the whole file is not compressed, you should decompress the individual entry. - - -== '''#194 Archive Format''' == - -The 194 (RuneScape 2 beta) client worked with a very simple cache format. Each file in the cache was a file on the operating system. - -=== Name hashing === - -Every name in the cache was hashed using the following method which is, incidentally, similar to the way player names are converted to longs. - - public static final long gethash(String string) { - string = string.trim(); - long l = 0L; - for (int i = 0; i < string.length() && i < 12; i++) { - char c = string.charAt(i); - l *= 37L; - if (c >= 'A' && c <= 'Z') - l += (long) ('\001' + c - 'A'); - else if (c >= 'a' && c <= 'z') - l += (long) ('\001' + c - 'a'); - else if (c >= '0' && c <= '9') - l += (long) ('\033' + c - '0'); - } - return l; - } - -The resulting long was converted to a string and the file was given that name. - -=== Files === - -The files in the cache were the ones used in the [[JAGGRAB Protocol|JAGGRAB Protocol]] (i.e. files in cache 0 in old engine caches) and map (mX_Y) and landscape (lX_Y) files. Incidentally, this naming is very similar to the names of the map and landscape files in new engine caches. - - -== '''#317 Archive Format''' == - -The old engine cache is made up two types of files. - -=== Data file === - -The data file holds all of the files in the cache and is named '''main_file_cache.dat'''. It is therefore very big, typically ~10-20 megabytes.. - -=== Index file === - -There are several index files, named '''main_file_cache.idx''' and then postfixed with a number. Each index file holds 'pointers' to where a file is located in the main cache. Each index file represents a type of file. - -=== Index file format === - -The index file is made up of 6 byte blocks which hold information about where a file can be located in the data file. The format of a single block is as follows: - - tribyte fileSize - tribyte initialDataBlockId - -=== Data file format === - -The data file is made up of 520 byte blocks. The format of each of these blocks is as follows: - - short nextFileId - short currentFilePartId - tribyte nextDataBlockId - byte nextFileTypeId - byte[512] blockData - -=== Explanation === - -An example will be used here as it is easier to follow. - -Let us say, the client wishes to fetch file type 2, file id 17. - -First off, it will open the main_file_cache.idx2 file and seek to the index 17 * 6 (102). It will then read two tribytes. - - fileSize = 1200 - intialDataBlockId = 4 - -The client will now open the main_file_cache.dat file and seek to the index 4 * 520 (2080). The values it reads will be: - - nextFileId = 17 - currentFilePartId = 0 - nextDataBlockId = 5 - nextFileTypeId = 2 - blockData = ... - -It will read the first 512 bytes of the file and then knows that there is 688 bytes left. Therefore, it has to read the next block. - - nextFileId = 17 - currentFilePartId = 1 - nextDataBlockId = 6 - nextFileTypeId = 2 - blockData ... - -It reads these next 512 bytes of the file and now knows that there are 176 bytes left. So for a final time, it will read the next block. - - nextFileId = 18 - currentFilePartId = 2 - nextDataBlockId = 7 - nextFileTypeId = 2 - blockData = ... - -It can ignore most of these values (the next ones are meaningless at this stage) and read the final 176 bytes. The whole 1200 byte file has now been read. \ No newline at end of file diff --git a/Categories.mediawiki b/Categories.mediawiki deleted file mode 100644 index 405609d..0000000 --- a/Categories.mediawiki +++ /dev/null @@ -1,13 +0,0 @@ - -The following categories contain pages or media. -* [[Category Cache]] (3 members) -* [[Category Data Type]] (3 members) -* [[Category Packet]] (148 members) -* [[Category Packet 194]] (4 members) -* [[Category Packet 317]] (109 members) -* [[Category Packet 377]] (24 members) -* [[Category Packet 474]] (3 members) -* [[Category Packet 718]] (7 members) -* [[Category Packet {{{revision}}}]] (1 members) -* [[Category RS2]] (15 members) -* [[Category RSC]] (7 members) diff --git a/Category-Category-RS2.mediawiki b/Category-Category-RS2.mediawiki deleted file mode 100644 index 549fbb8..0000000 --- a/Category-Category-RS2.mediawiki +++ /dev/null @@ -1,4 +0,0 @@ - -== '''Pages in category "Category RS2"''' == -The following 1 pages are in this category. -* [[718 Protocol]] diff --git a/Category-Data-Type.mediawiki b/Category-Data-Type.mediawiki deleted file mode 100644 index 677722d..0000000 --- a/Category-Data-Type.mediawiki +++ /dev/null @@ -1,6 +0,0 @@ - -== '''Pages in category "Data Type"''' == -The following 3 pages are in this category. -* [[DWord]] -* [[QWord]] -* [[Word]] diff --git a/Category-Packet-194.mediawiki b/Category-Packet-194.mediawiki deleted file mode 100644 index d5269f9..0000000 --- a/Category-Packet-194.mediawiki +++ /dev/null @@ -1,7 +0,0 @@ - -== '''Pages in category "Packet 194"''' == -The following 4 pages are in this category. -* [[194 Clear screen]] -* [[194 Logout]] -* [[194 Protocol]] -* [[194 Show interface]] diff --git a/Category-Packet-317.mediawiki b/Category-Packet-317.mediawiki deleted file mode 100644 index 18cb478..0000000 --- a/Category-Packet-317.mediawiki +++ /dev/null @@ -1,113 +0,0 @@ -317 Packets - -== '''Pages in category "Packet 317"''' == -The following 109 pages are in this category. -* [[317 Add friend]] -* [[317 Add ignore]] -* [[317 Alternate item option 2]] -* [[317 Animation reset]] -* [[317 Attack (NPC)]] -* [[317 Audio]] -* [[317 Bank 10 items]] -* [[317 Bank 5 items]] -* [[317 Bank all items]] -* [[317 Bank X items part 1]] -* [[317 Bank X items part 2]] -* [[317 Begin player updating]] -* [[317 Button click]] -* [[317 Camera movement]] -* [[317 Camera shake]] -* [[317 Chat interface click]] -* [[317 Chat interface]] -* [[317 Chat settings]] -* [[317 Clear inventory]] -* [[317 Clear screen]] -* [[317 Close window]] -* [[317 Construct map region]] -* [[317 Create Projectile]] -* [[317 Design screen]] -* [[317 Display hint icon]] -* [[317 Drop item]] -* [[317 Enter name]] -* [[317 Equip item]] -* [[317 Flash sidebar]] -* [[317 Focus change]] -* [[317 Follow]] -* [[317 Force client setting]] -* [[317 Friends list status]] -* [[317 Ground Item Action]] -* [[317 Hidden Interface]] -* [[317 Idle logout]] -* [[317 Idle]] -* [[317 Initialize player]] -* [[317 Input amount]] -* [[317 Interface animation]] -* [[317 Interface color]] -* [[317 Interface item]] -* [[317 Interface model rotation]] -* [[317 Interface offset]] -* [[317 Interface over tab]] -* [[317 Inventory overlay]] -* [[317 Item action 1]] -* [[317 Item on floor]] -* [[317 Item on item]] -* [[317 Item on object]] -* [[317 Item on player]] -* [[317 Light item]] -* [[317 Loading finished]] -* [[317 Load map region]] -* [[317 Logout]] -* [[317 Mage NPC]] -* [[317 Magic on items]] -* [[317 Magic on player]] -* [[317 Minimap State]] -* [[317 Mouse click]] -* [[317 Move item]] -* [[317 Music]] -* [[317 NPC action 1]] -* [[317 NPC action 2]] -* [[317 NPC action 3]] -* [[317 NPC Dialogue]] -* [[317 NPC head on interface]] -* [[317 Object action 1]] -* [[317 Object action 2]] -* [[317 Object action 3]] -* [[317 Object removal]] -* [[317 Object spawn]] -* [[317 Open chatbox interface]] -* [[317 Open welcome screen]] -* [[317 Pickup ground item]] -* [[317 Player command]] -* [[317 Player head to interface]] -* [[317 Player Option]] -* [[317 Play song]] -* [[317 Privacy options]] -* [[317 Protocol]] -* [[317 Region change]] -* [[317 Remove friend]] -* [[317 Remove ignore]] -* [[317 Report player]] -* [[317 Reset button state]] -* [[317 Reset camera]] -* [[317 Reset destination]] -* [[317 Run energy]] -* [[317 Scroll position]] -* [[317 Send add friend]] -* [[317 Send add ignore]] -* [[317 Send message]] -* [[317 Send private message]] -* [[317 Send sidebar interface]] -* [[317 Send Skill]] -* [[317 Set interface text]] -* [[317 Show interface]] -* [[317 Show multi combat]] -* [[317 Show tab]] -* [[317 Skill level]] -* [[317 Song Queue]] -* [[317 System update]] -* [[317 Trade answer]] -* [[317 Trade request]] -* [[317 Unequip item]] -* [[317 Update item container]] -* [[317 Walkable interface]] -* [[317 Weight]] diff --git a/Category-Packet-377.mediawiki b/Category-Packet-377.mediawiki deleted file mode 100644 index 889f21e..0000000 --- a/Category-Packet-377.mediawiki +++ /dev/null @@ -1,27 +0,0 @@ - -== '''Pages in category "Packet 377"''' == -The following 24 pages are in this category. -* [[377 Animation Reset]] -* [[377 Camera Shake]] -* [[377 Construct Map Region]] -* [[377 Create Static Graphic]] -* [[377 Initialize Player]] -* [[377 Input Amount]] -* [[377 Interface Animation]] -* [[377 Interface Item]] -* [[377 Inventory Overlay]] -* [[377 Logout]] -* [[377 Move Camera]] -* [[377 Open Welcome Screen]] -* [[377 Play Ambient Wave]] -* [[377 Protocol]] -* [[377 Reset Button State]] -* [[377 Reset Ground Items and Objects]] -* [[377 Run Energy]] -* [[377 Send Add Friend]] -* [[377 Send Ground Item]] -* [[377 Send Message]] -* [[377 Send Sidebar Interface]] -* [[377 Send Sound]] -* [[377 Skill Level]] -* [[377 Walkable Interface]] diff --git a/Category-Packet-474.mediawiki b/Category-Packet-474.mediawiki deleted file mode 100644 index c66c4ab..0000000 --- a/Category-Packet-474.mediawiki +++ /dev/null @@ -1,6 +0,0 @@ - -== '''Pages in category "Packet 474"''' == -The following 3 pages are in this category. -* [[474 Fourth Interface Option]] -* [[474 Protocol]] -* [[474 Remove ignore]] diff --git a/Category-Packet-718.mediawiki b/Category-Packet-718.mediawiki deleted file mode 100644 index 910e690..0000000 --- a/Category-Packet-718.mediawiki +++ /dev/null @@ -1,10 +0,0 @@ - -== '''Pages in category "Packet 718"''' == -The following 7 pages are in this category. -* [[718 Close window]] -* [[718 Friends packet]] -* [[718 Interface]] -* [[718 Music effect]] -* [[718 Open URL]] -* [[718 Player under NPC priority]] -* [[718 Protocol]] diff --git a/Category-Packet-{{{revision}}}.mediawiki b/Category-Packet-{{{revision}}}.mediawiki deleted file mode 100644 index 9d82d62..0000000 --- a/Category-Packet-{{{revision}}}.mediawiki +++ /dev/null @@ -1,4 +0,0 @@ - -== '''Pages in category "Packet {{{revision}}}"''' == -The following 1 pages are in this category. -* [[Template Packet]] diff --git a/Category-Packet.mediawiki b/Category-Packet.mediawiki deleted file mode 100644 index 619a540..0000000 --- a/Category-Packet.mediawiki +++ /dev/null @@ -1,151 +0,0 @@ - -== '''Pages in category "Packet"''' == -The following 148 pages are in this category. -* [[194 Clear screen]] -* [[194 Logout]] -* [[194 Protocol]] -* [[194 Show interface]] -* [[317 Add friend]] -* [[317 Add ignore]] -* [[317 Alternate item option 2]] -* [[317 Animation reset]] -* [[317 Attack (NPC)]] -* [[317 Audio]] -* [[317 Bank 10 items]] -* [[317 Bank 5 items]] -* [[317 Bank all items]] -* [[317 Bank X items part 1]] -* [[317 Bank X items part 2]] -* [[317 Begin player updating]] -* [[317 Button click]] -* [[317 Camera movement]] -* [[317 Camera shake]] -* [[317 Chat interface click]] -* [[317 Chat interface]] -* [[317 Chat settings]] -* [[317 Clear inventory]] -* [[317 Clear screen]] -* [[317 Close window]] -* [[317 Construct map region]] -* [[317 Create Projectile]] -* [[317 Design screen]] -* [[317 Display hint icon]] -* [[317 Drop item]] -* [[317 Enter name]] -* [[317 Equip item]] -* [[317 Flash sidebar]] -* [[317 Focus change]] -* [[317 Follow]] -* [[317 Force client setting]] -* [[317 Friends list status]] -* [[317 Ground Item Action]] -* [[317 Hidden Interface]] -* [[317 Idle logout]] -* [[317 Idle]] -* [[317 Initialize player]] -* [[317 Input amount]] -* [[317 Interface animation]] -* [[317 Interface color]] -* [[317 Interface item]] -* [[317 Interface model rotation]] -* [[317 Interface offset]] -* [[317 Interface over tab]] -* [[317 Inventory overlay]] -* [[317 Item action 1]] -* [[317 Item on floor]] -* [[317 Item on item]] -* [[317 Item on object]] -* [[317 Item on player]] -* [[317 Light item]] -* [[317 Loading finished]] -* [[317 Load map region]] -* [[317 Logout]] -* [[317 Mage NPC]] -* [[317 Magic on items]] -* [[317 Magic on player]] -* [[317 Minimap State]] -* [[317 Mouse click]] -* [[317 Move item]] -* [[317 Music]] -* [[317 NPC action 1]] -* [[317 NPC action 2]] -* [[317 NPC action 3]] -* [[317 NPC Dialogue]] -* [[317 NPC head on interface]] -* [[317 Object action 1]] -* [[317 Object action 2]] -* [[317 Object action 3]] -* [[317 Object removal]] -* [[317 Object spawn]] -* [[317 Open chatbox interface]] -* [[317 Open welcome screen]] -* [[317 Pickup ground item]] -* [[317 Player command]] -* [[317 Player head to interface]] -* [[317 Player Option]] -* [[317 Play song]] -* [[317 Privacy options]] -* [[317 Protocol]] -* [[317 Region change]] -* [[317 Remove friend]] -* [[317 Remove ignore]] -* [[317 Report player]] -* [[317 Reset button state]] -* [[317 Reset camera]] -* [[317 Reset destination]] -* [[317 Run energy]] -* [[317 Scroll position]] -* [[317 Send add friend]] -* [[317 Send add ignore]] -* [[317 Send message]] -* [[317 Send private message]] -* [[317 Send sidebar interface]] -* [[317 Send Skill]] -* [[317 Set interface text]] -* [[317 Show interface]] -* [[317 Show multi combat]] -* [[317 Show tab]] -* [[317 Skill level]] -* [[317 Song Queue]] -* [[317 System update]] -* [[317 Trade answer]] -* [[317 Trade request]] -* [[317 Unequip item]] -* [[317 Update item container]] -* [[317 Walkable interface]] -* [[317 Weight]] -* [[377 Animation Reset]] -* [[377 Camera Shake]] -* [[377 Construct Map Region]] -* [[377 Create Static Graphic]] -* [[377 Initialize Player]] -* [[377 Input Amount]] -* [[377 Interface Animation]] -* [[377 Interface Item]] -* [[377 Inventory Overlay]] -* [[377 Logout]] -* [[377 Move Camera]] -* [[377 Open Welcome Screen]] -* [[377 Play Ambient Wave]] -* [[377 Protocol]] -* [[377 Reset Button State]] -* [[377 Reset Ground Items and Objects]] -* [[377 Run Energy]] -* [[377 Send Add Friend]] -* [[377 Send Ground Item]] -* [[377 Send Message]] -* [[377 Send Sidebar Interface]] -* [[377 Send Sound]] -* [[377 Skill Level]] -* [[377 Walkable Interface]] -* [[474 Fourth Interface Option]] -* [[474 Protocol]] -* [[474 Remove ignore]] -* [[718 Close window]] -* [[718 Friends packet]] -* [[718 Interface]] -* [[718 Music effect]] -* [[718 Open URL]] -* [[718 Player under NPC priority]] -* [[718 Protocol]] -* [[Template Packet]] diff --git a/Category-RS2.mediawiki b/Category-RS2.mediawiki deleted file mode 100644 index efce4f7..0000000 --- a/Category-RS2.mediawiki +++ /dev/null @@ -1,46 +0,0 @@ -== Introduction == - -The RuneScape Protocol is the language in which the RuneScape client and server communicate. The protocol changes for every version. - -The entire protocol is generally separated into two different categories: - -* Login Protocol -* Game Protocol - -== Login Protocol == - -The Login Protocol is the protocol that is used to log a player into RuneScape. This protocol contains information that sets up the encryption for the entire session, using the ISAAC algorithm. The "login block" is encrypted using RSA to prevent third party programs from packet-sniffing the ISAAC cipher keys and breaking the session encryption for the purpose of monitoring, injecting, and generally sniffing packets. - -== Game Protocol == - -The Game Protocol is the protocol in which game action information is transmitted. The opcodes are encrypted using ISAAC in order to prevent third party programs from tampering with the stream. The game protocol is made up of packets that are structured like so: - -
-For fixed-size packets:
-	opcode, payload[size]
-
-For variable-sized packets:
-	opcode, size, payload[size]
-
- -The ''opcode'' of a game packet is basically an identifier for the type of game action that the packet represents. The ''size'' of the packet is the amount of bytes that the payload of the packet carries, and the ''payload'' is an array of bytes that holds the actual data (information) of the packet. - -A ''fixed-size'' packet is a packet whose payload size does never change, and the size for the specified opcode is already known between both client and server. A ''variable-sized'' packet is a packet whose payload size changes according to the situation of the game session. - -== '''Pages in category "RS2"''' == -The following 15 pages are in this category. -* [[194 Protocol]] -* [[289 Protocol]] -* [[317 Protocol]] -* [[357 Protocol]] -* [[377 Protocol]] -* [[443 Protocol]] -* [[464 Protocol]] -* [[468 Protocol]] -* [[474 Protocol]] -* [[508 Protocol]] -* [[634 Protocol]] -* [[666 Protocol]] -* [[668 Protocol]] -* [[718 Protocol]] -* [[742 Protocol]] diff --git a/Category-RSC.mediawiki b/Category-RSC.mediawiki deleted file mode 100644 index 63c29a0..0000000 --- a/Category-RSC.mediawiki +++ /dev/null @@ -1,11 +0,0 @@ -This page will display any information regarding RSC. - -== '''Pages in category "RSC"''' == -The following 7 pages are in this category. -* [[135 Protocol]] -* [[202 Protocol]] -* [[204 Items]] -* [[204 NPCs]] -* [[204 Objects]] -* [[204 Protocol]] -* [[OB3]] diff --git a/Class-Check.mediawiki b/Class-Check.mediawiki deleted file mode 100644 index b0183bf..0000000 --- a/Class-Check.mediawiki +++ /dev/null @@ -1,168 +0,0 @@ -The class check originated with the new Runescape engine update which took place around the 4xx revisions. It gives the Jagex servers the ability to check the modifiers, update, or fetch the value for a field. It also gives functionality to invoke a method with parameters and get it's return value, or check it's modifiers. Each of these functionalities are described with a request type. A class check request is built up with many of these request types. Each request is tagged with an unique id. - -== Request Structure == - - +-------------------------+ - | amount requests : ubyte | - +-------------------------+ - | uid : dword | - +-------------------------+--------------+------------------------+ - | for each request | type : ubyte | type dependent data... | - +-------------------------+--------------+------------------------+ - -== Response Structure == - - +---------------------+ - | uid : dword | - +---------------------+----------------------+------------------------+ - | for each request | response code : byte | type dependent data... | - +---------------------+----------------------+------------------------+ - | payload crc : dword | - +---------------------+ - -== Request Types == - -For request types 0, 2, 4 there will only be one successful response code and a dword value of the value being requested will be sent. For request type 1, only the successful response code will be used but no value will be sent back. - -{| border=2px -! Opcode -! Name -! Description -|- -! 0 -! Fetch Numeric Field -! Fetches the value of a numeric field. -|- -! 1 -! Update Numeric Field -! Updates the value of a numeric field. -|- -! 2 -! Get Field Modifiers -! Gets the modifiers of a field. -|- -! 3 -! Invoke Method -! Invokes a method and sends back its return object. -|- -! 4 -! Get Method Modifiers -! Gets the modifiers of a method. -|} - -== Return Codes == - -All the return codes are in descending priority by numerical order. For opcode 0, there are cases where a numeric value is sent to the server on fetch requests. This value is always a dword. For a method invoke request, there isn't a value that is sent to the server. It is just assumed that there wasn't a return object from the invoked method. - -{| border=2px -! Opcode -! Name -! On Receive/Response -! Description -|- -! 0 -! Successful -! Response -! Successfully executed the request. -|- -! 1 -! Successful - Returned numeric value -! Response -! Successfully executed the request, and returned a numeric value. -|- -! 2 -! Successful - Returned string value -! Response -! Successfully executed the request, and returned a string value. -|- -! 4 -! Successful - Returned object value -! Response -! Successfully executed the request, and returned an object value. -|- -! -1 -! ClassNotFoundException -! Receive -! A ClassNotFoundException was thrown while receiving a request from the server. -|- -! -2 -! SecurityException -! Receive -! A SecurityException was thrown while receiving a request from the server. -|- -! -3 -! NullPointerException -! Receive -! A NullPointerException was thrown while receiving a request from the server. -|- -! -4 -! Exception -! Receive -! An Exception was thrown while receiving a request from the server. -|- -! -5 -! Throwable -! Receive -! An error or exception was thrown while receiving a request from the server. -|- -! -10 -! ClassNotFoundException -! Response -! A ClassNotFoundException was thrown while responding to a request from the server. -|- -! -11 -! InvalidClassException -! Response -! An InvalidClassException was thrown while responding to a request from the server. -|- -! -12 -! StreamCorruptedException -! Response -! A StreamCorruptedException was thrown while responding to a request from the server. -|- -! -13 -! OptionalDataException -! Response -! An OptionDataException was thrown while responding to a request from the server. -|- -! -14 -! IllegalAccessException -! Response -! An IllegalAccessException was thrown while responding to a request from the server. -|- -! -15 -! IllegalArgumentException -! Response -! An IllegalArgumentException was thrown while responding to a request from the server. -|- -! -16 -! InvocationTargetException -! Response -! An InvocationTargetException was thrown while responding to a request from the server. -|- -! -17 -! SecurityException -! Response -! A SecurityException was thrown while responding to a request from the server. -! -|- -! -18 -! IOException -! Response -! An IOException was thrown while responding to a request from the server. -|- -! -19 -! NullPointerException -! Response -! A NullPointerException was thrown while responding to a request from the server. -|- -! -20 -! Exception -! Response -! An Exception was thrown while responding to a request from the server. -|- -! -21 -! Throwable -! Response -! An error or exception was thrown while receiving a request from the server. -|} \ No newline at end of file diff --git a/DMCA-Policy.mediawiki b/DMCA-Policy.mediawiki deleted file mode 100644 index 19eb947..0000000 --- a/DMCA-Policy.mediawiki +++ /dev/null @@ -1 +0,0 @@ -If you find something on this wiki page that infringes on your intellectual rights, contact: admin[at]moparisthebest.com to ask for the content's removal. \ No newline at end of file diff --git a/Data-Types.mediawiki b/Data-Types.mediawiki deleted file mode 100644 index 24ac813..0000000 --- a/Data-Types.mediawiki +++ /dev/null @@ -1,121 +0,0 @@ -== Introduction == - -RuneScape uses a number of standard and non-standard data types. - -== Byte Order == - -Data types that are two bytes or larger can be stored and ordered in a variety of different ways. Generally people either use big endian or little endian. - -=== Big Endian === - -In big endian order, the most significant byte (MSB) is stored first and the least significant byte (LSB) is stored last. - -=== Little Endian === - -In little endian order, the least significant byte (LSB) is stored first and the most significant byte (MSB) is stored last. - -=== Byte order in RuneScape === - -RuneScape uses both little and big-endian byte orders throughout the protocol (however, the 194 client only uses big-endian order), presumably to make reverse-engineering of the protocol harder. Some confusion has arisen over the byte order as the data types are named incorrectly in [[Server Winterlove|Winterlove]]'s server where little endian data types are incorrectly named as big endian types. - -== Standard data types == -These datatypes can also be read/written by a DataWriter/DataReader implementation (DataStreams and Buffers) - -Naming conventions: -{| border=2 -! Official name -! Datatype name -! Jagex name -! Encoding -|- -| Byte -| byte -| 1,1b -|- -| [[Word|WORD]] -| short -| 2,2b -|- -| [[DWord|DWORD]] -| int,int32 -| 4,4b -|- -| [[QWord|QWORD]] -| long,int64 -| 8,8b -|- -| C style string -| string,String,char *,char[] -| str,strbyte -| text bytes then '\n' or 10 -|- -| Java style string -| string,String,char *,char[] -| strraw -| WORD length then text bytes -|} - -Note that [[Jagex]] used to use a new line character as string terminator, in more recent versions they use the -null character \0 or 0 to support multi-line strings. - -== Non Standard Data Types == - -{| border=2 -! Winterlove's name -! Jagex name -! Read transformation -! Write transformation -|- -| Special A -| Unknown -| value - 128 -| value + 128 -|- -| Special C -| Unknown -| 0 - value -| 0 - value -|- -| Special S -| Unknown -| 128 - value -| 128 - value -|- -| SpaceSaverA -| smarts -| (value[0] < 128) ? (((value[0] - 128)<<8)+value[1]) : value[0] -| if(value < 128) putword(value+32768) else putbyte(value); -|- -| SpaceSaverB -| smart -| (value[0] < 128) ? value[0] - 64 | ((value[0]<<8)+value[1]) - 49152 -| if(i < 64 && i >= -64) putbyte(i + 64) else if(i < 16384 && i >= -16384) putword(i + 49152); -|- -| tribyte / RGBColour / 3Byte / int3 / medium -| 3 -| (value[0] << 24) + (value[1] << 16) + value[2] -| putbyte(value >> 24);putbyte(value >> 16);putbyte(value); -|- -| [[RS String|RS_String]] -| jstr -| Old engine: read until newline delimiter ("\n")
New engine: read until null byte (value 0). -| Old engine: write and finish with newline delimiter ("\n")
New engine: write and finish with null byte (value 0). -|} - -Additionally, RuneScape also uses two endian orders for integers that are different from a big- or low endian order. Both byte orders are called middle-endian. - -Their orders could be described as following: - -Middle-endian big int: C3 D4 A1 B2 - -Middle-endian small int: B2 A1 D4 C3 - -Where A1 is the smallest byte (LSB), and D4 the biggest byte (MSB). - -== Bit Access == - -=== Initiating Bit Access === - -Whenever data is to be sent to the server or to the client using bits; the stream needs to be prepared by setting the bit position. The bit position can be calculated by multiplying the current buffer position by 8. This is because each byte is comprised of 8 bits. - -Example: int bitPos = bufferPos * 8; \ No newline at end of file diff --git a/JAGGRAB-Protocol.mediawiki b/JAGGRAB-Protocol.mediawiki deleted file mode 100644 index 1f7dddf..0000000 --- a/JAGGRAB-Protocol.mediawiki +++ /dev/null @@ -1,38 +0,0 @@ -[[Category Cache]] - -== Introduction == - -The JAGGRAB protocol is used to 'grab' cache files from the file server and download them. - -It is a text-based protocol, similar to HTTP/0.9, and the client will fall back to HTTP if JAGGRAB is unavailable. This generally happens in unsigned mode and helps users who are behind firewalls. - -== Request format == - -A request is simply the text JAGGRAB, a space, the path to the file and a newline character. Therefore, it is very similar to a HTTP/0.9 GET request. - - JAGGRAB /path/to/file - -=== New engine === - -In (perhaps all) new engine clients, the client prefixes the JAGGRAB request line with a single byte (value 17). - -== Response format == - -The response is simply the raw file data. Once the response is sent, the connection is closed. - -== Files == - -There are a number of files which map to files in the cache. - -* '''/crc''' - the CRC table -* '''/title''' - cache 0, file 1 -* '''/config''' - cache 0, file 2 -* '''/interface''' - cache 0, file 3 -* '''/media''' - cache 0, file 4 -* '''/versionlist''' - cache 0, file 5 -* '''/textures''' - cache 0, file 6 -* '''/wordenc''' - cache 0, file 7 -* '''/sounds''' - cache 0, file 8 - -NOTE: the client will usually postfix these with random numbers, so when checking for the file only the start of the string should be examined: not the whole one. This is to help avoid caches when these files are fetched over HTTP.
-NOTE: The crc is postfixed with the client revision \ No newline at end of file diff --git a/Map-Region-System.mediawiki b/Map-Region-System.mediawiki deleted file mode 100644 index 4980af1..0000000 --- a/Map-Region-System.mediawiki +++ /dev/null @@ -1,278 +0,0 @@ -== Intro == -Everyone knows that a coordinate system is in place to navigate through the Runescape world. That coordinate system is based off upon three variables, the Absolute X, Y Z coordinates. Before we continue to talk about how these three variables are used in calculations lets set down some vocabulary: - -== Definitions == -===Tile=== -A tile is a representation of an absolute coordinate. - -''Example: Varrock Coordinates 3211, 3424 represents one tile.'' - -===Tile Chunk=== -A chunk of tiles, 8 x 8 in size. Also known as a region before the scope of a region was understood. The chunk is considered a point so it has X and Y coordinates. There are two forms of a Chunk, formatted and non; a formatted chunks equation is: - - - int chunkX = (getAbsoluteX() >> 3) - 6; - int chunkY = (getAbsoluteY() >> 3) - 6; - -This centers the chunk on the map, more on that later. - -The normal chunk equation is: - - - int chunkX = (getAbsoluteX() >> 3); - int chunkY = (getAbsoluteY() >> 3); - -''Example: The Coordinates [3211, 3424] Chunk X (formatted) is 395 and the Chunk Y (un-formatted) is 428.'' - -===Region=== -A region is 64 x 64 in size, or 8 x 8 in chunks. The region is considered a point so it has X and Y coordinates. The equation for finding the region the coordinates is within is: - - int regionx = (getUnformattedRegionX() >> 3); //getUnformatedRegionX()/8; - int regiony = (getUnformattedRegionY() >> 3); //getUnformatedRegionY()/8; - -''Example: The Coordinates [3211, 3424] Region X is 50 and the Region Y is 53.'' - -Note: The Region X and Region Y coordinates are traditionally not used in server location calculations; but practical region systems should use this calculation for many purposes. - - -===Map=== -There is no calculation for a map, and there is no Map X or Map Y. A Map is, however, a 104 x 104 area made up of 13 x 13 chunks. Why is the number not even you may ask? Because it has a center. The [7, 7] map chunk of the map is the center, and is also the formatted chunk. When a region update is called by the server, a new map is called, but you must understand that the formatted chunk never changes; the tiles in the map, however, are updated and trimmed. When the player moves out of the formatted chunk, the map is re-positioned to make that chunk the center yet again. As I said, a new update is not needed every time the player enters a new region, but when the range of +- 32 from the point in the center of the chunk is reached, an update is required to update the map to the new objects so that the 'black space' or fog is not reached. Confused? - -===Diagram=== -[http://i.imgur.com/C3huO.png External Image] - -The active chunk is the chunk in which the player resides. The definite rendering chunks are the chunks in which will be rendered on the players screen no matter where they are in the active chunk. The indefinite rendering chunks are the chunks in which depending on where the player is within the active chunk they may be rendered or not. Remember this depends on the +- distance of 32 from the players absolute position. The queue chunks are pre-loaded chunks in which after the active chunk is moved may be disposed of or activated depending upon the direction in which the active chunk changes. - -==Loading== - -These were the regions loaded for the coordinates [3183, 3217]: - -[http://i.imgur.com/ydl78.png External Image] - -If you can imagine a puzzle, a 64 x 64 piece does not fit equally within the 104 x 104 area. So bits of each region are taken that are within the 104 x 104 map area. - -The amount of regions that are to be loaded can be calculated this way: - -Please note that Region X and Region Y are not formatted. - - - int amt = 0; - for(int i21 = (player.getLocation().getRegionX() - 6) / 8; i21 <= (player.getLocation().getRegionX() + 6) / 8; i21++) { - for(int k23 = (player.getLocation().getRegionY() - 6) / 8; k23 <= (player.getLocation().getRegionY() + 6) / 8; k23++) - amt++; - } - -Along with this, the base X and base Y of each of the region can be calculated: - - - for(int i21 = (player.getLocation().getRegionX() - 6) / 8; i21 <= (player.getLocation().getRegionX() + 6) / 8; i21++) { - for(int k23 = (player.getLocation().getRegionY() - 6) / 8; k23 <= (player.getLocation().getRegionY() + 6) / 8; k23++) - System.out.println(i21+" X "+(i21 << 6)+","+k23+" Y "+(k23 << 6));;; - } - - -The 'X' and 'Y' coordinates represents the coordinates of the region as depicted in the diagram. -After the regions are loaded they are trimmed to the tiles that are necessary. - -Well hope this gave you some idea of how regions are loaded and such, tell me if you need explanation on anything. - - -Heres an example of a location class that I wrote, sorry for the lack of comments. If you read everything then this should make sense: - - - package net.forge.content.world.node; - /** - * RuneForge | 317 - * Location.java - * @version 1.0.0 - * @author SiniSoul (SiniSoul@live.com) - */ - public final class Location { - - /** - * The Tile X and Y coordinates. - */ - private int tilex = 0, - tiley = 0; - - /** - * The Height of the location. - */ - private int height = 0; - - /** - * The asynchronous Chunk X and Y coordinates; used in region updating. - */ - private int chunkx = 0, - chunky = 0; - - /** - * - * @param tilex - */ - public void setTileX(int tilex) { - this.tilex = (tilex & 0xFFFF); - } - - /** - * - * @return - */ - public int getTileX() { - return tilex; - } - - /** - * - * @param tilex - */ - public void setTileY(int tiley) { - this.tiley = (tiley & 0xFFFF); - } - - /** - * - * @return - */ - public int getTileY() { - return tiley; - } - - /** - * - * @param formated If the chunk is formatted for map positioning or - * other formatted chunk comparison. - * @return - */ - public int calculateChunkX(boolean formated) { - return formated ? (getTileX() >> 3) - 6 : (getTileX() >> 3); - } - - /** - * - * @param formated If the chunk is formatted for map positioning or - * other formatted chunk comparison. - * @return - */ - public int calculateChunkY(boolean formated) { - return formated ? (getTileY() >> 3) - 6 : (getTileY() >> 3); - } - - /** - * - */ - public void updateChunkX() { - this.chunkx = calculateChunkX(true); - } - - /** - * - */ - public void updateChunkY() { - this.chunkx = calculateChunkY(true); - } - - /** - * - * @return - */ - public int getChunkX() { - return chunkx; - } - - /** - * - * @return - */ - public int getMapLocalX() { - return getTileX() - (getChunkX() << 3); - } - - /** - * - * @return - */ - public int getChunkY() { - return chunky; - } - - /** - * - * @return - */ - public int getMapLocalY() { - return getTileX() - (getChunkY() << 3); - } - - /** - * - * @param height - */ - public void setHeight(int height) { - this.height = (height & 0x3); - } - - /** - * - * @return - */ - public int getHeight() { - return height; - } - - /** - * - * @return - */ - public int getRegionX() { - return calculateChunkX(false) >> 3; - } - - /** - * - * @return - */ - public int getRegionLocalX() { - return getTileX() - (getRegionX() << 6); - } - - /** - * - * @return - */ - public int getRegionY() { - return calculateChunkY(false) >> 3; - } - - /** - * - * @return - */ - public int getRegionLocalY() { - return getTileY() - (getRegionY() << 6); - } - - /** - * - * @param tilex - * @param tiley - * @param height - */ - public void set(int tilex, int tiley, int height) { - setTileX(tilex); - setTileY(tiley); - setHeight(height); - } - - /** - * - * @param tilex - * @param tiley - * @param height - */ - public Location(int tilex, int tiley, int height) { - set(tilex, tiley, height); - updateChunkX(); - updateChunkY(); - } - } \ No newline at end of file diff --git a/Ondemand-Protocol.mediawiki b/Ondemand-Protocol.mediawiki deleted file mode 100644 index 97d4929..0000000 --- a/Ondemand-Protocol.mediawiki +++ /dev/null @@ -1,29 +0,0 @@ -[[Category Cache]] - -== Introduction == - -The 'Ondemand' protocol is used to stream updates to the cache. The client knows which files to update from the CRC file downloaded using the [[JAGGRAB Protocol|JAGGRAB protocol]]. - -== Request packet == - -The client first authenticates as an ondemand client by using the opcode '15' (as opposed to the game, which uses the type '14'). - -The format of the request is: - - unsigned byte cacheId; - unsigned short fileId; - unsigned byte priority; - -There can be multiple requests per session. - -== Response packet == - -The response is sent in blocks. The maximum size of a block is 500 bytes. Smaller blocks (at the end of a file) are permitted. - -Each block has the format: - - unsigned byte cacheId; - unsigned short fileId; - unsigned short fileSize; - unsigned byte blockNumber; - unsigned byte[] blockData; \ No newline at end of file diff --git a/QWord.mediawiki b/QWord.mediawiki deleted file mode 100644 index d59f0ab..0000000 --- a/QWord.mediawiki +++ /dev/null @@ -1,3 +0,0 @@ -A "QWord" (quad-word) is a data-type that consists of 8 bytes.
-It is also commonly known as the "long" data-type in programming. -[[Category Data Type]] \ No newline at end of file diff --git a/RS-String.mediawiki b/RS-String.mediawiki deleted file mode 100644 index 021d8d8..0000000 --- a/RS-String.mediawiki +++ /dev/null @@ -1,10 +0,0 @@ -== Introduction == - -RS String is a codename for a custom string data-type used in the RuneScape protocol.
-The string data-type is used to hold a series of characters in order to form a message. - -===Old Engine Protocol=== -In the old engine client, the RS String datatype is delimited by a newline character (value "\n"). - -===New Engine Protocol=== -In the new-engine client, the RS String datatype is delimited by a null byte (value 0). \ No newline at end of file diff --git a/RSWiki-About.mediawiki b/RSWiki-About.mediawiki deleted file mode 100644 index f2b0c88..0000000 --- a/RSWiki-About.mediawiki +++ /dev/null @@ -1,7 +0,0 @@ -Many of you may recall Graham and Blakeman's runewiki project - it contained very useful information about numerous client revision protocols and other resources. Unfortunately, the wiki and any backups of the database have been lost for over two years now (and there are no cached copies floating around). Because of this, we've decided (and have started) embarking on the journey of re-creating the wiki. - - -In regards to the aforementioned, we are now releasing the wiki to the public. Captcha has been added to the wiki to prevent abuse; and of course, backups have (and are continuously) being made of the database. Currently, the majority of the information covered is based on the '''#317''' Protocol, '''JAGGRAB''' Protocol, '''Ondemand''' Protocol, '''Cache Archive Format''', '''RS Data Types''', and '''#202''' Protocol. The format of the wiki is fairly laid out, so it will be quite easy to expand on certain topics. If anyone has any information on the other commonly used client revisions (or perhaps a new one) feel free to contribute. - - -RSWiki is hosted and maintained by the [http://moparisthebest.com moparisthebest] community. \ No newline at end of file diff --git a/RSWiki-Privacy-policy.mediawiki b/RSWiki-Privacy-policy.mediawiki deleted file mode 100644 index d71a62a..0000000 --- a/RSWiki-Privacy-policy.mediawiki +++ /dev/null @@ -1 +0,0 @@ -
What information do we collect?

We collect information from you when you register on our site or information posted on our site.

When ordering or registering on our site, as appropriate, you may be asked to enter your: e-mail address. You may, however, visit our site anonymously.

What do we use your information for?

Any of the information we collect from you may be used to improve customer service (your information helps us to more effectively respond to your customer service requests and support needs)

How do we protect your information?

We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information.

Do we use cookies?

Yes (Cookies are small files that a site or its service provider transfers to your computers hard drive through your Web browser (if you allow) that enables the sites or service providers systems to recognize your browser and capture and remember certain information

We use cookies to compile aggregate data about site traffic and site interaction so that we can offer better site experiences and tools in the future.

Do we disclose any information to outside parties?

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our website, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety. However, non-personally identifiable visitor information may be provided to other parties for marketing, advertising, or other uses.

\ No newline at end of file diff --git a/Template-Packet.mediawiki b/Template-Packet.mediawiki deleted file mode 100644 index 5c3e0d6..0000000 --- a/Template-Packet.mediawiki +++ /dev/null @@ -1,19 +0,0 @@ -{| style="float:right; margin:1em; width:250px;" cellpadding="3" cellspacing="0" border="1" -|- -| colspan="2" style="background-color:#3c5;" | '''{{{name}}}'''
{{{description}}} -|- -! '''Opcode''' -| {{{opcode}}} -|- -! '''Type''' -| {{{type}}} -|- -! '''Length''' -| {{{length}}} -|- -|} - - -[[Category Packet]] -[[Category Packet {{{revision}}}]] - \ No newline at end of file diff --git a/Word.mediawiki b/Word.mediawiki deleted file mode 100644 index 427797d..0000000 --- a/Word.mediawiki +++ /dev/null @@ -1,3 +0,0 @@ -A "word" is a data-type that consists of 2 bytes.
-It is also commonly known as the "short" data-type in programming. -[[Category Data Type]] \ No newline at end of file diff --git a/book.toml b/book.toml new file mode 100644 index 0000000..303f736 --- /dev/null +++ b/book.toml @@ -0,0 +1,5 @@ +[book] +authors = ["moparisthebest"] +multilingual = false +src = "src" +title = "RSWiki" diff --git a/category.sh b/category.sh deleted file mode 100755 index 9caeb5e..0000000 --- a/category.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -cd "$(dirname "$0")" - -function prepareFile(){ - path="$1" - tmp_path="$(basename "$path").tmp" - ( - grep 'CODE AUTOMATICALLY GENERATED BY category.sh -->' "$path" &>/dev/null - if [ $? -eq 0 ] - then - sed -n '/CODE AUTOMATICALLY GENERATED BY category.sh -->/q;p' "$path" - else - cat "$path" && echo - fi - echo -e '' - ) > "$tmp_path" - echo "$tmp_path" -} - -function finishFile(){ - path="$1" - tmp_path="$(basename "$path").tmp" - mv "$tmp_path" "$path" -} - -files_lines_categories="$(grep '^\[\[Category [^]./\]*\]\]$' *)" -#echo "files_lines_categories: $files_lines_categories" - -echo '' > Categories.mediawiki -echo 'The following categories contain pages or media.' >> Categories.mediawiki - -echo "$files_lines_categories" | grep -o 'Category [^]]*' | sort | uniq | while read category -do - #echo "category: $category" - - category_file="$(echo "$category" | sed 's/ /-/g').mediawiki" - echo "category_file: $category_file" - - result="$(prepareFile "$category_file")" - echo "== '''Pages in category \"$(echo $category | sed 's/Category //')\"''' ==" >> "$result" - files="$(echo "$files_lines_categories" | grep ":\[\[${category}\]\]$" | sort)" - num_pages="$(echo "$files" | wc -l)" - - echo -e "* [[$category]] ($num_pages members)" >> Categories.mediawiki - - echo "The following $num_pages pages are in this category." >> "$result" - echo "$files" | while read file - do - echo "* [[$(echo $file | sed -e "s/\.mediawiki:\[\[${category}\]\]$//" -e 's/-/ /g')]]" - done >> "$result" - finishFile "$category_file" -done \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..fbb88e0 --- /dev/null +++ b/readme.md @@ -0,0 +1 @@ +RSWiki converted to [mdBook](https://github.com/rust-lang-nursery/mdBook) format, follow [usage](https://github.com/rust-lang-nursery/mdBook#usage) instructions there. diff --git a/src/135-Protocol.md b/src/135-Protocol.md new file mode 100644 index 0000000..d1904fb --- /dev/null +++ b/src/135-Protocol.md @@ -0,0 +1,645 @@ +\[\[Category RSC\]\] This page refers to the RSC \#135 client revision. +You can find a partially refactored RSC \#135 client +\[https://bitbucket.org/\_mthd0/rsc here\]. + +== '''Packet structure''' == + +
if (len >= 160 {
+    [byte] (160 + (len / 256))
+    [byte] (len & 0xff)
+} else {
+    [byte] len
+    if (len > 0) {
+        len--; // skip it
+        [byte] data[len] // last byte
+    }
+}
+[byte] opcode
+for (int i = 0; i < len; i++)
+    [byte] data[i]
+
+RSC-135 uses big-endian byte order exclusively. + +'''Data types''' + +int8 - an 8-bit integer, or byte.
int16 - a 16-bit integer, or +short, or WORD.
int32 - a 32-bit integer, or int, or DWORD.
+int64 - a 64-bit integer, or long, or QWORD.
u - unsigned
a - +when writing, increment the MSB (most significant byte, or first byte) +by 128. When reading, if the first byte unsigned is lower than 128, +that's your value, otherwise decrement the first byte by 128 and read as +normally.
+ +'''Bit Access''' + +
private static final int bitmasks[] = {
+    0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535,
+    0x1ffff, 0x3ffff, 0x7ffff, 0xfffff, 0x1fffff, 0x3fffff, 0x7fffff, 0xffffff, 0x1ffffff,
+    0x3ffffff, 0x7ffffff, 0xfffffff, 0x1fffffff, 0x3fffffff, 0x7fffffff, -1
+};
+
+public void start_bit_access() {
+    bitpos = offset * 8;
+}
+
+public void write_bits(int num, int val) {
+    int bytepos = bitpos >> 3;
+    int bitoffset = 8 - (bitpos & 7);
+    bitpos += num;
+    for (; num > bitoffset; bitoffset = 8) {
+        buffer[bytepos] &= ~bitmasks[bitoffset];
+        buffer[bytepos++] |= (val >> (num - bitoffset)) & bitmasks[bitoffset];
+        num -= bitoffset;
+    }
+    if (num == bitoffset) {
+        buffer[bytepos] &= ~bitmasks[bitoffset];
+        buffer[bytepos] |= val & bitmasks[bitoffset];
+    } else {
+        buffer[bytepos] &= ~(bitmasks[num] << (bitoffset - num));
+        buffer[bytepos] |= (val & bitmasks[num]) << (bitoffset - num);
+    }
+}
+
+public void end_bit_access() {
+    offset = (bitpos + 7) / 8;
+}
+== '''Reference''' == Player usernames are encoded and decoded with the +following methods: + +
public static long encode_37(String s) {
+    String s1 = "";
+    for (int i = 0; i < s.length(); i++) {
+        char c = s.charAt(i);
+        if (c >= 'a' && c <= 'z')
+            s1 = s1 + c;
+        else if (c >= 'A' && c <= 'Z')
+            s1 = s1 + (char) ((c + 97) - 65);
+        else if (c >= '0' && c <= '9')
+            s1 = s1 + c;
+        else
+            s1 = s1 + ' ';
+    }
+    s1 = s1.trim();
+    if (s1.length() > 12)
+        s1 = s1.substring(0, 12);
+    long l = 0L;
+    for (int j = 0; j < s1.length(); j++) {
+        char c1 = s1.charAt(j);
+        l *= 37L;
+        if (c1 >= 'a' && c1 <= 'z')
+            l += (1 + c1) - 97;
+        else if (c1 >= '0' && c1 <= '9')
+            l += (27 + c1) - 48;
+    }
+    return l;
+}
+
+public static String decode_37(long l) {
+    String s = "";
+    while (l != 0L) {
+        int i = (int) (l % 37L);
+        l /= 37L;
+        if (i == 0) {
+            s = " " + s;
+        } else if (i < 27) {
+            if (l % 37L == 0L)
+                s = (char) ((i + 65) - 1) + s;
+            else
+                s = (char) ((i + 97) - 1) + s;
+        } else {
+            s = (char) ((i + 48) - 27) + s;
+        }
+    }
+    return s;
+}
+
+Chat messages are encoded and decoded with the following methods: + +
public static byte encodedmsg[] = new byte[100];
+public static char decodedmsg[] = new char[100];
+private static char charmap[] = {
+    ' ', 'e', 't', 'a', 'o', 'i', 'h', 'n', 's', 'r', 'd', 'l', 'u', 'm', 'w', 'c', 'y', 'f',
+    'g', 'p', 'b', 'v', 'k', 'x', 'j', 'q', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8',
+    '9', ' ', '!', '?', '.', ',', ':', ';', '(', ')', '-', '&', '*', '\\', '\'', '@', '#', '+',
+    '=', '\243', '$', '%', '"', '[', ']'
+};
+
+public static String decode_msg(byte buffer[], int off, int enclen) {
+    try {
+        int i = 0;
+        int j = -1;
+        for (int k = 0; k < enclen; k++) {
+            int l = buffer[off++] & 0xff;
+            int i1 = l >> 4 & 0xf;
+            if (j == -1) {
+                if (i1 < 13)
+                    decodedmsg[i++] = charmap[i1];
+                else
+                    j = i1;
+            } else {
+                decodedmsg[i++] = charmap[((j << 4) + i1) - 195];
+                j = -1;
+            }
+            i1 = l & 0xf;
+            if (j == -1) {
+                if (i1 < 13)
+                    decodedmsg[i++] = charmap[i1];
+                else
+                    j = i1;
+            } else {
+                decodedmsg[i++] = charmap[((j << 4) + i1) - 195];
+                j = -1;
+            }
+        }
+        boolean flag = true;
+        for (int j1 = 0; j1 < i; j1++) {
+            char c = decodedmsg[j1];
+            if (j1 > 4 && c == '@')
+                decodedmsg[j1] = ' ';
+            if (c == '%')
+                decodedmsg[j1] = ' ';
+            if (flag && c >= 'a' && c <= 'z') {
+                decodedmsg[j1] += '\uFFE0';
+                flag = false;
+            }
+            if (c == '.' || c == '!')
+                flag = true;
+        }
+        return new String(decodedmsg, 0, i);
+    } catch (Exception ex) {
+        return "Cabbage";
+    }
+}
+
+public static int encode_msg(String str) {
+    if (str.length() > 80)
+        str = str.substring(0, 80);
+    str = str.toLowerCase();
+    int enclen = 0;
+    int i = -1;
+    for (int j = 0; j < str.length(); j++) {
+        char c = str.charAt(j);
+        int k = 0;
+        for (int l = 0; l < charmap.length; l++) {
+            if (c != charmap[l])
+                continue;
+            k = l;
+            break;
+        }
+        if (k > 12)
+            k += 195;
+        if (i == -1) {
+            if (k < 13)
+                i = k;
+            else
+                encodedmsg[enclen++] = (byte) k;
+        } else if (k < 13) {
+            encodedmsg[enclen++] = (byte) ((i << 4) + k);
+            i = -1;
+        } else {
+            encodedmsg[enclen++] = (byte) ((i << 4) + (k >> 4));
+            i = k & 0xf;
+        }
+    }
+    if (i != -1)
+        encodedmsg[enclen++] = (byte) (i << 4);
+    return enclen;
+}
+== '''Login''' == \* The username and password are prepared. This is +done by replacing any spaces or illegal characters with \_ and appending +spaces to the string until its length is 20. \* The connection with the +server is established. \* The client reads a raw long from the server, +this is the "session id". \* The client creates a new frame, opcode 0 or +19 if the player is reconnecting. \* A short, the client's revision +number (135) is placed in the buffer. \* A long, the player's username +encoded with mod37 (see above) is placed in the buffer. \* A string +encoded with RSA and the player's session id (the password) is placed in +the buffer. \* An integer, the player's "ranseed" value is placed in the +buffer. \*\* "ranseed" does not seed anything. RSC135 does not use ISAAC +ciphering. It is an applet parameter or read from uid.dat. Presumably, +it was used to identify players connecting from the same computer. \* +The stream is then flushed. \* A byte is read from the stream and +discarded. \* Another byte is read, this is the login response code from +the server. + + { + --- + +! Login Resp. ! Description \|- \| 0 \| Successful login \|- \| 1 \|? +\|- \| 3 \| Invalid username or password \|- \| 4 \| Username already in +use \|- \| 5 \| Client has been updated \|- \| 6 \| IP address is +already in use \|- \| 7 \| Login attempts exceeded \|- \| 11 \| Account +temporarily disabled \|- \| 12 \| Account permanently disabled \|- \| 15 +\| Server is currently full \|- \| 16 \| Members-only server \|- \| 17 +\| Members-only area? \|} + +== '''Registration''' == + +- The username and password are prepared. This is done by replacing + any spaces or illegal characters with \_ and appending spaces to the + string until its length is 20. +- The connection with the server is established. +- The client reads a raw long from the server, this is the "session + id". +- The client creates a new frame, opcode 2. +- A short, the client's revision number (135) is placed in the buffer. +- A long, the player's username encoded with mod37 (see above) is + placed in the buffer. +- A short, the applet's "referid" parameter is placed in the buffer. +- A string encoded with RSA and the player's session id (the password) + is placed in the buffer. +- An integer, the player's "ranseed" value is placed in the buffer. + \*\* "ranseed" does not seed anything. RSC135 does not use ISAAC + ciphering. It is an applet parameter or read from uid.dat. + Presumably, it was used to identify players connecting from the same + computer. +- The stream is then flushed. +- A byte is read from the stream and discarded. +- Another byte is read, this is the newplayer response code from the + server. + + { + --- + +! Newp Resp. ! Description \|- \| 2 \| Successful registration \|- \| 3 +\| Username already taken \|- \| 5 \| Client has been updated \|- \| 6 +\| IP address is already in use \|- \| 7 \| Registration attempts +exceeded? \|} + +== '''Mob Appearance Update''' == + +Firstly, create a new packet with the opcode 250. Write the total number +of expected updates (uint16). + +Secondly, for each 'thing' to update, write the (server) index of the +mob the update applies to (uint16), and the 'update type' (int8) +followed by whatever data that type expects. + +'''Update type 1 - Public chat messages''' + +- uint8 - The length of the chat message. +- string (raw) - The encoded chat message. + +'''Update type 2 - Combat damage''' + +- uint8 - The damage recieved. +- uint8 - That mob's 'current' hitpoints level. +- uint8 - That mob's 'base' hitpoints. + +'''Update type 3/4 - Projectiles''' + +The update type is 3 when the target is a NPC, or 4 is the target is a +player. + +The standard magic projectile id is 1, and the standard ranged +projectile id is 2. + +- uint16 - The projectile's id. +- uint16 - The (server) index of the projectile's target entity. + +'''Update type 5 - Appearance''' + +Hair style, body type, leg type, and colours are as they are sent by the +client's character design packet. + +- uint16 - The player's status? Doesn't appear to do anything. +- int64 - The player's username encoded with mod37. +- uint8 - The size of the sub-update. \*\* uint8 - The player's hair + style + 1, or 0 if they are wearing a helmet \*\* uint8 - The + player's body type + 1, or 0 if they are wearing a platebody \*\* + uint8 - The player's leg type + 1, or 0 if they are wearing legs + \*\* uint8 - The animation id + 1 (look in the client) of the + player's offhand item or 0. \*\* uint8 - The animation id + 1 of the + player's hand item or 0. \*\* uint8 - The animation id + 1 of the + player's head item or 0. \*\* uint8 - The animation id + 1 of the + player's body item or 0. \*\* uint8 - The animation id + 1 of the + player's leg item or 0. \*\* uint8 - The animation id + 1 of the + player's neck item or 0. \*\* uint8 - The animation id + 1 of the + player's shoes or 0. \*\* uint8 - The animation id + 1 of the + player's gloves or 0. \*\* uint8 - The animation id + 1 of the + player's cape or 0. +- uint8 - The player's hair colour. +- uint8 - The player's top colour. +- uint8 - The player's leg colour. +- uint8 - The player's skin colour. +- uint8 - The player's combat level. +- uint8 - 1 if the player is skulled. + +== '''Packets''' == The packet opcodes are unchanged from previous +revisions, presumably this was before the protocol was being regularly +modified to deter the developers of bots such as \[\[AutoRune\]\]. The +payload/structure is quite similar to most other RSC revisions. + +=== '''Incoming Data''' === '''TODO: Duelling stuff, 240''' {\| +class="wikitable" \|- ! scope="col" width="140px" \| Name ! scope="col" +width="50px" \| Opcode ! scope="col" width="350px" \| Payload ! +scope="col" width="300px" \| Description \|- ! Display Message \| 8 \|\| +\* string - A raw string, the message. \| Informs the client of a line +to be printed in the in-game message box. Messages preceded by @que@ are +sent to the quest history box, messages preceded by @pri@ are sent to +the private chat history box. \|- ! Close Connection \| 9 \|\| \* None +\| Forces the client to log out. \|- ! Logout Failed \| 10 \|\| \* None +\| You can't log out now! \|- ! Initialize Friends List \| 23 \|\| \* +uint8 - The total number of players in the list. \* int64... - The +friend's username, encoded with mod37. \* uint8... - The world the +friend is logged in to. 0 indicates the player is logged out. \| +Initializes the player's friends list. Variable length. \|- ! Update +Friends List \| 24 \|\| \* int64 - The friend's username, encoded with +mod37. \* uint8 - 0 if the friend is logged in, 1 if the friend is +logged out. \| Informs the client that a friend has logged in/out or +that a new friend has been added to the list. \|- ! Initialize Ignore +List \| 26 \|\| \* uint8 - The total number of players in the list. \* +int64... - The friend's username, encoded with mod37. \| Initializes the +player's ignore list. Variable length. \|- ! Initialize Privacy Settings +\| 27 \|\| \* int8 - 0/1. Block public chat messages. \* int8 - 0/1. +Block private chat messages. \* int8 - 0/1. Block trade requests. \* +int8 - 0/1. Block duel requests. \| Initializes the player's privacy +settings. \|- ! Private Message \| 28 \|\| \* int64 - The sender's +username, encoded with mod37. \* string - The encoded message. \| Sends +a private message to the client. \|- ! Player Movement \| 255 \|\| \* +bits\[10\] - This player's x position. \* bits\[12\] - This player's y +position. \* bits\[4\] - This player's direction. \* bits\[8\] - The +number of players the client already knows about to be sent (but it +reads them in order?) \*\* bits\[1\]... - If the player has not moved & +does not need to be removed, 0 & don't send the next 2 lots of bits, +otherwise 1. \*\* bits\[1\]... - 1 if the player is to be removed. \*\* +bits\[3/4\]... - The player's direction. 4 bits with a value of 12 if +the player is to be removed, otherwise 3 bits. \* bits\[11\]... - The +new player's (server) index. \* bits\[5\]... - The new player's offset x +position. \* bits\[5\]... - The new player's offset y position. \* +bits\[4\]... - The new player's direction. \* bits\[1\]... - something +to do with c\>s 254? 0 \| Updates the position/movement of the client's +player and nearby players. Usually sent every game engine tick (600ms) +rather than when needed as with other packets. Offset positions are +this\_x - player\_x and are incremented by 32 if less than zero. +Variable length. \|- ! Ground Item Positions \| 254 \|\| \* uint16 - The +id of the item to update \* int8 - The x position of the item relative +to the player (item\_x - player\_x) \* int8 - The y position of the item +relative to the player (item\_y - player\_y) \| Updates the positions of +nearby ground items. if ((id & 0x8000) == 0), remove the item. +Therefore, if the server increments the id by 0x8000, the item will be +removed by the client. Variable length. \|- ! Object Positions \| 253 +\|\| \* uint16 - The id of the object to update \* int8 - The x position +of the object relative to the player (object\_x - player\_x) \* int8 - +The y position of the object relative to the player (object\_y - +player\_y) \| Updates the positions of nearby objects. Variable length. +If the id is real fuckin' big, remove it. \|- ! Whole Inventory \| 252 +\|\| \* uint8 - The number of items in the player's inventory. \* +uint16... - The item's id. If equipped, increment by 0x8000. \* +int32a... - The item's stack size. Only sent when the item is stackable. +\| Sends over the player's whole inventory. Variable length. \|- ! +Player Appearance \| 250 \|\| \* See \[\[135 Protocol\#Mob Appearance +Update\|Mob Appearance Update\]\] \| Updates things to do with nearby +players that aren't related to movement. \|- ! Boundary Positions \| 249 +\|\| \* uint16 - The id of the bound to update \* int8 - The x position +of the bound relative to the player (object\_x - player\_x) \* int8 - +The y position of the bound relative to the player (object\_y - +player\_y) \* int8 - The bound's direction \| Updates the positions of +nearby bounds. Variable length. If the id is real fuckin' big, remove +it. \|- ! NPC Movement \| 248 \|\| \* bits\[8\] - The number of NPCs the +client already knows about to be sent (but it reads them in order?). +\*\* bits\[1\]... - 1 if the NPC has moved, otherwise 0 & don't send the +next 2 lots of bits. \*\* bits\[1\]... - 1 if the NPC is to be removed, +otherwise 0. \*\* bits\[3/4\]... - The NPC's direction, 4 bits with a +value of 12 if the NPC is to be removed, otherwise 3 bits. \* +bits\[11\]... - The new NPC's (server) index. \* bits\[5\]... - The new +NPC's offset x position. \* bits\[5\]... - The new NPC's offset y +position. \* bits\[4\]... - The new NPC's direction. \* bits\[9\]... - +The new NPC's id. \| Updates the positions/movement of nearby NPCs. +Usually sent every game engine tick (600ms) rather than when needed as +with other packets. Offset positions are player\_x - npc\_x and are +incremented by 32 if less than zero. Variable length. \|- ! NPC +Appearance \| 247 \|\| \* See \[\[135 Protocol\#Mob Appearance +Update\|Mob Appearance Update\]\]. \| Updates things to do with nearby +NPCs that aren't related to movement. Only the first two update types +apply (NPCs cannot send projectiles or have changed sprites). NPC server +index is used instead of player server index, obviously. \|- ! Display +Dialog \| 246 \|\| \* uint8 - The total number of options. \* uint8... - +The length of the option string. \* string... - The option string. \| +Displays a NPC chat dialog. Variable length. \|- ! Hide Dialog \| 245 +\|\| \* None \| Hides the NPC chat dialog. \|- ! Initialize Plane \| 244 +\|\| \* uint16 - The player's server index. \* uint16 - The width of the +plane. (2304) \* uint16 - The height of the plane. (1776) \* uint16 - +The index of the plane. (player\_y / multiplier) \* uint16 - The plane +multiplier. (944) \| Initializes the plane. Sent when the player first +logs in, and when the player is teleported or moves up/down a height. +\|- ! All Skills \| 243 \|\| \* for (int i = 0; i \< skill\_count; i++) +\* uint8... - The skill's current level. \* for (int i = 0; i \< +skill\_count; i++) \* uint8... - The skill's base level. \* for (int i = +0; i \< skill\_count; i++) \* int32... - The skill's xp points. \* uint8 +- The player's quest points. \| Updates all of the player's skills and +quest points. The 135 client reads 18 skills: Attack, Defense, Strength, +Hits, Ranged, Prayer, Magic, Cooking, Woodcutting, Fletching, Fishing, +Firemaking, Crafting, Smithing, Mining, Herblaw, Carpentry, Thieving. +\|- ! Equipment Bonuses \| 242 \|\| \* uint8 - The armour's bonus. \* +uint8 - The weapon's accuracy bonus. \* uint8 - The weapon's strength +bonus. \* uint8 - The magic bonus. \* unit8 - The prayer bonus. \| +Updates the player's equipment bonuses. Variable length. \|- ! Player +Death \| 241 \|\| \* None \| Displays the "Oh dear! You are dead..." +screen. \|- ! Environment \| 240 \|\| \* ? \| Doesn't appear to be +important when you have everything else. It might be useful to have +though, so why don't you be kind and document it? :) \|- ! Display +Character Design \| 239 \|\| \* None \| Displays the character design +interface. \|- ! Display Trade Offer \| 238 \|\| \* uint16 - The server +index of the player we are trading with. \| Displays the trade offer +interface. \|- ! Hide Trade \| 237 \|\| \* None \| Hides the trade offer +and confirm interfaces. \|- ! Update Trade Offer \| 236 \|\| \* int8 - +The number of items the other player has traded. \* uint16... - The +item's id. \* int32a... - The item's stack size. \| Updates the other +player's trade offer. \|- ! Other's Trade Status \| 235 \|\| \* int8 - 1 += yes, anything else = no \| Has the other player accepted the trade +offer? \|- ! Display Shop \| 234 \|\| \* uint8 - The number of items in +the shop. \* int8 - 1 if the shop is a general store. \* uint8 - This +shop's selling price modifier. \* uint8 - This shop's buying price +modifier. \* uint16... - The item's id. \* uint16... - The item's stack +size. \* uint8... - The item's price. \| Displays the shop interface. +Variable length. \|- ! Hide Shop \| 233 \|\| \* None \| Hides the shop +interface. \|- ! Our Trade Status \| 229 \|\| \* int8 - 1 = yes, +anything else = no \| Have we accepted the trade offer? \|- ! Init Game +Settings \| 228 \|\| \* int8 - Automatic camera rotation. 1 = enabled, +anything else is disabled. \* int8 - Single mouse button. 1 = enabled, +anything else is disabled. \* int8 - Sound effects. 1 = disabled, +anything else is enabled. \| Sets the player's gameplay settings. \|- ! +Set Prayers \| 227 \|\| \* int8... - The prayer's status. 1 = enabled, +anything else is disabled. \| Sets the status of every prayer. Variable +length. \|- ! Set Quests \| 226 \|\| \* int8... - The quest's completion +status. 1 = completed, anything else is incomplete. \| Sets the player's +quest completion status. Variable length. \|- ! Display Bank \| 222 \|\| +\* uint8 - The number of items in the player's bank. \* uint8 - The +maximum number of items the player is allowed to store. \* uint16... - +The item's id. \* int32a... - The item's stack size. \| Displays the +bank interface. Variable length. \|- ! Hide Bank \| 221 \|\| \* None \| +Hides the bank interface. \|- ! Bank Update \| 214 \|\| \* uint8 - The +item's slot. \* uint16 - The item's id. \* int32a - The item's stack +size. 0 to remove. \| Updates/adds/removes a single item in the bank +interface to save bytes. \|- ! Single XP Update \| 220 \|\| \* uint8 - +The skill's id. \* int32 - The skill's xp. \| Updates a single skill's +XP to save bytes. \|- ! Update InvItem \| 213 \|\| \* uint8 - The item's +slot. \* uint16 - The item's id. Increment by 0x7fff to change stack +size. \* int32a - The item's stack size. May not be read. \| Adds a +single item, or changes the ID, or changes the stack size to save bytes. +If id / 32768 == 1, the item is equipped. \|- ! Remove InvItem \| 212 +\|\| \* uint8 - The item's slot. \| Removes a single item from the +player's inventory to save bytes. \|- ! Single Skill Update \| 211 \|\| +\* uint8 - The skill's id. \* uint8 - The skill's current level. \* +uint8 - The skill's base level. \* int32 - The skill's experience +points. \| Updates a single skill to save bytes. \|- ! Play Sound \| 207 +\|\| \* byte\[\] - The name of the sound. \| Plays a sound/audio file in +the client. \|- ! Open Character Design Panel \| 203 \|\| \* None. \| +Open the character design panel. \|- \|} === '''Outgoing Data''' === +'''TODO: recovery questions''' {\| class="wikitable" \|- ! scope="col" +width="140px" \| Name ! scope="col" width="50px" \| Opcode ! scope="col" +width="350px" \| Payload ! scope="col" width="300px" \| Description \|- +! Login \| 0 \|\| \* See \[\[135 Protocol\#Login\|Login\]\] \| Logs the +player in. \|- ! Reconnect \| 19 \|\| \* See \[\[135 +Protocol\#Login\|Login\]\] \| Reconnects the player after they are +disconnected. \|- ! Disconnect \| 1 \|\| \* None \| Sent after the +server sends Close Connection (opcode 9), possibly to notify the server +that the player is to be removed. \|- ! Newplayer (Registration) \| 2 +\|\| \* See \[\[135 Protocol\#Registration\|Registration\]\] \| +Registers a new user. \|- ! Public Chat \| 3 \|\| \* String - The +encoded message. \| Sends a message to public chat. \|- ! Ping \| 5 \|\| +\* None \| Ping \|- ! Attempt Logout \| 6 \|\| \* None \| Inform the +server that the client is attempting to log out \|- ! Admin Command \| 7 +\|\| \* String - The command \| Sends a command to the server to be +executed \|- ! Report Abuse \| 10 \|\| \* int64 - The mod37 encoded +username to report \| Sends an abuse report to the server \|- ! Change +Password \| 25 \|\| \* RSAString - Your old password + new password +encoded with RSA \* Old password substring - +RSAString.substring(0,20).trim() \* New password substring - +RSAString.substring(20, RSAString.length()).trim(); \| Is used to change +your password ingame \|- ! Add Friend \| 26 \|\| \* int64 - mod37 +encoded username \| Adds a user to your friends list \|- ! Remove Friend +\| 27 \|\| \* int64 - The mod37 encoded username to report \| Removes a +user from your friends list \|- ! Private Message \| 28 \|\| \* int64 - +The mod37 encoded username to send the message to \* String - The +message, scrambed \| Sends a message to the specified user \|- ! Ignore +User \| 29 \|\| \* int64 - The mod37 encoded username to ignore \| Adds +a user to your ignore list \|- ! Remove Ignore \| 30 \|\| \* int64 - +mod37 encoded username \| Removes a user from your ignore list \|- ! +Update Privacy Settings \| 31 \|\| \* int8 - 1 to block public chat \* +int8 - 1 to block private chat \* int8 - 1 to block trade requests \* +int8 - 1 to block duel requests \| Updates the privacy settings \|- ! +Walk to Tile \| 255 \|\| \* int16 - (start\_x + area\_x). The initial +position. \* int16 - (start\_y + area\_y) \* int8... - (route\_x\[i\] - +start\_x) \* int8... - (route\_y\[i\] - start\_y) \| Variable length. +Walks to a tile. The number of steps can be calculated by dividing the +available data by 2. \|- ! Walk to Entity \| 215 \|\| \* The same as +255. \| Variable length. Walks to an entity. The number of steps can be +calculated by dividing the available data by 2. \|- ! Player Response \| +254 \|\| \* int16 - The number of players sent \* int16... - The +player's server index \* int16... - The player's status, as sent with +the appearance update packet \| Variable length. Informs the server of +players the client knows about after a positions/movement update packet. +\|- ! Drop Item \| 251 \|\| \* int16 - The slot of the item to drop \| +Drops the specified item on the ground \|- ! Cast on Item \| 220 \|\| \* +int16 - The slot of the item to cast a spell on \* int16 - The id of the +spell to cast \| Casts a spell (such as High Alchemy) on the specified +item \|- ! Use with Item \| 240 \|\| \* int16 - The slot of the first +item to use \* int16 - The slot of the second item to use \| Uses an +item in the player's inventory with another item in the player's +inventory \|- ! Remove Item \| 248 \|\| \* int16 - The slot of the item +to unequip \| Unequips the specified inventory item \|- ! Wear Item \| +249 \|\| \* int16 - The slot of the item to equip \| Equips the +specified inventory item \|- ! Item Command \| 246 \|\| \* int16 - The +slot of the item to use \| Buries, eats, etc the specified inventory +item \|- ! Select Option \| 237 \|\| \* int8 - The position of the +option in the dialog\_options array \| Selects an option in a NPC dialog +\|- ! Combat Style \| 231 \|\| \* int8 - The position of the combat +style in the list \| Sets the player's combat style. \* 0 - Controlled +\* 1 - Aggressive \* 2 - Accurate \* 3 - Defensive \|- ! Close Bank \| +207 \|\| \* None \| Informs the server that the player has closed the +banking interface. \|- ! Withdraw Item \| 206 \|\| \* int16 - The ID of +the item to withdraw \* int16 - The amount of the specified item to +withdraw \| Withdraws a single type of item from the player's bank. \|- +! Deposit Item \| 205 \|\| \* int16 - The ID of the item to deposit \* +int16 - The amount of the specified item to deposit \| Deposits a single +type of item into the player's bank. \|- ! Disable Prayer \| 211 \|\| \* +int8 - The ID of the prayer to disable \| Disables a prayer. \|- ! +Enable Prayer \| 212 \|\| \* int8 - The ID of the prayer to enable \| +Enables a prayer. \|- ! Update Game Setting \| 213 \|\| \* int8 - The +setting type \* int8 - The setting value (1 or 0) \| Setting types: \* 0 +- Camera angle mode (auto/manual) \* 1 - Number of mouse buttons (1/2) +\* 2 - Sound effects (off/on) \|- ! Confirm Trade \| 202 \|\| \* None \| +Confirms the trade offer. \|- ! Accept Trade \| 232 \|\| \* None \| +Accepts the trade offer. \|- ! Decline Trade \| 233 \|\| \* None \| +Declines the trade offer. \|- ! Trade Update \| 234 \|\| \* int8 - The +amount of traded items to send to the server \* int16... - The id of the +item \* int32... - The amount/stack size of the item \| Variable length. +Updates the trade offer. \|- ! Cast on GItem \| 224\* \|\| \* int16 - +The item's X coordinate \* int16 - The item's Y coordinate \* int16 - +The item's ID \* int16 - The spell's ID \| Casts a spell on an item on +the ground. \|- ! Use with GItem \| 250\* \|\| \* int16 - The item's X +coordinate \* int16 - The item's Y coordinate \* int16 - The item's ID +\* int16 - The inventory slot \| Uses an item in the player's inventory +with an item on the ground. \|- ! Take GItem \| 252\* \|\| \* int16 - +The item's X coordinate \* int16 - The item's Y coordinate \* int16 - +The item's ID \| Picks up an item on the ground. \|- ! Cast on Boundary +\| 223\* \|\| \* int16 - The bound's X coordinate \* int16 - The bound's +Y coordinate \* int8 - The bound's direction \* int16 - The spell's ID +\| Casts a spell on a boundary (or 'wall object'). \|- ! Use with +Boundary \| 239\* \|\| \* int16 - The bound's X coordinate \* int16 - +The bound's Y coordinate \* int8 - The bound's direction \* int16 - The +inventory slot \| Uses an item in the player's inventory with a boundary +(or 'wall object'). \|- ! Boundary Cmd 1 \| 238\* \|\| \* int16 - The +bound's X coordinate \* int16 - The bound's Y coordinate \* int8 - The +bound's direction \| Performs the primary action (usually 'open') on a +boundary (or 'wall object'). \|- ! Boundary Cmd 2 \| 229\* \|\| \* int16 +- The bound's X coordinate \* int16 - The bound's Y coordinate \* int8 - +The bound's direction \| Performs the secondary action (usually 'close' +or 'picklock') on a boundary (or 'wall object'). \|- ! Cast on Object \| +222\* \|\| \* int16 - The object's X coordinate \* int16 - The object's +Y coordinate \* int16 - The spell's ID \| Casts a spell on an object. +\|- ! Use with Object \| 241\* \|\| \* int16 - The object's X coordinate +\* int16 - The object's Y coordinate \* int16 - The inventory slot \| +Uses an item in the player's inventory with an object. \|- ! Object Cmd +1 \| 241\* \|\| \* int16 - The object's X coordinate \* int16 - The +object's Y coordinate \| Performs the primary action on an object (for +example, 'mine'). \|- ! Object Cmd 2 \| 230\* \|\| \* int16 - The +object's X coordinate \* int16 - The object's Y coordinate \| Performs +the secondary action on an object (for example, 'prospect'). \|- ! Cast +on NPC \| 225\* \|\| \* int16 - The NPC's server index \* int16 - The +spell's ID \| Casts a spell on a non-player character. \|- ! Use with +NPC \| 243\* \|\| \* int16 - The NPC's server index \* int16 - The +inventory slot \| Uses an item in the player's inventory with a +non-player character. \|- ! Talk to NPC \| 245\* \|\| \* int16 - The +NPC's server index \| Starts talking to a non-player character. \|- ! +Attack NPC \| 244\* \|\| \* int16 - The NPC's server index \| Starts +attacking a non-player character. \|- ! NPC Cmd 2 \| 195\* \|\| \* int16 +- The NPC's server index \| Performs the secondary action on a +non-player character, usually 'pickpocket'. \|- ! Cast on Self \| 227 +\|\| \* int16 - The spell's ID \| Cast a teleport or charge spell on the +local player. \|- ! Cast on Player \| 226\* \|\| \* int16 - The player's +server index \* int16 - The spell's ID \| Casts a spell on another +player. \|- ! Use with Player \| 219\* \|\| \* int16 - The player's +server index \* int16 - The inventory slot \| Uses an item (for example, +a Gnomeball, or a Christmas cracker) on another player. \|- ! Attack +Player \| 228\* \|\| \* int16 - The player's server index \| Starts +attacking another player. \|- ! Trade Player \| 235 \|\| \* int16 - The +player's server index \| Sends a trade request to another player. \|- ! +Follow Player \| 214 \|\| \* int16 - The player's server index \| Starts +following another player. \|- ! Duel Player \| 204 \|\| \* int16 - The +player's server index \| Sends a duel request to another player. \|- ! +RuntimeException \| 17 \|\| \* String - The text of the error. \| Sent +when the client throws an exception while processing data sent by the +server. \|- ! Confirm Duel Offer \| 198 \|\| \* None \| Confirms the +duel offer. \|- ! Accept Duel Offer \| 199 \|\| \* None \| Accepts the +duel offer. \|- ! Duel Settings \| 200 \|\| \* int8 - No retreating, 1 +or 0 \* int8 - No magic, 1 or 0 \* int8 - No prayers, 1 or 0 \* int8 - +No weapons, 1 or 0 \| Updates the duel settings. \|- ! Duel Items \| 201 +\|\| \* int8 - The total number of offered items \* int16... - Offered +item ID \* int32... - Offered item stack size \| Variable length. +Updates the stake. \|- ! Decline Duel Offer \| 203 \|\| \* None \| +Declines the duel offer. \|- ! Character Design \| 236 \|\| \* int8 - +The player's gender - 2=Female, 1=Male \* int8 - The player's hair style +\* int8 - The player's 'body type' - 4=Female, 1=Male \* int8 - The +player's 'leg type' - always 2 \* int8 - The player's hair colour \* +int8 - The player's top colour \* int8 - The player's leg colour \* int8 +- The player's skin colour \* int8 - The player's class \| Submits the +player's chosen design when they log in for the first time. \* 0 - +Adventurer class \* 1 - Warrior class \* 2 - Wizard class \* 3 - Ranger +class \* 4 - Miner class \|} Notes: + +- Opcodes marked with \* are preceded by Walk to Entity. +- When closing the duel confirm screen, it may send the decline trade + packet, for some reason. diff --git a/src/194-Clear-screen.md b/src/194-Clear-screen.md new file mode 100644 index 0000000..7525ca3 --- /dev/null +++ b/src/194-Clear-screen.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 194\]\] {{packet\|name=Clear +screen\|description=Clears the screen of all open +interfaces.\|opcode=240\|type=Fixed\|length=0\|revision=194}} == Clear +Screen == + +=== Description === + +Removes all open interfaces from the players screen. diff --git a/src/194-Logout.md b/src/194-Logout.md new file mode 100644 index 0000000..1aca559 --- /dev/null +++ b/src/194-Logout.md @@ -0,0 +1,9 @@ +\[\[Category Packet\]\] \[\[Category Packet 194\]\] +{{packet\|name=Logout\|description=Forces the client to +logout.\|opcode=192\|type=Fixed\|length=0\|revision=194}} == Send +Message == + +=== Description === + +Forces the client to logout cleanly and return to the login screen, +without attempting a reconnection. diff --git a/src/194-Protocol.md b/src/194-Protocol.md new file mode 100644 index 0000000..d22d60a --- /dev/null +++ b/src/194-Protocol.md @@ -0,0 +1,37 @@ +\[\[Category Packet\]\] \[\[Category Packet 194\]\] \[\[Category RS2\]\] + +Just in case somebody cares about this. + +== '''Packet structure''' == ? + +== '''Login''' == ? + +== '''Game Protocol''' == + +===Server -\> Client Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 137 \| +FIXED \| 2 \| \[\[194 Show interface\|Show interface\]\] \| Displays a +normal interface. \|- \| 164 \| VARIABLE\_BYTE \| N/A \| \[\[194 Send +message\|Send message\]\] \| Sends a server message (e.g. 'Welcome to +RuneScape') or trade/duel request. \|- \| 192 \| FIXED \| 0 \| \[\[194 +Logout\|Logout\]\] \| Disconnects the client from the server. \|- \| 206 +\| VARIABLE\_BYTE \| N/A \| \[\[194 Set MIDI\|Set MIDI\]\] \| Sets the +current song playing on the client. \|- \| 210 \| FIXED \| 3 \| \[\[194 +Send sidebar interface\|Send sidebar interface\]\] \| Assigns an +interface to one of the tabs in the game sidebar. \|- \| 240 \| FIXED \| +0 \| \[\[194 Clear screen\|Clear screen\]\] \| Clears the screen of all +open interfaces. \|- \|} + +===Client -\> Server Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 54 \| +VARIABLE\_BYTE \| N/A \| Send Chat Message \| Sends a chat message to +the server. \|- \| 237 \| VARIABLE\_BYTE \| N/A \| Send Command \| Sends +a command (any message prefixed with ::) to the server. \|- \|} diff --git a/src/194-Show-interface.md b/src/194-Show-interface.md new file mode 100644 index 0000000..7bb72ca --- /dev/null +++ b/src/194-Show-interface.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 194\]\] {{packet\|name=Show +interface\|description=Displays a normal +interface.\|opcode=137\|type=Fixed\|length=2\|revision=194}} == Show +interface == + +=== Description === + +Displays a normal interface with the given id. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \| The interface id. \|- \|} diff --git a/202-Protocol.mediawiki b/src/202-Protocol.md similarity index 92% rename from 202-Protocol.mediawiki rename to src/202-Protocol.md index 7ebafab..283afb6 100644 --- a/202-Protocol.mediawiki +++ b/src/202-Protocol.md @@ -1,16 +1,13 @@ -[[Category RSC]] +\[\[Category RSC\]\] -This page refers to the RSC #202 client revision (the original distribution by eXemplar) +This page refers to the RSC \#202 client revision (the original +distribution by eXemplar) +== '''Packet structure''' == ? -== '''Packet structure''' == -? +== '''Login''' == ? -== '''Login''' == -? - -== '''Incoming Data''' == -'''TODO:''' Document packet structures +== '''Incoming Data''' == '''TODO:''' Document packet structures
 #define IDX_WEIRD_USERNAME    32
 #define IDX_LOGIN             0
@@ -92,25 +89,33 @@ This page refers to the RSC #202 client revision (the original distribution by e
 
 #define IDO_REPORT_ABUSE      7
 
- - - - - - - - - - - - - - + + + + + + + + + + + +
opcodeusagesizepayload
+opcode + +usage + +size + +payload +
+ + + +
- -== '''Outgoing Data''' == -'''TODO:''' Document packet structures +== '''Outgoing Data''' == '''TODO:''' Document packet structures
 // login responses...
 #define IDX_MOD_ACCEPTED      25                    // logged in as player mod
@@ -194,19 +199,29 @@ This page refers to the RSC #202 client revision (the original distribution by e
 #define IDI_SLEEP_FAILED      15
 #define IDI_SYSTEM_UPDATE     172
 
- - - - - - - - - - - - - - -
opcodeusagesizepayload
\ No newline at end of file + + +opcode + + +usage + + +size + + +payload + + + + + + + + + + + + + diff --git a/src/204-Items.md b/src/204-Items.md new file mode 100644 index 0000000..433080c --- /dev/null +++ b/src/204-Items.md @@ -0,0 +1,25833 @@ +\[\[Category RSC\]\] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tr\> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +id + +item name + +description + +wieldable + +stackable +
+\<0.png\> + +0 + +Iron Mace + +A spiky mace + +X + +\- +
+\<1.png\> + +1 + +Iron Short Sword + +A razor sharp sword + +X + +\- +
+\<2.png\> + +2 + +Iron Kite Shield + +A large metal shield + +X + +\- +
+\<3.png\> + +3 + +Iron Square Shield + +A medium metal shield + +X + +\- +
+\<4.png\> + +4 + +Wooden Shield + +A solid wooden shield + +X + +\- +
+\<5.png\> + +5 + +Medium Iron Helmet + +A medium sized helmet + +X + +\- +
+\<6.png\> + +6 + +Large Iron Helmet + +A full face helmet + +X + +\- +
+\<7.png\> + +7 + +Iron Chain Mail Body + +A series of connected metal rings + +X + +\- +
+\<8.png\> + +8 + +Iron Plate Mail Body + +Provides excellent protection + +X + +\- +
+\<9.png\> + +9 + +Iron Plate Mail Legs + +These look pretty heavy + +X + +\- +
+\<10.png\> + +10 + +Coins + +Lovely money! + +\- + +X +
+\<11.png\> + +11 + +Bronze Arrows + +Arrows with bronze heads + +\- + +X +
+\<12.png\> + +12 + +Iron Axe + +A woodcutters axe + +X + +\- +
+\<13.png\> + +13 + +Knife + +A dangerous looking knife + +\- + +\- +
+\<14.png\> + +14 + +Logs + +A number of wooden logs + +\- + +\- +
+\<15.png\> + +15 + +Leather Armour + +Better than no armour! + +X + +\- +
+\<16.png\> + +16 + +Leather Gloves + +These will keep my hands warm! + +X + +\- +
+\<17.png\> + +17 + +Boots + +Comfortable leather boots + +X + +\- +
+\<18.png\> + +18 + +Cabbage + +Yuck I don't like cabbage + +\- + +\- +
+\<19.png\> + +19 + +Egg + +A nice fresh egg + +\- + +\- +
+\<20.png\> + +20 + +Bones + +Ew it's a pile of bones + +\- + +\- +
+\<21.png\> + +21 + +Bucket + +It's a wooden bucket + +\- + +\- +
+\<22.png\> + +22 + +Milk + +It's a bucket of milk + +\- + +\- +
+\<23.png\> + +23 + +Flour + +A little heap of flour + +\- + +\- +
+\<24.png\> + +24 + +Amulet of GhostSpeak + +It lets me talk to ghosts + +X + +\- +
+\<25.png\> + +25 + +Silverlight key 1 + +A key given to me by Wizard Traiborn + +\- + +\- +
+\<26.png\> + +26 + +Silverlight key 2 + +A key given to me by Captain Rovin + +\- + +\- +
+\<27.png\> + +27 + +skull + +A spooky looking skull + +\- + +\- +
+\<28.png\> + +28 + +Iron dagger + +Short but pointy + +X + +\- +
+\<29.png\> + +29 + +grain + +Some wheat heads + +\- + +\- +
+\<30.png\> + +30 + +Book + + +\- + +\- +
+\<31.png\> + +31 + +Fire-Rune + +One of the 4 basic elemental runes + +\- + +X +
+\<32.png\> + +32 + +Water-Rune + +One of the 4 basic elemental runes + +\- + +X +
+\<33.png\> + +33 + +Air-Rune + +One of the 4 basic elemental runes + +\- + +X +
+\<34.png\> + +34 + +Earth-Rune + +One of the 4 basic elemental runes + +\- + +X +
+\<35.png\> + +35 + +Mind-Rune + +Used for low level missile spells + +\- + +X +
+\<36.png\> + +36 + +Body-Rune + +Used for curse spells + +\- + +X +
+\<37.png\> + +37 + +Life-Rune + +Used for summon spells + +\- + +X +
+\<38.png\> + +38 + +Death-Rune + +Used for high level missile spells + +\- + +X +
+\<39.png\> + +39 + +Needle + +Used with a thread to make clothes + +\- + +X +
+\<40.png\> + +40 + +Nature-Rune + +Used for alchemy spells + +\- + +X +
+\<41.png\> + +41 + +Chaos-Rune + +Used for mid level missile spells + +\- + +X +
+\<42.png\> + +42 + +Law-Rune + +Used for teleport spells + +\- + +X +
+\<43.png\> + +43 + +Thread + +Used with a needle to make clothes + +\- + +X +
+\<44.png\> + +44 + +Holy Symbol of saradomin + +This needs a string putting on it + +\- + +\- +
+\<45.png\> + +45 + +Unblessed Holy Symbol + +This needs blessing + +X + +\- +
+\<46.png\> + +46 + +Cosmic-Rune + +Used for enchant spells + +\- + +X +
+\<47.png\> + +47 + +key + +The key to get into the phoenix gang + +\- + +\- +
+\<48.png\> + +48 + +key + +The key to the phoenix gang's weapons store + +\- + +\- +
+\<49.png\> + +49 + +scroll + +An intelligence Report + +\- + +\- +
+\<50.png\> + +50 + +Water + +It's a bucket of water + +\- + +\- +
+\<51.png\> + +51 + +Silverlight key 3 + +A key I found in a drain + +\- + +\- +
+\<52.png\> + +52 + +Silverlight + +A magic sword + +X + +\- +
+\<53.png\> + +53 + +Broken shield + +Half of the shield of Arrav + +\- + +\- +
+\<54.png\> + +54 + +Broken shield + +Half of the shield of Arrav + +\- + +\- +
+\<55.png\> + +55 + +Cadavaberries + +Poisonous berries + +\- + +\- +
+\<56.png\> + +56 + +message + +A message from Juliet to Romeo + +\- + +\- +
+\<57.png\> + +57 + +Cadava + +I'm meant to give this to Juliet + +\- + +\- +
+\<58.png\> + +58 + +potion + +this is meant to be good for spots + +\- + +\- +
+\<59.png\> + +59 + +Phoenix Crossbow + +Former property of the phoenix gang + +X + +\- +
+\<60.png\> + +60 + +Crossbow + +This fires crossbow bolts + +X + +\- +
+\<61.png\> + +61 + +Certificate + +I can use this to claim a reward from the king + +\- + +\- +
+\<62.png\> + +62 + +bronze dagger + +Short but pointy + +X + +\- +
+\<63.png\> + +63 + +Steel dagger + +Short but pointy + +X + +\- +
+\<64.png\> + +64 + +Mithril dagger + +Short but pointy + +X + +\- +
+\<65.png\> + +65 + +Adamantite dagger + +Short but pointy + +X + +\- +
+\<66.png\> + +66 + +Bronze Short Sword + +A razor sharp sword + +X + +\- +
+\<67.png\> + +67 + +Steel Short Sword + +A razor sharp sword + +X + +\- +
+\<68.png\> + +68 + +Mithril Short Sword + +A razor sharp sword + +X + +\- +
+\<69.png\> + +69 + +Adamantite Short Sword + +A razor sharp sword + +X + +\- +
+\<70.png\> + +70 + +Bronze Long Sword + +A razor sharp sword + +X + +\- +
+\<71.png\> + +71 + +Iron Long Sword + +A razor sharp sword + +X + +\- +
+\<72.png\> + +72 + +Steel Long Sword + +A razor sharp sword + +X + +\- +
+\<73.png\> + +73 + +Mithril Long Sword + +A razor sharp sword + +X + +\- +
+\<74.png\> + +74 + +Adamantite Long Sword + +A razor sharp sword + +X + +\- +
+\<75.png\> + +75 + +Rune long sword + +A razor sharp sword + +X + +\- +
+\<76.png\> + +76 + +Bronze 2-handed Sword + +A very large sword + +X + +\- +
+\<77.png\> + +77 + +Iron 2-handed Sword + +A very large sword + +X + +\- +
+\<78.png\> + +78 + +Steel 2-handed Sword + +A very large sword + +X + +\- +
+\<79.png\> + +79 + +Mithril 2-handed Sword + +A very large sword + +X + +\- +
+\<80.png\> + +80 + +Adamantite 2-handed Sword + +A very large sword + +X + +\- +
+\<81.png\> + +81 + +rune 2-handed Sword + +A very large sword + +X + +\- +
+\<82.png\> + +82 + +Bronze Scimitar + +A vicious curved sword + +X + +\- +
+\<83.png\> + +83 + +Iron Scimitar + +A vicious curved sword + +X + +\- +
+\<84.png\> + +84 + +Steel Scimitar + +A vicious curved sword + +X + +\- +
+\<85.png\> + +85 + +Mithril Scimitar + +A vicious curved sword + +X + +\- +
+\<86.png\> + +86 + +Adamantite Scimitar + +A vicious curved sword + +X + +\- +
+\<87.png\> + +87 + +bronze Axe + +A woodcutters axe + +X + +\- +
+\<88.png\> + +88 + +Steel Axe + +A woodcutters axe + +X + +\- +
+\<89.png\> + +89 + +Iron battle Axe + +A vicious looking axe + +X + +\- +
+\<90.png\> + +90 + +Steel battle Axe + +A vicious looking axe + +X + +\- +
+\<91.png\> + +91 + +Mithril battle Axe + +A vicious looking axe + +X + +\- +
+\<92.png\> + +92 + +Adamantite battle Axe + +A vicious looking axe + +X + +\- +
+\<93.png\> + +93 + +Rune battle Axe + +A vicious looking axe + +X + +\- +
+\<94.png\> + +94 + +Bronze Mace + +A spiky mace + +X + +\- +
+\<95.png\> + +95 + +Steel Mace + +A spiky mace + +X + +\- +
+\<96.png\> + +96 + +Mithril Mace + +A spiky mace + +X + +\- +
+\<97.png\> + +97 + +Adamantite Mace + +A spiky mace + +X + +\- +
+\<98.png\> + +98 + +Rune Mace + +A spiky mace + +X + +\- +
+\<99.png\> + +99 + +Brass key + +I wonder what this is the key to + +\- + +\- +
+\<100.png\> + +100 + +staff + +It's a slightly magical stick + +X + +\- +
+\<101.png\> + +101 + +Staff of Air + +A Magical staff + +X + +\- +
+\<102.png\> + +102 + +Staff of water + +A Magical staff + +X + +\- +
+\<103.png\> + +103 + +Staff of earth + +A Magical staff + +X + +\- +
+\<104.png\> + +104 + +Medium Bronze Helmet + +A medium sized helmet + +X + +\- +
+\<105.png\> + +105 + +Medium Steel Helmet + +A medium sized helmet + +X + +\- +
+\<106.png\> + +106 + +Medium Mithril Helmet + +A medium sized helmet + +X + +\- +
+\<107.png\> + +107 + +Medium Adamantite Helmet + +A medium sized helmet + +X + +\- +
+\<108.png\> + +108 + +Large Bronze Helmet + +A full face helmet + +X + +\- +
+\<109.png\> + +109 + +Large Steel Helmet + +A full face helmet + +X + +\- +
+\<110.png\> + +110 + +Large Mithril Helmet + +A full face helmet + +X + +\- +
+\<111.png\> + +111 + +Large Adamantite Helmet + +A full face helmet + +X + +\- +
+\<112.png\> + +112 + +Large Rune Helmet + +A full face helmet + +X + +\- +
+\<113.png\> + +113 + +Bronze Chain Mail Body + +A series of connected metal rings + +X + +\- +
+\<114.png\> + +114 + +Steel Chain Mail Body + +A series of connected metal rings + +X + +\- +
+\<115.png\> + +115 + +Mithril Chain Mail Body + +A series of connected metal rings + +X + +\- +
+\<116.png\> + +116 + +Adamantite Chain Mail Body + +A series of connected metal rings + +X + +\- +
+\<117.png\> + +117 + +Bronze Plate Mail Body + +Provides excellent protection + +X + +\- +
+\<118.png\> + +118 + +Steel Plate Mail Body + +Provides excellent protection + +X + +\- +
+\<119.png\> + +119 + +Mithril Plate Mail Body + +Provides excellent protection + +X + +\- +
+\<120.png\> + +120 + +Adamantite Plate Mail Body + +Provides excellent protection + +X + +\- +
+\<121.png\> + +121 + +Steel Plate Mail Legs + +These look pretty heavy + +X + +\- +
+\<122.png\> + +122 + +Mithril Plate Mail Legs + +These look pretty heavy + +X + +\- +
+\<123.png\> + +123 + +Adamantite Plate Mail Legs + +These look pretty heavy + +X + +\- +
+\<124.png\> + +124 + +Bronze Square Shield + +A medium metal shield + +X + +\- +
+\<125.png\> + +125 + +Steel Square Shield + +A medium metal shield + +X + +\- +
+\<126.png\> + +126 + +Mithril Square Shield + +A medium metal shield + +X + +\- +
+\<127.png\> + +127 + +Adamantite Square Shield + +A medium metal shield + +X + +\- +
+\<128.png\> + +128 + +Bronze Kite Shield + +A large metal shield + +X + +\- +
+\<129.png\> + +129 + +Steel Kite Shield + +A large metal shield + +X + +\- +
+\<130.png\> + +130 + +Mithril Kite Shield + +A large metal shield + +X + +\- +
+\<131.png\> + +131 + +Adamantite Kite Shield + +A large metal shield + +X + +\- +
+\<132.png\> + +132 + +cookedmeat + +Mmm this looks tasty + +\- + +\- +
+\<133.png\> + +133 + +raw chicken + +I need to cook this first + +\- + +\- +
+\<134.png\> + +134 + +burntmeat + +Oh dear + +\- + +\- +
+\<135.png\> + +135 + +pot + +This pot is empty + +\- + +\- +
+\<136.png\> + +136 + +flour + +There is flour in this pot + +\- + +\- +
+\<137.png\> + +137 + +bread dough + +Some uncooked dough + +\- + +\- +
+\<138.png\> + +138 + +bread + +Nice crispy bread + +\- + +\- +
+\<139.png\> + +139 + +burntbread + +This bread is ruined! + +\- + +\- +
+\<140.png\> + +140 + +jug + +This jug is empty + +\- + +\- +
+\<141.png\> + +141 + +water + +It's full of water + +\- + +\- +
+\<142.png\> + +142 + +wine + +It's full of wine + +\- + +\- +
+\<143.png\> + +143 + +grapes + +Good grapes for wine making + +\- + +\- +
+\<144.png\> + +144 + +shears + +For shearing sheep + +\- + +\- +
+\<145.png\> + +145 + +wool + +I think this came from a sheep + +\- + +\- +
+\<146.png\> + +146 + +fur + +This would make warm clothing + +\- + +\- +
+\<147.png\> + +147 + +cow hide + +I should take this to the tannery + +\- + +\- +
+\<148.png\> + +148 + +leather + +It's a piece of leather + +\- + +\- +
+\<149.png\> + +149 + +clay + +Some hard dry clay + +\- + +\- +
+\<150.png\> + +150 + +copper ore + +this needs refining + +\- + +\- +
+\<151.png\> + +151 + +iron ore + +this needs refining + +\- + +\- +
+\<152.png\> + +152 + +gold + +this needs refining + +\- + +\- +
+\<153.png\> + +153 + +mithril ore + +this needs refining + +\- + +\- +
+\<154.png\> + +154 + +adamantite ore + +this needs refining + +\- + +\- +
+\<155.png\> + +155 + +coal + +hmm a non-renewable energy source! + +\- + +\- +
+\<156.png\> + +156 + +Bronze Pickaxe + +Used for mining + +\- + +\- +
+\<157.png\> + +157 + +uncut diamond + +this would be worth more cut + +\- + +\- +
+\<158.png\> + +158 + +uncut ruby + +this would be worth more cut + +\- + +\- +
+\<159.png\> + +159 + +uncut emerald + +this would be worth more cut + +\- + +\- +
+\<160.png\> + +160 + +uncut sapphire + +this would be worth more cut + +\- + +\- +
+\<161.png\> + +161 + +diamond + +this looks valuable + +\- + +\- +
+\<162.png\> + +162 + +ruby + +this looks valuable + +\- + +\- +
+\<163.png\> + +163 + +emerald + +this looks valuable + +\- + +\- +
+\<164.png\> + +164 + +sapphire + +this looks valuable + +\- + +\- +
+\<165.png\> + +165 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<166.png\> + +166 + +tinderbox + +useful for lighting a fire + +\- + +\- +
+\<167.png\> + +167 + +chisel + +good for detailed crafting + +\- + +\- +
+\<168.png\> + +168 + +hammer + +good for hitting things! + +\- + +\- +
+\<169.png\> + +169 + +bronze bar + +it's a bar of bronze + +\- + +\- +
+\<170.png\> + +170 + +iron bar + +it's a bar of iron + +\- + +\- +
+\<171.png\> + +171 + +steel bar + +it's a bar of steel + +\- + +\- +
+\<172.png\> + +172 + +gold bar + +this looks valuable + +\- + +\- +
+\<173.png\> + +173 + +mithril bar + +it's a bar of mithril + +\- + +\- +
+\<174.png\> + +174 + +adamantite bar + +it's a bar of adamantite + +\- + +\- +
+\<175.png\> + +175 + +Pressure gauge + +It looks like part of a machine + +\- + +\- +
+\<176.png\> + +176 + +Fish Food + +Keeps your pet fish strong and healthy + +\- + +\- +
+\<177.png\> + +177 + +Poison + +This stuff looks nasty + +\- + +\- +
+\<178.png\> + +178 + +Poisoned fish food + +Doesn't seem very nice to the poor fishes + +\- + +\- +
+\<179.png\> + +179 + +spinach roll + +A home made spinach thing + +\- + +\- +
+\<180.png\> + +180 + +Bad wine + +Oh dear + +\- + +\- +
+\<181.png\> + +181 + +Ashes + +A heap of ashes + +\- + +\- +
+\<182.png\> + +182 + +Apron + +A mostly clean apron + +X + +\- +
+\<183.png\> + +183 + +Cape + +A bright red cape + +X + +\- +
+\<184.png\> + +184 + +Wizards robe + +I can do magic better in this + +X + +\- +
+\<185.png\> + +185 + +wizardshat + +A silly pointed hat + +X + +\- +
+\<186.png\> + +186 + +Brass necklace + +I'd prefer a gold one + +X + +\- +
+\<187.png\> + +187 + +skirt + +A ladies skirt + +X + +\- +
+\<188.png\> + +188 + +Longbow + +A Nice sturdy bow + +X + +\- +
+\<189.png\> + +189 + +Shortbow + +Short but effective + +X + +\- +
+\<190.png\> + +190 + +Crossbow bolts + +Good if you have a crossbow! + +\- + +X +
+\<191.png\> + +191 + +Apron + +this will help keep my clothes clean + +X + +\- +
+\<192.png\> + +192 + +Chef's hat + +What a silly hat + +X + +\- +
+\<193.png\> + +193 + +Beer + +A glass of frothy ale + +\- + +\- +
+\<194.png\> + +194 + +skirt + +A ladies skirt + +X + +\- +
+\<195.png\> + +195 + +skirt + +A ladies skirt + +X + +\- +
+\<196.png\> + +196 + +Black Plate Mail Body + +Provides excellent protection + +X + +\- +
+\<197.png\> + +197 + +Staff of fire + +A Magical staff + +X + +\- +
+\<198.png\> + +198 + +Magic Staff + +A Magical staff + +X + +\- +
+\<199.png\> + +199 + +wizardshat + +A silly pointed hat + +X + +\- +
+\<200.png\> + +200 + +silk + +It's a sheet of silk + +\- + +\- +
+\<201.png\> + +201 + +flier + +Get your axes from Bob's axes + +\- + +\- +
+\<202.png\> + +202 + +tin ore + +this needs refining + +\- + +\- +
+\<203.png\> + +203 + +Mithril Axe + +A powerful axe + +X + +\- +
+\<204.png\> + +204 + +Adamantite Axe + +A powerful axe + +X + +\- +
+\<205.png\> + +205 + +bronze battle Axe + +A vicious looking axe + +X + +\- +
+\<206.png\> + +206 + +Bronze Plate Mail Legs + +These look pretty heavy + +X + +\- +
+\<207.png\> + +207 + +Ball of wool + +Spun from sheeps wool + +\- + +\- +
+\<208.png\> + +208 + +Oil can + +Its pretty full + +\- + +\- +
+\<209.png\> + +209 + +Cape + +A warm black cape + +X + +\- +
+\<210.png\> + +210 + +Kebab + +A meaty Kebab + +\- + +\- +
+\<211.png\> + +211 + +Spade + +A fairly small spade + +\- + +\- +
+\<212.png\> + +212 + +Closet Key + +A slightly smelly key + +\- + +\- +
+\<213.png\> + +213 + +rubber tube + +Its slightly charred + +\- + +\- +
+\<214.png\> + +214 + +Bronze Plated Skirt + +Designer leg protection + +X + +\- +
+\<215.png\> + +215 + +Iron Plated Skirt + +Designer leg protection + +X + +\- +
+\<216.png\> + +216 + +Black robe + +I can do magic better in this + +X + +\- +
+\<217.png\> + +217 + +stake + +A very pointy stick + +X + +\- +
+\<218.png\> + +218 + +Garlic + +A clove of garlic + +\- + +\- +
+\<219.png\> + +219 + +Red spiders eggs + +eewww + +\- + +\- +
+\<220.png\> + +220 + +Limpwurt root + +the root of a limpwurt plant + +\- + +\- +
+\<221.png\> + +221 + +Strength Potion + +4 doses of strength potion + +\- + +\- +
+\<222.png\> + +222 + +Strength Potion + +3 doses of strength potion + +\- + +\- +
+\<223.png\> + +223 + +Strength Potion + +2 doses of strength potion + +\- + +\- +
+\<224.png\> + +224 + +Strength Potion + +1 dose of strength potion + +\- + +\- +
+\<225.png\> + +225 + +Steel Plated skirt + +designer leg protection + +X + +\- +
+\<226.png\> + +226 + +Mithril Plated skirt + +Designer Leg protection + +X + +\- +
+\<227.png\> + +227 + +Adamantite Plated skirt + +Designer leg protection + +X + +\- +
+\<228.png\> + +228 + +Cabbage + +Yuck I don't like cabbage + +\- + +\- +
+\<229.png\> + +229 + +Cape + +A thick blue cape + +X + +\- +
+\<230.png\> + +230 + +Large Black Helmet + +A full face helmet + +X + +\- +
+\<231.png\> + +231 + +Red Bead + +A small round red bead + +\- + +\- +
+\<232.png\> + +232 + +Yellow Bead + +A small round yellow bead + +\- + +\- +
+\<233.png\> + +233 + +Black Bead + +A small round black bead + +\- + +\- +
+\<234.png\> + +234 + +White Bead + +A small round white bead + +\- + +\- +
+\<235.png\> + +235 + +Amulet of accuracy + +It increases my aim + +X + +\- +
+\<236.png\> + +236 + +Redberries + +Very bright red berries + +\- + +\- +
+\<237.png\> + +237 + +Rope + +A Coil of rope + +\- + +\- +
+\<238.png\> + +238 + +Reddye + +A little bottle of dye + +\- + +\- +
+\<239.png\> + +239 + +Yellowdye + +A little bottle of dye + +\- + +\- +
+\<240.png\> + +240 + +Paste + +A bottle off skin coloured paste + +\- + +\- +
+\<241.png\> + +241 + +Onion + +A strong smelling onion + +\- + +\- +
+\<242.png\> + +242 + +Bronze key + +A heavy key + +\- + +\- +
+\<243.png\> + +243 + +Soft Clay + +Clay that's ready to be used + +\- + +\- +
+\<244.png\> + +244 + +wig + +A blonde wig + +\- + +\- +
+\<245.png\> + +245 + +wig + +A wig made from wool + +\- + +\- +
+\<246.png\> + +246 + +Half full wine jug + +It's half full of wine + +\- + +\- +
+\<247.png\> + +247 + +Keyprint + +An imprint of a key in a lump of clay + +\- + +\- +
+\<248.png\> + +248 + +Black Plate Mail Legs + +These look pretty heavy + +X + +\- +
+\<249.png\> + +249 + +banana + +Mmm this looks tasty + +\- + +\- +
+\<250.png\> + +250 + +pastry dough + +Some uncooked dough + +\- + +\- +
+\<251.png\> + +251 + +Pie dish + +For making pies in + +\- + +\- +
+\<252.png\> + +252 + +cooking apple + +I wonder what i can make with this + +\- + +\- +
+\<253.png\> + +253 + +pie shell + +I need to find a filling for this pie + +\- + +\- +
+\<254.png\> + +254 + +Uncooked apple pie + +I need to cook this first + +\- + +\- +
+\<255.png\> + +255 + +Uncooked meat pie + +I need to cook this first + +\- + +\- +
+\<256.png\> + +256 + +Uncooked redberry pie + +I need to cook this first + +\- + +\- +
+\<257.png\> + +257 + +apple pie + +Mmm Apple pie + +\- + +\- +
+\<258.png\> + +258 + +Redberry pie + +Looks tasty + +\- + +\- +
+\<259.png\> + +259 + +meat pie + +Mighty and meaty + +\- + +\- +
+\<260.png\> + +260 + +burntpie + +Oops + +\- + +\- +
+\<261.png\> + +261 + +Half a meat pie + +Mighty and meaty + +\- + +\- +
+\<262.png\> + +262 + +Half a Redberry pie + +Looks tasty + +\- + +\- +
+\<263.png\> + +263 + +Half an apple pie + +Mmm Apple pie + +\- + +\- +
+\<264.png\> + +264 + +Portrait + +It's a picture of a knight + +\- + +\- +
+\<265.png\> + +265 + +Faladian Knight's sword + +A razor sharp sword + +X + +\- +
+\<266.png\> + +266 + +blurite ore + +What Strange stuff + +\- + +\- +
+\<267.png\> + +267 + +Asgarnian Ale + +A glass of frothy ale + +\- + +\- +
+\<268.png\> + +268 + +Wizard's Mind Bomb + +It's got strange bubbles in it + +\- + +\- +
+\<269.png\> + +269 + +Dwarven Stout + +A Pint of thick dark beer + +\- + +\- +
+\<270.png\> + +270 + +Eye of newt + +It seems to be looking at me + +\- + +\- +
+\<271.png\> + +271 + +Rat's tail + +A bit of rat + +\- + +\- +
+\<272.png\> + +272 + +Bluedye + +A little bottle of dye + +\- + +\- +
+\<273.png\> + +273 + +Goblin Armour + +Armour Designed to fit Goblins + +\- + +\- +
+\<274.png\> + +274 + +Goblin Armour + +Armour Designed to fit Goblins + +\- + +\- +
+\<275.png\> + +275 + +Goblin Armour + +Armour Designed to fit Goblins + +\- + +\- +
+\<276.png\> + +276 + +unstrung Longbow + +I need to find a string for this + +\- + +\- +
+\<277.png\> + +277 + +unstrung shortbow + +I need to find a string for this + +\- + +\- +
+\<278.png\> + +278 + +Unfired Pie dish + +I need to put this in a pottery oven + +\- + +\- +
+\<279.png\> + +279 + +unfired pot + +I need to put this in a pottery oven + +\- + +\- +
+\<280.png\> + +280 + +arrow shafts + +I need to attach feathers to these + +\- + +X +
+\<281.png\> + +281 + +Woad Leaf + +slightly bluish leaves + +\- + +X +
+\<282.png\> + +282 + +Orangedye + +A little bottle of dye + +\- + +\- +
+\<283.png\> + +283 + +Gold ring + +A valuable ring + +\- + +\- +
+\<284.png\> + +284 + +Sapphire ring + +A valuable ring + +\- + +\- +
+\<285.png\> + +285 + +Emerald ring + +A valuable ring + +\- + +\- +
+\<286.png\> + +286 + +Ruby ring + +A valuable ring + +\- + +\- +
+\<287.png\> + +287 + +Diamond ring + +A valuable ring + +\- + +\- +
+\<288.png\> + +288 + +Gold necklace + +I wonder if this is valuable + +X + +\- +
+\<289.png\> + +289 + +Sapphire necklace + +I wonder if this is valuable + +X + +\- +
+\<290.png\> + +290 + +Emerald necklace + +I wonder if this is valuable + +X + +\- +
+\<291.png\> + +291 + +Ruby necklace + +I wonder if this is valuable + +X + +\- +
+\<292.png\> + +292 + +Diamond necklace + +I wonder if this is valuable + +X + +\- +
+\<293.png\> + +293 + +ring mould + +Used to make gold rings + +\- + +\- +
+\<294.png\> + +294 + +Amulet mould + +Used to make gold amulets + +\- + +\- +
+\<295.png\> + +295 + +Necklace mould + +Used to make gold necklaces + +\- + +\- +
+\<296.png\> + +296 + +Gold Amulet + +It needs a string so I can wear it + +\- + +\- +
+\<297.png\> + +297 + +Sapphire Amulet + +It needs a string so I can wear it + +\- + +\- +
+\<298.png\> + +298 + +Emerald Amulet + +It needs a string so I can wear it + +\- + +\- +
+\<299.png\> + +299 + +Ruby Amulet + +It needs a string so I can make wear it + +\- + +\- +
+\<300.png\> + +300 + +Diamond Amulet + +It needs a string so I can wear it + +\- + +\- +
+\<301.png\> + +301 + +Gold Amulet + +I wonder if I can get this enchanted + +X + +\- +
+\<302.png\> + +302 + +Sapphire Amulet + +I wonder if I can get this enchanted + +X + +\- +
+\<303.png\> + +303 + +Emerald Amulet + +I wonder if I can get this enchanted + +X + +\- +
+\<304.png\> + +304 + +Ruby Amulet + +I wonder if I can get this enchanted + +X + +\- +
+\<305.png\> + +305 + +Diamond Amulet + +I wonder if I can get this enchanted + +X + +\- +
+\<306.png\> + +306 + +superchisel + +I wonder if I can get this enchanted + +\- + +\- +
+\<307.png\> + +307 + +Mace of Zamorak + +This mace gives me the creeps + +X + +\- +
+\<308.png\> + +308 + +Bronze Plate Mail top + +Armour designed for females + +X + +\- +
+\<309.png\> + +309 + +Steel Plate Mail top + +Armour designed for females + +X + +\- +
+\<310.png\> + +310 + +Mithril Plate Mail top + +Armour designed for females + +X + +\- +
+\<311.png\> + +311 + +Adamantite Plate Mail top + +Armour designed for females + +X + +\- +
+\<312.png\> + +312 + +Iron Plate Mail top + +Armour designed for females + +X + +\- +
+\<313.png\> + +313 + +Black Plate Mail top + +Armour designed for females + +X + +\- +
+\<314.png\> + +314 + +Sapphire Amulet of magic + +It improves my magic + +X + +\- +
+\<315.png\> + +315 + +Emerald Amulet of protection + +It improves my defense + +X + +\- +
+\<316.png\> + +316 + +Ruby Amulet of strength + +It improves my damage + +X + +\- +
+\<317.png\> + +317 + +Diamond Amulet of power + +A powerful amulet + +X + +\- +
+\<318.png\> + +318 + +Karamja Rum + +A very strong spirit brewed in Karamja + +\- + +\- +
+\<319.png\> + +319 + +Cheese + +It's got holes in it + +\- + +\- +
+\<320.png\> + +320 + +Tomato + +This would make good ketchup + +\- + +\- +
+\<321.png\> + +321 + +Pizza Base + +I need to add some tomato next + +\- + +\- +
+\<322.png\> + +322 + +Burnt Pizza + +Oh dear! + +\- + +\- +
+\<323.png\> + +323 + +Incomplete Pizza + +I need to add some cheese next + +\- + +\- +
+\<324.png\> + +324 + +Uncooked Pizza + +This needs cooking + +\- + +\- +
+\<325.png\> + +325 + +Plain Pizza + +A cheese and tomato pizza + +\- + +\- +
+\<326.png\> + +326 + +Meat Pizza + +A pizza with bits of meat on it + +\- + +\- +
+\<327.png\> + +327 + +Anchovie Pizza + +A Pizza with Anchovies + +\- + +\- +
+\<328.png\> + +328 + +Half Meat Pizza + +Half of this pizza has been eaten + +\- + +\- +
+\<329.png\> + +329 + +Half Anchovie Pizza + +Half of this pizza has been eaten + +\- + +\- +
+\<330.png\> + +330 + +Cake + +A plain sponge cake + +\- + +\- +
+\<331.png\> + +331 + +Burnt Cake + +Argh what a mess! + +\- + +\- +
+\<332.png\> + +332 + +Chocolate Cake + +This looks very tasty! + +\- + +\- +
+\<333.png\> + +333 + +Partial Cake + +Someone has eaten a big chunk of this cake + +\- + +\- +
+\<334.png\> + +334 + +Partial Chocolate Cake + +Someone has eaten a big chunk of this cake + +\- + +\- +
+\<335.png\> + +335 + +Slice of Cake + +I'd rather have a whole cake! + +\- + +\- +
+\<336.png\> + +336 + +Chocolate Slice + +A slice of chocolate cake + +\- + +\- +
+\<337.png\> + +337 + +Chocolate Bar + +It's a bar of chocolate + +\- + +\- +
+\<338.png\> + +338 + +Cake Tin + +Useful for baking cakes + +\- + +\- +
+\<339.png\> + +339 + +Uncooked cake + +Now all I need to do is cook it + +\- + +\- +
+\<340.png\> + +340 + +Unfired bowl + +I need to put this in a pottery oven + +\- + +\- +
+\<341.png\> + +341 + +Bowl + +Useful for mixing things + +\- + +\- +
+\<342.png\> + +342 + +Bowl of water + +It's a bowl of water + +\- + +\- +
+\<343.png\> + +343 + +Incomplete stew + +I need to add some meat too + +\- + +\- +
+\<344.png\> + +344 + +Incomplete stew + +I need to add some potato too + +\- + +\- +
+\<345.png\> + +345 + +Uncooked stew + +I need to cook this + +\- + +\- +
+\<346.png\> + +346 + +Stew + +It's a meat and potato stew + +\- + +\- +
+\<347.png\> + +347 + +Burnt Stew + +Eew it's horribly burnt + +\- + +\- +
+\<348.png\> + +348 + +Potato + +Can be used to make stew + +\- + +\- +
+\<349.png\> + +349 + +Raw Shrimp + +I should try cooking this + +\- + +\- +
+\<350.png\> + +350 + +Shrimp + +Some nicely cooked fish + +\- + +\- +
+\<351.png\> + +351 + +Raw Anchovies + +I should try cooking this + +\- + +\- +
+\<352.png\> + +352 + +Anchovies + +Some nicely cooked fish + +\- + +\- +
+\<353.png\> + +353 + +Burnt fish + +Oops! + +\- + +\- +
+\<354.png\> + +354 + +Raw Sardine + +I should try cooking this + +\- + +\- +
+\<355.png\> + +355 + +Sardine + +Some nicely cooked fish + +\- + +\- +
+\<356.png\> + +356 + +Raw Salmon + +I should try cooking this + +\- + +\- +
+\<357.png\> + +357 + +Salmon + +Some nicely cooked fish + +\- + +\- +
+\<358.png\> + +358 + +Raw Trout + +I should try cooking this + +\- + +\- +
+\<359.png\> + +359 + +Trout + +Some nicely cooked fish + +\- + +\- +
+\<360.png\> + +360 + +Burnt fish + +Oops! + +\- + +\- +
+\<361.png\> + +361 + +Raw Herring + +I should try cooking this + +\- + +\- +
+\<362.png\> + +362 + +Herring + +Some nicely cooked fish + +\- + +\- +
+\<363.png\> + +363 + +Raw Pike + +I should try cooking this + +\- + +\- +
+\<364.png\> + +364 + +Pike + +Some nicely cooked fish + +\- + +\- +
+\<365.png\> + +365 + +Burnt fish + +Oops! + +\- + +\- +
+\<366.png\> + +366 + +Raw Tuna + +I should try cooking this + +\- + +\- +
+\<367.png\> + +367 + +Tuna + +Wow this is a big fish + +\- + +\- +
+\<368.png\> + +368 + +Burnt fish + +Oops! + +\- + +\- +
+\<369.png\> + +369 + +Raw Swordfish + +I should try cooking this + +\- + +\- +
+\<370.png\> + +370 + +Swordfish + +I'd better be careful eating this! + +\- + +\- +
+\<371.png\> + +371 + +Burnt Swordfish + +Oops! + +\- + +\- +
+\<372.png\> + +372 + +Raw Lobster + +I should try cooking this + +\- + +\- +
+\<373.png\> + +373 + +Lobster + +This looks tricky to eat + +\- + +\- +
+\<374.png\> + +374 + +Burnt Lobster + +Oops! + +\- + +\- +
+\<375.png\> + +375 + +Lobster Pot + +Useful for catching lobsters + +\- + +\- +
+\<376.png\> + +376 + +Net + +Useful for catching small fish + +\- + +\- +
+\<377.png\> + +377 + +Fishing Rod + +Useful for catching sardine or herring + +\- + +\- +
+\<378.png\> + +378 + +Fly Fishing Rod + +Useful for catching salmon or trout + +\- + +\- +
+\<379.png\> + +379 + +Harpoon + +Useful for catching really big fish + +\- + +\- +
+\<380.png\> + +380 + +Fishing Bait + +For use with a fishing rod + +\- + +X +
+\<381.png\> + +381 + +Feather + +Used for fly-fishing + +\- + +X +
+\<382.png\> + +382 + +Chest key + +A key to One eyed Hector's chest + +\- + +\- +
+\<383.png\> + +383 + +Silver + +this needs refining + +\- + +\- +
+\<384.png\> + +384 + +silver bar + +this looks valuable + +\- + +\- +
+\<385.png\> + +385 + +Holy Symbol of saradomin + +This improves my prayer + +X + +\- +
+\<386.png\> + +386 + +Holy symbol mould + +Used to make Holy Symbols + +\- + +\- +
+\<387.png\> + +387 + +Disk of Returning + +Used to get out of Thordur's blackhole + +\- + +\- +
+\<388.png\> + +388 + +Monks robe + +I feel closer to the God's when I am wearing this + +X + +\- +
+\<389.png\> + +389 + +Monks robe + +Keeps a monk's legs nice and warm + +X + +\- +
+\<390.png\> + +390 + +Red key + +A painted key + +\- + +\- +
+\<391.png\> + +391 + +Orange Key + +A painted key + +\- + +\- +
+\<392.png\> + +392 + +yellow key + +A painted key + +\- + +\- +
+\<393.png\> + +393 + +Blue key + +A painted key + +\- + +\- +
+\<394.png\> + +394 + +Magenta key + +A painted key + +\- + +\- +
+\<395.png\> + +395 + +black key + +A painted key + +\- + +\- +
+\<396.png\> + +396 + +rune dagger + +Short but pointy + +X + +\- +
+\<397.png\> + +397 + +Rune short sword + +A razor sharp sword + +X + +\- +
+\<398.png\> + +398 + +rune Scimitar + +A vicious curved sword + +X + +\- +
+\<399.png\> + +399 + +Medium Rune Helmet + +A medium sized helmet + +X + +\- +
+\<400.png\> + +400 + +Rune Chain Mail Body + +A series of connected metal rings + +X + +\- +
+\<401.png\> + +401 + +Rune Plate Mail Body + +Provides excellent protection + +X + +\- +
+\<402.png\> + +402 + +Rune Plate Mail Legs + +These look pretty heavy + +X + +\- +
+\<403.png\> + +403 + +Rune Square Shield + +A medium metal shield + +X + +\- +
+\<404.png\> + +404 + +Rune Kite Shield + +A large metal shield + +X + +\- +
+\<405.png\> + +405 + +rune Axe + +A powerful axe + +X + +\- +
+\<406.png\> + +406 + +Rune skirt + +Designer leg protection + +X + +\- +
+\<407.png\> + +407 + +Rune Plate Mail top + +Armour designed for females + +X + +\- +
+\<408.png\> + +408 + +Runite bar + +it's a bar of runite + +\- + +\- +
+\<409.png\> + +409 + +runite ore + +this needs refining + +\- + +\- +
+\<410.png\> + +410 + +Plank + +This doesn't look very useful + +\- + +\- +
+\<411.png\> + +411 + +Tile + +This doesn't look very useful + +\- + +\- +
+\<412.png\> + +412 + +skull + +A spooky looking skull + +\- + +\- +
+\<413.png\> + +413 + +Big Bones + +Ew it's a pile of bones + +\- + +\- +
+\<414.png\> + +414 + +Muddy key + +It looks like a key to a chest + +\- + +\- +
+\<415.png\> + +415 + +Map + +A map showing the way to the Isle of Crandor + +\- + +\- +
+\<416.png\> + +416 + +Map Piece + +I need some more of the map for this to be useful + +\- + +\- +
+\<417.png\> + +417 + +Map Piece + +I need some more of the map for this to be useful + +\- + +\- +
+\<418.png\> + +418 + +Map Piece + +I need some more of the map for this to be useful + +\- + +\- +
+\<419.png\> + +419 + +Nails + +Nails made from steel + +\- + +X +
+\<420.png\> + +420 + +Anti dragon breath Shield + +Helps prevent damage from dragons + +X + +\- +
+\<421.png\> + +421 + +Maze key + +The key to the entrance of Melzar's maze + +\- + +\- +
+\<422.png\> + +422 + +Pumpkin + +Happy halloween + +\- + +\- +
+\<423.png\> + +423 + +Black dagger + +Short but pointy + +X + +\- +
+\<424.png\> + +424 + +Black Short Sword + +A razor sharp sword + +X + +\- +
+\<425.png\> + +425 + +Black Long Sword + +A razor sharp sword + +X + +\- +
+\<426.png\> + +426 + +Black 2-handed Sword + +A very large sword + +X + +\- +
+\<427.png\> + +427 + +Black Scimitar + +A vicious curved sword + +X + +\- +
+\<428.png\> + +428 + +Black Axe + +A sinister looking axe + +X + +\- +
+\<429.png\> + +429 + +Black battle Axe + +A vicious looking axe + +X + +\- +
+\<430.png\> + +430 + +Black Mace + +A spikey mace + +X + +\- +
+\<431.png\> + +431 + +Black Chain Mail Body + +A series of connected metal rings + +X + +\- +
+\<432.png\> + +432 + +Black Square Shield + +A medium metal shield + +X + +\- +
+\<433.png\> + +433 + +Black Kite Shield + +A large metal shield + +X + +\- +
+\<434.png\> + +434 + +Black Plated skirt + +designer leg protection + +X + +\- +
+\<435.png\> + +435 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<436.png\> + +436 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<437.png\> + +437 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<438.png\> + +438 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<439.png\> + +439 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<440.png\> + +440 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<441.png\> + +441 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<442.png\> + +442 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<443.png\> + +443 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<444.png\> + +444 + +Guam leaf + +A herb used in attack potion making + +\- + +\- +
+\<445.png\> + +445 + +Marrentill + +A herb used in poison cures + +\- + +\- +
+\<446.png\> + +446 + +Tarromin + +A useful herb + +\- + +\- +
+\<447.png\> + +447 + +Harralander + +A useful herb + +\- + +\- +
+\<448.png\> + +448 + +Ranarr Weed + +A useful herb + +\- + +\- +
+\<449.png\> + +449 + +Irit Leaf + +A useful herb + +\- + +\- +
+\<450.png\> + +450 + +Avantoe + +A useful herb + +\- + +\- +
+\<451.png\> + +451 + +Kwuarm + +A powerful herb + +\- + +\- +
+\<452.png\> + +452 + +Cadantine + +A powerful herb + +\- + +\- +
+\<453.png\> + +453 + +Dwarf Weed + +A powerful herb + +\- + +\- +
+\<454.png\> + +454 + +Unfinished potion + +I need another ingredient to finish this Guam potion + +\- + +\- +
+\<455.png\> + +455 + +Unfinished potion + +I need another ingredient to finish this Marrentill potion + +\- + +\- +
+\<456.png\> + +456 + +Unfinished potion + +I need another ingredient to finish this Tarromin potion + +\- + +\- +
+\<457.png\> + +457 + +Unfinished potion + +I need another ingredient to finish this Harralander potion + +\- + +\- +
+\<458.png\> + +458 + +Unfinished potion + +I need another ingredient to finish this Ranarr potion + +\- + +\- +
+\<459.png\> + +459 + +Unfinished potion + +I need another ingredient to finish this Irit potion + +\- + +\- +
+\<460.png\> + +460 + +Unfinished potion + +I need another ingredient to finish this Avantoe potion + +\- + +\- +
+\<461.png\> + +461 + +Unfinished potion + +I need another ingredient to finish this Kwuarm potion + +\- + +\- +
+\<462.png\> + +462 + +Unfinished potion + +I need another ingredient to finish this Cadantine potion + +\- + +\- +
+\<463.png\> + +463 + +Unfinished potion + +I need another ingredient to finish this Dwarfweed potion + +\- + +\- +
+\<464.png\> + +464 + +Vial + +It's full of water + +\- + +\- +
+\<465.png\> + +465 + +Vial + +This vial is empty + +\- + +\- +
+\<466.png\> + +466 + +Unicorn horn + +Poor unicorn + +\- + +\- +
+\<467.png\> + +467 + +Blue dragon scale + +A large shiny scale + +\- + +\- +
+\<468.png\> + +468 + +Pestle and mortar + +I can grind things for potions in this + +\- + +\- +
+\<469.png\> + +469 + +Snape grass + +Strange spikey grass + +\- + +\- +
+\<470.png\> + +470 + +Medium black Helmet + +A medium sized helmet + +X + +\- +
+\<471.png\> + +471 + +White berries + +Poisonous berries + +\- + +\- +
+\<472.png\> + +472 + +Ground blue dragon scale + +This stuff isn't good for you + +\- + +\- +
+\<473.png\> + +473 + +Ground unicorn horn + +A useful potion ingredient + +\- + +\- +
+\<474.png\> + +474 + +attack Potion + +3 doses of attack potion + +\- + +\- +
+\<475.png\> + +475 + +attack Potion + +2 doses of attack potion + +\- + +\- +
+\<476.png\> + +476 + +attack Potion + +1 dose of attack potion + +\- + +\- +
+\<477.png\> + +477 + +stat restoration Potion + +3 doses of stat restoration potion + +\- + +\- +
+\<478.png\> + +478 + +stat restoration Potion + +2 doses of stat restoration potion + +\- + +\- +
+\<479.png\> + +479 + +stat restoration Potion + +1 dose of stat restoration potion + +\- + +\- +
+\<480.png\> + +480 + +defense Potion + +3 doses of defense potion + +\- + +\- +
+\<481.png\> + +481 + +defense Potion + +2 doses of defense potion + +\- + +\- +
+\<482.png\> + +482 + +defense Potion + +1 dose of defense potion + +\- + +\- +
+\<483.png\> + +483 + +restore prayer Potion + +3 doses of restore prayer potion + +\- + +\- +
+\<484.png\> + +484 + +restore prayer Potion + +2 doses of restore prayer potion + +\- + +\- +
+\<485.png\> + +485 + +restore prayer Potion + +1 dose of restore prayer potion + +\- + +\- +
+\<486.png\> + +486 + +Super attack Potion + +3 doses of attack potion + +\- + +\- +
+\<487.png\> + +487 + +Super attack Potion + +2 doses of attack potion + +\- + +\- +
+\<488.png\> + +488 + +Super attack Potion + +1 dose of attack potion + +\- + +\- +
+\<489.png\> + +489 + +fishing Potion + +3 doses of fishing potion + +\- + +\- +
+\<490.png\> + +490 + +fishing Potion + +2 doses of fishing potion + +\- + +\- +
+\<491.png\> + +491 + +fishing Potion + +1 dose of fishing potion + +\- + +\- +
+\<492.png\> + +492 + +Super strength Potion + +3 doses of strength potion + +\- + +\- +
+\<493.png\> + +493 + +Super strength Potion + +2 doses of strength potion + +\- + +\- +
+\<494.png\> + +494 + +Super strength Potion + +1 dose of strength potion + +\- + +\- +
+\<495.png\> + +495 + +Super defense Potion + +3 doses of defense potion + +\- + +\- +
+\<496.png\> + +496 + +Super defense Potion + +2 doses of defense potion + +\- + +\- +
+\<497.png\> + +497 + +Super defense Potion + +1 dose of defense potion + +\- + +\- +
+\<498.png\> + +498 + +ranging Potion + +3 doses of ranging potion + +\- + +\- +
+\<499.png\> + +499 + +ranging Potion + +2 doses of ranging potion + +\- + +\- +
+\<500.png\> + +500 + +ranging Potion + +1 dose of ranging potion + +\- + +\- +
+\<501.png\> + +501 + +wine of Zamorak + +It's full of wine + +\- + +\- +
+\<502.png\> + +502 + +raw bear meat + +I need to cook this first + +\- + +\- +
+\<503.png\> + +503 + +raw rat meat + +I need to cook this first + +\- + +\- +
+\<504.png\> + +504 + +raw beef + +I need to cook this first + +\- + +\- +
+\<505.png\> + +505 + +enchanted bear meat + +I don't fancy eating this now + +\- + +\- +
+\<506.png\> + +506 + +enchanted rat meat + +I don't fancy eating this now + +\- + +\- +
+\<507.png\> + +507 + +enchanted beef + +I don't fancy eating this now + +\- + +\- +
+\<508.png\> + +508 + +enchanted chicken meat + +I don't fancy eating this now + +\- + +\- +
+\<509.png\> + +509 + +Dramen Staff + +A magical staff cut from the dramen tree + +X + +\- +
+\<510.png\> + +510 + +Dramen Branch + +I need to make this into a staff + +\- + +\- +
+\<511.png\> + +511 + +Cape + +A thick Green cape + +X + +\- +
+\<512.png\> + +512 + +Cape + +A thick yellow cape + +X + +\- +
+\<513.png\> + +513 + +Cape + +A thick Orange cape + +X + +\- +
+\<514.png\> + +514 + +Cape + +A thick purple cape + +X + +\- +
+\<515.png\> + +515 + +Greendye + +A little bottle of dye + +\- + +\- +
+\<516.png\> + +516 + +Purpledye + +A little bottle of dye + +\- + +\- +
+\<517.png\> + +517 + +Iron ore certificate + +Each certificate exchangable at draynor market for 5 iron ore + +\- + +X +
+\<518.png\> + +518 + +Coal certificate + +Each certificate exchangable at draynor market for 5 coal + +\- + +X +
+\<519.png\> + +519 + +Mithril ore certificate + +Each certificate exchangable at draynor market for 5 mithril ore + +\- + +X +
+\<520.png\> + +520 + +silver certificate + +Each certificate exchangable at draynor market for 5 silver nuggets + +\- + +X +
+\<521.png\> + +521 + +Gold certificate + +Each certificate exchangable at draynor market for 5 gold nuggets + +\- + +X +
+\<522.png\> + +522 + +Dragonstone Amulet + +A very powerful amulet + +X + +\- +
+\<523.png\> + +523 + +Dragonstone + +This looks very valuable + +\- + +\- +
+\<524.png\> + +524 + +Dragonstone Amulet + +It needs a string so I can wear it + +\- + +\- +
+\<525.png\> + +525 + +Crystal key + +A very shiny key + +\- + +\- +
+\<526.png\> + +526 + +Half of a key + +A very shiny key + +\- + +\- +
+\<527.png\> + +527 + +Half of a key + +A very shiny key + +\- + +\- +
+\<528.png\> + +528 + +Iron bar certificate + +Each certificate exchangable at draynor market for 5 iron bars + +\- + +X +
+\<529.png\> + +529 + +steel bar certificate + +Each certificate exchangable at draynor market for 5 steel bars + +\- + +X +
+\<530.png\> + +530 + +Mithril bar certificate + +Each certificate exchangable at draynor market for 5 mithril bars + +\- + +X +
+\<531.png\> + +531 + +silver bar certificate + +Each certificate exchangable at draynor market for 5 silver bars + +\- + +X +
+\<532.png\> + +532 + +Gold bar certificate + +Each certificate exchangable at draynor market for 5 gold bars + +\- + +X +
+\<533.png\> + +533 + +Lobster certificate + +Each certificate exchangable at draynor market for 5 lobsters + +\- + +X +
+\<534.png\> + +534 + +Raw lobster certificate + +Each certificate exchangable at draynor market for 5 raw lobsters + +\- + +X +
+\<535.png\> + +535 + +Swordfish certificate + +Each certificate exchangable at draynor market for 5 swordfish + +\- + +X +
+\<536.png\> + +536 + +Raw swordfish certificate + +Each certificate exchangable at draynor market for 5 raw swordfish + +\- + +X +
+\<537.png\> + +537 + +Diary + +Property of Nora.T.Hag + +\- + +\- +
+\<538.png\> + +538 + +Front door key + +A house key + +\- + +\- +
+\<539.png\> + +539 + +Ball + +A child's ball + +\- + +\- +
+\<540.png\> + +540 + +magnet + +A very attractive magnet + +\- + +\- +
+\<541.png\> + +541 + +Grey wolf fur + +This would make warm clothing + +\- + +\- +
+\<542.png\> + +542 + +uncut dragonstone + +this would be worth more cut + +\- + +\- +
+\<543.png\> + +543 + +Dragonstone ring + +A valuable ring + +\- + +\- +
+\<544.png\> + +544 + +Dragonstone necklace + +I wonder if this is valuable + +X + +\- +
+\<545.png\> + +545 + +Raw Shark + +I should try cooking this + +\- + +\- +
+\<546.png\> + +546 + +Shark + +I'd better be careful eating this! + +\- + +\- +
+\<547.png\> + +547 + +Burnt Shark + +Oops! + +\- + +\- +
+\<548.png\> + +548 + +Big Net + +Useful for catching lots of fish + +\- + +\- +
+\<549.png\> + +549 + +Casket + +I hope there is treasure in it + +\- + +\- +
+\<550.png\> + +550 + +Raw cod + +I should try cooking this + +\- + +\- +
+\<551.png\> + +551 + +Cod + +Some nicely cooked fish + +\- + +\- +
+\<552.png\> + +552 + +Raw Mackerel + +I should try cooking this + +\- + +\- +
+\<553.png\> + +553 + +Mackerel + +Some nicely cooked fish + +\- + +\- +
+\<554.png\> + +554 + +Raw Bass + +I should try cooking this + +\- + +\- +
+\<555.png\> + +555 + +Bass + +Wow this is a big fish + +\- + +\- +
+\<556.png\> + +556 + +Ice Gloves + +These will keep my hands cold! + +X + +\- +
+\<557.png\> + +557 + +Firebird Feather + +A red hot feather + +\- + +\- +
+\<558.png\> + +558 + +Firebird Feather + +This is cool enough to hold now + +\- + +\- +
+\<559.png\> + +559 + +Poisoned Iron dagger + +Short but pointy + +X + +\- +
+\<560.png\> + +560 + +Poisoned bronze dagger + +Short but pointy + +X + +\- +
+\<561.png\> + +561 + +Poisoned Steel dagger + +Short but pointy + +X + +\- +
+\<562.png\> + +562 + +Poisoned Mithril dagger + +Short but pointy + +X + +\- +
+\<563.png\> + +563 + +Poisoned Rune dagger + +Short but pointy + +X + +\- +
+\<564.png\> + +564 + +Poisoned Adamantite dagger + +Short but pointy + +X + +\- +
+\<565.png\> + +565 + +Poisoned Black dagger + +Short but pointy + +X + +\- +
+\<566.png\> + +566 + +Cure poison Potion + +3 doses of cure poison potion + +\- + +\- +
+\<567.png\> + +567 + +Cure poison Potion + +2 doses of cure poison potion + +\- + +\- +
+\<568.png\> + +568 + +Cure poison Potion + +1 dose of cure poison potion + +\- + +\- +
+\<569.png\> + +569 + +Poison antidote + +3 doses of anti poison potion + +\- + +\- +
+\<570.png\> + +570 + +Poison antidote + +2 doses of anti poison potion + +\- + +\- +
+\<571.png\> + +571 + +Poison antidote + +1 dose of anti poison potion + +\- + +\- +
+\<572.png\> + +572 + +weapon poison + +For use on daggers and arrows + +\- + +\- +
+\<573.png\> + +573 + +ID Paper + +ID of Hartigen the black knight + +\- + +\- +
+\<574.png\> + +574 + +Poison Bronze Arrows + +Venomous looking arrows + +\- + +X +
+\<575.png\> + +575 + +Christmas cracker + +Use on another player to pull it + +\- + +\- +
+\<576.png\> + +576 + +Party Hat + +Party!!! + +X + +\- +
+\<577.png\> + +577 + +Party Hat + +Party!!! + +X + +\- +
+\<578.png\> + +578 + +Party Hat + +Party!!! + +X + +\- +
+\<579.png\> + +579 + +Party Hat + +Party!!! + +X + +\- +
+\<580.png\> + +580 + +Party Hat + +Party!!! + +X + +\- +
+\<581.png\> + +581 + +Party Hat + +Party!!! + +X + +\- +
+\<582.png\> + +582 + +Miscellaneous key + +I wonder what this unlocks + +\- + +\- +
+\<583.png\> + +583 + +Bunch of keys + +Some keys on a keyring + +\- + +\- +
+\<584.png\> + +584 + +Whisky + +A bottle of Draynor Malt + +\- + +\- +
+\<585.png\> + +585 + +Candlestick + +A valuable candlestick + +\- + +\- +
+\<586.png\> + +586 + +Master thief armband + +This denotes a great act of thievery + +\- + +\- +
+\<587.png\> + +587 + +Blamish snail slime + +Yuck + +\- + +\- +
+\<588.png\> + +588 + +Blamish oil + +made from the finest snail slime + +\- + +\- +
+\<589.png\> + +589 + +Oily Fishing Rod + +A rod covered in Blamish oil + +\- + +\- +
+\<590.png\> + +590 + +lava eel + +Strange it looks cooler now it's been cooked + +\- + +\- +
+\<591.png\> + +591 + +Raw lava eel + +A very strange eel + +\- + +\- +
+\<592.png\> + +592 + +Poison Crossbow bolts + +Good if you have a crossbow! + +\- + +X +
+\<593.png\> + +593 + +Dragon sword + +A Razor sharp sword + +X + +\- +
+\<594.png\> + +594 + +Dragon axe + +A vicious looking axe + +X + +\- +
+\<595.png\> + +595 + +Jail keys + +Keys to the black knight jail + +\- + +\- +
+\<596.png\> + +596 + +Dusty Key + +A key given to me by Velrak + +\- + +\- +
+\<597.png\> + +597 + +Charged Dragonstone Amulet + +A very powerful amulet + +X + +\- +
+\<598.png\> + +598 + +Grog + +A murky glass of some sort of drink + +\- + +\- +
+\<599.png\> + +599 + +Candle + +An unlit candle + +\- + +\- +
+\<600.png\> + +600 + +black Candle + +A spooky but unlit candle + +\- + +\- +
+\<601.png\> + +601 + +Candle + +A small slowly burning candle + +\- + +\- +
+\<602.png\> + +602 + +black Candle + +A spooky candle + +\- + +\- +
+\<603.png\> + +603 + +insect repellant + +Drives away all known 6 legged creatures + +\- + +\- +
+\<604.png\> + +604 + +Bat bones + +Ew it's a pile of bones + +\- + +\- +
+\<605.png\> + +605 + +wax Bucket + +It's a wooden bucket + +\- + +\- +
+\<606.png\> + +606 + +Excalibur + +This used to belong to king Arthur + +X + +\- +
+\<607.png\> + +607 + +Druids robe + +I feel closer to the Gods when I am wearing this + +X + +\- +
+\<608.png\> + +608 + +Druids robe + +Keeps a druids's knees nice and warm + +X + +\- +
+\<609.png\> + +609 + +Eye patch + +It makes me look very piratical + +X + +\- +
+\<610.png\> + +610 + +Unenchanted Dragonstone Amulet + +I wonder if I can get this enchanted + +X + +\- +
+\<611.png\> + +611 + +Unpowered orb + +I'd prefer it if it was powered + +\- + +\- +
+\<612.png\> + +612 + +Fire orb + +A magic glowing orb + +\- + +\- +
+\<613.png\> + +613 + +Water orb + +A magic glowing orb + +\- + +\- +
+\<614.png\> + +614 + +Battlestaff + +It's a slightly magical stick + +X + +\- +
+\<615.png\> + +615 + +Battlestaff of fire + +A Magical staff + +X + +\- +
+\<616.png\> + +616 + +Battlestaff of water + +A Magical staff + +X + +\- +
+\<617.png\> + +617 + +Battlestaff of air + +A Magical staff + +X + +\- +
+\<618.png\> + +618 + +Battlestaff of earth + +A Magical staff + +X + +\- +
+\<619.png\> + +619 + +Blood-Rune + +Used for high level missile spells + +\- + +X +
+\<620.png\> + +620 + +Beer glass + +I need to fill this with beer + +\- + +\- +
+\<621.png\> + +621 + +glassblowing pipe + +Use on molten glass to make things + +\- + +\- +
+\<622.png\> + +622 + +seaweed + +slightly damp seaweed + +\- + +\- +
+\<623.png\> + +623 + +molten glass + +hot glass ready to be blown + +\- + +\- +
+\<624.png\> + +624 + +soda ash + +one of the ingredients for making glass + +\- + +\- +
+\<625.png\> + +625 + +sand + +one of the ingredients for making glass + +\- + +\- +
+\<626.png\> + +626 + +air orb + +A magic glowing orb + +\- + +\- +
+\<627.png\> + +627 + +earth orb + +A magic glowing orb + +\- + +\- +
+\<628.png\> + +628 + +bass certificate + +Each certificate exchangable at Catherby for 5 bass + +\- + +X +
+\<629.png\> + +629 + +Raw bass certificate + +Each certificate exchangable at Catherby for 5 raw bass + +\- + +X +
+\<630.png\> + +630 + +shark certificate + +Each certificate exchangable at Catherby for 5 shark + +\- + +X +
+\<631.png\> + +631 + +Raw shark certificate + +Each certificate exchangable at Catherby for 5 raw shark + +\- + +X +
+\<632.png\> + +632 + +Oak Logs + +Logs cut from an oak tree + +\- + +\- +
+\<633.png\> + +633 + +Willow Logs + +Logs cut from a willow tree + +\- + +\- +
+\<634.png\> + +634 + +Maple Logs + +Logs cut from a maple tree + +\- + +\- +
+\<635.png\> + +635 + +Yew Logs + +Logs cut from a yew tree + +\- + +\- +
+\<636.png\> + +636 + +Magic Logs + +Logs made from magical wood + +\- + +\- +
+\<637.png\> + +637 + +Headless Arrows + +I need to attach arrow heads to these + +\- + +X +
+\<638.png\> + +638 + +Iron Arrows + +Arrows with iron heads + +\- + +X +
+\<639.png\> + +639 + +Poison Iron Arrows + +Venomous looking arrows + +\- + +X +
+\<640.png\> + +640 + +Steel Arrows + +Arrows with steel heads + +\- + +X +
+\<641.png\> + +641 + +Poison Steel Arrows + +Venomous looking arrows + +\- + +X +
+\<642.png\> + +642 + +Mithril Arrows + +Arrows with mithril heads + +\- + +X +
+\<643.png\> + +643 + +Poison Mithril Arrows + +Venomous looking arrows + +\- + +X +
+\<644.png\> + +644 + +Adamantite Arrows + +Arrows with adamantite heads + +\- + +X +
+\<645.png\> + +645 + +Poison Adamantite Arrows + +Venomous looking arrows + +\- + +X +
+\<646.png\> + +646 + +Rune Arrows + +Arrows with rune heads + +\- + +X +
+\<647.png\> + +647 + +Poison Rune Arrows + +Venomous looking arrows + +\- + +X +
+\<648.png\> + +648 + +Oak Longbow + +A Nice sturdy bow + +X + +\- +
+\<649.png\> + +649 + +Oak Shortbow + +Short but effective + +X + +\- +
+\<650.png\> + +650 + +Willow Longbow + +A Nice sturdy bow + +X + +\- +
+\<651.png\> + +651 + +Willow Shortbow + +Short but effective + +X + +\- +
+\<652.png\> + +652 + +Maple Longbow + +A Nice sturdy bow + +X + +\- +
+\<653.png\> + +653 + +Maple Shortbow + +Short but effective + +X + +\- +
+\<654.png\> + +654 + +Yew Longbow + +A Nice sturdy bow + +X + +\- +
+\<655.png\> + +655 + +Yew Shortbow + +Short but effective + +X + +\- +
+\<656.png\> + +656 + +Magic Longbow + +A Nice sturdy bow + +X + +\- +
+\<657.png\> + +657 + +Magic Shortbow + +Short but effective + +X + +\- +
+\<658.png\> + +658 + +unstrung Oak Longbow + +I need to find a string for this + +\- + +\- +
+\<659.png\> + +659 + +unstrung Oak Shortbow + +I need to find a string for this + +\- + +\- +
+\<660.png\> + +660 + +unstrung Willow Longbow + +I need to find a string for this + +\- + +\- +
+\<661.png\> + +661 + +unstrung Willow Shortbow + +I need to find a string for this + +\- + +\- +
+\<662.png\> + +662 + +unstrung Maple Longbow + +I need to find a string for this + +\- + +\- +
+\<663.png\> + +663 + +unstrung Maple Shortbow + +I need to find a string for this + +\- + +\- +
+\<664.png\> + +664 + +unstrung Yew Longbow + +I need to find a string for this + +\- + +\- +
+\<665.png\> + +665 + +unstrung Yew Shortbow + +I need to find a string for this + +\- + +\- +
+\<666.png\> + +666 + +unstrung Magic Longbow + +I need to find a string for this + +\- + +\- +
+\<667.png\> + +667 + +unstrung Magic Shortbow + +I need to find a string for this + +\- + +\- +
+\<668.png\> + +668 + +barcrawl card + +The official Alfred Grimhand barcrawl + +\- + +\- +
+\<669.png\> + +669 + +bronze arrow heads + +Not much use without the rest of the arrow! + +\- + +X +
+\<670.png\> + +670 + +iron arrow heads + +Not much use without the rest of the arrow! + +\- + +X +
+\<671.png\> + +671 + +steel arrow heads + +Not much use without the rest of the arrow! + +\- + +X +
+\<672.png\> + +672 + +mithril arrow heads + +Not much use without the rest of the arrow! + +\- + +X +
+\<673.png\> + +673 + +adamantite arrow heads + +Not much use without the rest of the arrow! + +\- + +X +
+\<674.png\> + +674 + +rune arrow heads + +Not much use without the rest of the arrow! + +\- + +X +
+\<675.png\> + +675 + +flax + +I should use this with a spinning wheel + +\- + +\- +
+\<676.png\> + +676 + +bow string + +I need a bow handle to attach this too + +\- + +\- +
+\<677.png\> + +677 + +Easter egg + +Happy Easter + +\- + +\- +
+\<678.png\> + +678 + +scorpion cage + +I need to catch some scorpions in this + +\- + +\- +
+\<679.png\> + +679 + +scorpion cage + +It has 1 scorpion in it + +\- + +\- +
+\<680.png\> + +680 + +scorpion cage + +It has 2 scorpions in it + +\- + +\- +
+\<681.png\> + +681 + +scorpion cage + +It has 3 scorpions in it + +\- + +\- +
+\<682.png\> + +682 + +Enchanted Battlestaff of fire + +A Magical staff + +X + +\- +
+\<683.png\> + +683 + +Enchanted Battlestaff of water + +A Magical staff + +X + +\- +
+\<684.png\> + +684 + +Enchanted Battlestaff of air + +A Magical staff + +X + +\- +
+\<685.png\> + +685 + +Enchanted Battlestaff of earth + +A Magical staff + +X + +\- +
+\<686.png\> + +686 + +scorpion cage + +It has 1 scorpion in it + +\- + +\- +
+\<687.png\> + +687 + +scorpion cage + +It has 1 scorpion in it + +\- + +\- +
+\<688.png\> + +688 + +scorpion cage + +It has 2 scorpions in it + +\- + +\- +
+\<689.png\> + +689 + +scorpion cage + +It has 2 scorpions in it + +\- + +\- +
+\<690.png\> + +690 + +gold + +this needs refining + +\- + +\- +
+\<691.png\> + +691 + +gold bar + +this looks valuable + +\- + +\- +
+\<692.png\> + +692 + +Ruby ring + +A valuable ring + +\- + +\- +
+\<693.png\> + +693 + +Ruby necklace + +I wonder if this is valuable + +X + +\- +
+\<694.png\> + +694 + +Family crest + +The crest of a varrocian noble family + +\- + +\- +
+\<695.png\> + +695 + +Crest fragment + +Part of the Fitzharmon family crest + +\- + +\- +
+\<696.png\> + +696 + +Crest fragment + +Part of the Fitzharmon family crest + +\- + +\- +
+\<697.png\> + +697 + +Crest fragment + +Part of the Fitzharmon family crest + +\- + +\- +
+\<698.png\> + +698 + +Steel gauntlets + +Very handy armour + +X + +\- +
+\<699.png\> + +699 + +gauntlets of goldsmithing + +metal gloves for gold making + +X + +\- +
+\<700.png\> + +700 + +gauntlets of cooking + +Used for cooking fish + +X + +\- +
+\<701.png\> + +701 + +gauntlets of chaos + +improves bolt spells + +X + +\- +
+\<702.png\> + +702 + +robe of Zamorak + +A robe worn by worshippers of Zamorak + +X + +\- +
+\<703.png\> + +703 + +robe of Zamorak + +A robe worn by worshippers of Zamorak + +X + +\- +
+\<704.png\> + +704 + +Address Label + +To lord Handelmort- Handelmort mansion + +\- + +\- +
+\<705.png\> + +705 + +Tribal totem + +It represents some sort of tribal god + +\- + +\- +
+\<706.png\> + +706 + +tourist guide + +Your definitive guide to Ardougne + +\- + +\- +
+\<707.png\> + +707 + +spice + +Put it in uncooked stew to make curry + +\- + +\- +
+\<708.png\> + +708 + +Uncooked curry + +I need to cook this + +\- + +\- +
+\<709.png\> + +709 + +curry + +It's a spicey hot curry + +\- + +\- +
+\<710.png\> + +710 + +Burnt curry + +Eew it's horribly burnt + +\- + +\- +
+\<711.png\> + +711 + +yew logs certificate + +Each certificate exchangable at Ardougne for 5 yew logs + +\- + +X +
+\<712.png\> + +712 + +maple logs certificate + +Each certificate exchangable at Ardougne for 5 maple logs + +\- + +X +
+\<713.png\> + +713 + +willow logs certificate + +Each certificate exchangable at Ardougne for 5 willow logs + +\- + +X +
+\<714.png\> + +714 + +lockpick + +It makes picking some locks easier + +\- + +\- +
+\<715.png\> + +715 + +Red vine worms + +Strange little red worms + +\- + +X +
+\<716.png\> + +716 + +Blanket + +A child's blanket + +\- + +\- +
+\<717.png\> + +717 + +Raw giant carp + +I should try cooking this + +\- + +\- +
+\<718.png\> + +718 + +giant Carp + +Some nicely cooked fish + +\- + +\- +
+\<719.png\> + +719 + +Fishing competition Pass + +Admits one to the Hemenster fishing competition + +\- + +\- +
+\<720.png\> + +720 + +Hemenster fishing trophy + +Hurrah you won a fishing competition + +\- + +\- +
+\<721.png\> + +721 + +Pendant of Lucien + +Gets me through the chamber of fear + +X + +\- +
+\<722.png\> + +722 + +Boots of lightfootedness + +Wearing these makes me feel like I am floating + +X + +\- +
+\<723.png\> + +723 + +Ice Arrows + +Can only be fired with yew or magic bows + +\- + +X +
+\<724.png\> + +724 + +Lever + +This was once attached to something + +\- + +\- +
+\<725.png\> + +725 + +Staff of Armadyl + +A Magical staff + +X + +\- +
+\<726.png\> + +726 + +Pendant of Armadyl + +Allows me to fight Lucien + +X + +\- +
+\<727.png\> + +727 + +Large cog + +A large old cog + +\- + +\- +
+\<728.png\> + +728 + +Large cog + +A large old cog + +\- + +\- +
+\<729.png\> + +729 + +Large cog + +A large old cog + +\- + +\- +
+\<730.png\> + +730 + +Large cog + +A large old cog + +\- + +\- +
+\<731.png\> + +731 + +Rat Poison + +This stuff looks nasty + +\- + +\- +
+\<732.png\> + +732 + +shiny Key + +Quite a small key + +\- + +\- +
+\<733.png\> + +733 + +khazard Helmet + +A medium sized helmet + +X + +\- +
+\<734.png\> + +734 + +khazard chainmail + +A series of connected metal rings + +X + +\- +
+\<735.png\> + +735 + +khali brew + +A bottle of khazard's worst brew + +\- + +\- +
+\<736.png\> + +736 + +khazard cell keys + +Keys for General Khazard's cells + +\- + +\- +
+\<737.png\> + +737 + +Poison chalice + +A strange looking drink + +\- + +\- +
+\<738.png\> + +738 + +magic whistle + +A small tin whistle + +\- + +\- +
+\<739.png\> + +739 + +Cup of tea + +A nice cup of tea + +\- + +\- +
+\<740.png\> + +740 + +orb of protection + +a strange glowing green orb + +\- + +\- +
+\<741.png\> + +741 + +orbs of protection + +two strange glowing green orbs + +\- + +\- +
+\<742.png\> + +742 + +Holy table napkin + +a cloth given to me by sir Galahad + +\- + +\- +
+\<743.png\> + +743 + +bell + +I wonder what happens when i ring it + +\- + +\- +
+\<744.png\> + +744 + +Gnome Emerald Amulet of protection + +It improves my defense + +X + +\- +
+\<745.png\> + +745 + +magic golden feather + +It will point the way for me + +\- + +\- +
+\<746.png\> + +746 + +Holy grail + +A holy and powerful artifact + +\- + +\- +
+\<747.png\> + +747 + +Script of Hazeel + +An old scroll with strange ancient text + +\- + +\- +
+\<748.png\> + +748 + +Pineapple + +It can be cut up with a knife + +\- + +\- +
+\<749.png\> + +749 + +Pineapple ring + +Exotic fruit + +\- + +\- +
+\<750.png\> + +750 + +Pineapple Pizza + +A tropicana pizza + +\- + +\- +
+\<751.png\> + +751 + +Half pineapple Pizza + +Half of this pizza has been eaten + +\- + +\- +
+\<752.png\> + +752 + +Magic scroll + +Maybe I should read it + +\- + +\- +
+\<753.png\> + +753 + +Mark of Hazeel + +A large metal amulet + +\- + +\- +
+\<754.png\> + +754 + +bloody axe of zamorak + +A vicious looking axe + +X + +\- +
+\<755.png\> + +755 + +carnillean armour + +the carnillean family armour + +\- + +\- +
+\<756.png\> + +756 + +Carnillean Key + +An old rusty key + +\- + +\- +
+\<757.png\> + +757 + +Cattle prod + +An old cattle prod + +\- + +\- +
+\<758.png\> + +758 + +Plagued sheep remains + +These sheep remains are infected + +\- + +\- +
+\<759.png\> + +759 + +Poisoned animal feed + +This looks nasty + +\- + +\- +
+\<760.png\> + +760 + +Protective jacket + +A thick heavy leather top + +X + +\- +
+\<761.png\> + +761 + +Protective trousers + +A thick pair of leather trousers + +X + +\- +
+\<762.png\> + +762 + +Plagued sheep remains + +These sheep remains are infected + +\- + +\- +
+\<763.png\> + +763 + +Plagued sheep remains + +These sheep remains are infected + +\- + +\- +
+\<764.png\> + +764 + +Plagued sheep remains + +These sheep remains are infected + +\- + +\- +
+\<765.png\> + +765 + +dwellberries + +some rather pretty blue berries + +\- + +\- +
+\<766.png\> + +766 + +Gasmask + +Stops me breathing nasty stuff + +X + +\- +
+\<767.png\> + +767 + +picture + +A picture of a lady called Elena + +\- + +\- +
+\<768.png\> + +768 + +Book + +Turnip growing for beginners + +\- + +\- +
+\<769.png\> + +769 + +Seaslug + +a rather nasty looking crustacean + +\- + +\- +
+\<770.png\> + +770 + +chocolaty milk + +Milk with chocolate in it + +\- + +\- +
+\<771.png\> + +771 + +Hangover cure + +It doesn't look very tasty + +\- + +\- +
+\<772.png\> + +772 + +Chocolate dust + +I prefer it in a bar shape + +\- + +\- +
+\<773.png\> + +773 + +Torch + +A unlit home made torch + +\- + +\- +
+\<774.png\> + +774 + +Torch + +A lit home made torch + +\- + +\- +
+\<775.png\> + +775 + +warrant + +A search warrant for a house in Ardougne + +\- + +\- +
+\<776.png\> + +776 + +Damp sticks + +Some damp wooden sticks + +\- + +\- +
+\<777.png\> + +777 + +Dry sticks + +Some dry wooden sticks + +\- + +\- +
+\<778.png\> + +778 + +Broken glass + +Glass from a broken window pane + +\- + +\- +
+\<779.png\> + +779 + +oyster pearls + +I could work wonders with these and a chisel + +\- + +\- +
+\<780.png\> + +780 + +little key + +Quite a small key + +\- + +\- +
+\<781.png\> + +781 + +Scruffy note + +It seems to say hongorer lure + +\- + +\- +
+\<782.png\> + +782 + +Glarial's amulet + +A bright green gem set in a necklace + +X + +\- +
+\<783.png\> + +783 + +Swamp tar + +A foul smelling thick tar like substance + +\- + +X +
+\<784.png\> + +784 + +Uncooked Swamp paste + +A thick tar like substance mixed with flour + +\- + +X +
+\<785.png\> + +785 + +Swamp paste + +A tar like substance mixed with flour and warmed + +\- + +X +
+\<786.png\> + +786 + +Oyster pearl bolts + +Great if you have a crossbow! + +\- + +X +
+\<787.png\> + +787 + +Glarials pebble + +A small pebble with elven inscription + +\- + +\- +
+\<788.png\> + +788 + +book on baxtorian + +A book on elven history in north runescape + +\- + +\- +
+\<789.png\> + +789 + +large key + +I wonder what this is the key to + +\- + +\- +
+\<790.png\> + +790 + +Oyster pearl bolt tips + +Can be used to improve crossbow bolts + +\- + +X +
+\<791.png\> + +791 + +oyster + +It's empty + +\- + +\- +
+\<792.png\> + +792 + +oyster pearls + +I could work wonders with these and a chisel + +\- + +\- +
+\<793.png\> + +793 + +oyster + +It's a rare oyster + +\- + +\- +
+\<794.png\> + +794 + +Soil + +It's a bucket of fine soil + +\- + +\- +
+\<795.png\> + +795 + +Dragon medium Helmet + +A medium sized helmet + +X + +\- +
+\<796.png\> + +796 + +Mithril seed + +Magical seeds in a mithril case + +\- + +X +
+\<797.png\> + +797 + +An old key + +A door key + +\- + +\- +
+\<798.png\> + +798 + +pigeon cage + +It's for holding pigeons + +\- + +\- +
+\<799.png\> + +799 + +Messenger pigeons + +some very plump birds + +\- + +\- +
+\<800.png\> + +800 + +Bird feed + +A selection of mixed seeds + +\- + +\- +
+\<801.png\> + +801 + +Rotten apples + +Yuck! + +\- + +\- +
+\<802.png\> + +802 + +Doctors gown + +I do feel clever wearing this + +X + +\- +
+\<803.png\> + +803 + +Bronze key + +A heavy key + +\- + +\- +
+\<804.png\> + +804 + +Distillator + +It's for seperating compounds + +\- + +\- +
+\<805.png\> + +805 + +Glarial's urn + +An urn containing glarials ashes + +\- + +\- +
+\<806.png\> + +806 + +Glarial's urn + +An empty metal urn + +\- + +\- +
+\<807.png\> + +807 + +Priest robe + +I feel closer to saradomin in this + +X + +\- +
+\<808.png\> + +808 + +Priest gown + +I feel closer to saradomin in this + +X + +\- +
+\<809.png\> + +809 + +Liquid Honey + +This isn't worth much + +\- + +\- +
+\<810.png\> + +810 + +Ethenea + +An expensive colourless liquid + +\- + +\- +
+\<811.png\> + +811 + +Sulphuric Broline + +it's highly poisonous + +\- + +\- +
+\<812.png\> + +812 + +Plague sample + +An air tight tin container + +\- + +\- +
+\<813.png\> + +813 + +Touch paper + +For scientific testing + +\- + +\- +
+\<814.png\> + +814 + +Dragon Bones + +Ew it's a pile of bones + +\- + +\- +
+\<815.png\> + +815 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<816.png\> + +816 + +Snake Weed + +A very rare jungle herb + +\- + +\- +
+\<817.png\> + +817 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<818.png\> + +818 + +Ardrigal + +An interesting + +\- + +\- +
+\<819.png\> + +819 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<820.png\> + +820 + +Sito Foil + +An rare species of jungle herb + +\- + +\- +
+\<821.png\> + +821 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<822.png\> + +822 + +Volencia Moss + +A very rare species of jungle herb + +\- + +\- +
+\<823.png\> + +823 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<824.png\> + +824 + +Rogues Purse + +A rare species of jungle herb + +\- + +\- +
+\<825.png\> + +825 + +Soul-Rune + +Used for high level curse spells + +\- + +X +
+\<826.png\> + +826 + +king lathas Amulet + +The amulet is red + +X + +\- +
+\<827.png\> + +827 + +Bronze Spear + +A bronze tipped spear + +X + +\- +
+\<828.png\> + +828 + +halloween mask + +aaaarrrghhh ... i'm a monster + +X + +\- +
+\<829.png\> + +829 + +Dragon bitter + +A glass of frothy ale + +\- + +\- +
+\<830.png\> + +830 + +Greenmans ale + +A glass of frothy ale + +\- + +\- +
+\<831.png\> + +831 + +halloween mask + +aaaarrrghhh ... i'm a monster + +X + +\- +
+\<832.png\> + +832 + +halloween mask + +aaaarrrghhh ... i'm a monster + +X + +\- +
+\<833.png\> + +833 + +cocktail glass + +For sipping cocktails + +\- + +\- +
+\<834.png\> + +834 + +cocktail shaker + +For mixing cocktails + +\- + +\- +
+\<835.png\> + +835 + +Bone Key + +A key delicately carved key made from a single piece of bone + +\- + +\- +
+\<836.png\> + +836 + +gnome robe + +A high fashion robe + +X + +\- +
+\<837.png\> + +837 + +gnome robe + +A high fashion robe + +X + +\- +
+\<838.png\> + +838 + +gnome robe + +A high fashion robe + +X + +\- +
+\<839.png\> + +839 + +gnome robe + +A high fashion robe + +X + +\- +
+\<840.png\> + +840 + +gnome robe + +A high fashion robe + +X + +\- +
+\<841.png\> + +841 + +gnomeshat + +A silly pointed hat + +X + +\- +
+\<842.png\> + +842 + +gnomeshat + +A silly pointed hat + +X + +\- +
+\<843.png\> + +843 + +gnomeshat + +A silly pointed hat + +X + +\- +
+\<844.png\> + +844 + +gnomeshat + +A silly pointed hat + +X + +\- +
+\<845.png\> + +845 + +gnomeshat + +A silly pointed hat + +X + +\- +
+\<846.png\> + +846 + +gnome top + +rometti - the ultimate in gnome design + +X + +\- +
+\<847.png\> + +847 + +gnome top + +rometti - the only name in gnome fashion! + +X + +\- +
+\<848.png\> + +848 + +gnome top + +rometti - the only name in gnome fashion! + +X + +\- +
+\<849.png\> + +849 + +gnome top + +rometti - the only name in gnome fashion! + +X + +\- +
+\<850.png\> + +850 + +gnome top + +rometti - the only name in gnome fashion! + +X + +\- +
+\<851.png\> + +851 + +gnome cocktail guide + +A book on tree gnome cocktails + +\- + +\- +
+\<852.png\> + +852 + +Beads of the dead + +A curious looking neck ornament + +X + +\- +
+\<853.png\> + +853 + +cocktail glass + +For sipping cocktails + +\- + +\- +
+\<854.png\> + +854 + +cocktail glass + +For sipping cocktails + +\- + +\- +
+\<855.png\> + +855 + +lemon + +It's very fresh + +\- + +\- +
+\<856.png\> + +856 + +lemon slices + +It's very fresh + +\- + +\- +
+\<857.png\> + +857 + +orange + +It's very fresh + +\- + +\- +
+\<858.png\> + +858 + +orange slices + +It's very fresh + +\- + +\- +
+\<859.png\> + +859 + +Diced orange + +Fresh chunks of orange + +\- + +\- +
+\<860.png\> + +860 + +Diced lemon + +Fresh chunks of lemon + +\- + +\- +
+\<861.png\> + +861 + +Fresh Pineapple + +It can be cut up with a knife + +\- + +\- +
+\<862.png\> + +862 + +Pineapple chunks + +Fresh chunks of pineapple + +\- + +\- +
+\<863.png\> + +863 + +lime + +It's very fresh + +\- + +\- +
+\<864.png\> + +864 + +lime chunks + +Fresh chunks of lime + +\- + +\- +
+\<865.png\> + +865 + +lime slices + +It's very fresh + +\- + +\- +
+\<866.png\> + +866 + +fruit blast + +A cool refreshing fruit mix + +\- + +\- +
+\<867.png\> + +867 + +odd looking cocktail + +A cool refreshing mix + +\- + +\- +
+\<868.png\> + +868 + +Whisky + +A locally brewed Malt + +\- + +\- +
+\<869.png\> + +869 + +vodka + +A strong spirit + +\- + +\- +
+\<870.png\> + +870 + +gin + +A strong spirit + +\- + +\- +
+\<871.png\> + +871 + +cream + +Fresh cream + +\- + +\- +
+\<872.png\> + +872 + +Drunk dragon + +A warm creamy alcoholic beverage + +\- + +\- +
+\<873.png\> + +873 + +Equa leaves + +Small sweet smelling leaves + +\- + +\- +
+\<874.png\> + +874 + +SGG + +A short green guy..looks good + +\- + +\- +
+\<875.png\> + +875 + +Chocolate saturday + +A warm creamy alcoholic beverage + +\- + +\- +
+\<876.png\> + +876 + +brandy + +A strong spirit + +\- + +\- +
+\<877.png\> + +877 + +blurberry special + +Looks good..smells strong + +\- + +\- +
+\<878.png\> + +878 + +wizard blizzard + +Looks like a strange mix + +\- + +\- +
+\<879.png\> + +879 + +pineapple punch + +A fresh healthy fruit mix + +\- + +\- +
+\<880.png\> + +880 + +gnomebatta dough + +Dough formed into a base + +\- + +\- +
+\<881.png\> + +881 + +gianne dough + +It's made from a secret recipe + +\- + +\- +
+\<882.png\> + +882 + +gnomebowl dough + +Dough formed into a bowl shape + +\- + +\- +
+\<883.png\> + +883 + +gnomecrunchie dough + +Dough formed into cookie shapes + +\- + +\- +
+\<884.png\> + +884 + +gnomebatta + +A baked dough base + +\- + +\- +
+\<885.png\> + +885 + +gnomebowl + +A baked dough bowl + +\- + +\- +
+\<886.png\> + +886 + +gnomebatta + +It's burnt to a sinder + +\- + +\- +
+\<887.png\> + +887 + +gnomecrunchie + +They're burnt to a sinder + +\- + +\- +
+\<888.png\> + +888 + +gnomebowl + +It's burnt to a sinder + +\- + +\- +
+\<889.png\> + +889 + +Uncut Red Topaz + +A semi precious stone + +\- + +\- +
+\<890.png\> + +890 + +Uncut Jade + +A semi precious stone + +\- + +\- +
+\<891.png\> + +891 + +Uncut Opal + +A semi precious stone + +\- + +\- +
+\<892.png\> + +892 + +Red Topaz + +A semi precious stone + +\- + +\- +
+\<893.png\> + +893 + +Jade + +A semi precious stone + +\- + +\- +
+\<894.png\> + +894 + +Opal + +A semi precious stone + +\- + +\- +
+\<895.png\> + +895 + +Swamp Toad + +Slippery little blighters + +\- + +\- +
+\<896.png\> + +896 + +Toad legs + +Gnome delicacy apparently + +\- + +\- +
+\<897.png\> + +897 + +King worm + +Gnome delicacy apparently + +\- + +\- +
+\<898.png\> + +898 + +Gnome spice + +Aluft Giannes secret reciepe + +\- + +\- +
+\<899.png\> + +899 + +gianne cook book + +Aluft Giannes favorite dishes + +\- + +\- +
+\<900.png\> + +900 + +gnomecrunchie + +yum ... smells good + +\- + +\- +
+\<901.png\> + +901 + +cheese and tomato batta + +Smells really good + +\- + +\- +
+\<902.png\> + +902 + +toad batta + +actually smells quite good + +\- + +\- +
+\<903.png\> + +903 + +gnome batta + +smells like pants + +\- + +\- +
+\<904.png\> + +904 + +worm batta + +actually smells quite good + +\- + +\- +
+\<905.png\> + +905 + +fruit batta + +actually smells quite good + +\- + +\- +
+\<906.png\> + +906 + +Veg batta + +well..it looks healthy + +\- + +\- +
+\<907.png\> + +907 + +Chocolate bomb + +Looks great + +\- + +\- +
+\<908.png\> + +908 + +Vegball + +Looks pretty healthy + +\- + +\- +
+\<909.png\> + +909 + +worm hole + +actually smells quite good + +\- + +\- +
+\<910.png\> + +910 + +Tangled toads legs + +actually smells quite good + +\- + +\- +
+\<911.png\> + +911 + +Choc crunchies + +yum ... smells good + +\- + +\- +
+\<912.png\> + +912 + +Worm crunchies + +actually smells quite good + +\- + +\- +
+\<913.png\> + +913 + +Toad crunchies + +actually smells quite good + +\- + +\- +
+\<914.png\> + +914 + +Spice crunchies + +yum ... smells good + +\- + +\- +
+\<915.png\> + +915 + +Crushed Gemstone + +A gemstone that has been smashed + +\- + +\- +
+\<916.png\> + +916 + +Blurberry badge + +an official cocktail maker + +\- + +\- +
+\<917.png\> + +917 + +Gianne badge + +an official gianne chef + +\- + +\- +
+\<918.png\> + +918 + +tree gnome translation + +Translate the old gnome tounge + +\- + +\- +
+\<919.png\> + +919 + +Bark sample + +A sample from the grand tree + +\- + +\- +
+\<920.png\> + +920 + +War ship + +A model of a karamja warship + +\- + +\- +
+\<921.png\> + +921 + +gloughs journal + +Glough's private notes + +\- + +\- +
+\<922.png\> + +922 + +invoice + +A note with foreman's timber order + +\- + +\- +
+\<923.png\> + +923 + +Ugthanki Kebab + +A strange smelling Kebab made from Ugthanki meat - it doesn't look too +good + +\- + +\- +
+\<924.png\> + +924 + +special curry + +It's a spicy hot curry + +\- + +\- +
+\<925.png\> + +925 + +glough's key + +Glough left this at anita's + +\- + +\- +
+\<926.png\> + +926 + +glough's notes + +Scribbled notes and diagrams + +\- + +\- +
+\<927.png\> + +927 + +Pebble + +The pebble has an inscription + +\- + +\- +
+\<928.png\> + +928 + +Pebble + +The pebble has an inscription + +\- + +\- +
+\<929.png\> + +929 + +Pebble + +The pebble has an inscription + +\- + +\- +
+\<930.png\> + +930 + +Pebble + +The pebble has an inscription + +\- + +\- +
+\<931.png\> + +931 + +Daconia rock + +A magicaly crafted stone + +\- + +\- +
+\<932.png\> + +932 + +Sinister key + +You get a sense of dread from this key + +\- + +\- +
+\<933.png\> + +933 + +Herb + +I need a closer look to identify this + +\- + +\- +
+\<934.png\> + +934 + +Torstol + +A useful herb + +\- + +\- +
+\<935.png\> + +935 + +Unfinished potion + +I need Jangerberries to finish this Torstol potion + +\- + +\- +
+\<936.png\> + +936 + +Jangerberries + +They don't look very ripe + +\- + +\- +
+\<937.png\> + +937 + +fruit blast + +A cool refreshing fruit mix + +\- + +\- +
+\<938.png\> + +938 + +blurberry special + +Looks good..smells strong + +\- + +\- +
+\<939.png\> + +939 + +wizard blizzard + +Looks like a strange mix + +\- + +\- +
+\<940.png\> + +940 + +pineapple punch + +A fresh healthy fruit mix + +\- + +\- +
+\<941.png\> + +941 + +SGG + +A short green guy..looks good + +\- + +\- +
+\<942.png\> + +942 + +Chocolate saturday + +A warm creamy alcoholic beverage + +\- + +\- +
+\<943.png\> + +943 + +Drunk dragon + +A warm creamy alcoholic beverage + +\- + +\- +
+\<944.png\> + +944 + +cheese and tomato batta + +Smells really good + +\- + +\- +
+\<945.png\> + +945 + +toad batta + +actually smells quite good + +\- + +\- +
+\<946.png\> + +946 + +gnome batta + +smells like pants + +\- + +\- +
+\<947.png\> + +947 + +worm batta + +actually smells quite good + +\- + +\- +
+\<948.png\> + +948 + +fruit batta + +actually smells quite good + +\- + +\- +
+\<949.png\> + +949 + +Veg batta + +well..it looks healthy + +\- + +\- +
+\<950.png\> + +950 + +Chocolate bomb + +Looks great + +\- + +\- +
+\<951.png\> + +951 + +Vegball + +Looks pretty healthy + +\- + +\- +
+\<952.png\> + +952 + +worm hole + +actually smells quite good + +\- + +\- +
+\<953.png\> + +953 + +Tangled toads legs + +actually smells quite good + +\- + +\- +
+\<954.png\> + +954 + +Choc crunchies + +yum ... smells good + +\- + +\- +
+\<955.png\> + +955 + +Worm crunchies + +actually smells quite good + +\- + +\- +
+\<956.png\> + +956 + +Toad crunchies + +actually smells quite good + +\- + +\- +
+\<957.png\> + +957 + +Spice crunchies + +yum ... smells good + +\- + +\- +
+\<958.png\> + +958 + +Stone-Plaque + +A stone plaque with carved letters in it + +\- + +\- +
+\<959.png\> + +959 + +Tattered Scroll + +An ancient tattered scroll + +\- + +\- +
+\<960.png\> + +960 + +Crumpled Scroll + +An ancient crumpled scroll + +\- + +\- +
+\<961.png\> + +961 + +Bervirius Tomb Notes + +Notes taken from the tomb of Bervirius + +\- + +\- +
+\<962.png\> + +962 + +Zadimus Corpse + +The remains of Zadimus + +\- + +\- +
+\<963.png\> + +963 + +Potion of Zamorak + +It looks scary + +\- + +\- +
+\<964.png\> + +964 + +Potion of Zamorak + +It looks scary + +\- + +\- +
+\<965.png\> + +965 + +Potion of Zamorak + +It looks scary + +\- + +\- +
+\<966.png\> + +966 + +Boots + +They're soft and silky + +X + +\- +
+\<967.png\> + +967 + +Boots + +They're soft and silky + +X + +\- +
+\<968.png\> + +968 + +Boots + +They're soft and silky + +X + +\- +
+\<969.png\> + +969 + +Boots + +They're soft and silky + +X + +\- +
+\<970.png\> + +970 + +Boots + +They're soft and silky + +X + +\- +
+\<971.png\> + +971 + +Santa's hat + +It's a santa claus' hat + +X + +\- +
+\<972.png\> + +972 + +Locating Crystal + +A magical crystal sphere + +\- + +\- +
+\<973.png\> + +973 + +Sword Pommel + +An ivory sword pommel + +\- + +\- +
+\<974.png\> + +974 + +Bone Shard + +A slender piece of bone + +\- + +\- +
+\<975.png\> + +975 + +Steel Wire + +Useful for crafting items + +\- + +\- +
+\<976.png\> + +976 + +Bone Beads + +Beads carved out of bone + +\- + +\- +
+\<977.png\> + +977 + +Rashiliya Corpse + +The remains of the Zombie Queen + +\- + +\- +
+\<978.png\> + +978 + +ResetCrystal + +Helps reset things in game + +\- + +\- +
+\<979.png\> + +979 + +Bronze Wire + +Useful for crafting items + +\- + +\- +
+\<980.png\> + +980 + +Present + +Click to use this on a friend + +\- + +\- +
+\<981.png\> + +981 + +Gnome Ball + +Lets play + +\- + +\- +
+\<982.png\> + +982 + +Papyrus + +Used for making notes + +\- + +\- +
+\<983.png\> + +983 + +A lump of Charcoal + +a lump of cooked coal good for making marks. + +\- + +\- +
+\<984.png\> + +984 + +Arrow + +linen wrapped around an arrow head + +\- + +\- +
+\<985.png\> + +985 + +Lit Arrow + +A flamming arrow + +\- + +X +
+\<986.png\> + +986 + +Rocks + +A few Large rocks + +\- + +\- +
+\<987.png\> + +987 + +Paramaya Rest Ticket + +Allows you to rest in the luxurius Paramaya Inn + +\- + +\- +
+\<988.png\> + +988 + +Ship Ticket + +Allows you passage on the 'Lady of the Waves' ship. + +\- + +\- +
+\<989.png\> + +989 + +Damp cloth + +It smells as if it's been doused in alcohol + +\- + +\- +
+\<990.png\> + +990 + +Desert Boots + +Boots made specially for the desert + +X + +\- +
+\<991.png\> + +991 + +Orb of light + +The orb gives you a safe peaceful feeling + +\- + +\- +
+\<992.png\> + +992 + +Orb of light + +The orb gives you a safe peaceful feeling + +\- + +\- +
+\<993.png\> + +993 + +Orb of light + +The orb gives you a safe peaceful feeling + +\- + +\- +
+\<994.png\> + +994 + +Orb of light + +The orb gives you a safe peaceful feeling + +\- + +\- +
+\<995.png\> + +995 + +Railing + +A broken metal rod + +\- + +\- +
+\<996.png\> + +996 + +Randas's journal + +An old journal with several pages missing + +\- + +\- +
+\<997.png\> + +997 + +Unicorn horn + +Poor unicorn went splat! + +\- + +\- +
+\<998.png\> + +998 + +Coat of Arms + +A symbol of truth and all that is good + +\- + +\- +
+\<999.png\> + +999 + +Coat of Arms + +A symbol of truth and all that is good + +\- + +\- +
+\<1000.png\> + +1000 + +Staff of Iban + +It's a slightly magical stick + +X + +\- +
+\<1001.png\> + +1001 + +Dwarf brew + +It's a bucket of home made brew + +\- + +\- +
+\<1002.png\> + +1002 + +Ibans Ashes + +A heap of ashes + +\- + +\- +
+\<1003.png\> + +1003 + +Cat + +She's sleeping..i think! + +\- + +\- +
+\<1004.png\> + +1004 + +A Doll of Iban + +A strange doll made from sticks and cloth + +\- + +\- +
+\<1005.png\> + +1005 + +Old Journal + +I wonder who wrote this! + +\- + +\- +
+\<1006.png\> + +1006 + +Klank's gauntlets + +Heavy hand protection + +X + +\- +
+\<1007.png\> + +1007 + +Iban's shadow + +A dark mystical liquid + +\- + +\- +
+\<1008.png\> + +1008 + +Iban's conscience + +The remains of a dove that died long ago + +\- + +\- +
+\<1009.png\> + +1009 + +Amulet of Othainian + +A strange looking amulet + +X + +\- +
+\<1010.png\> + +1010 + +Amulet of Doomion + +A strange looking amulet + +X + +\- +
+\<1011.png\> + +1011 + +Amulet of Holthion + +A strange looking amulet + +X + +\- +
+\<1012.png\> + +1012 + +keep key + +A small prison key + +\- + +\- +
+\<1013.png\> + +1013 + +Bronze Throwing Dart + +A deadly throwing dart with a bronze tip. + +X + +X +
+\<1014.png\> + +1014 + +Prototype Throwing Dart + +A proto type of a deadly throwing dart. + +\- + +X +
+\<1015.png\> + +1015 + +Iron Throwing Dart + +A deadly throwing dart with an iron tip. + +X + +X +
+\<1016.png\> + +1016 + +Full Water Skin + +A skinful of water + +\- + +\- +
+\<1017.png\> + +1017 + +Lens mould + +A peculiar mould in the shape of a disc + +\- + +\- +
+\<1018.png\> + +1018 + +Lens + +A perfectly formed glass disc + +\- + +\- +
+\<1019.png\> + +1019 + +Desert Robe + +Cool light robe to wear in the desert + +X + +\- +
+\<1020.png\> + +1020 + +Desert Shirt + +A light cool shirt to wear in the desert + +X + +\- +
+\<1021.png\> + +1021 + +Metal Key + +A large metalic key. + +\- + +\- +
+\<1022.png\> + +1022 + +Slaves Robe Bottom + +A dirty desert skirt + +X + +\- +
+\<1023.png\> + +1023 + +Slaves Robe Top + +A dirty desert shirt + +X + +\- +
+\<1024.png\> + +1024 + +Steel Throwing Dart + +A deadly throwing dart with a steel tip. + +X + +X +
+\<1025.png\> + +1025 + +Astrology Book + +A book on Astrology in runescape + +\- + +\- +
+\<1026.png\> + +1026 + +Unholy Symbol mould + +use this with silver in a furnace + +\- + +\- +
+\<1027.png\> + +1027 + +Unholy Symbol of Zamorak + +this needs stringing + +\- + +\- +
+\<1028.png\> + +1028 + +Unblessed Unholy Symbol of Zamorak + +this needs blessing + +X + +\- +
+\<1029.png\> + +1029 + +Unholy Symbol of Zamorak + +a symbol indicating allegiance to Zamorak + +X + +\- +
+\<1030.png\> + +1030 + +Shantay Desert Pass + +Allows you into the desert through the Shantay pass worth 5 gold. + +\- + +X +
+\<1031.png\> + +1031 + +Staff of Iban + +The staff is damaged + +\- + +\- +
+\<1032.png\> + +1032 + +Dwarf cannon base + +bang + +\- + +\- +
+\<1033.png\> + +1033 + +Dwarf cannon stand + +bang + +\- + +\- +
+\<1034.png\> + +1034 + +Dwarf cannon barrels + +bang + +\- + +\- +
+\<1035.png\> + +1035 + +Dwarf cannon furnace + +bang + +\- + +\- +
+\<1036.png\> + +1036 + +Fingernails + +Ugh gross! + +\- + +\- +
+\<1037.png\> + +1037 + +Powering crystal1 + +An intricately cut gemstone + +\- + +\- +
+\<1038.png\> + +1038 + +Mining Barrel + +A roughly constructed barrel for carrying rock. + +\- + +\- +
+\<1039.png\> + +1039 + +Ana in a Barrel + +A roughly constructed barrel with an Ana in it! + +\- + +\- +
+\<1040.png\> + +1040 + +Stolen gold + +I wish I could spend it + +\- + +\- +
+\<1041.png\> + +1041 + +multi cannon ball + +A heavy metal spiked ball + +\- + +X +
+\<1042.png\> + +1042 + +Railing + +A metal railing replacement + +\- + +\- +
+\<1043.png\> + +1043 + +Ogre tooth + +big sharp and nasty + +\- + +\- +
+\<1044.png\> + +1044 + +Ogre relic + +A grotesque symbol of the ogres + +\- + +\- +
+\<1045.png\> + +1045 + +Skavid map + +A map of cave locations + +\- + +\- +
+\<1046.png\> + +1046 + +dwarf remains + +The remains of a dwarf savaged by goblins + +\- + +\- +
+\<1047.png\> + +1047 + +Key + +A key for a chest + +\- + +\- +
+\<1048.png\> + +1048 + +Ogre relic part + +A piece of a statue + +\- + +\- +
+\<1049.png\> + +1049 + +Ogre relic part + +A piece of a statue + +\- + +\- +
+\<1050.png\> + +1050 + +Ogre relic part + +A piece of a statue + +\- + +\- +
+\<1051.png\> + +1051 + +Ground bat bones + +The ground bones of a bat + +\- + +\- +
+\<1052.png\> + +1052 + +Unfinished potion + +I need another ingredient to finish the shaman potion + +\- + +\- +
+\<1053.png\> + +1053 + +Ogre potion + +A strange liquid + +\- + +\- +
+\<1054.png\> + +1054 + +Magic ogre potion + +A strange liquid that bubbles with power + +\- + +\- +
+\<1055.png\> + +1055 + +Tool kit + +These could be handy! + +\- + +\- +
+\<1056.png\> + +1056 + +Nulodion's notes + +Construction notes for dwarf cannon ammo + +\- + +\- +
+\<1057.png\> + +1057 + +cannon ammo mould + +Used to make cannon ammo + +\- + +\- +
+\<1058.png\> + +1058 + +Tenti Pineapple + +The most delicious in the whole of Kharid + +\- + +\- +
+\<1059.png\> + +1059 + +Bedobin Copy Key + +A copy of a key for the captains of the mining camps chest + +\- + +\- +
+\<1060.png\> + +1060 + +Technical Plans + +Very technical looking plans for making a thrown weapon of some sort + +\- + +\- +
+\<1061.png\> + +1061 + +Rock cake + +Yum... I think! + +\- + +\- +
+\<1062.png\> + +1062 + +Bronze dart tips + +Dangerous looking dart tips - need feathers for flight + +\- + +X +
+\<1063.png\> + +1063 + +Iron dart tips + +Dangerous looking dart tips - need feathers for flight + +\- + +X +
+\<1064.png\> + +1064 + +Steel dart tips + +Dangerous looking dart tips - need feathers for flight + +\- + +X +
+\<1065.png\> + +1065 + +Mithril dart tips + +Dangerous looking dart tips - need feathers for flight + +\- + +X +
+\<1066.png\> + +1066 + +Adamantite dart tips + +Dangerous looking dart tips - need feathers for flight + +\- + +X +
+\<1067.png\> + +1067 + +Rune dart tips + +Dangerous looking dart tips - need feathers for flight + +\- + +X +
+\<1068.png\> + +1068 + +Mithril Throwing Dart + +A deadly throwing dart with a mithril tip. + +X + +X +
+\<1069.png\> + +1069 + +Adamantite Throwing Dart + +A deadly throwing dart with an adamantite tip. + +X + +X +
+\<1070.png\> + +1070 + +Rune Throwing Dart + +A deadly throwing dart with a runite tip. + +X + +X +
+\<1071.png\> + +1071 + +Prototype dart tip + +Dangerous looking dart tip - needs feathers for flight + +\- + +X +
+\<1072.png\> + +1072 + +info document + +read to access variable choices + +\- + +\- +
+\<1073.png\> + +1073 + +Instruction manual + +An old note book + +\- + +\- +
+\<1074.png\> + +1074 + +Unfinished potion + +I need another ingredient to finish this potion + +\- + +\- +
+\<1075.png\> + +1075 + +Iron throwing knife + +A finely balanced knife + +X + +\- +
+\<1076.png\> + +1076 + +Bronze throwing knife + +A finely balanced knife + +X + +\- +
+\<1077.png\> + +1077 + +Steel throwing knife + +A finely balanced knife + +X + +\- +
+\<1078.png\> + +1078 + +Mithril throwing knife + +A finely balanced knife + +X + +\- +
+\<1079.png\> + +1079 + +Adamantite throwing knife + +A finely balanced knife + +X + +\- +
+\<1080.png\> + +1080 + +Rune throwing knife + +A finely balanced knife + +X + +\- +
+\<1081.png\> + +1081 + +Black throwing knife + +A finely balanced knife + +X + +\- +
+\<1082.png\> + +1082 + +Water Skin mostly full + +A half full skin of water + +\- + +\- +
+\<1083.png\> + +1083 + +Water Skin mostly empty + +A half empty skin of water + +\- + +\- +
+\<1084.png\> + +1084 + +Water Skin mouthful left + +A waterskin with a mouthful of water left + +\- + +\- +
+\<1085.png\> + +1085 + +Empty Water Skin + +A completely empty waterskin + +\- + +\- +
+\<1086.png\> + +1086 + +nightshade + +Deadly! + +\- + +\- +
+\<1087.png\> + +1087 + +Shaman robe + +This has been left by one of the dead ogre shaman + +\- + +\- +
+\<1088.png\> + +1088 + +Iron Spear + +An iron tipped spear + +X + +\- +
+\<1089.png\> + +1089 + +Steel Spear + +A steel tipped spear + +X + +\- +
+\<1090.png\> + +1090 + +Mithril Spear + +A mithril tipped spear + +X + +\- +
+\<1091.png\> + +1091 + +Adamantite Spear + +An adamantite tipped spear + +X + +\- +
+\<1092.png\> + +1092 + +Rune Spear + +A rune tipped spear + +X + +\- +
+\<1093.png\> + +1093 + +Cat + +it's fluffs + +\- + +\- +
+\<1094.png\> + +1094 + +Seasoned Sardine + +They don't smell any better + +\- + +\- +
+\<1095.png\> + +1095 + +Kittens + +purrr + +\- + +\- +
+\<1096.png\> + +1096 + +Kitten + +purrr + +\- + +\- +
+\<1097.png\> + +1097 + +Wrought iron key + +This key clears unlocks a very sturdy gate of some sort. + +\- + +\- +
+\<1098.png\> + +1098 + +Cell Door Key + +A roughly hewn key + +\- + +\- +
+\<1099.png\> + +1099 + +A free Shantay Disclaimer + +Very important information. + +\- + +\- +
+\<1100.png\> + +1100 + +Doogle leaves + +Small sweet smelling leaves + +\- + +\- +
+\<1101.png\> + +1101 + +Raw Ugthanki Meat + +I need to cook this first + +\- + +\- +
+\<1102.png\> + +1102 + +Tasty Ugthanki Kebab + +A fresh Kebab made from Ugthanki meat + +\- + +\- +
+\<1103.png\> + +1103 + +Cooked Ugthanki Meat + +Freshly cooked Ugthanki meat + +\- + +\- +
+\<1104.png\> + +1104 + +Uncooked Pitta Bread + +I need to cook this. + +\- + +\- +
+\<1105.png\> + +1105 + +Pitta Bread + +Mmmm I need to add some other ingredients yet. + +\- + +\- +
+\<1106.png\> + +1106 + +Tomato Mixture + +A mixture of tomatoes in a bowl + +\- + +\- +
+\<1107.png\> + +1107 + +Onion Mixture + +A mixture of onions in a bowl + +\- + +\- +
+\<1108.png\> + +1108 + +Onion and Tomato Mixture + +A mixture of onions and tomatoes in a bowl + +\- + +\- +
+\<1109.png\> + +1109 + +Onion and Tomato and Ugthanki Mix + +A mixture of onions and tomatoes and Ugthanki meat in a bowl + +\- + +\- +
+\<1110.png\> + +1110 + +Burnt Pitta Bread + +Urgh - it's all burnt + +\- + +\- +
+\<1111.png\> + +1111 + +Panning tray + +used for panning gold + +\- + +\- +
+\<1112.png\> + +1112 + +Panning tray + +this tray contains gold nuggets + +\- + +\- +
+\<1113.png\> + +1113 + +Panning tray + +this tray contains mud + +\- + +\- +
+\<1114.png\> + +1114 + +Rock pick + +a sharp pick for cracking rocks + +\- + +\- +
+\<1115.png\> + +1115 + +Specimen brush + +stiff brush for cleaning specimens + +\- + +\- +
+\<1116.png\> + +1116 + +Specimen jar + +a jar for holding soil samples + +\- + +\- +
+\<1117.png\> + +1117 + +Rock Sample + +A rock sample + +\- + +\- +
+\<1118.png\> + +1118 + +gold Nuggets + +Real gold pieces! + +\- + +X +
+\<1119.png\> + +1119 + +cat + +looks like a healthy one + +\- + +\- +
+\<1120.png\> + +1120 + +Scrumpled piece of paper + +A piece of paper with barely legible writing - looks like a recipe! + +\- + +\- +
+\<1121.png\> + +1121 + +Digsite info + +IAN ONLY + +\- + +\- +
+\<1122.png\> + +1122 + +Poisoned Bronze Throwing Dart + +A venomous throwing dart with a bronze tip. + +X + +X +
+\<1123.png\> + +1123 + +Poisoned Iron Throwing Dart + +A venomous throwing dart with an iron tip. + +X + +X +
+\<1124.png\> + +1124 + +Poisoned Steel Throwing Dart + +A venomous throwing dart with a steel tip. + +X + +X +
+\<1125.png\> + +1125 + +Poisoned Mithril Throwing Dart + +A venomous throwing dart with a mithril tip. + +X + +X +
+\<1126.png\> + +1126 + +Poisoned Adamantite Throwing Dart + +A venomous throwing dart with an adamantite tip. + +X + +X +
+\<1127.png\> + +1127 + +Poisoned Rune Throwing Dart + +A deadly venomous dart with a runite tip. + +X + +X +
+\<1128.png\> + +1128 + +Poisoned Bronze throwing knife + +A finely balanced knife with a coating of venom + +X + +\- +
+\<1129.png\> + +1129 + +Poisoned Iron throwing knife + +A finely balanced knife with a coating of venom + +X + +\- +
+\<1130.png\> + +1130 + +Poisoned Steel throwing knife + +A finely balanced knife with a coating of venom + +X + +\- +
+\<1131.png\> + +1131 + +Poisoned Mithril throwing knife + +A finely balanced knife with a coating of venom + +X + +\- +
+\<1132.png\> + +1132 + +Poisoned Black throwing knife + +A finely balanced knife with a coating of venom + +X + +\- +
+\<1133.png\> + +1133 + +Poisoned Adamantite throwing knife + +A finely balanced knife with a coating of venom + +X + +\- +
+\<1134.png\> + +1134 + +Poisoned Rune throwing knife + +A finely balanced knife with a coating of venom + +X + +\- +
+\<1135.png\> + +1135 + +Poisoned Bronze Spear + +A bronze tipped spear with added venom + +X + +\- +
+\<1136.png\> + +1136 + +Poisoned Iron Spear + +An iron tipped spear with added venom + +X + +\- +
+\<1137.png\> + +1137 + +Poisoned Steel Spear + +A steel tipped spear with added venom + +X + +\- +
+\<1138.png\> + +1138 + +Poisoned Mithril Spear + +A mithril tipped spear with added venom + +X + +\- +
+\<1139.png\> + +1139 + +Poisoned Adamantite Spear + +An adamantite tipped spear with added venom + +X + +\- +
+\<1140.png\> + +1140 + +Poisoned Rune Spear + +A rune tipped spear with added venom + +X + +\- +
+\<1141.png\> + +1141 + +Book of experimental chemistry + +A book on experiments with volatile chemicals + +\- + +\- +
+\<1142.png\> + +1142 + +Level 1 Certificate + +A Certificate of education + +\- + +\- +
+\<1143.png\> + +1143 + +Level 2 Certificate + +A Certificate of education + +\- + +\- +
+\<1144.png\> + +1144 + +Level 3 Certificate + +A Certificate of education + +\- + +\- +
+\<1145.png\> + +1145 + +Trowel + +A small device for digging + +\- + +\- +
+\<1146.png\> + +1146 + +Stamped letter of recommendation + +A stamped scroll with a recommendation on it + +\- + +\- +
+\<1147.png\> + +1147 + +Unstamped letter of recommendation + +I hereby recommend this student to undertake the Varrock City earth +sciences exams + +\- + +\- +
+\<1148.png\> + +1148 + +Rock Sample + +A rock sample + +\- + +\- +
+\<1149.png\> + +1149 + +Rock Sample + +A rock sample + +\- + +\- +
+\<1150.png\> + +1150 + +Cracked rock Sample + +It's been cracked open + +\- + +\- +
+\<1151.png\> + +1151 + +Belt buckle + +been here some time + +\- + +\- +
+\<1152.png\> + +1152 + +Powering crystal2 + +An intricately cut gemstone + +\- + +\- +
+\<1153.png\> + +1153 + +Powering crystal3 + +An intricately cut gemstone + +\- + +\- +
+\<1154.png\> + +1154 + +Powering crystal4 + +An intricately cut gemstone + +\- + +\- +
+\<1155.png\> + +1155 + +Old boot + +that's been here some time + +\- + +\- +
+\<1156.png\> + +1156 + +Bunny ears + +Get another from the clothes shop if you die + +X + +\- +
+\<1157.png\> + +1157 + +Damaged armour + +that's been here some time + +\- + +\- +
+\<1158.png\> + +1158 + +Damaged armour + +that's been here some time + +\- + +\- +
+\<1159.png\> + +1159 + +Rusty sword + +that's been here some time + +\- + +\- +
+\<1160.png\> + +1160 + +Ammonium Nitrate + +An acrid chemical + +\- + +\- +
+\<1161.png\> + +1161 + +Nitroglycerin + +A strong acidic formula + +\- + +\- +
+\<1162.png\> + +1162 + +Old tooth + +a large single tooth + +\- + +\- +
+\<1163.png\> + +1163 + +Radimus Scrolls + +Scrolls that Radimus gave you + +\- + +\- +
+\<1164.png\> + +1164 + +chest key + +A small key for a chest + +\- + +\- +
+\<1165.png\> + +1165 + +broken arrow + +that's been here some time + +\- + +\- +
+\<1166.png\> + +1166 + +buttons + +they've been here some time + +\- + +\- +
+\<1167.png\> + +1167 + +broken staff + +that's been here some time + +\- + +\- +
+\<1168.png\> + +1168 + +vase + +An old vase + +\- + +\- +
+\<1169.png\> + +1169 + +ceramic remains + +some ancient pottery + +\- + +\- +
+\<1170.png\> + +1170 + +Broken glass + +smashed glass + +\- + +\- +
+\<1171.png\> + +1171 + +Unidentified powder + +who knows what this is for? + +\- + +\- +
+\<1172.png\> + +1172 + +Machette + +A purpose built tool for cutting through thick jungle. + +X + +\- +
+\<1173.png\> + +1173 + +Scroll + +A letter written by the expert + +\- + +\- +
+\<1174.png\> + +1174 + +stone tablet + +some ancient script is engraved on here + +\- + +\- +
+\<1175.png\> + +1175 + +Talisman of Zaros + +an ancient item + +\- + +\- +
+\<1176.png\> + +1176 + +Explosive compound + +A dark mystical powder + +\- + +\- +
+\<1177.png\> + +1177 + +Bull Roarer + +A sound producing instrument - it may attract attention + +\- + +\- +
+\<1178.png\> + +1178 + +Mixed chemicals + +A pungent mix of 2 chemicals + +\- + +\- +
+\<1179.png\> + +1179 + +Ground charcoal + +Powdered charcoal! + +\- + +\- +
+\<1180.png\> + +1180 + +Mixed chemicals + +A pungent mix of 3 chemicals + +\- + +\- +
+\<1181.png\> + +1181 + +Spell scroll + +A magical scroll + +\- + +\- +
+\<1182.png\> + +1182 + +Yommi tree seed + +A magical seed that grows into a Yommi tree - these need to be +germinated + +\- + +X +
+\<1183.png\> + +1183 + +Totem Pole + +A well crafted totem pole + +\- + +\- +
+\<1184.png\> + +1184 + +Dwarf cannon base + +bang + +\- + +\- +
+\<1185.png\> + +1185 + +Dwarf cannon stand + +bang + +\- + +\- +
+\<1186.png\> + +1186 + +Dwarf cannon barrels + +bang + +\- + +\- +
+\<1187.png\> + +1187 + +Dwarf cannon furnace + +bang + +\- + +\- +
+\<1188.png\> + +1188 + +Golden Bowl + +A specially made bowl constructed out of pure gold + +\- + +\- +
+\<1189.png\> + +1189 + +Golden Bowl with pure water + +A golden bowl filled with pure water + +\- + +\- +
+\<1190.png\> + +1190 + +Raw Manta ray + +A rare catch! + +\- + +\- +
+\<1191.png\> + +1191 + +Manta ray + +A rare catch! + +\- + +\- +
+\<1192.png\> + +1192 + +Raw Sea turtle + +A rare catch! + +\- + +\- +
+\<1193.png\> + +1193 + +Sea turtle + +Tasty! + +\- + +\- +
+\<1194.png\> + +1194 + +Annas Silver Necklace + +A necklace coated with silver + +X + +\- +
+\<1195.png\> + +1195 + +Bobs Silver Teacup + +A tea cup coated with silver + +\- + +\- +
+\<1196.png\> + +1196 + +Carols Silver Bottle + +A little bottle coated with silver + +\- + +\- +
+\<1197.png\> + +1197 + +Davids Silver Book + +An ornamental book coated with silver + +\- + +\- +
+\<1198.png\> + +1198 + +Elizabeths Silver Needle + +An ornamental needle coated with silver + +\- + +\- +
+\<1199.png\> + +1199 + +Franks Silver Pot + +A small pot coated with silver + +\- + +\- +
+\<1200.png\> + +1200 + +Thread + +A piece of red thread discovered at the scene of the crime + +\- + +\- +
+\<1201.png\> + +1201 + +Thread + +A piece of green thread discovered at the scene of the crime + +\- + +\- +
+\<1202.png\> + +1202 + +Thread + +A piece of blue thread discovered at the scene of the crime + +\- + +\- +
+\<1203.png\> + +1203 + +Flypaper + +Sticky paper for catching flies + +\- + +\- +
+\<1204.png\> + +1204 + +Murder Scene Pot + +The pot has a sickly smell of poison mixed with wine + +\- + +\- +
+\<1205.png\> + +1205 + +A Silver Dagger + +Dagger Found at crime scene + +X + +\- +
+\<1206.png\> + +1206 + +Murderers fingerprint + +An impression of the murderers fingerprint + +\- + +\- +
+\<1207.png\> + +1207 + +Annas fingerprint + +An impression of Annas fingerprint + +\- + +\- +
+\<1208.png\> + +1208 + +Bobs fingerprint + +An impression of Bobs fingerprint + +\- + +\- +
+\<1209.png\> + +1209 + +Carols fingerprint + +An impression of Carols fingerprint + +\- + +\- +
+\<1210.png\> + +1210 + +Davids fingerprint + +An impression of Davids fingerprint + +\- + +\- +
+\<1211.png\> + +1211 + +Elizabeths fingerprint + +An impression of Elizabeths fingerprint + +\- + +\- +
+\<1212.png\> + +1212 + +Franks fingerprint + +An impression of Franks fingerprint + +\- + +\- +
+\<1213.png\> + +1213 + +Zamorak Cape + +A cape from the almighty zamorak + +X + +\- +
+\<1214.png\> + +1214 + +Saradomin Cape + +A cape from the almighty saradomin + +X + +\- +
+\<1215.png\> + +1215 + +Guthix Cape + +A cape from the almighty guthix + +X + +\- +
+\<1216.png\> + +1216 + +Staff of zamorak + +It's a stick of the gods + +X + +\- +
+\<1217.png\> + +1217 + +Staff of guthix + +It's a stick of the gods + +X + +\- +
+\<1218.png\> + +1218 + +Staff of Saradomin + +It's a stick of the gods + +X + +\- +
+\<1219.png\> + +1219 + +A chunk of crystal + +A reddish crystal fragment - it looks like it formed a shape at one +time. + +\- + +\- +
+\<1220.png\> + +1220 + +A lump of crystal + +A reddish crystal fragment - it looks like it formed a shape at one +time. + +\- + +\- +
+\<1221.png\> + +1221 + +A hunk of crystal + +A reddish crystal fragment - it looks like it formed a shape at one +time. + +\- + +\- +
+\<1222.png\> + +1222 + +A red crystal + +A heart shaped red crystal + +\- + +\- +
+\<1223.png\> + +1223 + +Unidentified fingerprint + +An impression of the murderers fingerprint + +\- + +\- +
+\<1224.png\> + +1224 + +Annas Silver Necklace + +A silver necklace coated with flour + +X + +\- +
+\<1225.png\> + +1225 + +Bobs Silver Teacup + +A silver tea cup coated with flour + +\- + +\- +
+\<1226.png\> + +1226 + +Carols Silver Bottle + +A little silver bottle coated with flour + +\- + +\- +
+\<1227.png\> + +1227 + +Davids Silver Book + +An ornamental silver book coated with flour + +\- + +\- +
+\<1228.png\> + +1228 + +Elizabeths Silver Needle + +An ornamental silver needle coated with flour + +\- + +\- +
+\<1229.png\> + +1229 + +Franks Silver Pot + +A small silver pot coated with flour + +\- + +\- +
+\<1230.png\> + +1230 + +A Silver Dagger + +Dagger Found at crime scene coated with flour + +X + +\- +
+\<1231.png\> + +1231 + +A glowing red crystal + +A glowing heart shaped red crystal - great magic must be present in this +item + +\- + +\- +
+\<1232.png\> + +1232 + +Unidentified liquid + +A strong acidic formula + +\- + +\- +
+\<1233.png\> + +1233 + +Radimus Scrolls + +Mission briefing and the completed map of Karamja - Sir Radimus will be +pleased... + +\- + +\- +
+\<1234.png\> + +1234 + +Robe + +A worn robe + +X + +\- +
+\<1235.png\> + +1235 + +Armour + +An unusually red armour + +\- + +\- +
+\<1236.png\> + +1236 + +Dagger + +Short but pointy + +X + +\- +
+\<1237.png\> + +1237 + +eye patch + +It makes me look very piratical + +X + +\- +
+\<1238.png\> + +1238 + +Booking of Binding + +An ancient tome on Demonology + +\- + +\- +
+\<1239.png\> + +1239 + +Holy Water Vial + +A deadly potion against evil kin + +X + +\- +
+\<1240.png\> + +1240 + +Enchanted Vial + +This enchanted vial is empty - but is ready for magical liquids. + +\- + +\- +
+\<1241.png\> + +1241 + +Scribbled notes + +It looks like a page ripped from a book + +\- + +\- +
+\<1242.png\> + +1242 + +Scrawled notes + +It looks like a page ripped from a book + +\- + +\- +
+\<1243.png\> + +1243 + +Scatched notes + +It looks like a page ripped from a book + +\- + +\- +
+\<1244.png\> + +1244 + +Shamans Tome + +An ancient tome on various subjects... + +\- + +\- +
+\<1245.png\> + +1245 + +Edible seaweed + +slightly damp seaweed + +\- + +\- +
+\<1246.png\> + +1246 + +Rough Sketch of a bowl + +A roughly sketched picture of a bowl made from metal + +\- + +\- +
+\<1247.png\> + +1247 + +Burnt Manta ray + +oops! + +\- + +\- +
+\<1248.png\> + +1248 + +Burnt Sea turtle + +oops! + +\- + +\- +
+\<1249.png\> + +1249 + +Cut reed plant + +A narrow long tube - it might be useful for something + +\- + +\- +
+\<1250.png\> + +1250 + +Magical Fire Pass + +A pass which allows you to cross the flaming walls into the Flaming +Octagon + +\- + +\- +
+\<1251.png\> + +1251 + +Snakes Weed Solution + +Snakes weed in water - part of a potion + +\- + +\- +
+\<1252.png\> + +1252 + +Ardrigal Solution + +Ardrigal herb in water - part of a potion + +\- + +\- +
+\<1253.png\> + +1253 + +Gujuo Potion + +A potion to help against fear of the supernatural + +\- + +\- +
+\<1254.png\> + +1254 + +Germinated Yommi tree seed + +A magical seed that grows into a Yommi tree - these have been +germinated. + +\- + +X +
+\<1255.png\> + +1255 + +Dark Dagger + +An unusual looking dagger made of dark shiny obsidian + +X + +\- +
+\<1256.png\> + +1256 + +Glowing Dark Dagger + +An unusual looking dagger made of dark shiny obsidian - it has an +unnatural glow . + +X + +\- +
+\<1257.png\> + +1257 + +Holy Force Spell + +A powerful incantation - it affects spirits of the underworld + +\- + +\- +
+\<1258.png\> + +1258 + +Iron Pickaxe + +Used for mining + +\- + +\- +
+\<1259.png\> + +1259 + +Steel Pickaxe + +Requires level 6 mining to use + +\- + +\- +
+\<1260.png\> + +1260 + +Mithril Pickaxe + +Requires level 21 mining to use + +\- + +\- +
+\<1261.png\> + +1261 + +Adamantite Pickaxe + +Requires level 31 mining to use + +\- + +\- +
+\<1262.png\> + +1262 + +Rune Pickaxe + +Requires level 41 mining to use + +\- + +\- +
+\<1263.png\> + +1263 + +Sleeping Bag + +Not as comfy as a bed but better than nothing + +\- + +\- +
+\<1264.png\> + +1264 + +A blue wizards hat + +An ancient wizards hat. + +X + +\- +
+\<1265.png\> + +1265 + +Gilded Totem Pole + +A well crafted totem pole - given to you as a gift from Gujuo + +\- + +\- +
+\<1266.png\> + +1266 + +Blessed Golden Bowl + +A specially made bowl constructed out of pure gold - it looks magical +somehow + +\- + +\- +
+\<1267.png\> + +1267 + +Blessed Golden Bowl with Pure Water + +A golden bowl filled with pure water - it looks magical somehow + +\- + +\- +
+\<1268.png\> + +1268 + +Raw Oomlie Meat + +Raw meat from the Oomlie bird + +\- + +\- +
+\<1269.png\> + +1269 + +Cooked Oomlie meat Parcel + +Deliciously cooked Oomlie meat in a palm leaf pouch. + +\- + +\- +
+\<1270.png\> + +1270 + +Dragon Bone Certificate + +Each certificate exchangable at Yanille for 5 Dragon Bones + +\- + +X +
+\<1271.png\> + +1271 + +Limpwurt Root Certificate + +Each certificate exchangable at Yanille for 5 Limpwort roots + +\- + +X +
+\<1272.png\> + +1272 + +Prayer Potion Certificate + +Each certificate exchangable at Yanille for 5 prayer potions + +\- + +X +
+\<1273.png\> + +1273 + +Super Attack Potion Certificate + +Exchangable at Yanille for 5 + +\- + +X +
+\<1274.png\> + +1274 + +Super Defense Potion Certificate + +Exchangable at Yanille for 5 + +\- + +X +
+\<1275.png\> + +1275 + +Super Strength Potion Certificate + +Exchangable at Yanille for 5 + +\- + +X +
+\<1276.png\> + +1276 + +Half Dragon Square Shield + +The Right Half of an ancient and powerful looking Dragon Square shield. + +\- + +\- +
+\<1277.png\> + +1277 + +Half Dragon Square Shield + +Left Half of an ancient and powerful looking Dragon Square shield. + +\- + +\- +
+\<1278.png\> + +1278 + +Dragon Square Shield + +An ancient and powerful looking Dragon Square shield. + +X + +\- +
+\<1279.png\> + +1279 + +Palm tree leaf + +A thick green plam leaf - natives use this to cook meat in + +\- + +\- +
+\<1280.png\> + +1280 + +Raw Oomlie Meat Parcel + +Oomlie meat in a palm leaf pouch - just needs to be cooked. + +\- + +\- +
+\<1281.png\> + +1281 + +Burnt Oomlie Meat parcel + +Oomlie meat in a palm leaf pouch - it's burnt. + +\- + +\- +
+\<1282.png\> + +1282 + +Bailing Bucket + +It's a water tight bucket + +\- + +\- +
+\<1283.png\> + +1283 + +Plank + +Damaged remains of the ship + +\- + +\- +
+\<1284.png\> + +1284 + +Arcenia root + +the root of an arcenia plant + +\- + +\- +
+\<1285.png\> + +1285 + +display tea + +A nice cup of tea - for display only + +\- + +\- +
+\<1286.png\> + +1286 + +Blessed Golden Bowl with plain water + +A golden bowl filled with plain water + +\- + +\- +
+\<1287.png\> + +1287 + +Golden Bowl with plain water + +A golden bowl filled with plain water + +\- + +\- +
+\<1288.png\> + +1288 + +Cape of legends + +Shows I am a member of the legends guild + +X + +\- +
+\<1289.png\> + +1289 + +Scythe + +Get another from the clothes shop if you die + +X + +\- +
diff --git a/src/204-NPCs.md b/src/204-NPCs.md new file mode 100644 index 0000000..863f426 --- /dev/null +++ b/src/204-NPCs.md @@ -0,0 +1,13523 @@ +\[\[Category RSC\]\] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/204-Objects.md b/src/204-Objects.md new file mode 100644 index 0000000..95c417a --- /dev/null +++ b/src/204-Objects.md @@ -0,0 +1,13096 @@ +\[\[Category RSC\]\] +
+id + +npc name + +level + +description + +attackable +
+0 + +Unicorn + +21 + +It's a unicorn + +X +
+1 + +Bob + +2 + +An axe seller + +\- +
+2 + +Sheep + +0 + +A very wooly sheep + +\- +
+3 + +Chicken + +3 + +Yep definitely a chicken + +X +
+4 + +Goblin + +13 + +An ugly green creature + +X +
+5 + +Hans + +3 + +A castle servant + +X +
+6 + +cow + +8 + +It's a multi purpose cow + +X +
+7 + +cook + +15 + +The head cook of Lumbridge castle + +\- +
+8 + +Bear + +24 + +Eek! A bear! + +X +
+9 + +Priest + +0 + +A priest of Saradomin + +\- +
+10 + +Urhney + +8 + +He looks a little grumpy + +\- +
+11 + +Man + +9 + +One of runescapes many citizens + +X +
+12 + +Bartender + +0 + +I could get a beer off him + +\- +
+13 + +Camel + +0 + +Oh its a camel + +\- +
+14 + +Gypsy + +0 + +An old gypsy lady + +\- +
+15 + +Ghost + +12 + +Ooh spooky + +\- +
+16 + +Sir Prysin + +40 + +One of the king's knights + +\- +
+17 + +Traiborn the wizard + +12 + +An old wizard + +\- +
+18 + +Captain Rovin + +51 + +The head of the palace guard + +\- +
+19 + +Rat + +8 + +Overgrown vermin + +X +
+20 + +Reldo + +12 + +I think he's the librarian + +\- +
+21 + +mugger + +10 + +He jumps out and attacks people + +X +
+22 + +Lesser Demon + +79 + +Lesser but still pretty big + +X +
+23 + +Giant Spider + +8 + +I think this spider has been genetically modified + +X +
+24 + +Man + +30 + +A shifty looking man + +\- +
+25 + +Jonny the beard + +10 + +I can see why he's called the beard + +X +
+26 + +Baraek + +30 + +A fur trader + +\- +
+27 + +Katrine + +25 + +She doesn't look to friendly + +\- +
+28 + +Tramp + +7 + +A scruffy looking chap + +\- +
+29 + +Rat + +2 + +A small muddy rat + +X +
+30 + +Romeo + +45 + +He looks mildly confused + +\- +
+31 + +Juliet + +2 + +She looks a little stressed + +\- +
+32 + +Father Lawrence + +0 + +A kindly looking priest + +\- +
+33 + +Apothecary + +6 + +I wonder if he has any good potions + +\- +
+34 + +spider + +2 + +Incey wincey + +X +
+35 + +Delrith + +30 + +A freshly summoned demon + +X +
+36 + +Veronica + +2 + +She doesn't look too happy + +\- +
+37 + +Weaponsmaster + +25 + +The phoenix gang quartermaster + +X +
+38 + +Professor Oddenstein + +4 + +A mad scientist if I ever saw one + +\- +
+39 + +Curator + +2 + +He looks like he's daydreaming + +\- +
+40 + +skeleton + +21 + +It rattles as it walks + +X +
+41 + +zombie + +24 + +The living dead + +X +
+42 + +king + +30 + +King Roald the VIII + +\- +
+43 + +Giant bat + +32 + +An angry flying rodent + +X +
+44 + +Bartender + +0 + +A friendly barman + +\- +
+45 + +skeleton + +31 + +It rattles as it walks + +X +
+46 + +skeleton + +25 + +It rattles as it walks + +X +
+47 + +Rat + +13 + +overgrown vermin + +X +
+48 + +Horvik the Armourer + +16 + +He looks strong + +\- +
+49 + +Bear + +0 + +A bear + +\- +
+50 + +skeleton + +19 + +It rattles when it walks + +X +
+51 + +Shopkeeper + +0 + +Maybe he'd like to buy some of my junk + +\- +
+52 + +zombie + +19 + +The living dead + +X +
+53 + +Ghost + +25 + +Ooh spooky + +X +
+54 + +Aubury + +0 + +I think he might be a shop keeper + +\- +
+55 + +Shopkeeper + +0 + +I wonder what he's got for sale + +\- +
+56 + +shopkeeper + +0 + +I can buy swords off him + +\- +
+57 + +Darkwizard + +13 + +He works evil magic + +X +
+58 + +lowe + +0 + +The owner of the archery store + +\- +
+59 + +Thessalia + +0 + +A young shop assistant + +\- +
+60 + +Darkwizard + +25 + +He works evil magic + +X +
+61 + +Giant + +37 + +A very large foe + +X +
+62 + +Goblin + +7 + +An ugly green creature + +X +
+63 + +farmer + +15 + +He grows the crops in this area + +X +
+64 + +Thief + +21 + +He'll take anything that isn't nailed down + +X +
+65 + +Guard + +28 + +He tries to keep order around here + +X +
+66 + +Black Knight + +46 + +A sinister looking knight + +X +
+67 + +Hobgoblin + +32 + +A large ugly green creature + +X +
+68 + +zombie + +32 + +The living dead + +X +
+69 + +Zaff + +0 + +He trades in staffs + +\- +
+70 + +Scorpion + +21 + +An extremely vicious scorpion + +X +
+71 + +silk trader + +0 + +He sells silk + +\- +
+72 + +Man + +9 + +One of Runescapes many citizens + +X +
+73 + +Guide + +1 + +He gives hints to new adventurers + +\- +
+74 + +Giant Spider + +31 + +I think this spider has been genetically modified + +X +
+75 + +Peksa + +9 + +A helmet salesman + +\- +
+76 + +Barbarian + +16 + +Not civilised looking + +X +
+77 + +Fred the farmer + +9 + +An old farmer + +\- +
+78 + +Gunthor the Brave + +37 + +The barbarians fearless leader + +X +
+79 + +Witch + +25 + +She's got warts + +X +
+80 + +Ghost + +25 + +Ooh spooky + +X +
+81 + +Wizard + +16 + +An old wizard + +X +
+82 + +Shop Assistant + +0 + +Maybe he'd like to buy some of my junk + +\- +
+83 + +Shop Assistant + +0 + +Maybe he'd like to buy some of my junk + +\- +
+84 + +Zeke + +0 + +He sells Scimitars + +\- +
+85 + +Louie Legs + +0 + +He might want to sell something + +\- +
+86 + +Warrior + +18 + +A member of Al Kharid's military + +X +
+87 + +Shopkeeper + +0 + +I wonder what he's got for sale + +\- +
+88 + +Shop Assistant + +0 + +Maybe she'd like to buy some of my junk + +\- +
+89 + +Highwayman + +13 + +He holds up passers by + +X +
+90 + +Kebab Seller + +0 + +A seller of strange food + +\- +
+91 + +Chicken + +3 + +Yep definitely a chicken + +\- +
+92 + +Ernest + +3 + +A former chicken + +\- +
+93 + +Monk + +13 + +A Peaceful monk + +X +
+94 + +Dwarf + +18 + +A short angry guy + +X +
+95 + +Banker + +9 + +He can look after my money + +\- +
+96 + +Count Draynor + +43 + +A vicious vampire + +X +
+97 + +Morgan + +9 + +A frigtened villager + +\- +
+98 + +Dr Harlow + +9 + +His nose is very red + +\- +
+99 + +Deadly Red spider + +36 + +I think this spider has been genetically modified + +X +
+100 + +Guard + +28 + +He's here to guard this fortress + +X +
+101 + +Cassie + +25 + +She sells shields + +\- +
+102 + +White Knight + +56 + +A chivalrous knight + +X +
+103 + +Ranael + +25 + +A shopkeeper of some sort + +\- +
+104 + +Moss Giant + +62 + +his beard seems to have a life of its own + +X +
+105 + +Shopkeeper + +0 + +I wonder what he's got for sale + +\- +
+106 + +Shop Assistant + +0 + +Maybe he'd like to buy some of my junk + +\- +
+107 + +Witch + +25 + +She's got warts + +\- +
+108 + +Black Knight + +46 + +A sinister looking knight + +X +
+109 + +Greldo + +7 + +A small green warty creature + +X +
+110 + +Sir Amik Varze + +56 + +The leader of the white knights + +\- +
+111 + +Guildmaster + +40 + +He's in charge of this place + +\- +
+112 + +Valaine + +25 + +She runs the champion's store + +\- +
+113 + +Drogo + +18 + +He runs a mining store + +\- +
+114 + +Imp + +5 + +A cheeky little imp + +X +
+115 + +Flynn + +16 + +The mace salesman + +\- +
+116 + +Wyson the gardener + +8 + +An old gardener + +\- +
+117 + +Wizard Mizgog + +12 + +An old wizard + +\- +
+118 + +Prince Ali + +20 + +A young prince + +\- +
+119 + +Hassan + +20 + +the Chancellor to the emir + +\- +
+120 + +Osman + +20 + +He looks a little shifty + +\- +
+121 + +Joe + +40 + +Lady Keli's head guard + +\- +
+122 + +Leela + +20 + +She comes from Al Kharid + +\- +
+123 + +Lady Keli + +20 + +An Infamous bandit + +\- +
+124 + +Ned + +20 + +An old sailor + +\- +
+125 + +Aggie + +25 + +A witch + +\- +
+126 + +Prince Ali + +10 + +That is an effective disguise + +\- +
+127 + +Jailguard + +34 + +I wonder what he's guarding + +X +
+128 + +Redbeard Frank + +25 + +A pirate + +\- +
+129 + +Wydin + +0 + +A grocer + +\- +
+130 + +shop assistant + +0 + +I can buy swords off him + +\- +
+131 + +Brian + +0 + +An axe seller + +\- +
+132 + +squire + +0 + +A young squire + +\- +
+133 + +Head chef + +15 + +He looks after the chef's guild + +\- +
+134 + +Thurgo + +18 + +A short angry guy + +\- +
+135 + +Ice Giant + +68 + +He's got icicles in his beard + +X +
+136 + +King Scorpion + +36 + +Wow scorpions shouldn't grow that big + +X +
+137 + +Pirate + +27 + +A vicious pirate + +X +
+138 + +Sir Vyvin + +56 + +One of the white knights of Falador + +\- +
+139 + +Monk of Zamorak + +29 + +An evil cleric + +X +
+140 + +Monk of Zamorak + +19 + +An evil cleric + +X +
+141 + +Wayne + +16 + +An armourer + +\- +
+142 + +Barmaid + +25 + +a pretty barmaid + +\- +
+143 + +Dwarven shopkeeper + +18 + +I wonder if he wants to buy any of my junk + +\- +
+144 + +Doric + +18 + +A dwarven smith + +\- +
+145 + +Shopkeeper + +0 + +I wonder what he's got for sale + +\- +
+146 + +Shop Assistant + +0 + +Maybe he'd like to buy some of my junk + +\- +
+147 + +Guide + +1 + +She gives hints to new adventurers + +\- +
+148 + +Hetty + +25 + +A witch + +\- +
+149 + +Betty + +25 + +A witch + +\- +
+150 + +Bartender + +0 + +I could get a beer off him + +\- +
+151 + +General wartface + +13 + +An ugly green creature + +\- +
+152 + +General Bentnoze + +13 + +An ugly green creature + +\- +
+153 + +Goblin + +13 + +An ugly green creature + +X +
+154 + +Goblin + +13 + +An ugly green creature + +X +
+155 + +Herquin + +0 + +A gem merchant + +\- +
+156 + +Rommik + +0 + +The owner of the crafting shop + +\- +
+157 + +Grum + +0 + +Grum the goldsmith + +\- +
+158 + +Ice warrior + +57 + +A strange inhuman warrior + +X +
+159 + +Warrior + +27 + +A skilled fighter + +X +
+160 + +Thrander + +16 + +A smith of some sort + +\- +
+161 + +Border Guard + +18 + +a guard from Al Kharid + +\- +
+162 + +Border Guard + +18 + +a guard from Al Kharid + +\- +
+163 + +Customs Officer + +16 + +She is here to stop smugglers + +\- +
+164 + +Luthas + +16 + +The owner of the banana plantation + +\- +
+165 + +Zambo + +16 + +He will sell me exotic rum + +\- +
+166 + +Captain Tobias + +20 + +An old sailor + +\- +
+167 + +Gerrant + +0 + +I wonder what he's got for sale + +\- +
+168 + +Shopkeeper + +0 + +I wonder what he's got for sale + +\- +
+169 + +Shop Assistant + +0 + +Maybe he'd like to buy some of my junk + +\- +
+170 + +Seaman Lorris + +20 + +A young sailor + +\- +
+171 + +Seaman Thresnor + +20 + +A young sailor + +\- +
+172 + +Tanner + +45 + +He makes leather + +\- +
+173 + +Dommik + +0 + +The owner of the crafting shop + +\- +
+174 + +Abbot Langley + +13 + +A Peaceful monk + +\- +
+175 + +Thordur + +18 + +He runs a a tourist attraction + +\- +
+176 + +Brother Jered + +13 + +human + +\- +
+177 + +Rat + +13 + +Overgrown vermin + +X +
+178 + +Ghost + +25 + +Ooh spooky + +X +
+179 + +skeleton + +31 + +it rattles when it walks + +X +
+180 + +zombie + +32 + +the living dead + +X +
+181 + +Lesser Demon + +79 + +Lesser but still very big + +X +
+182 + +Melzar the mad + +45 + +He looks totally insane + +X +
+183 + +Scavvo + +10 + +He has lopsided eyes + +\- +
+184 + +Greater Demon + +87 + +big red and incredibly evil + +X +
+185 + +Shopkeeper + +0 + +I wonder what he's got for sale + +\- +
+186 + +Shop Assistant + +0 + +Maybe he'd like to buy some of my junk + +\- +
+187 + +Oziach + +0 + +A strange little man + +\- +
+188 + +Bear + +26 + +Eek! A bear! + +X +
+189 + +Black Knight + +46 + +An armoured follower of Zamorak + +X +
+190 + +chaos Dwarf + +59 + +a dwarf gone bad + +X +
+191 + +dwarf + +18 + +A dwarf who looks after the mining guild + +\- +
+192 + +Wormbrain + +7 + +Dumb even by goblin standards + +X +
+193 + +Klarense + +20 + +A young sailor + +\- +
+194 + +Ned + +20 + +An old sailor + +\- +
+195 + +skeleton + +54 + +A Taller than normal skeleton + +X +
+196 + +Dragon + +110 + +A powerful and ancient dragon + +X +
+197 + +Oracle + +57 + +A mystic of unknown race + +\- +
+198 + +Duke of Lumbridge + +30 + +Duke Horacio of Lumbridge + +\- +
+199 + +Dark Warrior + +21 + +A warrior touched by chaos + +X +
+200 + +Druid + +29 + +A worshipper of Guthix + +X +
+201 + +Red Dragon + +140 + +A big powerful dragon + +X +
+202 + +Blue Dragon + +105 + +A mother dragon + +X +
+203 + +Baby Blue Dragon + +50 + +Young but still dangerous + +X +
+204 + +Kaqemeex + +29 + +A wise druid + +\- +
+205 + +Sanfew + +29 + +An old druid + +\- +
+206 + +Suit of armour + +29 + +A dusty old suit of armour + +\- +
+207 + +Adventurer + +13 + +A cleric + +\- +
+208 + +Adventurer + +12 + +A wizard + +\- +
+209 + +Adventurer + +56 + +A Warrior + +\- +
+210 + +Adventurer + +25 + +An archer + +\- +
+211 + +Leprechaun + +18 + +A funny little man who lives in a tree + +\- +
+212 + +Monk of entrana + +13 + +A Peaceful monk + +\- +
+213 + +Monk of entrana + +13 + +A Peaceful monk + +\- +
+214 + +zombie + +32 + +The living dead + +X +
+215 + +Monk of entrana + +13 + +A Peaceful monk + +\- +
+216 + +tree spirit + +95 + +Ooh spooky + +X +
+217 + +cow + +8 + +It's a dairy cow + +\- +
+218 + +Irksol + +2 + +Is he invisible or just a set of floating clothes? + +\- +
+219 + +Fairy Lunderwin + +2 + +A fairy merchant + +\- +
+220 + +Jakut + +2 + +An unusual looking merchant + +\- +
+221 + +Doorman + +56 + +He guards the entrance to the faerie market + +\- +
+222 + +Fairy Shopkeeper + +0 + +I wonder what he's got for sale + +\- +
+223 + +Fairy Shop Assistant + +0 + +Maybe he'd like to buy some of my junk + +\- +
+224 + +Fairy banker + +9 + +He can look after my money + +\- +
+225 + +Giles + +30 + +He runs an ore exchange store + +\- +
+226 + +Miles + +30 + +He runs a bar exchange store + +\- +
+227 + +Niles + +30 + +He runs a fish exchange store + +\- +
+228 + +Gaius + +16 + +he sells very big swords + +\- +
+229 + +Fairy Ladder attendant + +0 + +A worker in the faerie market + +\- +
+230 + +Jatix + +29 + +A hard working druid + +\- +
+231 + +Master Crafter + +0 + +The man in charge of the crafter's guild + +\- +
+232 + +Bandit + +29 + +He's ready for a fight + +X +
+233 + +Noterazzo + +29 + +A bandit shopkeeper + +\- +
+234 + +Bandit + +29 + +A wilderness outlaw + +X +
+235 + +Fat Tony + +15 + +A Gourmet Pizza chef + +\- +
+236 + +Donny the lad + +39 + +A bandit leader + +X +
+237 + +Black Heather + +39 + +A bandit leader + +X +
+238 + +Speedy Keith + +39 + +A bandit leader + +X +
+239 + +White wolf sentry + +31 + +A vicious mountain wolf + +X +
+240 + +Boy + +39 + +He doesn't seem very happy + +\- +
+241 + +Rat + +2 + +He seems to live here + +\- +
+242 + +Nora T Hag + +25 + +She's got warts + +\- +
+243 + +Grey wolf + +64 + +A sinister looking wolf + +X +
+244 + +shapeshifter + +24 + +I've not seen anyone like this before + +X +
+245 + +shapeshifter + +34 + +I think this spider has been genetically modified + +\- +
+246 + +shapeshifter + +44 + +Eek! A bear! + +\- +
+247 + +shapeshifter + +54 + +A sinister looking wolf + +\- +
+248 + +White wolf + +41 + +A vicious mountain wolf + +X +
+249 + +Pack leader + +71 + +A vicious mountain wolf + +X +
+250 + +Harry + +0 + +I wonder what he's got for sale + +\- +
+251 + +Thug + +18 + +He likes hitting things + +X +
+252 + +Firebird + +6 + +Probably not a chicken + +X +
+253 + +Achetties + +46 + +One of Asgarnia's greatest heros + +\- +
+254 + +Ice queen + +103 + +The leader of the ice warriors + +X +
+255 + +Grubor + +15 + +A rough looking thief + +\- +
+256 + +Trobert + +13 + +A well dressed thief + +\- +
+257 + +Garv + +28 + +A diligent guard + +\- +
+258 + +guard + +27 + +A vicious pirate + +\- +
+259 + +Grip + +46 + +Scar face petes head guard + +X +
+260 + +Alfonse the waiter + +9 + +He should get a clean apron + +\- +
+261 + +Charlie the cook + +15 + +Head cook of the Shrimp and parrot + +\- +
+262 + +Guard Dog + +46 + +He doesn't seem pleased to see me + +X +
+263 + +Ice spider + +64 + +I think this spider has been genetically modified + +X +
+264 + +Pirate + +30 + +A vicious pirate + +X +
+265 + +Jailer + +51 + +Guards prisoners for the black knights + +X +
+266 + +Lord Darquarius + +76 + +A black knight commander + +X +
+267 + +Seth + +30 + +He runs a fish exchange store + +\- +
+268 + +Banker + +9 + +He can look after my money + +\- +
+269 + +Helemos + +46 + +A retired hero + +\- +
+270 + +Chaos Druid + +19 + +A crazy evil druid + +X +
+271 + +Poison Scorpion + +26 + +It has a very vicious looking tail + +X +
+272 + +Velrak the explorer + +3 + +he looks cold and hungry + +\- +
+273 + +Sir Lancelot + +56 + +A knight of the round table + +\- +
+274 + +Sir Gawain + +56 + +A knight of the round table + +\- +
+275 + +King Arthur + +56 + +A wise old king + +\- +
+276 + +Sir Mordred + +58 + +An evil knight + +X +
+277 + +Renegade knight + +51 + +He isn't very friendly + +X +
+278 + +Davon + +27 + +An amulet trader + +\- +
+279 + +Bartender + +0 + +I could get some grog off him + +\- +
+280 + +Arhein + +0 + +A merchant + +\- +
+281 + +Morgan le faye + +25 + +An evil sorceress + +\- +
+282 + +Candlemaker + +16 + +He makes and sells candles + +\- +
+283 + +lady + +0 + +She has a hint of magic about her + +\- +
+284 + +lady + +0 + +She has a hint of magic about her + +\- +
+285 + +lady + +0 + +She has a hint of magic about her + +\- +
+286 + +Beggar + +7 + +A scruffy looking chap + +\- +
+287 + +Merlin + +12 + +An old wizard + +\- +
+288 + +Thrantax + +90 + +A freshly summoned demon + +\- +
+289 + +Hickton + +0 + +The owner of the archery store + +\- +
+290 + +Black Demon + +156 + +A big scary jet black demon + +X +
+291 + +Black Dragon + +200 + +A fierce dragon with black scales! + +X +
+292 + +Poison Spider + +63 + +I think this spider has been genetically modified + +X +
+293 + +Monk of Zamorak + +47 + +An evil cleric + +X +
+294 + +Hellhound + +114 + +Hello nice doggy + +X +
+295 + +Animated axe + +46 + +a magic axe with a mind of it's own + +X +
+296 + +Black Unicorn + +31 + +It's a sort of unicorn + +X +
+297 + +Frincos + +13 + +A Peaceful monk + +\- +
+298 + +Otherworldly being + +66 + +Is he invisible or just a set of floating clothes? + +X +
+299 + +Owen + +30 + +He runs a fish exchange store + +\- +
+300 + +Thormac the sorceror + +25 + +A powerful sorcerrer + +\- +
+301 + +Seer + +16 + +An old wizard + +\- +
+302 + +Kharid Scorpion + +21 + +a smaller less dangerous scorpion + +\- +
+303 + +Kharid Scorpion + +21 + +a smaller less dangerous scorpion + +\- +
+304 + +Kharid Scorpion + +21 + +a smaller less dangerous scorpion + +\- +
+305 + +Barbarian guard + +16 + +Not very civilised + +\- +
+306 + +Bartender + +0 + +I could get a beer off him + +\- +
+307 + +man + +9 + +A well dressed nobleman + +\- +
+308 + +gem trader + +0 + +He sells gems + +\- +
+309 + +Dimintheis + +9 + +A well dressed nobleman + +\- +
+310 + +chef + +15 + +A busy looking chef + +\- +
+311 + +Hobgoblin + +48 + +An ugly green creature + +X +
+312 + +Ogre + +58 + +A large dim looking humanoid + +X +
+313 + +Boot the Dwarf + +18 + +A short angry guy + +\- +
+314 + +Wizard + +16 + +A young wizard + +\- +
+315 + +Chronozon + +121 + +Chronozon the blood demon + +X +
+316 + +Captain Barnaby + +20 + +An old sailor + +\- +
+317 + +Customs Official + +16 + +She's here to stop smugglers + +\- +
+318 + +Man + +9 + +One of Runescape's citizens + +X +
+319 + +farmer + +15 + +An humble peasant + +X +
+320 + +Warrior + +27 + +A skilled fighter + +X +
+321 + +Guard + +28 + +He tries to keep the law and order around here + +X +
+322 + +Knight + +56 + +A knight of Ardougne + +X +
+323 + +Paladin + +71 + +A paladin of Ardougne + +X +
+324 + +Hero + +83 + +A Hero of Ardougne + +X +
+325 + +Baker + +15 + +He sells hot baked bread + +\- +
+326 + +silk merchant + +0 + +He buys silk + +\- +
+327 + +Fur trader + +0 + +A buyer and seller of animal furs + +\- +
+328 + +silver merchant + +0 + +He deals in silver + +\- +
+329 + +spice merchant + +15 + +He sells exotic spices + +\- +
+330 + +gem merchant + +0 + +He sells gems + +\- +
+331 + +Zenesha + +25 + +A shopkeeper of some sort + +\- +
+332 + +Kangai Mau + +0 + +A tribesman + +\- +
+333 + +Wizard Cromperty + +12 + +An old wizard + +\- +
+334 + +RPDT employee + +12 + +A delivery man + +\- +
+335 + +Horacio + +8 + +An old gardener + +\- +
+336 + +Aemad + +16 + +He helps run the adventurers store + +\- +
+337 + +Kortan + +16 + +He helps run the adventurers store + +\- +
+338 + +zoo keeper + +20 + +He looks after Ardougne city zoo + +X +
+339 + +Make over mage + +0 + +He can change how I look + +\- +
+340 + +Bartender + +0 + +I could get a beer off him + +\- +
+341 + +chuck + +0 + +A wood merchant + +\- +
+342 + +Rogue + +21 + +He needs a shave + +X +
+343 + +Shadow spider + +53 + +Is it a spider or is it a shadow + +X +
+344 + +Fire Giant + +109 + +A big guy with red glowing skin + +X +
+345 + +Grandpa Jack + +20 + +A wistful old man + +\- +
+346 + +Sinister stranger + +43 + +not your average fisherman + +\- +
+347 + +Bonzo + +30 + +Fishing competition organiser + +\- +
+348 + +Forester + +21 + +He looks after McGrubor's wood + +X +
+349 + +Morris + +30 + +Fishing competition organiser + +\- +
+350 + +Brother Omad + +13 + +A Peaceful monk + +\- +
+351 + +Thief + +21 + +A dastardly blanket thief + +X +
+352 + +Head Thief + +34 + +A dastardly blanket thief + +X +
+353 + +Big Dave + +15 + +A well built fisherman + +\- +
+354 + +Joshua + +15 + +A grumpy fisherman + +\- +
+355 + +Mountain Dwarf + +18 + +A short angry guy + +\- +
+356 + +Mountain Dwarf + +28 + +A short angry guy + +X +
+357 + +Brother Cedric + +13 + +A Peaceful monk + +\- +
+358 + +Necromancer + +34 + +A crazy evil necromancer + +X +
+359 + +zombie + +24 + +The living dead + +X +
+360 + +Lucien + +21 + +He walks with a slight limp + +\- +
+361 + +The Fire warrior of lesarkus + +63 + +A strange red humanoid + +X +
+362 + +guardian of Armadyl + +54 + +A worshipper of Armadyl + +\- +
+363 + +guardian of Armadyl + +54 + +A worshipper of Armadyl + +\- +
+364 + +Lucien + +21 + +He walks with a limp + +X +
+365 + +winelda + +25 + +A witch + +\- +
+366 + +Brother Kojo + +13 + +A Peaceful monk + +\- +
+367 + +Dungeon Rat + +16 + +Overgrown vermin + +X +
+368 + +Master fisher + +15 + +The man in charge of the fishing guild + +\- +
+369 + +Orven + +30 + +He runs a fish exchange store + +\- +
+370 + +Padik + +30 + +He runs a fish exchange store + +\- +
+371 + +Shopkeeper + +0 + +He smells of fish + +\- +
+372 + +Lady servil + +2 + +She look's wealthy + +\- +
+373 + +Guard + +28 + +It's one of General Khazard's guard's + +\- +
+374 + +Guard + +28 + +It's one of General Khazard's guard's + +\- +
+375 + +Guard + +28 + +It's one of General Khazard's guard's + +\- +
+376 + +Guard + +28 + +It's one of General Khazard's guard's + +\- +
+377 + +Jeremy Servil + +0 + +A young squire + +\- +
+378 + +Justin Servil + +0 + +Jeremy servil's father + +\- +
+379 + +fightslave joe + +0 + +He look's mistreated and weak + +\- +
+380 + +fightslave kelvin + +0 + +He look's mistreated and weak + +\- +
+381 + +local + +7 + +A scruffy looking chap + +\- +
+382 + +Khazard Bartender + +0 + +A tough looking barman + +\- +
+383 + +General Khazard + +100 + +He look's real nasty + +X +
+384 + +Khazard Ogre + +58 + +Khazard's strongest ogre warrior + +X +
+385 + +Guard + +28 + +It's one of General Khazard's guard's + +\- +
+386 + +Khazard Scorpion + +46 + +A large angry scorpion + +X +
+387 + +hengrad + +0 + +He look's mistreated and weak + +\- +
+388 + +Bouncer + +122 + +Hello nice doggy + +X +
+389 + +Stankers + +0 + +A cheerful looking fellow + +\- +
+390 + +Docky + +20 + +An old sailor + +\- +
+391 + +Shopkeeper + +0 + +Maybe he'd like to buy some of my junk + +\- +
+392 + +Fairy queen + +2 + +A very little queen + +\- +
+393 + +Merlin + +12 + +An old wizard + +\- +
+394 + +Crone + +25 + +A strange old lady + +\- +
+395 + +High priest of entrana + +13 + +A Peaceful monk + +\- +
+396 + +elkoy + +3 + +It's a tree gnome + +\- +
+397 + +remsai + +3 + +It's a tree gnome + +\- +
+398 + +bolkoy + +3 + +It's a tree gnome + +\- +
+399 + +local gnome + +3 + +It's a young tree gnome + +X +
+400 + +bolren + +3 + +It's a gnome he look's important + +\- +
+401 + +Black Knight titan + +146 + +He is blocking the way + +X +
+402 + +kalron + +3 + +he look's lost + +X +
+403 + +brother Galahad + +13 + +A Peaceful monk + +\- +
+404 + +tracker 1 + +3 + +It's a tree gnome + +\- +
+405 + +tracker 2 + +3 + +It's a tree gnome + +\- +
+406 + +tracker 3 + +3 + +It's a tree gnome + +\- +
+407 + +Khazard troop + +28 + +It's one of General Khazard's warrior's + +X +
+408 + +commander montai + +3 + +It's a tree gnome + +\- +
+409 + +gnome troop + +3 + +It's a tree gnome trooper + +X +
+410 + +khazard warlord + +100 + +He look's real nasty + +X +
+411 + +Sir Percival + +56 + +He's covered in pieces of straw + +\- +
+412 + +Fisher king + +30 + +an old king + +\- +
+413 + +maiden + +2 + +She has a far away look in her eyes + +\- +
+414 + +Fisherman + +30 + +an old fisherman + +\- +
+415 + +King Percival + +56 + +The new fisher king + +\- +
+416 + +unhappy peasant + +25 + +He looks tired and hungry + +X +
+417 + +happy peasant + +25 + +He looks well fed and full of energy + +X +
+418 + +ceril + +9 + +It's Sir ceril carnillean a local noblemen + +\- +
+419 + +butler + +9 + +It's the carnillean family butler + +\- +
+420 + +carnillean guard + +28 + +It's a carnillean family guard + +X +
+421 + +Tribesman + +39 + +A primative warrior + +X +
+422 + +henryeta + +2 + +It's a wealthy looking woman + +\- +
+423 + +philipe + +0 + +It's a young well dressed boy + +\- +
+424 + +clivet + +20 + +A strange looking man in black + +\- +
+425 + +cult member + +20 + +An suspicous looking man in black + +X +
+426 + +Lord hazeel + +100 + +He could do with some sun + +X +
+427 + +alomone + +42 + +A musculer looking man in black + +\- +
+428 + +Khazard commander + +41 + +It's one of General Khazard's commander's + +X +
+429 + +claus + +15 + +the carnillean family cook + +\- +
+430 + +1st plague sheep + +0 + +The sheep has the plague + +\- +
+431 + +2nd plague sheep + +0 + +The sheep has the plague + +\- +
+432 + +3rd plague sheep + +0 + +The sheep has the plague + +\- +
+433 + +4th plague sheep + +0 + +The sheep has the plague + +\- +
+434 + +Farmer brumty + +15 + +He looks after livestock in this area + +\- +
+435 + +Doctor orbon + +15 + +A local doctor + +\- +
+436 + +Councillor Halgrive + +20 + +A town counceller + +\- +
+437 + +Edmond + +20 + +A local civilian + +\- +
+438 + +Citizen + +11 + +He look's tired + +X +
+439 + +Citizen + +10 + +He look's frightened + +X +
+440 + +Citizen + +12 + +She look's frustrated + +X +
+441 + +Citizen + +20 + +He look's angry + +X +
+442 + +Citizen + +15 + +He look's disillusioned + +X +
+443 + +Jethick + +15 + +A cynical old man + +\- +
+444 + +Mourner + +2 + +A mourner or plague healer + +\- +
+445 + +Mourner + +2 + +A mourner or plague healer + +\- +
+446 + +Ted Rehnison + +9 + +The head of the Rehnison family + +\- +
+447 + +Martha Rehnison + +12 + +A fairly poor looking woman + +\- +
+448 + +Billy Rehnison + +45 + +The Rehnisons eldest son + +\- +
+449 + +Milli Rehnison + +39 + +She doesn't seem very happy + +\- +
+450 + +Alrena + +2 + +She look's concerned + +\- +
+451 + +Mourner + +2 + +A mourner or plague healer + +\- +
+452 + +Clerk + +2 + +A bueracratic administrator + +\- +
+453 + +Carla + +2 + +She look's upset + +\- +
+454 + +Bravek + +30 + +The city warder of West Ardougne + +\- +
+455 + +Caroline + +2 + +A well dressed middle aged lady + +\- +
+456 + +Holgart + +20 + +An old sailor + +\- +
+457 + +Holgart + +20 + +An old sailor + +\- +
+458 + +Holgart + +20 + +An old sailor + +\- +
+459 + +kent + +45 + +caroline's husband + +\- +
+460 + +bailey + +15 + +the fishing platform cook + +\- +
+461 + +kennith + +0 + +A young scared looking boy + +\- +
+462 + +Platform Fisherman + +30 + +an emotionless fisherman + +X +
+463 + +Platform Fisherman + +30 + +an emotionless fisherman + +X +
+464 + +Platform Fisherman + +30 + +an emotionless fisherman + +X +
+465 + +Elena + +2 + +She doesn't look too happy + +\- +
+466 + +jinno + +30 + +He doesn't seem to mind his lack of legs + +\- +
+467 + +Watto + +30 + +He doesn't seem to mind his lack of legs + +\- +
+468 + +Recruiter + +51 + +A member of the Ardougne royal army + +\- +
+469 + +Head mourner + +2 + +In charge of people with silly outfits + +\- +
+470 + +Almera + +2 + +A woman of the wilderness + +\- +
+471 + +hudon + +0 + +A young boisterous looking lad + +\- +
+472 + +hadley + +30 + +A happy looking fellow + +\- +
+473 + +Rat + +7 + +Overgrown vermin + +X +
+474 + +Combat instructor + +51 + +He will tell me how to fight + +\- +
+475 + +golrie + +3 + +It's a tree gnome + +\- +
+476 + +Guide + +1 + +She gives hints to new adventurers + +\- +
+477 + +King Black Dragon + +245 + +The biggest meanest dragon around + +X +
+478 + +cooking instructor + +15 + +Talk to him to learn about runescape food + +\- +
+479 + +fishing instructor + +15 + +He smells of fish + +\- +
+480 + +financial advisor + +0 + +He knows about money + +\- +
+481 + +gerald + +15 + +An old fisherman + +\- +
+482 + +mining instructor + +18 + +A short angry guy + +\- +
+483 + +Elena + +2 + +She looks concerned + +\- +
+484 + +Omart + +30 + +A nervous looking fellow + +\- +
+485 + +Bank assistant + +9 + +She can look after my stuff + +\- +
+486 + +Jerico + +15 + +He looks friendly enough + +\- +
+487 + +Kilron + +15 + +He looks shifty + +\- +
+488 + +Guidor's wife + +2 + +She looks rather concerned + +\- +
+489 + +Quest advisor + +51 + +I wonder what advise he has to impart + +\- +
+490 + +chemist + +4 + +human + +\- +
+491 + +Mourner + +2 + +A mourner or plague healer + +\- +
+492 + +Mourner + +2 + +A mourner or plague healer + +\- +
+493 + +Wilderness guide + +29 + +He's ready for a fight + +\- +
+494 + +Magic Instructor + +12 + +An old wizard + +\- +
+495 + +Mourner + +22 + +A mourner or plague healer + +X +
+496 + +Community instructor + +2 + +This is the last advisor - honest + +\- +
+497 + +boatman + +20 + +An old sailor + +\- +
+498 + +skeleton mage + +21 + +It rattles as it walks + +X +
+499 + +controls guide + +29 + +He's ready for a fight + +\- +
+500 + +nurse sarah + +2 + +She's quite a looker + +\- +
+501 + +Tailor + +29 + +He's ready for a party + +\- +
+502 + +Mourner + +25 + +A mourner or plague healer + +X +
+503 + +Guard + +28 + +He tries to keep order around here + +\- +
+504 + +Chemist + +29 + +He looks clever enough + +\- +
+505 + +Chancy + +29 + +He's ready for a bet + +\- +
+506 + +Hops + +29 + +He's drunk + +\- +
+507 + +DeVinci + +29 + +He has a colourful personality + +\- +
+508 + +Guidor + +29 + +He's not that ill + +\- +
+509 + +Chancy + +29 + +He's ready for a bet + +\- +
+510 + +Hops + +29 + +He's drunk + +\- +
+511 + +DeVinci + +29 + +He has a colourful personality + +\- +
+512 + +king Lathas + +30 + +King Lanthas of east ardounge + +\- +
+513 + +Head wizard + +12 + +He runs the wizards guild + +\- +
+514 + +Magic store owner + +12 + +An old wizard + +\- +
+515 + +Wizard Frumscone + +12 + +A confused looking wizard + +\- +
+516 + +target practice zombie + +24 + +The living dead + +X +
+517 + +Trufitus + +6 + +A wise old witch doctor + +\- +
+518 + +Colonel Radick + +51 + +A soldier of the town of Yanille + +X +
+519 + +Soldier + +28 + +A soldier of the town of Yanille + +X +
+520 + +Bartender + +0 + +I could get a beer off him + +\- +
+521 + +Jungle Spider + +47 + +A venomous deadly spider + +X +
+522 + +Jiminua + +0 + +She looks very interested in selling some of her wares. + +\- +
+523 + +Jogre + +58 + +An aggressive humanoid + +X +
+524 + +Guard + +28 + +He tries to keep order around here + +\- +
+525 + +Ogre + +58 + +Useful for ranged training + +X +
+526 + +Guard + +28 + +He tries to keep order around here + +\- +
+527 + +Guard + +28 + +He tries to keep order around here + +\- +
+528 + +shop keeper + +0 + +he sells weapons + +\- +
+529 + +Bartender + +0 + +I could get a beer off him + +\- +
+530 + +Frenita + +0 + +runs a cookery shop + +\- +
+531 + +Ogre chieftan + +78 + +A slightly bigger uglier ogre + +X +
+532 + +rometti + +3 + +It's a well dressed tree gnome + +\- +
+533 + +Rashiliyia + +80 + +A willowy ethereal being who floats above the ground + +\- +
+534 + +Blurberry + +3 + +It's a red faced tree gnome + +\- +
+535 + +Heckel funch + +3 + +It's another jolly tree gnome + +\- +
+536 + +Aluft Gianne + +3 + +It's a tree gnome chef + +\- +
+537 + +Hudo glenfad + +3 + +It's another jolly tree gnome + +\- +
+538 + +Irena + +0 + +human + +\- +
+539 + +Mosol + +0 + +A jungle warrior + +\- +
+540 + +Gnome banker + +3 + +It's tree gnome banker + +\- +
+541 + +King Narnode Shareen + +3 + +It's a gnome he look's important + +\- +
+542 + +UndeadOne + +62 + +One of Rashaliyas Minions + +X +
+543 + +Drucas + +20 + +engraver + +\- +
+544 + +tourist + +29 + +human + +\- +
+545 + +King Narnode Shareen + +3 + +It's a gnome he look's important + +\- +
+546 + +Hazelmere + +3 + +An ancient looking gnome + +\- +
+547 + +Glough + +3 + +An rough looking gnome + +\- +
+548 + +Shar + +0 + +Concerned about the economy + +\- +
+549 + +Shantay + +0 + +human + +\- +
+550 + +charlie + +0 + +Poor guy? + +X +
+551 + +Gnome guard + +31 + +A tree gnome guard + +X +
+552 + +Gnome pilot + +3 + +He can fly the glider + +\- +
+553 + +Mehman + +29 + +local + +\- +
+554 + +Ana + +16 + +This lady doesn't look as if she belongs here. + +\- +
+555 + +Chaos Druid warrior + +44 + +A crazy evil druid + +X +
+556 + +Gnome pilot + +3 + +He can fly the glider + +\- +
+557 + +Shipyard worker + +44 + +He look's busy + +X +
+558 + +Shipyard worker + +44 + +He look's busy + +X +
+559 + +Shipyard worker + +44 + +He look's busy + +X +
+560 + +Shipyard foreman + +62 + +He look's busy + +\- +
+561 + +Shipyard foreman + +62 + +He look's busy + +\- +
+562 + +Gnome guard + +23 + +A tree gnome guard + +X +
+563 + +Femi + +3 + +It's a little tree gnome + +\- +
+564 + +Femi + +3 + +It's a little tree gnome + +\- +
+565 + +Anita + +3 + +It's a little tree gnome + +\- +
+566 + +Glough + +3 + +An rough looking gnome + +\- +
+567 + +Salarin the twisted + +69 + +A crazy evil druid + +X +
+568 + +Black Demon + +175 + +A big scary jet black demon + +X +
+569 + +Gnome pilot + +3 + +He can fly the glider + +\- +
+570 + +Gnome pilot + +3 + +He can fly the glider + +\- +
+571 + +Gnome pilot + +3 + +He can fly the glider + +\- +
+572 + +Gnome pilot + +3 + +He can fly the glider + +\- +
+573 + +Sigbert the Adventurer + +56 + +A Warrior + +\- +
+574 + +Yanille Watchman + +33 + +He watches out for invading ogres + +X +
+575 + +Tower guard + +33 + +He stops people going up the tower + +\- +
+576 + +Gnome Trainer + +11 + +He can advise on training + +\- +
+577 + +Gnome Trainer + +11 + +He can advise on training + +\- +
+578 + +Gnome Trainer + +11 + +He can advise on training + +\- +
+579 + +Gnome Trainer + +11 + +He can advise on training + +\- +
+580 + +Blurberry barman + +3 + +He serves cocktails + +\- +
+581 + +Gnome waiter + +3 + +He can serve you gnome food + +\- +
+582 + +Gnome guard + +27 + +A tree gnome guard + +X +
+583 + +Gnome child + +3 + +that's a little gnome + +X +
+584 + +Earth warrior + +52 + +A strange inhuman warrior + +X +
+585 + +Gnome child + +3 + +He's a little fellow + +X +
+586 + +Gnome child + +3 + +hello little gnome + +X +
+587 + +Gulluck + +10 + +He sells weapons + +\- +
+588 + +Gunnjorn + +16 + +Not civilised looking + +\- +
+589 + +Zadimus + +0 + +Ghostly Visage of the dead Zadimus + +\- +
+590 + +Brimstail + +3 + +An ancient looking gnome + +\- +
+591 + +Gnome child + +3 + +He's a little fellow + +\- +
+592 + +Gnome local + +9 + +A tree gnome villager + +X +
+593 + +Gnome local + +3 + +A tree gnome villager + +X +
+594 + +Moss Giant + +62 + +his beard seems to have a life of its own + +X +
+595 + +Gnome Baller + +70 + +A tree gnome ball player + +X +
+596 + +Goalie + +70 + +A gnome ball goal catcher + +\- +
+597 + +Gnome Baller + +70 + +A tree gnome ball player + +X +
+598 + +Gnome Baller + +70 + +A tree gnome ball player + +X +
+599 + +Gnome Baller + +70 + +A tree gnome ball player + +X +
+600 + +Gnome Baller + +70 + +A tree gnome ball player + +X +
+601 + +Referee + +3 + +He controls the game + +\- +
+602 + +Gnome Baller + +70 + +A tree gnome ball player + +X +
+603 + +Gnome Baller + +70 + +A tree gnome ball player + +X +
+604 + +Gnome Baller + +70 + +A tree gnome ball player + +X +
+605 + +Gnome Baller + +70 + +A tree gnome ball player + +X +
+606 + +Gnome Baller + +70 + +A tree gnome ball player + +X +
+607 + +Gnome Baller + +70 + +A tree gnome ball player + +X +
+608 + +Gnome Baller + +70 + +A tree gnome ball player + +X +
+609 + +Gnome Baller + +70 + +He's on your team + +\- +
+610 + +Gnome Baller + +70 + +He's on your team + +\- +
+611 + +Cheerleader + +3 + +It's a little tree gnome + +\- +
+612 + +Cheerleader + +3 + +It's a little tree gnome + +\- +
+613 + +Nazastarool Zombie + +83 + +One of Rashaliyas Minions + +X +
+614 + +Nazastarool Skeleton + +83 + +One of Rashaliyas Minions + +X +
+615 + +Nazastarool Ghost + +83 + +One of Rashaliyas Minions + +X +
+616 + +Fernahei + +6 + +An enthusiastic fishing shop owner + +\- +
+617 + +Jungle Banker + +9 + +He can look after my money + +\- +
+618 + +Cart Driver + +15 + +He drives the cart + +\- +
+619 + +Cart Driver + +15 + +He drives the cart + +\- +
+620 + +Obli + +0 + +An intelligent looking shop owner + +\- +
+621 + +Kaleb + +0 + +This is Kaleb Paramaya - a warm and friendly inn owner + +\- +
+622 + +Yohnus + +0 + +This is Yohnus - he runs the local blacksmiths + +\- +
+623 + +Serevel + +0 + +This is Serevel - he sells tickets for the 'Lady of the Waves' + +\- +
+624 + +Yanni + +0 + +Yanni Salika - He buys and sells antiques. + +\- +
+625 + +Official + +3 + +He helps the referee + +\- +
+626 + +Koftik + +16 + +The kings top tracker + +\- +
+627 + +Koftik + +16 + +The kings top tracker + +\- +
+628 + +Koftik + +16 + +The kings top tracker + +\- +
+629 + +Koftik + +16 + +The kings top tracker + +\- +
+630 + +Blessed Vermen + +14 + +A undead servent of iban + +X +
+631 + +Blessed Spider + +35 + +One of iban's eight legged friends + +X +
+632 + +Paladin + +71 + +A paladin of Ardougne + +X +
+633 + +Paladin + +71 + +A paladin of Ardougne + +X +
+634 + +slave + +16 + +He seems possessed + +X +
+635 + +slave + +16 + +He seems possessed + +X +
+636 + +slave + +16 + +He seems to have been here a while + +X +
+637 + +slave + +16 + +He seems possessed + +X +
+638 + +slave + +16 + +He seems to have been here a while + +X +
+639 + +slave + +16 + +He seems possessed + +X +
+640 + +slave + +16 + +He seems to have been here a while + +X +
+641 + +Kalrag + +78 + +I think this is one of Ibans pets + +X +
+642 + +Niloof + +18 + +A short angry guy + +\- +
+643 + +Kardia the Witch + +25 + +She's got warts + +\- +
+644 + +Souless + +16 + +He seems an empty shell + +X +
+645 + +Othainian + +78 + +big red and incredibly evil + +X +
+646 + +Doomion + +98 + +A big scary jet black demon + +X +
+647 + +Holthion + +78 + +big red and incredibly evil + +X +
+648 + +Klank + +18 + +A short angry guy + +\- +
+649 + +Iban + +21 + +You feel terror just looking at him + +\- +
+650 + +Koftik + +16 + +The kings top tracker + +\- +
+651 + +Goblin guard + +48 + +An imposing green creature + +X +
+652 + +Observatory Professor + +4 + +He works in the observatory + +\- +
+653 + +Ugthanki + +45 + +A dangerous type of spitting camel that can temporarily blind an +opponent. + +X +
+654 + +Observatory assistant + +4 + +The Professor's assistant + +\- +
+655 + +Souless + +24 + +A servent to zamorak + +X +
+656 + +Dungeon spider + +22 + +A nasty poisonous arachnid + +X +
+657 + +Kamen + +18 + +A short angry guy + +\- +
+658 + +Iban disciple + +19 + +An evil follower of Iban + +X +
+659 + +Koftik + +16 + +The kings top tracker + +\- +
+660 + +Goblin + +19 + +These goblins have grown strong + +X +
+661 + +Chadwell + +16 + +A sturdy looking gent + +\- +
+662 + +Professor + +4 + +The owner of the observatory + +\- +
+663 + +San Tojalon + +120 + +The animated spirit of San Tojalon + +X +
+664 + +Ghost + +29 + +A doomed victim of zamorak + +X +
+665 + +Spirit of Scorpius + +100 + +The undead spirit of the follower of Zamorak + +\- +
+666 + +Scorpion + +21 + +There are nasty scorpions around this grave + +\- +
+667 + +Dark Mage + +0 + +He works in the ways of dark magic + +\- +
+668 + +Mercenary + +50 + +He seems to be guarding an area + +X +
+669 + +Mercenary Captain + +64 + +He's in control of the local guards. + +X +
+670 + +Mercenary + +39 + +He seems to be guarding an area + +X +
+671 + +Mining Slave + +16 + +A chained slave forced to mine rocks. + +X +
+672 + +Watchtower wizard + +12 + +A learned man + +\- +
+673 + +Ogre Shaman + +100 + +An intelligent form of ogre + +\- +
+674 + +Skavid + +3 + +Servant race to the ogres + +\- +
+675 + +Ogre guard + +78 + +These ogres protect the city + +\- +
+676 + +Ogre guard + +78 + +These ogres protect the city + +\- +
+677 + +Ogre guard + +78 + +These ogres protect the city + +\- +
+678 + +Skavid + +3 + +Servant race to the ogres + +\- +
+679 + +Skavid + +3 + +Servant race to the ogres + +\- +
+680 + +Og + +78 + +The chieftan of this ogre tribe + +\- +
+681 + +Grew + +78 + +The chieftan of this ogre tribe + +\- +
+682 + +Toban + +78 + +The chieftan of this ogre tribe + +\- +
+683 + +Gorad + +78 + +A high ranking ogre official + +X +
+684 + +Ogre guard + +96 + +this creature looks very tough + +X +
+685 + +Yanille Watchman + +33 + +A captured guard of Yanille + +\- +
+686 + +Ogre merchant + +58 + +He sells ogre-inspired items + +\- +
+687 + +Ogre trader + +58 + +He trades in metals + +\- +
+688 + +Ogre trader + +58 + +He trades in food + +\- +
+689 + +Ogre trader + +58 + +He trades in food + +\- +
+690 + +Mercenary + +39 + +He seems to be guarding an area + +X +
+691 + +City Guard + +78 + +high ranking ogre guards + +\- +
+692 + +Mercenary + +39 + +He seems to be guarding this area + +X +
+693 + +Lawgof + +18 + +He guards the mines + +\- +
+694 + +Dwarf + +18 + +A short angry guy + +X +
+695 + +lollk + +18 + +He looks scared + +\- +
+696 + +Skavid + +3 + +Servant race to the ogres + +\- +
+697 + +Ogre guard + +78 + +These ogres protect the city + +X +
+698 + +Nulodion + +18 + +He's the head of black guard weapon development + +\- +
+699 + +Dwarf + +18 + +A short angry guy + +X +
+700 + +Al Shabim + +0 + +The leader of a nomadic Bedabin desert people - sometimes referred to as +the 'Tenti's' + +\- +
+701 + +Bedabin Nomad + +0 + +A Bedabin nomad - they live in the harshest extremes in the desert + +\- +
+702 + +Captain Siad + +48 + +He's in control of the whole mining camp. + +X +
+703 + +Bedabin Nomad Guard + +70 + +A Bedabin nomad guard - he's protecting something important + +X +
+704 + +Ogre citizen + +58 + +A denizen of Gu'Tanoth + +X +
+705 + +Rock of ages + +150 + +A huge boulder + +X +
+706 + +Ogre + +58 + +A large dim looking humanoid + +X +
+707 + +Skavid + +3 + +Servant race to the ogres + +\- +
+708 + +Skavid + +3 + +Servant race to the ogres + +\- +
+709 + +Skavid + +3 + +Servant race to the ogres + +\- +
+710 + +Draft Mercenary Guard + +50 + +He's quickly drafted in to deal with trouble makers + +X +
+711 + +Mining Cart Driver + +15 + +He drives the mining cart + +\- +
+712 + +kolodion + +12 + +He runs the mage arena + +\- +
+713 + +kolodion + +12 + +He runs the mage arena + +X +
+714 + +Gertrude + +20 + +A busy housewife + +\- +
+715 + +Shilop + +0 + +A young boisterous looking lad + +\- +
+716 + +Rowdy Guard + +50 + +He looks as if he's spoiling for trouble + +X +
+717 + +Shantay Pass Guard + +32 + +He seems to be guarding the Shantay Pass + +X +
+718 + +Rowdy Slave + +16 + +A slave who's looking for trouble. + +X +
+719 + +Shantay Pass Guard + +32 + +He seems to be guarding the Shantay Pass + +\- +
+720 + +Assistant + +0 + +He is an assistant to Shantay and helps him to run the pass. + +\- +
+721 + +Desert Wolf + +31 + +A vicious Desert wolf + +X +
+722 + +Workman + +9 + +This person is working on the site + +\- +
+723 + +Examiner + +2 + +As you examine the examiner you examine that she is indeed an examiner!! + +\- +
+724 + +Student + +0 + +A student busily digging! + +\- +
+725 + +Student + +20 + +A student busily digging! + +\- +
+726 + +Guide + +12 + +This person specialises in panning for gold + +\- +
+727 + +Student + +18 + +A student busily digging! + +\- +
+728 + +Archaeological expert + +15 + +An expert on archaeology! + +\- +
+729 + +civillian + +18 + +He looks aggitated! + +X +
+730 + +civillian + +0 + +She looks aggitated! + +\- +
+731 + +civillian + +0 + +She looks aggitated! + +\- +
+732 + +civillian + +15 + +He looks aggitated! + +\- +
+733 + +Murphy + +15 + +The man in charge of the fishing trawler + +\- +
+734 + +Murphy + +15 + +The man in charge of the fishing trawler + +\- +
+735 + +Sir Radimus Erkle + +10 + +A huge muscular man in charge of the Legends Guild + +\- +
+736 + +Legends Guild Guard + +50 + +This guard is protecting the entrance to the Legends Guild. + +\- +
+737 + +Escaping Mining Slave + +16 + +An emancipated slave with cool Desert Clothes. + +\- +
+738 + +Workman + +9 + +This person is working in the mine + +\- +
+739 + +Murphy + +15 + +The man in charge of the fishing trawler + +\- +
+740 + +Echned Zekin + +50 + +An evil spirit of the underworld. + +\- +
+741 + +Donovan the Handyman + +9 + +It's the family odd jobs man + +\- +
+742 + +Pierre the Dog Handler + +9 + +It's the guy who looks after the family guard dog + +\- +
+743 + +Hobbes the Butler + +9 + +It's the family butler + +\- +
+744 + +Louisa The Cook + +0 + +It's the family cook + +\- +
+745 + +Mary The Maid + +25 + +The family maid + +\- +
+746 + +Stanford The Gardener + +8 + +It's the family Gardener + +\- +
+747 + +Guard + +28 + +He looks like he's in over his head here + +\- +
+748 + +Guard Dog + +46 + +He doesn't seem pleased to see me + +\- +
+749 + +Guard + +8 + +***EMPTY PLEASE USE OR REPLACE*** + +\- +
+750 + +Man + +9 + +A thirsty looking man + +\- +
+751 + +Anna Sinclair + +9 + +The first child of the late Lord Sinclair + +\- +
+752 + +Bob Sinclair + +9 + +The second child of the late Lord Sinclair + +\- +
+753 + +Carol Sinclair + +9 + +The third child of the late Lord Sinclair + +\- +
+754 + +David Sinclair + +9 + +The fourth child of the late Lord Sinclair + +\- +
+755 + +Elizabeth Sinclair + +9 + +The fifth child of the late Lord Sinclair + +\- +
+756 + +Frank Sinclair + +9 + +The sixth child of the late Lord Sinclair + +\- +
+757 + +kolodion + +65 + +He's a shape shifter + +X +
+758 + +kolodion + +68 + +He's a shape shifter + +X +
+759 + +kolodion + +46 + +He's a shape shifter + +X +
+760 + +kolodion + +98 + +He's a shape shifter + +X +
+761 + +Irvig Senay + +125 + +The animated spirit of Irvig Senay + +X +
+762 + +Ranalph Devere + +130 + +The animated spirit of Ranalph Devere + +X +
+763 + +Poison Salesman + +7 + +Peter Potter - Poison Purveyor + +\- +
+764 + +Gujuo + +60 + +A tall charismatic looking jungle native - he approaches with confidence + +\- +
+765 + +Jungle Forester + +15 + +A woodsman who specialises in large and exotic timber + +\- +
+766 + +Ungadulu + +75 + +An ancient looking Shaman + +X +
+767 + +Ungadulu + +75 + +An ancient looking Shaman - he looks very strange with glowing red +eyes... + +X +
+768 + +Death Wing + +80 + +A supernatural creature of the underworld + +X +
+769 + +Nezikchened + +172 + +An ancient powerful Demon of the Underworld... + +X +
+770 + +Dwarf Cannon engineer + +18 + +He's the head of black guard weapon development + +\- +
+771 + +Dwarf commander + +18 + +He guards the mines + +\- +
+772 + +Viyeldi + +80 + +The spirit of a dead sorcerer + +X +
+773 + +Nurmof + +18 + +He sells pickaxes + +\- +
+774 + +Fatigue expert + +10 + +He looks wide awake + +\- +
+775 + +Karamja Wolf + +61 + +A hungry + +X +
+776 + +Jungle Savage + +87 + +A savage and fearless Jungle warrior + +X +
+777 + +Oomlie Bird + +32 + +A variety of flightless jungle fowl - it has a sharp beak and a bad +temper. + +X +
+778 + +Sidney Smith + +30 + +Sidney Smith - Certification clerk + +\- +
+779 + +Siegfried Erkle + +25 + +An eccentric shop keeper - related to the Grand Vizier of the Legends +Guild + +\- +
+780 + +Tea seller + +9 + +He has delicious tea to buy + +\- +
+781 + +Wilough + +0 + +A young son of gertrudes + +\- +
+782 + +Philop + +0 + +Gertrudes youngest + +\- +
+783 + +Kanel + +0 + +Gertrudes youngest's twin brother + +\- +
+784 + +chamber guardian + +15 + +He hasn't seen much sun latley + +\- +
+785 + +Sir Radimus Erkle + +10 + +A huge muscular man in charge of the Legends Guild + +\- +
+786 + +Pit Scorpion + +35 + +Very vicious little scorpions + +X +
+787 + +Shadow Warrior + +64 + +A sinsistar shadowy figure + +X +
+788 + +Fionella + +25 + +She runs the legend's general store + +\- +
+789 + +Battle mage + +52 + +He kills in the name of guthix + +X +
+790 + +Battle mage + +52 + +He kills in the name of zamarok + +X +
+791 + +Battle mage + +52 + +He kills in the name of Saradomin + +X +
+792 + +Gundai + +15 + +He must get lonely out here + +\- +
+793 + +Lundail + +15 + +He sells rune stones + +\- +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+id + +object name + +description +
+0 + +Tree + +A pointy tree +
+1 + +Tree + +A leafy tree +
+2 + +Well + +The bucket is missing +
+3 + +Table + +A mighty fine table +
+4 + +Treestump + +Someone has chopped this tree down! +
+5 + +Ladder + +it's a ladder leading upwards +
+6 + +Ladder + +it's a ladder leading downwards +
+7 + +Chair + +A sturdy looking chair +
+8 + +logs + +A pile of logs +
+9 + +Longtable + +It has nice candles +
+10 + +Throne + +It looks fancy and expensive +
+11 + +Range + +A hot well stoked range +
+12 + +Gravestone + +R I P +
+13 + +Gravestone + +Its covered in moss +
+14 + +Bed + +Ooh nice blankets +
+15 + +Bed + +Its a bed - wow +
+16 + +bar + +Mmm beer +
+17 + +Chest + +Perhaps I should search it +
+18 + +Chest + +I wonder what is inside... +
+19 + +Altar + +Its an Altar +
+20 + +Post + +What am I examining posts for +
+21 + +Support + +A wooden pole +
+22 + +barrel + +Its empty +
+23 + +Bench + +It doesn't look very comfy +
+24 + +Portrait + +A painting of our beloved king +
+25 + +candles + +Candles on a fancy candlestick +
+26 + +fountain + +The water looks fairly clean +
+27 + +landscape + +An oil painting +
+28 + +Millstones + +You can use these to make flour +
+29 + +Counter + +It's the shop counter +
+30 + +Stall + +A market stall +
+31 + +Target + +Coming soon archery practice +
+32 + +PalmTree + +A nice palm tree +
+33 + +PalmTree + +A shady palm tree +
+34 + +Fern + +A leafy plant +
+35 + +Cactus + +It looks very spikey +
+36 + +Bullrushes + +I wonder why it's called a bullrush +
+37 + +Flower + +Ooh thats pretty +
+38 + +Mushroom + +I think it's a poisonous one +
+39 + +Coffin + +This coffin is closed +
+40 + +Coffin + +This coffin is open +
+41 + +stairs + +These lead upstairs +
+42 + +stairs + +These lead downstairs +
+43 + +stairs + +These lead upstairs +
+44 + +stairs + +These lead downstairs +
+45 + +railing + +nice safety measure +
+46 + +pillar + +An ornate pillar +
+47 + +Bookcase + +A large collection of books +
+48 + +Sink + +Its fairly dirty +
+49 + +Dummy + +I can practice my fighting here +
+50 + +anvil + +heavy metal +
+51 + +Torch + +It would be very dark without this +
+52 + +hopper + +You put grain in here +
+53 + +chute + +Flour comes out here +
+54 + +cart + +A farm cart +
+55 + +sacks + +Yep they're sacks +
+56 + +cupboard + +The cupboard is shut +
+57 + +Gate + +The gate is closed +
+58 + +gate + +The gate is open +
+59 + +gate + +The gate is open +
+60 + +gate + +The gate is closed +
+61 + +signpost + +To Varrock +
+62 + +signpost + +To the tower of wizards +
+63 + +doors + +The doors are open +
+64 + +doors + +The doors are shut +
+65 + +signpost + +To player owned houses +
+66 + +signpost + +To Lumbridge Castle +
+67 + +bookcase + +It's a bookcase +
+68 + +henge + +these look impressive +
+69 + +Dolmen + +A sort of ancient altar thingy +
+70 + +Tree + +This tree doesn't look too healthy +
+71 + +cupboard + +Perhaps I should search it +
+72 + +Wheat + +nice ripe looking wheat +
+73 + +sign + +The blue moon inn +
+74 + +sails + +The windmill's sails +
+75 + +sign + +estate agent +
+76 + +sign + +The Jolly boar inn +
+77 + +Drain + +This drainpipe runs from the kitchen to the sewers +
+78 + +manhole + +A manhole cover +
+79 + +manhole + +How dangerous - this manhole has been left open +
+80 + +pipe + +a dirty sewer pipe +
+81 + +Chest + +Perhaps I should search it +
+82 + +Chest + +I wonder what is inside... +
+83 + +barrel + +It seems to be full of newt's eyes +
+84 + +cupboard + +The cupboard is shut +
+85 + +cupboard + +Perhaps I should search it +
+86 + +fountain + +I think I see something in the fountain +
+87 + +signpost + +To Draynor Manor +
+88 + +Tree + +This tree doesn't look too healthy +
+89 + +sign + +General Store +
+90 + +sign + +Lowe's Archery store +
+91 + +sign + +The Clothes Shop +
+92 + +sign + +Varrock Swords +
+93 + +gate + +You can pass through this on the members server +
+94 + +gate + +You can pass through this on the members server +
+95 + +sign + +Bob's axes +
+96 + +sign + +The staff shop +
+97 + +fire + +A strongly burning fire +
+98 + +Rock + +A rocky outcrop +
+99 + +Rock + +A rocky outcrop +
+100 + +Rock + +A rocky outcrop +
+101 + +Rock + +A rocky outcrop +
+102 + +Rock + +A rocky outcrop +
+103 + +Rock + +A rocky outcrop +
+104 + +Rock + +A rocky outcrop +
+105 + +Rock + +A rocky outcrop +
+106 + +Rock + +A rocky outcrop +
+107 + +Rock + +A rocky outcrop +
+108 + +Rock + +A rocky outcrop +
+109 + +Rock + +A rocky outcrop +
+110 + +Rock + +A rocky outcrop +
+111 + +Rock + +A rocky outcrop +
+112 + +Rock + +A rocky outcrop +
+113 + +Rock + +A rocky outcrop +
+114 + +Rock + +A rocky outcrop +
+115 + +Rock + +A rocky outcrop +
+116 + +web + +A spider's web +
+117 + +web + +A spider's web +
+118 + +furnace + +A red hot furnace +
+119 + +Cook's Range + +A hot well stoked range +
+120 + +Machine + +I wonder what it's supposed to do +
+121 + +Spinning wheel + +I can spin wool on this +
+122 + +Lever + +The lever is up +
+123 + +Lever + +The lever is down +
+124 + +LeverA + +It's a lever +
+125 + +LeverB + +It's a lever +
+126 + +LeverC + +It's a lever +
+127 + +LeverD + +It's a lever +
+128 + +LeverE + +It's a lever +
+129 + +LeverF + +It's a lever +
+130 + +Ladder + +it's a ladder leading upwards +
+131 + +signpost + +To the forge +
+132 + +signpost + +To the Barbarian's Village +
+133 + +signpost + +To Al Kharid +
+134 + +Compost Heap + +A smelly pile of compost +
+135 + +Coffin + +This coffin is closed +
+136 + +Coffin + +This coffin is open +
+137 + +gate + +You can pass through this on the members server +
+138 + +gate + +You can pass through this on the members server +
+139 + +sign + +The Bank of runescape +
+140 + +cupboard + +The cupboard is shut +
+141 + +cupboard + +Perhaps I should search it +
+142 + +doors + +The doors are shut +
+143 + +torch + +A scary torch +
+144 + +Altar + +An altar to the evil God Zamorak +
+145 + +Shield + +A display shield +
+146 + +Grill + +some sort of ventilation +
+147 + +Cauldron + +A very large pot +
+148 + +Grill + +some sort of ventilation +
+149 + +Mine Cart + +It's empty +
+150 + +Buffers + +Stop the carts falling off the end +
+151 + +Track + +Train track +
+152 + +Track + +Train track +
+153 + +Track + +Train track +
+154 + +Hole + +I can see a witches cauldron directly below it +
+155 + +ship + +A ship to Karamja +
+156 + +ship + +A ship to Karamja +
+157 + +ship + +A ship to Karamja +
+158 + +Emergency escape ladder + +it's a ladder leading downwards +
+159 + +sign + +Wydin's grocery +
+160 + +sign + +The Rusty Anchor +
+161 + +ship + +A ship to Port Sarim +
+162 + +ship + +A ship to Port Sarim +
+163 + +ship + +A ship to Port Sarim +
+164 + +Rocks + +A rocky outcrop +
+165 + +Rocks + +A rocky outcrop +
+166 + +Rocks + +A rocky outcrop +
+167 + +Rocks + +A rocky outcrop +
+168 + +Rocks + +A rocky outcrop +
+169 + +Rocks + +A rocky outcrop +
+170 + +Rocks + +A rocky outcrop +
+171 + +Rocks + +A rocky outcrop +
+172 + +Rocks + +A rocky outcrop +
+173 + +hopper + +You put grain in here +
+174 + +cupboard + +The cupboard is shut +
+175 + +cupboard + +Perhaps I should search it +
+176 + +Rocks + +A rocky outcrop +
+177 + +Doric's anvil + +Property of Doric the dwarf +
+178 + +pottery oven + +I can fire clay pots in this +
+179 + +potter's wheel + +I can make clay pots using this +
+180 + +gate + +A gate from Lumbridge to Al Kharid +
+181 + +gate + +This gate is open +
+182 + +crate + +A crate used for storing bananas +
+183 + +Banana tree + +A tree with nice ripe bananas growing on it +
+184 + +Banana tree + +There are no bananas left on the tree +
+185 + +crate + +A crate used for storing bananas +
+186 + +Chest + +A battered old chest +
+187 + +Chest + +I wonder what is inside... +
+188 + +Flower + +Ooh thats pretty +
+189 + +sign + +Fishing Supplies +
+190 + +sign + +Jewellers +
+191 + +Potato + +A potato plant +
+192 + +fish + +I can see fish swimming in the water +
+193 + +fish + +I can see fish swimming in the water +
+194 + +fish + +I can see fish swimming in the water +
+195 + +Rock + +A rocky outcrop +
+196 + +Rock + +A rocky outcrop +
+197 + +Rocks + +A rocky outcrop +
+198 + +Ladder + +it's a ladder leading upwards +
+199 + +Ladder + +it's a ladder leading downwards +
+200 + +Monks Altar + +Its an Altar +
+201 + +Ladder + +it's a ladder leading downwards +
+202 + +Coffin + +This coffin is closed +
+203 + +Coffin + +This coffin is open +
+204 + +Smashed table + +This table has seen better days +
+205 + +Fungus + +A creepy looking fungus +
+206 + +Smashed chair + +This chair is broken +
+207 + +Broken pillar + +The remains of a pillar +
+208 + +Fallen tree + +A fallen tree +
+209 + +Danger Sign + +Danger! +
+210 + +Rock + +A rocky outcrop +
+211 + +Rock + +A rocky outcrop +
+212 + +Rocks + +A rocky outcrop +
+213 + +Gravestone + +A big impressive gravestone +
+214 + +bone + +Eep! +
+215 + +bone + +This would feed a dog for a month +
+216 + +carcass + +I think it's dead +
+217 + +animalskull + +I wouldn't like to meet a live one +
+218 + +Vine + +A creepy creeper +
+219 + +Vine + +A creepy creeper +
+220 + +Vine + +A creepy creeper +
+221 + +Chest + +Perhaps I should search it +
+222 + +Chest + +I wonder what is inside... +
+223 + +Ladder + +it's a ladder leading downwards +
+224 + +ship + +The Lumbridge Lady +
+225 + +ship + +The Lumbridge Lady +
+226 + +hole + +This ship isn't much use with that there +
+227 + +Ladder + +it's a ladder leading upwards +
+228 + +Chest + +Perhaps I should search it +
+229 + +Chest + +I wonder what is inside... +
+230 + +Chest + +Perhaps I should search it +
+231 + +Chest + +I wonder what is inside... +
+232 + +hole + +This ship isn't much use with that there +
+233 + +ship + +The Lumbridge Lady +
+234 + +ship + +The Lumbridge Lady +
+235 + +Altar of Guthix + +A sort of ancient altar thingy +
+236 + +The Cauldron of Thunder + +A very large pot +
+237 + +Tree + +A leafy tree +
+238 + +ship + +A ship to Entrana +
+239 + +ship + +A ship to Entrana +
+240 + +ship + +A ship to Entrana +
+241 + +ship + +A ship to Port Sarim +
+242 + +ship + +A ship to Port Sarim +
+243 + +ship + +A ship to Port Sarim +
+244 + +Ladder + +it's a ladder leading downwards +
+245 + +Dramen Tree + +This tree doesn't look too healthy +
+246 + +hopper + +You put grain in here +
+247 + +Chest + +Perhaps I should search it +
+248 + +Chest + +I wonder what is inside... +
+249 + +Ladder + +it's a ladder leading upwards +
+250 + +sign + +2-handed swords sold here +
+251 + +sign + +ye olde herbalist +
+252 + +gate + +You can pass through this on the members server +
+253 + +gate + +You can pass through this on the members server +
+254 + +gate + +You can pass through this on the members server +
+255 + +Door mat + +If I ever get my boots muddy I know where to come +
+256 + +gate + +The gate is closed +
+257 + +Cauldron + +A very large pot +
+258 + +cupboard + +The cupboard is shut +
+259 + +cupboard + +Perhaps I should search it +
+260 + +gate + +The bank vault gate +
+261 + +fish + +I can see fish swimming in the water +
+262 + +sign + +Harry's fishing shack +
+263 + +cupboard + +The cupboard is shut +
+264 + +cupboard + +Perhaps I should search it +
+265 + +Chest + +Perhaps I should search it +
+266 + +Chest + +I wonder what is inside... +
+267 + +sign + +The shrimp and parrot +
+268 + +signpost + +Palm Street +
+269 + +Rockslide + +A pile of rocks blocks your path +
+270 + +Ladder + +it's a ladder leading upwards +
+271 + +fish + +I can see fish swimming in the lava! +
+272 + +barrel + +Its got ale in it +
+273 + +table + +It's a sturdy table +
+274 + +Fireplace + +It would be very cold without this +
+275 + +Egg + +Thats one big egg! +
+276 + +Eggs + +They'd make an impressive omlette +
+277 + +Stalagmites + +Hmm pointy +
+278 + +Stool + +A simple three legged stool +
+279 + +Bench + +It doesn't look to comfortable +
+280 + +table + +A round table ideal for knights +
+281 + +table + +A handy little table +
+282 + +fountain of heros + +Use a dragonstone gem here to increase it's abilties +
+283 + +bush + +A leafy bush +
+284 + +hedge + +A carefully trimmed hedge +
+285 + +flower + +A nice colourful flower +
+286 + +plant + +Hmm leafy +
+287 + +Giant crystal + +How unusual a crystal with a wizard trapped in it +
+288 + +sign + +The dead man's chest +
+289 + +sign + +The rising sun +
+290 + +crate + +A large wooden storage box +
+291 + +crate + +A large wooden storage box +
+292 + +ship + +A merchant ship +
+293 + +ship + +A merchant ship +
+294 + +beehive + +It's guarded by angry looking bees +
+295 + +Ladder + +it's a ladder leading upwards +
+296 + +Altar + +An altar to the evil God Zamorak +
+297 + +sign + +Hickton's Archery store +
+298 + +signpost + +To Camelot +
+299 + +Archway + +A decorative marble arch +
+300 + +Obelisk of water + +It doesn't look very wet +
+301 + +Obelisk of fire + +It doesn't look very hot +
+302 + +sand pit + +I can use a bucket to get sand from here +
+303 + +Obelisk of air + +A tall stone pointy thing +
+304 + +Obelisk of earth + +A tall stone pointy thing +
+305 + +gate + +You can pass through this on the members server +
+306 + +Oak Tree + +A grand old oak tree +
+307 + +Willow Tree + +A weeping willow +
+308 + +Maple Tree + +It's got nice shaped leaves +
+309 + +Yew Tree + +A tough looking yew tree +
+310 + +Tree + +A magical tree +
+311 + +gate + +A gate guarded by a fierce barbarian +
+312 + +sign + +The forester's arms +
+313 + +flax + +A flax plant +
+314 + +Large treestump + +Someone has chopped this tree down! +
+315 + +Rocks + +A rocky outcrop +
+316 + +Lever + +It's a lever +
+317 + +Lever + +It's a lever +
+318 + +Lever + +It's a lever +
+319 + +gate + +You can pass through this on the members server +
+320 + +ship + +A ship bound for Ardougne +
+321 + +ship + +A ship bound for Ardougne +
+322 + +Bakers Stall + +A market stall +
+323 + +Silk Stall + +A market stall +
+324 + +Fur Stall + +A market stall +
+325 + +Silver Stall + +A market stall +
+326 + +Spices Stall + +A market stall +
+327 + +gems Stall + +A market stall +
+328 + +crate + +A large heavy sealed crate +
+329 + +crate + +A large heavy sealed crate +
+330 + +sign + +RPDT depot +
+331 + +stairs + +These lead upstairs +
+332 + +Chest + +Perhaps I should search it +
+333 + +Chest + +I wonder what is inside... +
+334 + +Chest + +I wonder what is inside... +
+335 + +Chest + +I wonder what is inside... +
+336 + +Chest + +I wonder what is inside... +
+337 + +Chest + +I wonder what is inside... +
+338 + +Chest + +I wonder what is inside... +
+339 + +Chest + +someone is stealing something from it +
+340 + +Chest + +I wonder what is inside... +
+341 + +empty stall + +A market stall +
+342 + +stairs + +These lead upstairs +
+343 + +hopper + +You put grain in here +
+344 + +signpost + +Ardougne city zoo +
+345 + +sign + +The flying horse +
+346 + +gate + +You can pass through this on the members server +
+347 + +gate + +You can pass through this on the members server +
+348 + +Lever + +The lever is up +
+349 + +Lever + +The lever is up +
+350 + +pipe + +a dirty sewer pipe +
+351 + +fish + +I can see fish swimming in the water +
+352 + +fish + +I can see fish swimming in the water +
+353 + +fish + +I can see fish swimming in the water +
+354 + +fish + +I can see fish swimming in the water +
+355 + +Vine + +A creepy creeper +
+356 + +gate + +The main entrance to McGrubor's wood +
+357 + +gate + +The gate is open +
+358 + +gate + +The gate is closed +
+359 + +stairs + +These lead downstairs +
+360 + +broken cart + +A farm cart +
+361 + +Lever + +It's a lever +
+362 + +clock pole blue + +A pole - a pole to put cog's on +
+363 + +clock pole red + +A pole - a pole to put cog's on +
+364 + +clock pole purple + +A pole - a pole to put cog's on +
+365 + +clock pole black + +A pole - a pole to put cog's on +
+366 + +wallclockface + +It's a large clock face +
+367 + +Lever Bracket + +Theres something missing here +
+368 + +Lever + +It's a lever +
+369 + +stairs + +These lead upstairs +
+370 + +stairs + +These lead downstairs +
+371 + +gate + +The gate is closed +
+372 + +gate + +The gate is open +
+373 + +Lever + +The lever is up +
+374 + +Lever + +The lever is up +
+375 + +Foodtrough + +It's for feeding the rat's +
+376 + +fish + +I can see fish swimming in the water +
+377 + +spearwall + +It's a defensive battlement +
+378 + +hornedskull + +A horned dragon skull +
+379 + +Chest + +I wonder what is inside... +
+380 + +Chest + +I wonder what is inside... +
+381 + +guardscupboard + +The cupboard is shut +
+382 + +guardscupboard + +Perhaps I should search it +
+383 + +Coal truck + +I can use this to transport coal +
+384 + +ship + +A ship to Port Birmhaven +
+385 + +ship + +A ship to Port Birmhaven +
+386 + +ship + +A ship to Port Birmhaven +
+387 + +Tree + +It's a tree house +
+388 + +Ballista + +It's a war machine +
+389 + +largespear + +
+390 + +spirit tree + +A grand old spirit tree +
+391 + +young spirit Tree + +Ancestor of the spirit tree +
+392 + +gate + +The gate is closed +
+393 + +wall + +A damaged wall +
+394 + +tree + +An exotic looking tree +
+395 + +tree + +An exotic looking tree +
+396 + +Fern + +An exotic leafy plant +
+397 + +Fern + +An exotic leafy plant +
+398 + +Fern + +An exotic leafy plant +
+399 + +Fern + +An exotic leafy plant +
+400 + +fly trap + +A small carnivourous plant +
+401 + +Fern + +An exotic leafy plant +
+402 + +Fern + +An exotic spikey plant +
+403 + +plant + +What an unusual plant +
+404 + +plant + +An odd looking plant +
+405 + +plant + +some nice jungle foliage +
+406 + +stone head + +It looks like it's been here some time +
+407 + +dead Tree + +A rotting tree +
+408 + +sacks + +Yep they're sacks +
+409 + +khazard open Chest + +Perhaps I should search it +
+410 + +khazard shut Chest + +I wonder what is inside... +
+411 + +doorframe + +It's a stone doorframe +
+412 + +Sewer valve + +It changes the water flow of the sewer's +
+413 + +Sewer valve 2 + +It changes the water flow of the sewer's +
+414 + +Sewer valve 3 + +It changes the water flow of the sewer's +
+415 + +Sewer valve 4 + +It changes the water flow of the sewer's +
+416 + +Sewer valve 5 + +It changes the water flow of the sewer's +
+417 + +Cave entrance + +I wonder what is inside... +
+418 + +Log bridge + +A tree gnome construction +
+419 + +Log bridge + +A tree gnome construction +
+420 + +tree platform + +A tree gnome construction +
+421 + +tree platform + +A tree gnome construction +
+422 + +gate + +The gate is open +
+423 + +tree platform + +A tree gnome construction +
+424 + +tree platform + +A tree gnome construction +
+425 + +Log bridge + +A tree gnome construction +
+426 + +Log bridge + +A tree gnome construction +
+427 + +tree platform + +A tree gnome construction +
+428 + +tree platform + +A tree gnome construction +
+429 + +Tribal brew + +A very large pot +
+430 + +Pineapple tree + +A tree with nice ripe pineapples growing on it +
+431 + +Pineapple tree + +There are no pineapples left on the tree +
+432 + +log raft + +A mighty fine raft +
+433 + +log raft + +A mighty fine raft +
+434 + +Tomb of hazeel + +A clay shrine to lord hazeel +
+435 + +range + +A pot of soup slowly cooking +
+436 + +Bookcase + +A large collection of books +
+437 + +Carnillean Chest + +Perhaps I should search it +
+438 + +Carnillean Chest + +I wonder what is inside... +
+439 + +crate + +A crate used for storing food +
+440 + +Butlers cupboard + +The cupboard is shut +
+441 + +Butlers cupboard + +The cupboard is open +
+442 + +gate + +The gate is open +
+443 + +gate + +The gate is closed +
+444 + +Cattle furnace + +A red hot furnace +
+445 + +Ardounge wall + +A huge wall seperating east and west ardounge +
+446 + +Ardounge wall corner + +A huge wall seperating east and west ardounge +
+447 + +Dug up soil + +A freshly dug pile of mud +
+448 + +Pile of mud + +Mud caved in from above +
+449 + +large Sewer pipe + +a dirty sewer pipe +
+450 + +Ardounge wall gateway + +A huge set of heavy wooden doors +
+451 + +cupboard + +The cupboard is shut +
+452 + +cupboard + +The cupboard is open +
+453 + +Fishing crane + +For hauling in large catches of fish +
+454 + +Rowboat + +A reasonably sea worthy two man boat +
+455 + +Damaged Rowboat + +A not so sea worthy two man boat +
+456 + +barrel + +I wonder what's inside +
+457 + +gate + +The gate is closed +
+458 + +Ladder + +it's a ladder leading upwards +
+459 + +Fishing crane + +For hauling in large catches of fish +
+460 + +Fishing crane + +For hauling in large catches of fish +
+461 + +Waterfall + +it's a waterfall +
+462 + +leaflessTree + +A pointy tree +
+463 + +leaflessTree + +A pointy tree +
+464 + +log raft + +A mighty fine raft +
+465 + +doors + +The doors are shut +
+466 + +Well + +An oddly placed well +
+467 + +Tomb of glarial + +A stone tomb surrounded by flowers +
+468 + +Waterfall + +it's a fast flowing waterfall +
+469 + +Waterfall + +it's a fast flowing waterfall +
+470 + +Bookcase + +A large collection of books +
+471 + +doors + +The doors are shut +
+472 + +doors + +The doors are shut +
+473 + +Stone stand + +On top is an indent the size of a rune stone +
+474 + +Stone stand + +On top is an indent the size of a rune stone +
+475 + +Stone stand + +On top is an indent the size of a rune stone +
+476 + +Stone stand + +On top is an indent the size of a rune stone +
+477 + +Stone stand + +On top is an indent the size of a rune stone +
+478 + +Stone stand + +On top is an indent the size of a rune stone +
+479 + +Glarial's Gravestone + +There is an indent the size of a pebble in the stone's center +
+480 + +gate + +The gate is closed +
+481 + +crate + +It's a crate +
+482 + +leaflessTree + +A pointy tree +
+483 + +Statue of glarial + +A statue of queen glarial - something's missing +
+484 + +Chalice of eternity + +A magically elevated chalice full of treasure +
+485 + +Chalice of eternity + +A magically elevated chalice full of treasure +
+486 + +doors + +The doors are shut +
+487 + +Lever + +The lever is up +
+488 + +Lever + +The lever is up +
+489 + +log raft remains + +oops! +
+490 + +Tree + +A pointy tree +
+491 + +Range + +A hot well stoked range +
+492 + +crate + +It's an old crate +
+493 + +fish + +I can see fish swimming in the water +
+494 + +Watch tower + +They're always watching +
+495 + +signpost + +Tourist infomation +
+496 + +Rocks + +A rocky outcrop +
+497 + +doors + +The doors are open +
+498 + +Rope ladder + +A hand made ladder +
+499 + +cupboard + +The cupboard is shut +
+500 + +cupboard + +Perhaps I should search it +
+501 + +Rope ladder + +A hand made ladder +
+502 + +Cooking pot + +the mourners are busy enjoying this stew +
+503 + +Gallow + +Best not hang about! +
+504 + +gate + +The gate is closed +
+505 + +crate + +A crate used for storing confiscated goods +
+506 + +cupboard + +The cupboard is shut +
+507 + +cupboard + +Perhaps I should search it +
+508 + +gate + +You can pass through this on the members server +
+509 + +cupboard + +The cupboard is shut +
+510 + +cupboard + +Perhaps I should search it +
+511 + +sign + +Tailors fancy dress +
+512 + +grand tree + +the grand tree +
+513 + +gate + +The gate is closed +
+514 + +gate + +The gate is open +
+515 + +Rocks + +A rocky outcrop +
+516 + +Rocks + +A rocky outcrop +
+517 + +Rocks + +A rocky outcrop +
+518 + +Rocks + +A rocky outcrop +
+519 + +Rocks + +A rocky outcrop +
+520 + +Rocks + +A rocky outcrop +
+521 + +Rocks + +A rocky outcrop +
+522 + +Rocks + +A rocky outcrop +
+523 + +Rocks + +A rocky outcrop +
+524 + +Log bridge + +A tree gnome construction +
+525 + +Watch tower + +A tree gnome construction +
+526 + +Log bridge + +A tree gnome construction +
+527 + +climbing rocks + +I wonder if I can climb up these +
+528 + +Ledge + +It looks rather thin +
+529 + +Ledge + +It looks rather thin +
+530 + +log + +It looks slippery +
+531 + +log + +It looks slippery +
+532 + +Rocks + +A rocky outcrop +
+533 + +Rocks + +A rocky outcrop +
+534 + +Rocks + +A rocky outcrop +
+535 + +Rocks + +A rocky outcrop +
+536 + +Rocks + +A rocky outcrop +
+537 + +Rocks + +A rocky outcrop +
+538 + +Rocks + +A rocky outcrop +
+539 + +Rocks + +A rocky outcrop +
+540 + +Rocks + +A rocky outcrop +
+541 + +Rocks + +A rocky outcrop +
+542 + +Rocks + +A rocky outcrop +
+543 + +Rocks + +A rocky outcrop +
+544 + +Rocks + +A rocky outcrop +
+545 + +Rocks + +A rocky outcrop +
+546 + +Rocks + +A rocky outcrop +
+547 + +Rocks + +A rocky outcrop +
+548 + +Rocks + +A rocky outcrop +
+549 + +Rocks + +A rocky outcrop +
+550 + +Rocks + +A rocky outcrop +
+551 + +Rocks + +A rocky outcrop +
+552 + +Rocks + +A rocky outcrop +
+553 + +PalmTree + +A shady palm tree +
+554 + +Scorched Earth + +An area of burnt soil +
+555 + +Rocks + +A moss covered rock +
+556 + +sign + +The dancing donkey inn +
+557 + +fish + +I can see fish swimming in the water +
+558 + +Rocky Walkway + +A precarious rocky walkway +
+559 + +Rocky Walkway + +A precarious rocky walkway +
+560 + +Rocky Walkway + +A precarious rocky walkway +
+561 + +Rocky Walkway + +A precarious rocky walkway +
+562 + +fight Dummy + +I can practice my fighting here +
+563 + +gate + +The gate is closed +
+564 + +Jungle Vine + +A deep jungle Vine +
+565 + +statue + +hand carved +
+566 + +sign + +Ye Olde Dragon Inn +
+567 + +grand tree + +the grand tree +
+568 + +grand tree + +the grand tree +
+569 + +grand tree + +the grand tree +
+570 + +grand tree + +the grand tree +
+571 + +grand tree + +the grand tree +
+572 + +Hillside Entrance + +Large doors that seem to lead into the hillside +
+573 + +tree + +A large exotic looking tree +
+574 + +Log bridge + +A tree gnome construction +
+575 + +Tree platform + +A tree gnome construction +
+576 + +Tree platform + +A tree gnome construction +
+577 + +Metalic Dungeon Gate + +It seems to be closed +
+578 + +Log bridge + +A tree gnome construction +
+579 + +Log bridge + +A tree gnome construction +
+580 + +Watch tower + +A tree gnome construction +
+581 + +Watch tower + +A tree gnome construction +
+582 + +Shallow water + +A small opening in the ground with some spots of water +
+583 + +Doors + +Perhaps you should give them a push +
+584 + +grand tree + +the grand tree +
+585 + +Tree Ladder + +it's a ladder leading upwards +
+586 + +Tree Ladder + +it's a ladder leading downwards +
+587 + +blurberrys cocktail bar + +the gnome social hot spot +
+588 + +Gem Rocks + +A rocky outcrop with a vein of semi precious stones +
+589 + +Giannes place + +Eat green eat gnome cruisine +
+590 + +ropeswing + +A good place to train agility +
+591 + +net + +A good place to train agility +
+592 + +Frame + +A good place to train agility +
+593 + +Tree + +It has a branch ideal for tying ropes to +
+594 + +Tree + +I wonder who put that rope there +
+595 + +Tree + +they look fun to swing on +
+596 + +cart + +A farm cart +
+597 + +fence + +it doesn't look too strong +
+598 + +beam + +A plank of wood +
+599 + +Sign + +read me +
+600 + +Sign + +Blurberry's cocktail bar +
+601 + +Sign + +Giannes tree gnome cuisine +
+602 + +Sign + +Heckel funch's grocery store +
+603 + +Sign + +Hudo glenfad's grocery store +
+604 + +Sign + +Rometti's fashion outlet +
+605 + +Sign + +Tree gnome bank and rometti's fashion outlet +
+606 + +Sign + +Tree gnome local swamp +
+607 + +Sign + +Agility training course +
+608 + +Sign + +To the grand tree +
+609 + +Root + +To the grand tree +
+610 + +Root + +To the grand tree +
+611 + +Metal Gate + +The gate is closed +
+612 + +Metal Gate + +The gate is open +
+613 + +A farm cart + +It is blocking the entrance to the village +
+614 + +Ledge + +It looks rather thin +
+615 + +Ledge + +It looks rather thin +
+616 + +Ladder + +it's a ladder leading upwards +
+617 + +cage + +i don't like the look of that +
+618 + +glider + +i wonder if it flys +
+619 + +cupboard + +The cupboard is shut +
+620 + +cupboard + +Perhaps I should search it +
+621 + +stairs + +These lead upstairs +
+622 + +glider + +i wonder if it flys +
+623 + +gate + +The gate is open +
+624 + +gate + +The gate is closed +
+625 + +chaos altar + +An altar to the evil God Zamorak +
+626 + +Gnome stronghold gate + +The gate is closed +
+627 + +ropeswing + +A good place to train agility +
+628 + +ropeswing + +A good place to train agility +
+629 + +stairs + +These lead upstairs +
+630 + +stairs + +These lead downstairs +
+631 + +Chest + +Perhaps I should search it +
+632 + +Chest + +I wonder what is inside... +
+633 + +Pile of rubble + +What a mess +
+634 + +Stone stand + +On top our four indents from left to right +
+635 + +Watch tower + +A tree gnome construction +
+636 + +Pile of rubble + +What a mess +
+637 + +Root + +To the grand tree +
+638 + +Root + +To the grand tree +
+639 + +Root + +To the grand tree +
+640 + +Sign + +Home to the Head tree guardian +
+641 + +Hammock + +They've got to sleep somewhere +
+642 + +Goal + +You're supposed to throw the ball here +
+643 + +stone tile + +It looks as if it might move +
+644 + +Chest + +You get a sense of dread from the chest +
+645 + +Chest + +You get a sense of dread from the chest +
+646 + +Watch tower + +A tree gnome construction +
+647 + +net + +A good place to train agility +
+648 + +Watch tower + +A tree gnome construction +
+649 + +Watch tower + +A tree gnome construction +
+650 + +ropeswing + +A good place to train agility +
+651 + +Bumpy Dirt + +Some disturbed earth +
+652 + +pipe + +a dirty sewer pipe +
+653 + +net + +A good place to train agility +
+654 + +pipe + +a dirty sewer pipe +
+655 + +log + +It looks slippery +
+656 + +pipe + +a dirty sewer pipe +
+657 + +pipe + +a dirty sewer pipe +
+658 + +Handholds + +I wonder if I can climb up these +
+659 + +Ladder + +it's a ladder leading upwards +
+660 + +gate + +The gate is closed +
+661 + +stronghold spirit Tree + +Ancestor of the spirit tree +
+662 + +Tree + +It has a branch ideal for tying ropes to +
+663 + +Tree + +I wonder who put that rope there +
+664 + +Tree + +I wonder who put that rope there +
+665 + +Spiked pit + +I don't want to go down there +
+666 + +Spiked pit + +I don't want to go down there +
+667 + +Cave + +I wonder what is inside... +
+668 + +stone pebble + +Looks like a stone +
+669 + +Pile of rubble + +Rocks that have caved in +
+670 + +Pile of rubble + +Rocks that have caved in +
+671 + +pipe + +I might be able to fit through this +
+672 + +pipe + +2 +
+673 + +Stone + +Looks like a stone +
+674 + +Stone + +Looks like a stone +
+675 + +ropeswing + +A good place to train agility +
+676 + +log + +It looks slippery +
+677 + +net + +A good place to train agility +
+678 + +Ledge + +It looks rather thin +
+679 + +Handholds + +I wonder if I can climb up these +
+680 + +log + +It looks slippery +
+681 + +log + +It looks slippery +
+682 + +Rotten Gallows + +A human corpse hangs from the noose +
+683 + +Pile of rubble + +Rocks that have caved in +
+684 + +ropeswing + +I wonder what's over here +
+685 + +ropeswing + +I wonder what's over here +
+686 + +ocks + +A moss covered rock +
+687 + +Tree + +This tree doesn't look too healthy +
+688 + +Well stacked rocks + +Rocks that have been stacked at regular intervals +
+689 + +Tomb Dolmen + +An ancient construct for displaying the bones of the deceased +
+690 + +Handholds + +I wonder if I can climb up these +
+691 + +Bridge Blockade + +A crudely constructed fence to stop you going further +
+692 + +Log Bridge + +A slippery log that is a make-do bridge +
+693 + +Handholds + +I wonder if I can climb up these +
+694 + +Tree + +they look fun to swing on +
+695 + +Tree + +they look fun to swing on +
+696 + +Wet rocks + +A rocky outcrop +
+697 + +Smashed table + +This table has seen better days +
+698 + +Crude Raft + +A crudely constructed raft +
+699 + +Daconia rock + +Piles of daconia rock +
+700 + +statue + +A statue to mark Taie Bwo Wannai sacred grounds +
+701 + +Stepping stones + +A rocky outcrop +
+702 + +gate + +The gate is closed +
+703 + +gate + +Enter to balance into an agility area +
+704 + +gate + +Enter to balance into an agility area +
+705 + +pipe + +It looks a tight squeeze +
+706 + +ropeswing + +A good place to train agility +
+707 + +Stone + +Looks like a stone +
+708 + +Ledge + +It doesn't look stable +
+709 + +Vine + +A creepy creeper +
+710 + +Rocks + +A rocky outcrop +
+711 + +Wooden Gate + +The gate is open +
+712 + +Wooden Gate + +The gate is closed +
+713 + +Stone bridge + +An ancient stone construction +
+714 + +Stone bridge + +An ancient stone construction +
+715 + +Stone bridge + +An ancient stone construction +
+716 + +Stone bridge + +An ancient stone construction +
+717 + +Stone platform + +An ancient stone construction +
+718 + +fence + +it doesn't look too strong +
+719 + +Rocks + +A rocky outcrop +
+720 + +Stone bridge + +The bridge has partly collapsed +
+721 + +Stone bridge + +The bridge has partly collapsed +
+722 + +Gate of Iban + +It doesn't look very inviting +
+723 + +Wooden Door + +It doesn't look very inviting +
+724 + +Tomb Dolmen + +An ancient construct for displaying the bones of the deceased +
+725 + +Cave entrance + +It doesn't look very inviting +
+726 + +Old bridge + +That's been there a while +
+727 + +Old bridge + +That's been there a while +
+728 + +Crumbled rock + +climb up to above ground +
+729 + +stalagmite + +Formed over thousands of years +
+730 + +stalagmite + +Formed over thousands of years +
+731 + +Rocks + +A small rocky outcrop +
+732 + +Ledge + +I might be able to climb that +
+733 + +Lever + +Seems to be some sort of winch +
+734 + +stalactite + +Formed over thousands of years +
+735 + +stalactite + +Formed over thousands of years +
+736 + +stalactite + +Formed over thousands of years +
+737 + +Rocks + +A small rocky outcrop +
+738 + +Rocks + +A small rocky outcrop +
+739 + +Rocks + +A small rocky outcrop +
+740 + +Rocks + +A small rocky outcrop +
+741 + +Rocks + +A small rocky outcrop +
+742 + +Rocks + +A small rocky outcrop +
+743 + +Rocks + +A small rocky outcrop +
+744 + +Rocks + +A small rocky outcrop +
+745 + +Rocks + +A small rocky outcrop +
+746 + +Rocks + +A small rocky outcrop +
+747 + +Rocks + +A small rocky outcrop +
+748 + +Rocks + +A small rocky outcrop +
+749 + +Rocks + +A small rocky outcrop +
+750 + +Ledge + +I might be able to climb that +
+751 + +Ledge + +I might be able to climb that +
+752 + +Ledge + +I might be able to climb that +
+753 + +Ledge + +I might be able to climb that +
+754 + +Swamp + +That smells horrid +
+755 + +Swamp + +That smells horrid +
+756 + +Rocks + +A small rocky outcrop +
+757 + +Rocks + +A small rocky outcrop +
+758 + +Rocks + +A small rocky outcrop +
+759 + +Rocks + +A small rocky outcrop +
+760 + +Rocks + +A small rocky outcrop +
+761 + +Rocks + +A small rocky outcrop +
+762 + +Rocks + +A small rocky outcrop +
+763 + +Rocks + +A small rocky outcrop +
+764 + +Rocks + +A small rocky outcrop +
+765 + +Rocks + +A small rocky outcrop +
+766 + +Rocks + +A small rocky outcrop +
+767 + +Pile of mud + +Mud caved in from above +
+768 + +Travel Cart + +A sturdy cart for travelling in +
+769 + +Travel Cart + +A sturdy cart for travelling in +
+770 + +Rocks + +A small rocky outcrop +
+771 + +stalactite + +Formed over thousands of years +
+772 + +Rocks + +You should be able to move these +
+773 + +Rocks + +You should be able to move these +
+774 + +Rocks + +You should be able to move these +
+775 + +sign + +The Paramaya Hostel +
+776 + +Ladder + +A ladder that leads to the dormitory - a ticket is needed +
+777 + +Grill + +They looks suspicious +
+778 + +Spiked pit + +They looks suspicious +
+779 + +signpost + +To the Furnace +
+780 + +Ship + +A sea faring ship called 'Lady Of The Waves' +
+781 + +Ship + +A sea faring ship called 'Lady Of The Waves' +
+782 + +Grill + +They looks suspicious +
+783 + +sacks + +Yep they're sacks +
+784 + +Zamorakian Temple + +Scary! +
+785 + +Grill + +They looks suspicious +
+786 + +Grill + +They looks suspicious +
+787 + +Grill + +They looks suspicious +
+788 + +Grill + +They looks suspicious +
+789 + +Grill + +They looks suspicious +
+790 + +Grill + +They looks suspicious +
+791 + +Grill + +They looks suspicious +
+792 + +Rocks + +A small rocky outcrop +
+793 + +Rocks + +A small rocky outcrop +
+794 + +Tomb Doors + +Ornately carved wooden doors depicting skeletal warriors +
+795 + +Swamp + +That smells horrid +
+796 + +Rocks + +You should be able to move these +
+797 + +Rocks + +You should be able to move these +
+798 + +stalactite + +Formed over thousands of years +
+799 + +stalactite + +Formed over thousands of years +
+800 + +Spiked pit + +They looks suspicious +
+801 + +Lever + +Seems to be some sort of winch +
+802 + +Cage + +Seems to be mechanical +
+803 + +Cage + +Seems to be mechanical +
+804 + +Rocks + +More rocks! +
+805 + +Spear trap + +Ouch! +
+806 + +Rocks + +More rocks! +
+807 + +Rocks + +More rocks! +
+808 + +Rocks + +More rocks! +
+809 + +Rocks + +More rocks! +
+810 + +Rocks + +More rocks! +
+811 + +Rocks + +More rocks! +
+812 + +Ledge + +I might be able to climb that +
+813 + +Furnace + +Charred bones are slowly burning inside +
+814 + +Well + +The remains of a warrior slump over the strange construction +
+815 + +Passage + +A strange metal grill covers the passage +
+816 + +Passage + +The passage way has swung down to a vertical position +
+817 + +Passage + +The passage way has swung down to a vertical position +
+818 + +stalagmite + +Formed over thousands of years +
+819 + +Rocks + +You should be able to move these +
+820 + +Rocks + +You should be able to move these +
+821 + +Rocks + +You should be able to move these +
+822 + +Rocks + +You should be able to move these +
+823 + +Rocks + +You should be able to move these +
+824 + +Rocks + +You should be able to move these +
+825 + +Passage + +Looks suspicous! +
+826 + +snap trap + +aaaarghh +
+827 + +Wooden planks + +You can walk across these +
+828 + +Passage + +Looks suspicous! +
+829 + +Passage + +Looks suspicous! +
+830 + +Flames of zamorak + +Careful +
+831 + +Platform + +An ancient construction +
+832 + +Rock + +Scripture has been carved into the rock +
+833 + +Rock + +Scripture has been carved into the rock +
+834 + +Rock + +Scripture has been carved into the rock +
+835 + +Rock + +Scripture has been carved into the rock +
+836 + +wall grill + +It seems to filter the rotten air through the caverns +
+837 + +Ledge + +I might be able to make to the other side +
+838 + +wall grill + +It seems to filter the rotten air through the caverns +
+839 + +Dug up soil + +A freshly dug pile of mud +
+840 + +Dug up soil + +A freshly dug pile of mud +
+841 + +Pile of mud + +Mud caved in from above +
+842 + +stalagmite + +Formed over thousands of years +
+843 + +Pile of mud + +Mud and rocks piled up +
+844 + +Pile of mud + +Mud and rocks piled up +
+845 + +Pile of mud + +Mud and rocks piled up +
+846 + +Pile of mud + +Mud and rocks piled up +
+847 + +Pile of mud + +Mud and rocks piled up +
+848 + +Spiked pit + +I don't want to go down there +
+849 + +Rocks + +A small rocky outcrop +
+850 + +Rocks + +A small rocky outcrop +
+851 + +Rocks + +A small rocky outcrop +
+852 + +Rocks + +A small rocky outcrop +
+853 + +Rocks + +A small rocky outcrop +
+854 + +Rocks + +A small rocky outcrop +
+855 + +Rocks + +A small rocky outcrop +
+856 + +Rocks + +A small rocky outcrop +
+857 + +Rocks + +A small rocky outcrop +
+858 + +Rocks + +A small rocky outcrop +
+859 + +Rocks + +A small rocky outcrop +
+860 + +Rocks + +A small rocky outcrop +
+861 + +Ledge + +I might be able to climb that +
+862 + +Ledge + +I might be able to climb that +
+863 + +Ledge + +I might be able to climb that +
+864 + +Ledge + +I might be able to climb that +
+865 + +Ledge + +I might be able to climb that +
+866 + +Ledge + +I might be able to climb that +
+867 + +Boulder + +Could be dangerous! +
+868 + +crate + +Someone or something has been here before us +
+869 + +Door + +Spooky! +
+870 + +Platform + +An ancient construction +
+871 + +Cage remains + +Poor unicorn! +
+872 + +Ledge + +I might be able to climb that +
+873 + +Passage + +Looks suspicous! +
+874 + +Passage + +Looks suspicous! +
+875 + +Gate of Zamorak + +It doesn't look very inviting +
+876 + +Rocks + +A small rocky outcrop +
+877 + +Bridge support + +An ancient construction +
+878 + +Tomb of Iban + +A clay shrine to lord iban +
+879 + +Claws of Iban + +claws of iban +
+880 + +barrel + +Its stinks of alcohol +
+881 + +Rock + +Scripture has been carved into the rock +
+882 + +Rocks + +More rocks +
+883 + +Rocks + +More rocks +
+884 + +Swamp + +That smells horrid +
+885 + +Chest + +Perhaps I should search it +
+886 + +Stone bridge + +An ancient stone construction +
+887 + +cage + +That's no way to live +
+888 + +cage + +That's no way to live +
+889 + +Stone steps + +They lead into the darkness +
+890 + +Pile of mud + +Mud and rocks piled up +
+891 + +Stone bridge + +The bridge has partly collapsed +
+892 + +Stone bridge + +The bridge has partly collapsed +
+893 + +Stone bridge + +The bridge has partly collapsed +
+894 + +Stone bridge + +The bridge has partly collapsed +
+895 + +Stone bridge + +The bridge has partly collapsed +
+896 + +Stone bridge + +The bridge has partly collapsed +
+897 + +Stone bridge + +The bridge has partly collapsed +
+898 + +Stone bridge + +The bridge has partly collapsed +
+899 + +Stone bridge + +The bridge has partly collapsed +
+900 + +Stone bridge + +The bridge has partly collapsed +
+901 + +Stone bridge + +The bridge has partly collapsed +
+902 + +Stone bridge + +The bridge has partly collapsed +
+903 + +Stone bridge + +The bridge has partly collapsed +
+904 + +Stone bridge + +The bridge has partly collapsed +
+905 + +Stone bridge + +The bridge has partly collapsed +
+906 + +Stone bridge + +The bridge has partly collapsed +
+907 + +Stone bridge + +The bridge has partly collapsed +
+908 + +Stone bridge + +The bridge has partly collapsed +
+909 + +Stone bridge + +The bridge has partly collapsed +
+910 + +Stone bridge + +The bridge has partly collapsed +
+911 + +Chest + +Perhaps I should search it +
+912 + +Chest + +I wonder what is inside... +
+913 + +Pit of the Damned + +The son of zamoracks alter... +
+914 + +Open Door + +Spooky! +
+915 + +signpost + +Observatory reception +
+916 + +Stone Gate + +A mystical looking object +
+917 + +Chest + +Perhaps there is something inside +
+918 + +Zodiac + +A map of the twelve signs of the zodiac +
+919 + +Chest + +Perhaps I should search it +
+920 + +Ladder + +it's a ladder leading upwards +
+921 + +Stone steps + +They lead into the darkness +
+922 + +Rock + +Scripture has been carved into the rock +
+923 + +Rock + +Scripture has been carved into the rock +
+924 + +Rock + +Scripture has been carved into the rock +
+925 + +Telescope + +A device for viewing the heavens +
+926 + +Gate + +The entrance to the dungeon jail +
+927 + +sacks + +These sacks feels lumpy! +
+928 + +Ladder + +the ladder goes down into a dark area +
+929 + +Chest + +All these chests look the same! +
+930 + +Chest + +All these chests look the same! +
+931 + +Bookcase + +A very roughly constructed bookcase. +
+932 + +Iron Gate + +A well wrought iron gate - it's locked. +
+933 + +Ladder + +the ladder down to the cavern +
+934 + +Chest + +Perhaps there is something inside +
+935 + +Chest + +All these chests look the same! +
+936 + +Chest + +Perhaps there is something inside +
+937 + +Chest + +All these chests look the same! +
+938 + +Rockslide + +A pile of rocks blocks your path +
+939 + +Altar + +An altar to the evil God Zamorak +
+940 + +column + +Formed over thousands of years +
+941 + +Grave of Scorpius + +Here lies Scorpius: dread follower of zamorak +
+942 + +Bank Chest + +Allows you to access your bank. +
+943 + +dwarf multicannon + +fires metal balls +
+944 + +Disturbed sand + +Footprints in the sand show signs of a struggle +
+945 + +Disturbed sand + +Footprints in the sand show signs of a struggle +
+946 + +dwarf multicannon base + +bang +
+947 + +dwarf multicannon stand + +bang +
+948 + +dwarf multicannon barrels + +bang +
+949 + +Cave + +I wonder what's inside! +
+950 + +Cave + +I wonder what's inside! +
+951 + +fence + +These bridges seem hastily put up +
+952 + +signpost + +a signpost +
+953 + +Rocks + +I wonder if I can climb up these +
+954 + +Rocks + +I wonder if I can climb up these +
+955 + +Cave entrance + +A noxious smell emanates from the cave... +
+956 + +Chest + +Perhaps I should search it +
+957 + +Chest + +I wouldn't like to think where the owner is now +
+958 + +Wooden Doors + +Large oak doors constantly watched by guards +
+959 + +Pedestal + +something fits on here +
+960 + +bush + +A leafy bush +
+961 + +bush + +A leafy bush +
+962 + +Standard + +A standard with a human skull on it +
+963 + +Mining Cave + +A gaping hole that leads to another section of the mine +
+964 + +Mining Cave + +A gaping hole that leads to another section of the mine +
+965 + +Rocks + +A small rocky outcrop +
+966 + +Lift + +To brings mined rocks to the surface +
+967 + +Mining Barrel + +For loading up mined stone from below ground +
+968 + +Hole + +I wonder where this leads... +
+969 + +Hole + +I wonder where this leads... +
+970 + +Cave + +I wonder what's inside! +
+971 + +Cave + +I wonder what's inside! +
+972 + +Cave + +I wonder what's inside! +
+973 + +Counter + +An ogre is selling items here +
+974 + +Track + +Train track +
+975 + +Cave + +I wonder what's inside! +
+976 + +Mine Cart + +A heavily constructed and often used mining cart. +
+977 + +Lift Platform + +A wooden lift that is operated from the surface. +
+978 + +Chest + +I wonder what is inside... +
+979 + +Chest + +I wonder what is inside... +
+980 + +Watch tower + +Constructed by the dwarven black guard +
+981 + +Ladder + +it's a ladder leading upwards +
+982 + +Cave entrance + +I wonder what is inside... +
+983 + +Pile of mud + +Mud caved in from above +
+984 + +Cave + +I wonder what's inside! +
+985 + +Ladder + +it's a ladder leading downwards +
+986 + +crate + +A crate +
+987 + +crate + +A crate +
+988 + +Gate + +This gate barrs your way into gu'tanoth +
+989 + +Gate + +This gate barrs your way into gu'tanoth +
+990 + +bush + +A leafy bush +
+991 + +bush + +A leafy bush +
+992 + +bush + +A leafy bush +
+993 + +bush + +A leafy bush +
+994 + +multicannon + +fires metal balls +
+995 + +Rocks + +Some rocks are close to the egde +
+996 + +Rocks + +Some rocks are close to the edge +
+997 + +Ladder + +it's a ladder leading downwards +
+998 + +Cave entrance + +I wonder what is inside... +
+999 + +Counter + +An ogre is selling cakes here +
+1000 + +Chest + +Perhaps I should search it +
+1001 + +Chest + +I wonder what is inside... +
+1002 + +Chest + +Perhaps I should search it +
+1003 + +Chest + +I wonder what is inside... +
+1004 + +Bookcase + +A large collection of books +
+1005 + +Captains Chest + +I wonder what is inside... +
+1006 + +Experimental Anvil + +An experimental anvil - for developing new techniques in forging +
+1007 + +Rocks + +A small pile of stones +
+1008 + +Rocks + +A small rocky outcrop +
+1009 + +Column + +Created by ancient mages +
+1010 + +Wall + +Created by ancient mages +
+1011 + +Wall + +Created by ancient mages +
+1012 + +Wall + +Created by ancient mages +
+1013 + +Wall + +Created by ancient mages +
+1014 + +Lever + +The lever is up +
+1015 + +Lever + +The lever is down +
+1016 + +Wall + +Created by ancient mages +
+1017 + +Ladder + +it's a ladder leading downwards +
+1018 + +Wall + +Created by ancient mages +
+1019 + +Gate + +The gate is closed +
+1020 + +Gate + +The gate is closed +
+1021 + +Ladder + +it's a ladder leading upwards +
+1022 + +shock + +cosmic energy +
+1023 + +Desk + +A very strong looking table with some locked drawers. +
+1024 + +Cave + +I wonder what's inside! +
+1025 + +Mining Cart + +A sturdy well built mining cart with barrels full of rock on the back. +
+1026 + +Rock of Dalgroth + +A mysterious boulder of the ogres +
+1027 + +entrance + +Created by ancient mages +
+1028 + +Dried Cactus + +It looks very spikey +
+1029 + +climbing rocks + +I wonder if I can climb up these +
+1030 + +Rocks + +Strange rocks - who knows why they're wanted? +
+1031 + +lightning + +blimey! +
+1032 + +Crude Desk + +A very roughly constructed desk +
+1033 + +Heavy Metal Gate + +This is an immense and very heavy looking gate made out of thick wrought +metal +
+1034 + +Counter + +An ogre is selling cakes here +
+1035 + +Crude bed + +A flea infested sleeping experience +
+1036 + +flames + +looks hot! +
+1037 + +Carved Rock + +An ornately carved rock with a pointed recepticle +
+1038 + +USE + +FREE SLOT PLEASE USE +
+1039 + +crate + +A crate used for storing materials +
+1040 + +crate + +A crate used for storing materials +
+1041 + +barrel + +Its shut +
+1042 + +Brick + +A stone brick +
+1043 + +Brick + +A stone brick +
+1044 + +Brick + +A stone brick +
+1045 + +Brick + +A stone brick +
+1046 + +Brick + +A stone brick +
+1047 + +Brick + +A stone brick +
+1048 + +Barrier + +this section is roped off +
+1049 + +buried skeleton + +I hope I don't meet any of these +
+1050 + +Brick + +A stone brick +
+1051 + +Brick + +A stone brick +
+1052 + +Specimen tray + +A pile of sifted earth +
+1053 + +winch + +This winches earth from the dig hole +
+1054 + +crate + +A crate +
+1055 + +crate + +A crate +
+1056 + +Urn + +A large ornamental urn +
+1057 + +buried skeleton + +I'm glad this isn't around now +
+1058 + +panning point + +a shallow where I can pan for gold +
+1059 + +Rocks + +A small rocky outcrop +
+1060 + +signpost + +a signpost +
+1061 + +signpost + +a signpost +
+1062 + +signpost + +a signpost +
+1063 + +signpost + +a signpost +
+1064 + +signpost + +Digsite educational centre +
+1065 + +soil + +soil +
+1066 + +soil + +soil +
+1067 + +soil + +soil +
+1068 + +Gate + +The gate has closed +
+1069 + +ship + +The ship is sinking +
+1070 + +barrel + +The ship is sinking +
+1071 + +Leak + +The ship is sinking +
+1072 + +bush + +A leafy bush +
+1073 + +bush + +A leafy bush +
+1074 + +cupboard + +The cupboard is shut +
+1075 + +sacks + +Yep they're sacks +
+1076 + +sacks + +Yep they're sacks +
+1077 + +Leak + +The ship is sinking +
+1078 + +cupboard + +The cupboard is shut +
+1079 + +Wrought Mithril Gates + +Magnificent wrought mithril gates giving access to the Legends Guild +
+1080 + +Legends Hall Doors + +Solid Oak doors leading to the Hall of Legends +
+1081 + +Camp bed + +Not comfortable but useful nonetheless +
+1082 + +barrel + +It has a lid on it - I need something to lever it off +
+1083 + +barrel + +I wonder what is inside... +
+1084 + +Chest + +Perhaps I should search it +
+1085 + +Chest + +I wonder what is inside... +
+1086 + +Dense Jungle Tree + +Thick vegetation +
+1087 + +Jungle tree stump + +A chopped down jungle tree +
+1088 + +signpost + +To the digsite +
+1089 + +gate + +You can pass through this on the members server +
+1090 + +Bookcase + +A large collection of books +
+1091 + +Dense Jungle Tree + +An exotic looking tree +
+1092 + +Dense Jungle Tree + +An exotic looking tree +
+1093 + +Spray + +There's a strong wind +
+1094 + +Spray + +There's a strong wind +
+1095 + +winch + +This winches earth from the dig hole +
+1096 + +Brick + +It seems these were put here deliberately +
+1097 + +Rope + +it's a rope leading upwards +
+1098 + +Rope + +it's a rope leading upwards +
+1099 + +Dense Jungle Palm + +A hardy palm tree with dense wood +
+1100 + +Dense Jungle Palm + +A hardy palm tree with dense wood +
+1101 + +Trawler net + +A huge net to catch little fish +
+1102 + +Trawler net + +A huge net to catch little fish +
+1103 + +Brick + +The bricks are covered in the strange compound +
+1104 + +Chest + +I wonder what is inside ? +
+1105 + +Chest + +Perhaps I should search it +
+1106 + +Trawler catch + +Smells like fish! +
+1107 + +Yommi Tree + +An adolescent rare and mystical looking tree in +
+1108 + +Grown Yommi Tree + +A fully grown rare and mystical looking tree +
+1109 + +Chopped Yommi Tree + +A mystical looking tree that has recently been felled +
+1110 + +Trimmed Yommi Tree + +The trunk of the yommi tree. +
+1111 + +Totem Pole + +A nicely crafted wooden totem pole. +
+1112 + +Baby Yommi Tree + +A baby Yommi tree - with a mystical aura +
+1113 + +Fertile earth + +A very fertile patch of earth +
+1114 + +Rock Hewn Stairs + +steps cut out of the living rock +
+1115 + +Hanging rope + +A rope hangs from the ceiling +
+1116 + +Rocks + +A large boulder blocking the stream +
+1117 + +Boulder + +A large boulder blocking the way +
+1118 + +dwarf multicannon + +fires metal balls +
+1119 + +dwarf multicannon base + +bang +
+1120 + +dwarf multicannon stand + +bang +
+1121 + +dwarf multicannon barrels + +bang +
+1122 + +rock + +A rocky outcrop +
+1123 + +Rock Hewn Stairs + +steps cut out of the living rock +
+1124 + +Rock Hewn Stairs + +steps cut out of the living rock +
+1125 + +Rock Hewn Stairs + +steps cut out of the living rock +
+1126 + +Compost Heap + +The family gardeners' compost heap +
+1127 + +beehive + +An old looking beehive +
+1128 + +Drain + +This drainpipe runs from the kitchen to the sewers +
+1129 + +web + +An old thick spider's web +
+1130 + +fountain + +There seems to be a lot of insects here +
+1131 + +Sinclair Crest + +The Sinclair family crest +
+1132 + +barrel + +Annas stuff - There seems to be something shiny at the bottom +
+1133 + +barrel + +Bobs things - There seems to be something shiny at the bottom +
+1134 + +barrel + +Carols belongings - there seems to be something shiny at the bottom +
+1135 + +barrel + +Davids equipment - there seems to be something shiny at the bottom +
+1136 + +barrel + +Elizabeths clothes - theres something shiny at the bottom +
+1137 + +barrel + +Franks barrel seems to have something shiny at the bottom +
+1138 + +Flour Barrel + +Its full of flour +
+1139 + +sacks + +Full of various gardening tools +
+1140 + +gate + +A sturdy and secure wooden gate +
+1141 + +Dead Yommi Tree + +A dead Yommi Tree - it looks like a tough axe will be needed to fell +this +
+1142 + +clawspell + +forces of guthix +
+1143 + +Rocks + +The remains of a large rock +
+1144 + +crate + +A crate of some kind +
+1145 + +Cavernous Opening + +A dark and mysterious cavern +
+1146 + +Ancient Lava Furnace + +A badly damaged furnace fueled by red hot Lava - it looks ancient +
+1147 + +Spellcharge + +forces of guthix +
+1148 + +Rocks + +A small rocky outcrop +
+1149 + +cupboard + +The cupboard is shut +
+1150 + +sacks + +Yep they're sacks +
+1151 + +Rock + +A rocky outcrop +
+1152 + +Saradomin stone + +A faith stone +
+1153 + +Guthix stone + +A faith stone +
+1154 + +Zamorak stone + +A faith stone +
+1155 + +Magical pool + +A cosmic portal +
+1156 + +Wooden Beam + +Some sort of support - perhaps used with ropes to lower people over the +hole +
+1157 + +Rope down into darkness + +A scarey downwards trip into possible doom. +
+1158 + +Cave entrance + +A dark cave entrance leading to the surface. +
+1159 + +Cave entrance + +A small tunnel that leads to a large room beyond. +
+1160 + +Ancient Wooden Doors + +The doors are locked shut +
+1161 + +Table + +An old rickety table +
+1162 + +Crude bed + +Barely a bed at all +
+1163 + +Tall Reeds + +A tall plant with a tube for a stem. +
+1164 + +Goblin foot prints + +They seem to be heading south east +
+1165 + +Dark Metal Gate + +A dark metalic gate which seems to be fused with the rock +
+1166 + +Magical pool + +A cosmic portal +
+1167 + +Rope Up + +A welcome rope back up and out of this dark place. +
+1168 + +Half buried remains + +Some poor unfortunate soul +
+1169 + +Totem Pole + +A carved and decorated totem pole +
+1170 + +Totem Pole + +A carved and decorated totem pole +
+1171 + +Comfy bed + +Its a bed - wow +
+1172 + +Rotten Yommi Tree + +A decomposing fully grown Yommi Tree +
+1173 + +Rotten Yommi Tree + +A decomposing felled Yommi Tree +
+1174 + +Rotten Yommi Tree + +A decomposing Yommi Tree Trunk +
+1175 + +Rotten Totem Pole + +A decomposing Totem Pole +
+1176 + +Leafy Palm Tree + +A shady palm tree +
+1177 + +Grand Viziers Desk + +A very elegant desk - you could knock it to get the Grand Viziers +attention. +
+1178 + +Strange Barrel + +It might have something inside of it. +
+1179 + +ship + +A sturdy sailing ship +
+1180 + +ship + +A sturdy sailing ship +
+1181 + +ship + +A sturdy sailing ship +
+1182 + +digsite bed + +Not comfortable but useful nonetheless +
+1183 + +Tea stall + +A stall selling oriental infusions +
+1184 + +Boulder + +A large boulder blocking the way +
+1185 + +Boulder + +A large boulder blocking the way +
+1186 + +Damaged Earth + +Disturbed earth - it will heal itself in time +
+1187 + +Ladder + +it's a ladder leading upwards +
+1188 + +Ladder + +it's a ladder leading downwards +
diff --git a/204-Protocol.mediawiki b/src/204-Protocol.md similarity index 91% rename from 204-Protocol.mediawiki rename to src/204-Protocol.md index dfdac92..f4d3641 100644 --- a/204-Protocol.mediawiki +++ b/src/204-Protocol.md @@ -1,16 +1,14 @@ -[[Category RSC]] +\[\[Category RSC\]\] -This page refers to the RSC #204 client revision, all of the opcodes are the same with the exception of the last three in the Outgoing Data section. +This page refers to the RSC \#204 client revision, all of the opcodes +are the same with the exception of the last three in the Outgoing Data +section. +== '''Packet structure''' == ? -== '''Packet structure''' == -? +== '''Login''' == ? -== '''Login''' == -? - -== '''Incoming Data''' == -'''TODO:''' Document packet structures +== '''Incoming Data''' == '''TODO:''' Document packet structures
 #define IDX_WEIRD_USERNAME    32
 #define IDX_LOGIN             0
@@ -92,25 +90,33 @@ This page refers to the RSC #204 client revision, all of the opcodes are the sam
 
 #define IDO_REPORT_ABUSE      206
 
- - - - - - - - - - - - - - + + + + + + + + + + + +
opcodeusagesizepayload
+opcode + +usage + +size + +payload +
+ + + +
- -== '''Outgoing Data''' == -'''TODO:''' Document packet structures +== '''Outgoing Data''' == '''TODO:''' Document packet structures
 // login responses...
 #define IDX_MOD_ACCEPTED      25                    // logged in as player mod
@@ -198,19 +204,29 @@ This page refers to the RSC #204 client revision, all of the opcodes are the sam
 #define IDX_ACCOUNT_NOT_RSC   21                // "Unable to login.", "That is not an RS-Classic account"
 #define IDX_PASSWD_STOLEN     22                // "Password suspected stolen.", "Press 'change your password' on front page."
 
- - - - - - - - - - - - - - -
opcodeusagesizepayload
\ No newline at end of file + + +opcode + + +usage + + +size + + +payload + + + + + + + + + + + + + diff --git a/src/289-Construct-Map-Region.md b/src/289-Construct-Map-Region.md new file mode 100644 index 0000000..ddcdb96 --- /dev/null +++ b/src/289-Construct-Map-Region.md @@ -0,0 +1,39 @@ +{{packet\|name=Construct Map Region\|description=Constructs the map +region\|opcode=241\|type=Variable Short\|length=N/A\|revision=317}} == +Construct Map Region == + +=== Description === + +This packet constructs the map region. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Additional Short\]\] \| The players +region y plus 6. \|- \| \[\[Data Types\#Standard data types\|Short\]\] +\| The players region x plus 6. \|- \|} + +=== Other Information === + +After the region y is sent, you need to initialize the bit access. Then, +loop through the z (which can only go up to 3). Still in the for-loop, +you need to go through the x's (up to 12). Then, loop through the y's +(up to 12). + +All of this is in the all three for-loops! + +Step 1: Then you'll get the tile of x, y, and z. + +Step 2: Then you need to send the bits 1 and (if tile is null) 1 +otherwise, 0. + +Step 3: Check if the tile is not null. Within this if-statement, you put +these bits... + +{\|border=2 ! Method \|- \| putBits(26, tile.getX() \<\< 14 \| +tile.getY() \<\< 3 \| tile.getZ() \<\< 24 \| tile.getRotation() \<\< 1) +\|- \|} + +Out of the for-loops! + +Step 1: Finish the bit access and send the region x. + +Done. diff --git a/src/289-Player-Dialogue-Head.md b/src/289-Player-Dialogue-Head.md new file mode 100644 index 0000000..6c3a73e --- /dev/null +++ b/src/289-Player-Dialogue-Head.md @@ -0,0 +1,15 @@ +{{packet\|name=Send Player Head\|description=Sends player's head on an +interface\|opcode=185\|type=Fixed\|length=5\|revision=317}} == Player +Dialogue Head == + +=== Description === + +This packet sends the player head to an interface. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| The status of the +friends list. \|- \|} + +==== Values ==== The below are the different values for this packet. {\| +border=2 ! Value ! Response \|- \| 0 \| Loading \|- \| 1 \| Connecting +\|- \| 2 \| Loaded \|- \|} diff --git a/src/289-Protocol.md b/src/289-Protocol.md new file mode 100644 index 0000000..13464a1 --- /dev/null +++ b/src/289-Protocol.md @@ -0,0 +1,511 @@ +\[\[Category RS2\]\] + +NOTE: This page will have many further updates, once I rename and +document the \#289 client more. + +== '''Packet structure''' == When the client sends a packet to the +server, the first byte encapsulates its +\[http://en.wikipedia.org/wiki/Opcode opcode\]. This specific opcode is +encrypted with a value generated by the +\[http://en.wikipedia.org/wiki/ISAAC ISAAC\] +\[http://en.wikipedia.org/wiki/Pseudorandom\_number\_generator PRNG\] +seeded with a dynamically server generated key during the login block. +The server decrypts it and associates the opcode to the packet's +respective predefined size. If the packet does not contain a fixed size, +the opcode will be followed by either a byte or a word - varying per +packet - for its proper size. This is then followed by the +\[http://en.wikipedia.org/wiki/Payload\_(software) payload\]. + +== '''Login Protocol Overview''' == Every connection to the main +'gateway' server sends a single byte of data, mostly well known as the +connection type. The connection type tells the main server which type of +connection you wish to initiate. The old engine list consists of: \* +Login request - connection type 14 \* Update - connection type 15 \* New +connection login - connection type 16 \* Reconnecting login - connection +type 18 + +The connection type we will cover in the following paragraphs is the +login connection type, 14. After the login handshake initiating +connection type, the client writes a small bit of data derived from the +logging in player's username. This is believed to help select the +appropriate login server. On successful handshake, the server sends back +8 ignored bytes. + +
long l = TextUtils.encodeAsBase37Integer(username);
+int i = (int) (l >> 16 & 31L);
+out.offset = 0;
+out.writeByte(14); // Initiate connection type
+out.writeByte(i); // "small bit of data derived from... player's username"
+in.queueBytes(2, out.payload);
+for (int j = 0; j < 8; j++) in.read();
+At this point, the client reads in one byte, called the status code. The +status code 0 is expected to start the login protocol correctly. If the +status code is 0, the client reads a long, dubbed by many as the server +session key. This is used to help generate a unique seed for the client +session's packet opcode masking. The client then stores two ints that +are the upper and lower ints of the client session key, which has the +same purpose as the server's key. The client then starts writing the +login block, which is RSA encrypted. + +The login block starts with the byte 10, which is considered a magic +number. Following it is the client session key and server session key +longs. After the session keys, the session's UID (unique identifier or +user identifier) is written to the block. This is used to distinguish +between multiple sessions. Trailing behind the UID comes the client's +username and password written as modified C-strings that are rather +terminated with a 10 byte than a NUL byte. This block is then RSA +encrypted and stored for later use. + +Now starts the login request packet. It starts off with a flag telling +the server whether or not the client is reconnecting or connecting for +the first time. The byte is 18 or 16, respectively. \[NOW CLASSIFIED AS +A CONNECTION TYPE\] Following is the size of the rest of the login +response packet, including the login block that trails at the end, to +tip the server how much data it should expect. Later comes the magic +number byte 255, and right behind it the client revision short. The +packet is just about crafted completely. A flag byte that represents if +the client is running in low memory or high memory modes is sent, and +after the 9 CRC32 checksums of the file system 0 basic archives (this +includes versionlist, media, config, etc.). To top it off, the RSA +encrypted login block is appended to the end and the packet is sent to +the server. + +The ISAAC ciphers are seeded for packet opcode masking after adding 50 +to each int of the session keys, and the status code is reread. This +finishes the login protocol. + +== '''Login Protocol Breakdown''' == The login is comprised of four +stages in which the client and server switch in regards to which one is +reading and which one is writing.
===Variables:=== The login +process has a lot of variable data, compiled here is a list of the +variables and their different values. ====Name Hash==== A hash of the +player name, thought to be used to select an appropriate login server. +This has no use in current private servers. + +====Server Session Key==== The server-session-key is one of two ciphers +used to encrypt the game protocol, using the ISAAC algorithms.
+===="Data File Version"==== The CRC checks for the cache +files.
+ +====User ID==== The ID of the user.
====Username==== The username +of the player, used to identify their account.
====Password==== +The password of the player account, used so only they can log into their +account.
====Client Session Key==== The client-session-key is one +of two ciphers used to encrypt the game protocol, using the ISAAC +algorithms.
====Connect Status==== The status of the connection. +{\|border=2 ! Value ! Status \|- \| 16 \| Signifies that the connection +is new. \|- \| 18 \| Signifies that the session is reconnecting a +previously lost connection. \|- \|} + +====Size==== The size of the unencrypted login packet, used to determine +how many bytes need to be read from the stream by the server.
+====Client Version==== The memory-version of the game client. +{\|border=2 ! Value ! Status \|- \| 0 \| Signifies the client is a +low-memory client. \|- \| 1 \| Signifies that the client is a +high-memory client. \|- \|} + +====CRC Values==== 9 4-byte values, Each containing the CRC of their +respective cache files. Used by the server to verify client is up to +date.
+ +====Player Status==== The in-game player status - player, player +moderator, or administrator.
{\|border=2 ! Value ! Status \|- \| 0 +\| Signifies that this player is a normal player. \|- \| 1 \| Signifies +that this player is a player moderator. \|- \| 2 \| Signifies that this +player is an administrator. \|- \|} + +====Flagged==== If set to 1, information about mouse movements etc. are +sent to the server. Suspected bot accounts are flagged.
+====Response Codes==== At the beginning and 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.
{\| border=2 ! 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 \[\[\#Regarding response code 15\|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 sends byte 18 as it's +\[\[\#Connect Status\|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 poor connection you've +noticed that your chat stays there upon a reconnect, and this is exactly +why. When you implement +response code 15 though, you do NOT need to send the "player status" or +the "flagged" bytes. + +===Login Process:=== ====Stage 1: Client -\> Server==== {\| border=2 \|- +! Data Type ! Value \|- \| ubyte \| 14 \|- \| ubyte \| "name hash" \|- +\|}
+ +====Stage 2: Server -\> Client==== {\| border=2 \|- ! Data Type ! Value +\|- \| byte \| 0 \|- \| byte \| 0 \|- \| byte \| 0 \|- \| byte \| 0 \|- +\| byte \| 0 \|- \| byte \| 0 \|- \| byte \| 0 \|- \| byte \| 0 \|- \| +byte \| "response code" \|- \| \[\[QWord\|long\]\] \| "server session +key" \|- \|}
+ +====Stage 3: Client -\> Server==== {\| border=2 \|- ! Data Type ! Value +\|- \| byte \| "connect status" \|- \| byte \| "size" \|- \| byte \| 255 +\|- \| \[\[Word\|short\]\] \| 289 \|- \| byte \| "client version" \|- \| +\[\[DWord\|int\]\] \| "crc values"\[0\] \|- \| \[\[DWord\|int\]\] \| +"crc values"\[1\] \|- \| \[\[DWord\|int\]\] \| "crc values"\[2\] \|- \| +\[\[DWord\|int\]\] \| "crc values"\[3\] \|- \| \[\[DWord\|int\]\] \| +"crc values"\[4\] \|- \| \[\[DWord\|int\]\] \| "crc values"\[5\] \|- \| +\[\[DWord\|int\]\] \| "crc values"\[6\] \|- \| \[\[DWord\|int\]\] \| +"crc values"\[7\] \|- \| \[\[DWord\|int\]\] \| "crc values"\[8\] \|- \| +byte \| 10 or "RSA header" \|- \| \[\[QWord\|long\]\] \| "client session +key" \|- \| \[\[QWord\|long\]\] \| "server session key" \|- \| +\[\[DWord\|int\]\] \| "user id" \|- \| \[\[RS String\|RS String\]\] \| +"username" \|- \| \[\[RS String\|RS String\]\] \| "password" \|- \|} +
+ +====Stage 4: Server -\> Client==== {\| border=2 \|- ! Data Type ! Value +\|- \| byte \| "response code" \|- \| byte \| "player status" \|- \| +byte \| "flagged" \|- \|}
+ +== '''Player Updating''' == + +Yes, the player updating procedure IS different than 317. + +The player updating process consists of 4 parts: \* a) Our player +movement updates \* b) Other player movement updates \* c) Player list +updating \* c.a) Apperance updating \* c.b) Location updating \* d) +Player update block flag-based updates + +'''Our player movement updates''' + +The client begins by reading 1 bit. This bit tells the client whether or +not it is currently updating 'our player', or the player the client is +controlling. If it's not updating our player, it exits and goes onto +step b. If it is, it then reads 2 bits. The value is called the movement +update type. There are 4 recognized movement update types: + +- Type 0 basically tells the client there is nothing to update for our + player, just add its index to the local updating list. + +- Type 1 tells the client you moved in one direction. The client reads + 3 bits, which represents the direction you moved in, and then 1 bit, + which states whether further update is required. If so, it adds it + to the updating list. This is used in walking. + +- Type 2 functions in much of the same way as its previous, only this + time it reads two 3 bit values. The first represents the player's + last direction, and the second it's current direction. Trailing + behind it is also the 1 bit 'update required' flag as type 1. This + is used in running. + +- Type 3 on the other hand is different. It reads in 2 bits which + represents our player's plane, or its level of height, in the game + world. Only 0-3 inclusive are appropriate planes supported by the + client. It then reads two 7 bit quantities, representing the new + relative X and relative Y coordinates of our player to our current + map region's origin. It then sets our players position to the plane, + x, and y positions as told to. Directly after it reads 1 bit, which + describes whether or not to clear the awaiting-waypoint queue, + basically to stop client from further queued stepping, such as used + in teleporting. Finally, it reads the 'update required' bit, and + checks to see if further update is required. + +'''Other player movement updates''' + +The client begins by reading an 8 bit value telling the client how many +players there are to update. It then enters a loop for each player there +is to update. + +Inside this loop, the client reads 1 bit. This is the movement update +required flag. If the flag is 0, it sets the current updating player's +last update cycle time to the current game logic loop cycle time, and +adds the player to the local player list. If the flag is not 0, it then +reads the movement update type, which is a 2 bit quantity. The following +known types are: + +- 0, the client updates the current player's last update cycle time, + adds the current player to the local player list, and adds it to the + updating list. + +- 1, the client updates the current player's last update cycle time + and adds the current player to the local player list as well, but + also reads in 3 bit quantity. This represents the current player's + direction it walked to. It then reads the a 1 bit value that + specifies whether or not to add the player to the updating list. + +- 2, the client does the exact same thing as the type 2 update, except + it reads in two of the 3 bit quantities. The first represents the + current player's last direction, and the second its current + direction running. + +- 3, it only adds the player to the needing-update list, or so + believed. Type 3 is not well known. + +'''Player list updating''' + +The next step in the player updating procedure is the player list +updating, or where the client recieves data on every player in its local +list, such as appearance and location relative to ours. The client loops +through a process for each player in the updating. + +The client reads an 11 bit quantity from the buffer, which is the next +player in the updated list to be informed about. The client then checks +if it has a cached buffer for that player's updating, and if it does, it +updates the player appearance. + +'''Appearance updating''' + +Appearance updating starts off by first reading an unsigned byte that +represents the current player's gender. Then it reads another unsigned +byte that represents the player's over-head icon id. This is used with +prayer icons above heads. Next, a loop occurs 12 times to read equipment +data. + +In the loop, the client reads an unsigned byte that is the equipment +slot's item id high byte. If it is 0, the player's equpment slot has no +item. If it is not 0, another unsigned byte is read the merged with the +previous to create the equipment's item id. If the id is 65535 (written +as a -1 signed short), then the player's appearance is that of an NPC. +The client reads in an unsigned short representing the NPC's id and sets +the player's definition to that NPC's. + +After the equipment loop, it loops 5 times, once for each type of +coloured body part. In each loop, the client reads an unsigned short and +assigns it as the color of the current loop idx (which represents the +body part). + +Finally, after the color loop, the client reads 7 unsigned shorts +representing animation indices; the animations belong to: \* Standing +still \* Turning while standing \* Walking \* Turning around (backwards) +\* Turning a quarter-way clockwise \* Turning a quarter-way counter +clockwise \* Running + +After these animation indices are read, a long representing the player's +name is read, an unsigned byte representing the combat level, and an +unsigned short representing the players skill level (for things where +players arent ranked by levels, such as where it states ' +(skill )' as an action menu text). + +'''Location updating''' + +After the appearance updating, the client starts to update that player's +location relative to our player. The player is added to the local player +list and it's last update cycle time. It then reads to 5 bit values that +determine the players relative X and Y coordinates to our player. The +local player area is 16x16, so if the delta of the two coordinates is \> +15, 32 is subtracted from it to signify the player is on the other side +of ours. It then reads a 1 bit quantity that defines whether or not the +client has a chunk in the player update block list. If it does, it adds +it to the updating list. At this point the client then sets the player's +position. The next bit states whether or not to discard the +awaiting-waypoint queue, such as when teleporting, ending the player +list updating process. + +'''Update block flag-based updating''' + +The following is what most people think of when they say 'update mask' +and 'update flag'. This process of the updating procedure is very +important. It begins with looping through ALL players in the local +player update list, reading an unsigned byte which from now on will be +called the update flag. All further updates are seen to be 'included' by +comparing a bitwise mask to this flag. If the flag has the bits for 0x40 +all on, this signifies that the flag was too large for a simple unsigned +byte and reads in another unsigned byte, which it uses as the upper +unsigned byte, therefore the update flag is an unsigned little-endian +short. The client then passes off the data to a helper method which +processes all updates this flag signifies. + +Inside this method, many different bitwise masks are compared to the +player's flag, and if the mask is set, logic is performed. These masks +are frequently called update masks. A list of player update masks are +below: + +- '''0x200''' The 0x200 mask is used to update the player so they + appear to be asynchronously animating and walking. This mask is + often used for the \[http://runescape.wikia.com/wiki/Agility + Agility\] skill. The data associated goes in order of: byte (type C) + which is the first location's X coordinate value, byte (type S) + which is the first location's Y coordinate value, byte (type S) + which is the second location's X coordinate value, byte (type C) the + second location's Y coordinate value. After the locations are + written, there is a required movement speed which is written as a + short which marks how fast to move from position 1 to position 2. + Another short (type A) is written as the movement speed going from + position 2 to position 1. Finally one byte is written to end the + mask block, which marks the direction. + +- '''0x100''' The 0x100 mask is responsible for player graphics + updating. The data associated is a little-endian unsigned short + which represents the graphics id, and an int which is the graphics + delay. + +- '''0x2''' Animations are handled by the 0x2 mask. The payload for + this update is a little-endian unsigned short that is the animation + id, and an unsigned inversed byte which states the animation's + delay. + +- '''0x8''' The beloved 0x8 mask takes care of forced player text that + is only displayed above the player's model. The only data associated + with this is a jagex ASCII string with a terminator of 10. + +- '''0x40''' Unlike the previous, the 0x40 mask handles normal player + chat text. The client will read a little-endian unsigned short which + holds chat text attributes. It holds the text color and chat + effects. Next, the client reads an unsigned byte which states the + player's priveleges (normal player, player moderator, moderator, + staff) to give the chatter's name a crown. Right behind it trails an + unsigned inversed byte that gives chat text length in bytes. + Trailing afterwards is dictionary-compressed chat text. All chat + text characters become indexes into a valid character table and are + written as nibbles (4 bit quantities). + +- '''0x4''' Updating the player's current interacting-entity is done + via mask 0x4. The entity id is written as a little-endian unsigned + short. + +- '''0x1''' The 0x1 mask updates appearance of the player in exact + same way as in updating player list. Only difference is that + appearance is updated from a set-sized buffer filled from the + current buffer. An unsigned inversed byte is read first which + describes appearance buffer size, and the buffer is filled. + +- '''0x20''' Facing coordinate updating is signified by the 0x20 mask. + The player's facing-towards X and Y are set to read values; + specifically, an unsigned lower-inverted short and little-endian + unsigned short, respectively. + +- '''0x10''' Notifying client's of a player's health is done via the + 0x10 mask. The hitpoint damage done to the player is sent as an + unsigned byte, followed by the hit type as a positive inverted byte. + The player's current and max health are read as an unsigned inverted + byte and unsigned byte, respectively. + +- '''0x400''' The 0x400 mask acts in the same way as the 0x10 mask and + is most likely associated with special attacks from weapons that + have the ability to hit twice at the same time. Hitpoint damage is + an unsigned byte, the hit type an unsigned inverted byte, and the + current and maximum health being an unsigned byte and unsigned + inverted byte, respectively. + +After the client processes every single player in the update player +list, it ends player updating. + +==Game Protocol== The game protocol is the in-game communication of +player actions between the server and client.
===Server -\> Client +Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 13 \| FIXED +\| 3 \| \[\[289 Chat settings\|Chat settings\]\] \| Sends the chat +privacy settings. \|- \| 18 \| FIXED \| 6 \| \[\[289 Interface +item\|Interface item\]\] \| Displays an item model inside an interface. +\|- \| 21 \| VARIABLE\_BYTE \| N/A \| \[\[289 Send player option\|Send +player option\]\] \| Sends a player option (when a player is right +clicked, i.e. "Follow"). \|- \| 23 \| FIXED \| 0 \| \[\[289 Clear +screen\|Clear screen\]\] \| Clears the screen of all open interfaces. +\|- \| 30 \| FIXED \| 5 \| \[\[289 Send player head\|Send player +head\]\] \| Sends the players dialogue head on an interface. \|- \| 46 +\| FIXED \| 2 \| \[\[289 Weight\|Weight\]\] \| Sends the players weight. +\|- \| 47 \| VARIABLE\_SHORT \| N/A \| \[\[289 Send add ignore\|Send add +ignore\]\] \| Sends a ignored player to the ignore list. \|- \| 55 \| +FIXED \| 4 \| \[\[289 Inventory overlay\|Inventory overlay\]\] \| +Displays an interface over the sidebar area. \|- \| 59 \| +VARIABLE\_SHORT \| N/A \| \[\[289 Set interface text\|Set interface +text\]\] \| Attaches text to an interface. \|- \| 63 \| FIXED \| 3 \| +\[\[289 Send sidebar interface\|Send sidebar interface\]\] \| Assigns an +interface to one of the tabs in the game sidebar. \|- \| 76 \| FIXED \| +32 \| \[\[289 Send update item\|Send update item\]\] \| Updates an item +on an interface. \|- \| 79 \| FIXED \| 6 \| \[\[289 Interface +offset\|Interface offset\]\] \| Sets the offset for drawing of an +interface. \|- \| 81 \| FIXED \| 2 \| \[\[289 Chat interface\|Chat +interface\]\] \| Shows an interface in the chat box. \|- \| 107 \| FIXED +\| 2048 \| \[\[289 Send update items\|Send update items\]\] \| Updates +more than one item on an interface. \|- \| 119 \| FIXED \| 2 \| \[\[289 +Show interface\|Show interface\]\] \| Displays a normal interface. \|- +\| 120 \| FIXED \| 3 \| \[\[289 Initialize player\|Initialize player\]\] +\| Sends their current index on the server's player list and the +player's membership status. \|- \| 121 \| FIXED \| 0 \| \[\[289 +Logout\|Logout\]\] \| Disconnects the client from the server. \|- \| 133 +\| FIXED \| 0 \| \[\[289 Reset camera\|Reset camera\]\] \| Resets the +camera position. \|- \| 154 \| FIXED \| N/A \| \[\[317 Send Skill\|Send +Skill\]\] \| Sends a specific skill. \|- \| 155 \| FIXED \| 3 \| \[\[317 +Send position\|Send position\]\] \| Sends the coordinates of the player. +\|- \| 160 \| FIXED \| 4 \| \[\[289 Interface color\|Interface color\]\] +\| Changes the color of an interface. \|- \| 168 \| FIXED \| 9 \| +\[\[289 Send add friend\|Send add friend\]\] \| Sends a friend to the +friend list. \|- \| 172 \| FIXED \| 0 \| \[\[289 Reset button +state\|Reset button state\]\] \| Resets the button state for all +buttons. \|- \| 177 \| FIXED \| 6 \| \[\[289 Send sound\|Send sound\]\] +\| Instructs the client to play a sound. \|- \| 181 \| FIXED \| 1 \| +\[\[289 Flash sidebar\|Flash sidebar\]\] \| Causes a sidebar icon to +start flashing. \|- \| 184 \| FIXED \| 4 \| \[\[289 Scroll +position\|Scroll position\]\] \| Sets the scrollbar position of an +interface. \|-\| \| 185 \| FIXED \| 5 \| \[\[289 Send Player Head\|Send +Player Head\]\] \| Sends the player's head on an interface. \|- \| 187 +\| FIXED \| 3 \| \[\[289 Play song\|Play song\]\] \| Instructs the +client to play a song. \|- \| 188 \| N/A \| N/A \| \[\[289 +Protocol\#Player Updating\|Player updating\]\] \| See player updating +(above) for more information. \|- \| 195 \| FIXED \| 1 \| \[\[289 Run +energy\|Run energy\]\] \| Sends the players run energy level. \|- \| 196 +\| VARIABLE\_BYTE \| N/A \| \[\[289 Send message\|Send message\]\] \| +Sends a server message (e.g. 'Welcome to RuneScape') or trade/duel +request. \|- \| 200 \| FIXED \| 4 \| \[\[289 Interface +animation\|Interface animation\]\] \| Sets an interface's model +animation. \|- \| 201 \| FIXED \| 0 \| \[\[289 Animation +reset\|Animation reset\]\] \| Resets all animations in the immediate +area. \|- \| 204 \| FIXED \| 2 \| \[\[289 System update\|System +update\]\] \| Sends how many seconds until a 'System Update.' \|- \| 208 +\| FIXED \| 4 \| \[\[289 Camera shake\|Camera shake\]\] \| Causes the +camera to shake. \|- \| 219 \| FIXED \| 4 \| \[\[289 Load map +region\|Load map region\]\] \| Loads a new map region. \|- \| 221 \| +FIXED \| 1 \| \[\[317 Friends list status\|Friends list status\]\] \| +Friends list load status. \|- \| 243 \| VARIABLE\_BYTE \| N/A \| \[\[289 +Send private message\|Send private message\]\] \| Sends a private +message to another player. \|- \| 241 \| VARIABLE\_SHORT \| N/A \| +\[\[289 Construct Map Region\|Construct Map Region\]\] \| Constructs the +map region. \|- \| 244 \| FIXED \| 5 \| \[\[289 Send Npc Head\|Send Npc +Head\]\] \| Sends the dialogue head of an npc on an interface. \|- \| +247 \| FIXED \| 1 \| \[\[289 Minimap State\|Minimap State\]\] \| Sets +the mini map's state. \|- \| 253 \| FIXED \| 10 \| \[\[289 Open welcome +screen\|Open welcome screen\]\] \| Displays the welcome screen. \|- \|} + +===Client -\> Server Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 235 \| +FIXED \| 8 \| \[\[289 Add friend\|Add friend\]\] \| Sent when a player +adds a friend to their friend list. \|- \|} diff --git a/src/289-Send-Player-Head.md b/src/289-Send-Player-Head.md new file mode 100644 index 0000000..835cd5b --- /dev/null +++ b/src/289-Send-Player-Head.md @@ -0,0 +1,12 @@ +{{packet\|name=Send player head\|description=Sends the player head on an +interface\|opcode=185\|type=Fixed\|length=5\|revision=317}} + +== Friends List Status == + +=== Description === + +This packet sends the first list load status. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Little Endian Short-A\]\] \| The +interface Id. \|- \|} diff --git a/src/289-Send-sidebar-interface.md b/src/289-Send-sidebar-interface.md new file mode 100644 index 0000000..0bacb55 --- /dev/null +++ b/src/289-Send-sidebar-interface.md @@ -0,0 +1,11 @@ +{{packet\|name=Send Sidebar Interface\|description=Sends the sidebar +interfaces\|opcode=63\|type=Fixed\|length=3\|revision=317}} == Send +Sidebar Interface == + +=== Description === + +This packet sends the sidebar interfaces + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| The interface Id. \|- +\| \[\[Data Types\#Standard data types\|Byte\]\] \| The icon. \|- \|} diff --git a/src/317-Add-friend.md b/src/317-Add-friend.md new file mode 100644 index 0000000..f34f280 --- /dev/null +++ b/src/317-Add-friend.md @@ -0,0 +1,11 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Add +friend\|description=Sent when a player adds a friend to their friends +list.\|opcode=188\|type=Fixed\|length=8\|revision=317}} == Add Friend == + +=== Description === + +This packet is sent when a player adds a friend to their friends list. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Long\]\] \| The other players ID. +\|- \|} diff --git a/src/317-Add-ignore.md b/src/317-Add-ignore.md new file mode 100644 index 0000000..17adb21 --- /dev/null +++ b/src/317-Add-ignore.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Add +ignore\|description=Sent when a player adds another player to their +ignore list.\|opcode=133\|type=Fixed\|length=8\|revision=317}} == Add +Ignore == + +=== Description === + +This packet is sent when a player adds another player to their ignore +list. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Long\]\] \| The other players ID. +\|- \|} diff --git a/src/317-Alternate-item-option-2.md b/src/317-Alternate-item-option-2.md new file mode 100644 index 0000000..e8dc6cc --- /dev/null +++ b/src/317-Alternate-item-option-2.md @@ -0,0 +1,20 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Alternate Item Option 2\|description=Sent when the player +clicks the alternate second option of an +item.\|opcode=16\|type=Fixed\|length=6\|revision=317}} == Alternate Item +Option 2 == + +=== Description === + +This packet is sent when a player clicks the alternate second option of +an item. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \[\[Data Types\#Non +Standard Data Types\|Special A\]\] \| The ID of the item. \|- \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The slot the item is in. \|- \|- \| \[\[Data +Types\#Little Endian\|Little Endian\]\] \[\[Data Types\#Standard data +types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special A\]\] +\| The frame ID. \|- \|} diff --git a/src/317-Animation-reset.md b/src/317-Animation-reset.md new file mode 100644 index 0000000..b5a3a1d --- /dev/null +++ b/src/317-Animation-reset.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Animation reset\|description=Resets all animations in the +immediate area. \|opcode=1\|type=Fixed\|length=0\|revision=317}} == +Animation Reset == + +=== Description === + +Resets all animations for players and npcs in the surrounding area. diff --git a/src/317-Attack-(NPC).md b/src/317-Attack-(NPC).md new file mode 100644 index 0000000..be5f0dd --- /dev/null +++ b/src/317-Attack-(NPC).md @@ -0,0 +1,11 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Attack (NPC)\|description=Sent when a player attacks an +NPC\|opcode=72\|type=Fixed\|length=2\|revision=317}} == Attack (NPC) == + +=== Description === + +This packet is sent when a player attacks an NPC. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +Unsigned \[\[Data Types\#Standard data types\|Short\]\] \[\[Data +Types\#Non Standard Data Types\|Special A\]\] \| The NPC ID. \|- \|} diff --git a/src/317-Audio.md b/src/317-Audio.md new file mode 100644 index 0000000..5ce295c --- /dev/null +++ b/src/317-Audio.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Audio\|description=Sets what audio/sound is to play at a +certain moment.\|opcode=147\|type=Fixed\|length=N/A\|revision=317}} == +Audio == + +=== Description === + +Sets what audio/sound is to play at a certain moment. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Word\|Word\]\] \| The sound id. \|- \| \[\[Data +Types\#Byte\|Byte\]\] \| The volume. \|- \| \[\[Data +Types\#Word\|Word\]\] \| The delay. \|- \|} diff --git a/src/317-Bank-10-items.md b/src/317-Bank-10-items.md new file mode 100644 index 0000000..a1bea49 --- /dev/null +++ b/src/317-Bank-10-items.md @@ -0,0 +1,18 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Bank +10 items\|description=Sent when a player banks 10 of a certain +item.\|opcode=43\|type=Fixed\|length=6\|revision=317}} == Bank 10 Items +== + +=== Description === + +This packet is sent when the player attempts to bank 10 of a certain +item.
'''Note:''' This packet is also used for selling/buying 5 of +an item from a shop. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The frame ID. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The item ID. \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special +A\]\] \| The slot ID. \|} diff --git a/src/317-Bank-5-items.md b/src/317-Bank-5-items.md new file mode 100644 index 0000000..aff6a1c --- /dev/null +++ b/src/317-Bank-5-items.md @@ -0,0 +1,19 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Bank +5 items\|description=Sent when a player attempts to bank 5 of a certain +item.\|opcode=117\|type=Fixed\|length=6\|revision=317}} == Bank 5 Items +== + +=== Description === + +This packet is sent when a player attempts to bank 5 of a certain +item.
'''Note:''' This packet is also used for buying/selling 1 of +an item from a shop. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The frame ID. \|- \| \[\[Data Types\#Little +Endian\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\[\[Data Types\#Non Standard Data Types\|Special A\]\] \| The item ID. +\|- \| \[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The slot ID. \|- \|} diff --git a/src/317-Bank-X-items-part-1.md b/src/317-Bank-X-items-part-1.md new file mode 100644 index 0000000..c1c7248 --- /dev/null +++ b/src/317-Bank-X-items-part-1.md @@ -0,0 +1,16 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Bank +x items part-1\|description=Sent when a player requests to bank an X +amount of items.\|opcode=135\|type=Fixed\|length=6\|revision=317}} == +Bank X Items Part-1 == + +=== Description === + +This packet is sent when a player requests to bank an X amount of items. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The items slot. \|- \| Unsigned +\[\[Data Types\#Standard data types\|Short\]\] \[\[Data Types\#Non +Standard Data Types\|Special A\]\] \| The interface ID. \|- \| \[\[Data +Types\#Little Endian\|Little Endian\]\] \[\[Data Types\#Standard data +types\|Short\]\] \| The item ID. \|- \|} diff --git a/src/317-Bank-X-items-part-2.md b/src/317-Bank-X-items-part-2.md new file mode 100644 index 0000000..a7dc5cd --- /dev/null +++ b/src/317-Bank-X-items-part-2.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=bank +x items part-2\|description=Sent when a player enters an X amount of +items they want to +bank.\|opcode=208\|type=Fixed\|length=4\|revision=317}} == Bank X Items +Part-2 == + +=== Description === + +This packet is sent when a player enters an X amount of items they want +to bank. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Integer\]\] \| The amount of the +item you want to bank. \|- \|} diff --git a/src/317-Bank-all-items.md b/src/317-Bank-all-items.md new file mode 100644 index 0000000..f882a97 --- /dev/null +++ b/src/317-Bank-all-items.md @@ -0,0 +1,19 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Bank +all items\|description=Sent when a player banks all of a certain item +they have in their +inventory.\|opcode=129\|type=Fixed\|length=6\|revision=317}} == Bank 10 +Items == + +=== Description === + +This packet is sent when a player banks all of a certain item they have +in their inventory.
'''Note:''' This packet is also used for +selling/buying 10 items at a shop. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +Unsigned \[\[Data Types\#Standard data types\|Short\]\] \[\[Data +Types\#Non Standard Data Types\|Special A\]\] \| The items slot ID. \|- +\| Unsigned \[\[Data Types\#Standard data types\|Short\]\] \| The +interface ID. \|- \| Unsigned \[\[Data Types\#Standard data +types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special A\]\] +\| The item ID. \|- \|} diff --git a/src/317-Begin-player-updating.md b/src/317-Begin-player-updating.md new file mode 100644 index 0000000..6603cf5 --- /dev/null +++ b/src/317-Begin-player-updating.md @@ -0,0 +1,6 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] == Player Updating +== + +=== Description === + +This packet begins the player updating. diff --git a/src/317-Button-click.md b/src/317-Button-click.md new file mode 100644 index 0000000..6c7d57c --- /dev/null +++ b/src/317-Button-click.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Button click\|description=Sent when a player clicks an +in-game button.\|opcode=185\|type=Fixed\|length=2\|revision=317}} == +Button click == + +=== Description === + +This is sent when a player clicks a button in-game, with the id of the +button being clicked. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \| The button id. \|- \|} diff --git a/src/317-Camera-movement.md b/src/317-Camera-movement.md new file mode 100644 index 0000000..a02add5 --- /dev/null +++ b/src/317-Camera-movement.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Camera movement\|description=Sent when the player moves +the camera.\|opcode=86\|type=Fixed\|length=4\|revision=317}} == Camera +Movement == + +=== Description === + +This packet is sent when a player moves their game camera. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| The Y coordinate of +the camera. \|- \| \[\[Data Types\#Standard data types\|Short\]\] +\[\[Data Types\#Non Standard Data Types\|Special A\]\] \| The X +coordinate of the camera. \|- \|} diff --git a/src/317-Camera-shake.md b/src/317-Camera-shake.md new file mode 100644 index 0000000..f26d2b1 --- /dev/null +++ b/src/317-Camera-shake.md @@ -0,0 +1,56 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Camera oscillate\|description=Begin camera +oscillation\|opcode=35\|type=Fixed\|length=4\|revision=317}} == Camera +oscillate == + +=== Description === Begins camera oscillation, which is implemented +using a configurable sinusoidal oscillator to offset a specific degree +of freedom. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Byte\]\] \| Parameter (camera X, Z, Y, yaw, pitch) \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| Jitter - for +randomization \|- \| \[\[Data Types\#Standard data types\|Byte\]\] \| +Amplitude \|- \| \[\[Data Types\#Standard data types\|Byte\]\] \| +Frequency (scaled by 100) \|- \|} + +=== Other Information === The oscillate event enables the client to +oscillate one of 5 of it's position parameters, i.e. corresponding to +the camera's degrees of freedom; parameters 0, 1, and 2 refer to the +location of the camera, while 3 and 4 deal with the camera's +orientation. Together, these enable complex effects involving +manipulation of the camera position to give rise to simulated +earth-quakes and camera shock. {\| border=2 ! Parameter ! Description +\|- \| 0 \| Camera location along world X axis (a horizontal axis, +aligned with map grid X) \|- \| 1 \| Camera location along world Z axis +(vertical axis) \|- \| 2 \| Camera location along world Y axis (a +horizontal axis, aligned with map grid Y) \|- \| 3 \| Camera orientation +in world X plane w.r.t. world Z axis, i.e. yaw \|- \| 4 \| Camera +orientation in world Z plane w.r.t. world X axis, i.e. pitch \|- \|} +Note there is no built-in way to manipulate camera roll, as this is not +one of the camera's degrees of freedom. + +=== What it's doing === Every time the world is rendered, each camera +parameter that is enabled for oscillation is offset by a value computed +as follows: {\| border=2 ! Calculation ! Formula \|- \| Delta \| (int) +((Math.random() \* (double) (jitter \* 2 + 1) - (double) jitter) + +Math.sin((double) phase \* ((double) frequency / 100D)) \* (double) +amplitude); \|- \|} Each parameter's phase accumulator (phase) is +incremented by 1 each logic update. + +=== Parameter === The offset itself is detailed as follows for each +parameter: {\| border=2 ! Parameter ! Action \|- \| 0 \| camera\_x += +delta \|- \| 1 \| camera\_z += delta \|- \| 2 \| camera\_y += delta \|- +\| 3 \| camera\_yaw = camera\_yaw + delta & 0x7ff; \|- \| 4 \| +camera\_pitch += delta \|- \|} Note that the camera's yaw is corrected +modulo 0x7ff, or 2048, which is equivalent to 2{{{pi}}} radians in +Jagex's binary angle system. This is not done to the camera pitch, which +is instead clamped (see below). + +=== Note === For oscillating the camera pitch, clamping is done to +ensure the angle not out of bounds: {\| border=2 \|- \|if (camera\_pitch +\< 128) then camera\_pitch = 128 \|- \|if (camera\_pitch \> 383) then +camera\_pitch = 383 \|- \|} This is do to Jagex restricting the possible +range of orientations the camera may take. diff --git a/src/317-Chat-interface-click.md b/src/317-Chat-interface-click.md new file mode 100644 index 0000000..2d1affb --- /dev/null +++ b/src/317-Chat-interface-click.md @@ -0,0 +1,12 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Chat +interface click\|description=Received when a button is pressed, in a +chat interface.\|opcode=40\|type=Fixed\|length=2\|revision=317}} == Chat +interface click == + +=== Description === + +Received by the server when a button is pressed in a chat interface +\[http://rswiki.moparisthebest.com/index.php?title=317:Chat\_interface\]. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| Frame ID. \|- \|} diff --git a/src/317-Chat-interface.md b/src/317-Chat-interface.md new file mode 100644 index 0000000..1a83699 --- /dev/null +++ b/src/317-Chat-interface.md @@ -0,0 +1,12 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Chat +interface\|description=Shows an interface in the chat +box.\|opcode=164\|type=Fixed\|length=2\|revision=317}} == Chat Interface +== + +=== Description === + +This packet attaches an interface to the chat box. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The interface ID. \|- \|} diff --git a/src/317-Chat-settings.md b/src/317-Chat-settings.md new file mode 100644 index 0000000..a2cb88c --- /dev/null +++ b/src/317-Chat-settings.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Chat +settings\|description=Sends the chat privacy +settings\|opcode=206\|type=Fixed\|length=3\|revision=317}} == Chat +Settings == + +=== Description === + +This packet sends the chat privacy settings. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| Public chat setting. +\|- \| \[\[Data Types\#Standard data types\|Byte\]\] \| Private chat +setting. \|- \| \[\[Data Types\#Standard data types\|Byte\]\] \| Trade +setting. \|- \|} diff --git a/src/317-Clear-inventory.md b/src/317-Clear-inventory.md new file mode 100644 index 0000000..c2a6e2d --- /dev/null +++ b/src/317-Clear-inventory.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Clear +Inventory\|description=Used to set all of the items and item stacks in +an inventory to +nothing.\|opcode=72\|type=Fixed\|length=2\|revision=317}} == Clear +inventory == + +=== Description === + +This packet creates a loop through a given inventory interface id and +sets the item ids to negative one and the item stacks to zero. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The interface ID. \|- \|} diff --git a/src/317-Clear-screen.md b/src/317-Clear-screen.md new file mode 100644 index 0000000..4095e86 --- /dev/null +++ b/src/317-Clear-screen.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Clear +screen\|description=Clears the screen of all open +interfaces.\|opcode=219\|type=Fixed\|length=0\|revision=317}} == Clear +Screen == + +=== Description === + +Removes all open interfaces from the players screen. diff --git a/src/317-Close-window.md b/src/317-Close-window.md new file mode 100644 index 0000000..b6496ed --- /dev/null +++ b/src/317-Close-window.md @@ -0,0 +1,10 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Close +window\|description=Sent when a player presses the close, exit or cancel +button on an +interface.\|opcode=130\|type=Fixed\|length=0\|revision=317}} == Close +Window == + +=== Description === + +This packet is sent when a player presses the close, exit or cancel +button on an interface. diff --git a/src/317-Construct-map-region.md b/src/317-Construct-map-region.md new file mode 100644 index 0000000..514b170 --- /dev/null +++ b/src/317-Construct-map-region.md @@ -0,0 +1,37 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Construct map region\|description=Constructs a new map +region from a palette of 8x8 tiles.\|opcode=241\|type=Variable +Short\|length=N/A\|revision=317}} == Construct Map Region == + +=== Description === + +The construct map region packet sends a dynamic map region that is +constructed by using groups of 8\*8 tiles. It is generally used for +instanced areas, such as fight caves, and in later revisions, player +owned houses. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special +A\]\] \| The region Y coordinate (absolute Y coordinate / 8), plus 6. +\|- \| \[\[\#Bit block\|Bit block\]\] \| See below. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \| The region X coordinate +(absolute X coordinate / 8), plus 6. \|} + +==== Bit block ==== + +The bit block actually contains the 'palette' of map regions to make up +the new region. + +There is a loop, like this, used to construct it: + +for(int z = 0; z \< 4; z++) { for(int x = 0; x \< 13; x++) { for(int y = +0; y \< 13; y++) { // data for this region } } } + +The individual format in each iteration of the loop is: + +- '''1 bit''' - set to 0 to indicate to display nothing, 1 to display + a region +- '''26 bits''' - if the flag above is set to 1 - region x \<\< 14 \| + region y \<\< 3 diff --git a/src/317-Create-Projectile.md b/src/317-Create-Projectile.md new file mode 100644 index 0000000..e65142c --- /dev/null +++ b/src/317-Create-Projectile.md @@ -0,0 +1,22 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] == Create Projectile +== + +=== Description === + +Creates a projectile. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| Position offset \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| Second X offset \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| Second Y offset \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| Target \|- \| \[\[Data +Types\#Little Endian\|Little Endian\]\] \[\[Data Types\#Standard data +types\|Short\]\] \| Graphic ID \|- \| \[\[Data Types\#Standard data +types\|Byte\]\] \| Starting height \|- \| \[\[Data Types\#Standard data +types\|Byte\]\] \| Ending height \|- \| \[\[Data Types\#Little +Endian\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\| Starting time \|- \| \[\[Data Types\#Little Endian\|Little Endian\]\] +\[\[Data Types\#Standard data types\|Short\]\] \| Speed \|- \| \[\[Data +Types\#Standard data types\|Byte\]\] \| Initial slope \|- \| \[\[Data +Types\#Standard data types\|Byte\]\] \| Initial distance from source \|- +\|} diff --git a/src/317-Design-screen.md b/src/317-Design-screen.md new file mode 100644 index 0000000..964764f --- /dev/null +++ b/src/317-Design-screen.md @@ -0,0 +1,28 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Design screen\|description=Sent when a player is choosing +their character design +options.\|opcode=101\|type=Fixed\|length=13\|revision=317}} == Design +Screen == + +=== Description === + +This packet is sent when a player is choosing their character design +options. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| The players gender. \|- +\| \[\[Data Types\#Standard data types\|Byte\]\] \| The players head +model. \|- \| \[\[Data Types\#Standard data types\|Byte\]\] \| The +players beard model. \|- \| \[\[Data Types\#Standard data +types\|Byte\]\] \| The players torso model. \|- \| \[\[Data +Types\#Standard data types\|Byte\]\] \| The players arm model. \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| The players hand model. +\|- \| \[\[Data Types\#Standard data types\|Byte\]\] \| The players leg +model \|- \| \[\[Data Types\#Standard data types\|Byte\]\] \| The +players foot model. \|- \| \[\[Data Types\#Standard data types\|Byte\]\] +\| The players hair color. \|- \| \[\[Data Types\#Standard data +types\|Byte\]\] \| The players torso color. \|- \| \[\[Data +Types\#Standard data types\|Byte\]\] \| The players leg color. \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| The players foot color. +\|- \| \[\[Data Types\#Standard data types\|Byte\]\] \| The players skin +color. \|- \|} diff --git a/src/317-Display-hint-icon.md b/src/317-Display-hint-icon.md new file mode 100644 index 0000000..095d38e --- /dev/null +++ b/src/317-Display-hint-icon.md @@ -0,0 +1,31 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Display hint icon\|description=Display a hint icon to the +player.\|opcode=254\|type=Variable Byte\|length=N/A\|revision=317}} + +== Display Hint Icon == + +=== Description === + +Displays a hint icon. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Byte\]\] \| The Icon type \|- \|} + +=== if type == 1 === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data type\|Short\]\] \| Icon NPC target \|- \|} + +=== if type \>= 2 && type \<= 6 === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data type\|Short\]\] \| Icon X \|- \| \[\[Data Types\#Standard data +type\|Short\]\] \| Icon Y \|- \| \[\[Data Types\#Standard data +types\|Byte\]\] \| Icon draw height \|- \|} + +=== if type == 10 === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data type\|Short\]\] \| Icon player target \|- \|} diff --git a/src/317-Drop-item.md b/src/317-Drop-item.md new file mode 100644 index 0000000..5b39c1f --- /dev/null +++ b/src/317-Drop-item.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Drop +item\|description=Sent when a player wants to drop an item onto the +ground.\|opcode=87\|type=Fixed\|length=6\|revision=317}} == Drop Item == + +=== Description === + +This packet is sent when a player wants to drop an item onto the ground. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \[\[Data Types\#Non +Standard Data Types\|Special A\]\] \| The item ID. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \| The frame ID. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The slot ID. \|- \|} diff --git a/src/317-Enter-name.md b/src/317-Enter-name.md new file mode 100644 index 0000000..fbe6ece --- /dev/null +++ b/src/317-Enter-name.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Enter +name\|description=Opens up the name entry interface. +\|opcode=187\|type=Fixed\|length=0\|revision=317}} == Enter name == + +=== Description === + +Sending the packet to the client will make the client open up the "Enter +name" interface for things such as friend-adding. diff --git a/src/317-Equip-item.md b/src/317-Equip-item.md new file mode 100644 index 0000000..b9dd60b --- /dev/null +++ b/src/317-Equip-item.md @@ -0,0 +1,17 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Equip +item\|description=Sent when a player equips an +item.\|opcode=41\|type=Fixed\|length=6\|revision=317}} == Equip Item == + +=== Description === + +This is sent when a player equips an item in-game. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| Unsigned \[\[Data +Types\#Standard data types\|Short\]\] \| The ID of the item. \|- \| +Unsigned \[\[Data Types\#Standard data types\|Short\]\] \[\[Data +Types\#Non Standard Data Types\|Special A\]\] \| The slot of the item. +\|- \| Unsigned \[\[Data Types\#Standard data types\|Short\]\] \[\[Data +Types\#Non Standard Data Types\|Special A\]\] \| The ID of the +interface. \|- \|} diff --git a/src/317-Flash-sidebar.md b/src/317-Flash-sidebar.md new file mode 100644 index 0000000..797565e --- /dev/null +++ b/src/317-Flash-sidebar.md @@ -0,0 +1,20 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Flash +sidebar\|description=Causes a sidebar icon to start +flashing.\|opcode=24\|type=Fixed\|length=1\|revision=317}} == Flash +sidebar == + +=== Description === + +This packet causes a sidebar icon to start flashing. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \[\[Data Types\#Non +Standard data types\|Special S\]\] \| The sidebar ID. \|- \|} + +==== Values ==== The below are the different values for this packet. {\| +border=2 ! Value ! Icon \|- \| 0 \|\| Attack type \|- \| -1 \|\| Stats +\|- \| -2 \|\| Quests \|- \| -3 \|\| Inventory \|- \| -4 \|\| Wearing +\|- \| -5 \|\| Prayer \|- \| -6 \|\| Magic \|- \| -7 \|\| '''EMPTY''' +\|- \| -8 \|\| Friends list \|- \| -9 \|\| Ignore list \|- \| -10 \|\| +Log out \|- \| -11 \|\| Settings \|- \| -12 \|\| Emotes \|- \| -13 \|\| +Music \|- \|} diff --git a/src/317-Focus-change.md b/src/317-Focus-change.md new file mode 100644 index 0000000..8531a8f --- /dev/null +++ b/src/317-Focus-change.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Focus +change\|description=Sent when the game client window goes in and out of +focus.\|opcode=3\|type=Fixed\|length=1\|revision=317}} == Focus Change +== + +=== Description === + +This packet is sent when the game client window goes in and out of +focus. The payload consists of one byte that is either 1 or 0; 1 if the +client is in focus and 0 if not. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| Whether or not the +client is in focus. \|- \|} diff --git a/src/317-Follow.md b/src/317-Follow.md new file mode 100644 index 0000000..7aab442 --- /dev/null +++ b/src/317-Follow.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Follow\|description=Sent when a player clicks the follow +option on another +player\|opcode=39\|type=Fixed\|length=2\|revision=317}} == Follow == + +=== Description === + +This packet is sent when a player clicks the follow option on another +player. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +Unsigned \[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The other players ID. \|- \|} diff --git a/src/317-Force-client-setting.md b/src/317-Force-client-setting.md new file mode 100644 index 0000000..af5613e --- /dev/null +++ b/src/317-Force-client-setting.md @@ -0,0 +1,22 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Force +client setting\|description=Forcefully alters a client setting value and +default value to some supplied +value.\|opcode=36\|type=Fixed\|length=3\|revision=317}} == Force Client +Setting == + +=== Description === + +The client stores various user settings in an array, the default values +are also stored in another array. This packet changes the default value +for a setting and its current value to the one given. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \[\[Data Types\#Byte Order\|Little Endian\]\] \| +Setting ID number. \|- \| \[\[Data Types\#Standard data types\|Byte\]\] +\| New value (and default value) for the setting. \|- \|} + +=== Other Information === Opcode 87 (length 6) is extremely similar in +structure, but the new value is received as an Middle Endian Small Int. +This suggests its for use with bigger setting values. diff --git a/src/317-Friends-list-status.md b/src/317-Friends-list-status.md new file mode 100644 index 0000000..ad20cd4 --- /dev/null +++ b/src/317-Friends-list-status.md @@ -0,0 +1,16 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Friends list status\|description=Sends the friends list +load status\|opcode=221\|type=Fixed\|length=1\|revision=317}} == Friends +List Status == + +=== Description === + +This packet sends the first list load status. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| The status of the +friends list. \|- \|} + +==== Values ==== The below are the different values for this packet. {\| +border=2 ! Value ! Response \|- \| 0 \| Loading \|- \| 1 \| Connecting +\|- \| 2 \| Loaded \|- \|} diff --git a/src/317-Ground-Item-Action.md b/src/317-Ground-Item-Action.md new file mode 100644 index 0000000..cb8e5e8 --- /dev/null +++ b/src/317-Ground-Item-Action.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] == Ground Item +Action == + +=== Description === + +This packet is sent when a player clicks the first option on a ground +item. === Packet Structure === {\|border=2 ! Data Type ! Description \|- +\| \[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The items X coordinate. \|- \| +Additional \[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The items Y coordinate. \|- \| +Additional \[\[Data Types\#Standard data types\|Short\]\] \| The item +ID. \|- \|} diff --git a/src/317-Hidden-Interface.md b/src/317-Hidden-Interface.md new file mode 100644 index 0000000..4c018a6 --- /dev/null +++ b/src/317-Hidden-Interface.md @@ -0,0 +1,15 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Hidden interface\|description=Sets an interface to be +hidden until hovered +over.\|opcode=171\|type=Fixed\|length=3\|revision=317}} + +== Hidden Interface == + +=== Description === + +Sets an interface to be hidden until hovered over. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| Hidden until hovered +\|- \| \[\[Data Types\#Standard data types\|Short\]\] \| Interface Id +\|- \|} diff --git a/src/317-Idle-logout.md b/src/317-Idle-logout.md new file mode 100644 index 0000000..529807c --- /dev/null +++ b/src/317-Idle-logout.md @@ -0,0 +1,10 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Idle +logout\|description=Sent when the player has become idle and should be +logged out. \|opcode=202\|type=Fixed\|length=0\|revision=317}} == Idle +logout == + +=== Description === + +This is sent when the player becomes idle and should be logged out. This +is sent after the player is idle for 60 seconds, after that it is sent +every 10 seconds as long as the player is idle. diff --git a/src/317-Idle.md b/src/317-Idle.md new file mode 100644 index 0000000..e976bf3 --- /dev/null +++ b/src/317-Idle.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Idle\|description=Idle +packet..\|opcode=0\|type=Fixed\|length=0\|revision=317}} == Idle == + +=== Description === + +Sent when the player is idle for the current cycle, and acts as a "ping" +packet. diff --git a/src/317-Initialize-player.md b/src/317-Initialize-player.md new file mode 100644 index 0000000..b733a0d --- /dev/null +++ b/src/317-Initialize-player.md @@ -0,0 +1,18 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Initialize player\|description=Sends the player's +membership status and their current index on the server's player +list.\|opcode=249\|type=Fixed\|length=3\|revision=317}} == Initialize +Player == + +=== Description === + +Sends the player membership flag and player list index. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Byte\]\] \[\[Data Types\#Non Standard Data Types\|Special +A\]\] \| Membership flag (1 = member, 0 = free). \|- \| \[\[Data +Types\#Little Endian\|Little Endian\]\] \[\[Data Types\#Standard data +types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special A\]\] +\| Player list index. \|- \|} diff --git a/src/317-Input-amount.md b/src/317-Input-amount.md new file mode 100644 index 0000000..fa2754a --- /dev/null +++ b/src/317-Input-amount.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Input +amount\|description=Opens up the amount input interface. +\|opcode=27\|type=Fixed\|length=0\|revision=317}} == Input amount == + +=== Description === + +Sending the packet to the client will make the client open up the "Input +amount" interface over the chatbox for things such as Buy X and Bank X. diff --git a/src/317-Interface-animation.md b/src/317-Interface-animation.md new file mode 100644 index 0000000..57aaf51 --- /dev/null +++ b/src/317-Interface-animation.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Interface animation\|description=Sets an interface's +model animation\|opcode=200\|type=Fixed\|length=4\|revision=317}} == +Interface animation == + +=== Description === + +Sets an interface's model animation. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| The interface ID \|- +\| \[\[Data Types\#Standard data types\|Short\]\] \| The animation ID +\|- \|} diff --git a/src/317-Interface-color.md b/src/317-Interface-color.md new file mode 100644 index 0000000..96224eb --- /dev/null +++ b/src/317-Interface-color.md @@ -0,0 +1,23 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Interface color\|description=This packet changes the +color of an interface that is +text.\|opcode=122\|type=Fixed\|length=4\|revision=317}} == Interface +Color == + +=== Description === + +This packet changes the color of an interface that is text. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The interface ID. \|- \| \[\[Data Types\#Little +Endian\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\[\[Data Types\#Non Standard Data Types\|Special A\]\] \| The color. \|- +\|} + +=== Information === You use this packet to change the color of text in +an interface. + +{\|border=2 ! Color ! Code \|- \| Green \| 0x3366 \|- \| Yellow \| +0x33FF66 \|- \| Red \| 0x6000 \|- \|} diff --git a/src/317-Interface-item.md b/src/317-Interface-item.md new file mode 100644 index 0000000..9202c0e --- /dev/null +++ b/src/317-Interface-item.md @@ -0,0 +1,16 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Interface item\|description=Displays an item model inside +an interface.\|opcode=246\|type=Fixed\|length=6\|revision=317}} == +Interface Item == + +=== Description === + +Displays an item model inside an interface. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Little +Endian\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\|\| Interface ID. \|- \| \[\[Data Types\#Standard data types\|Short\]\] +\|\| The item's model zoom. \|- \| \[\[Data Types\#Standard data +types\|Short\]\] \|\| The item ID. \|} diff --git a/src/317-Interface-model-rotation.md b/src/317-Interface-model-rotation.md new file mode 100644 index 0000000..ec3028e --- /dev/null +++ b/src/317-Interface-model-rotation.md @@ -0,0 +1,18 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Interface model rotation\|description=Changes the zoom +and rotation of the interface id's media +given.\|opcode=230\|type=Fixed\|length=8\|revision=317}} == Interface +Color == + +=== Description === + +Changes the zoom and rotation of the interface id's media given. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Word\]\] \[\[Data Types\#Non +Standard Data Types\|Special A\]\] \| The zoom. \|- \| \[\[Data +Types\#Standard data types\|Word\]\] \| The interface id. \|- \| +\[\[Data Types\#Standard data types\|Word\]\] \| The rotation1. \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Word\]\] \[\[Data Types\#Non Standard data +types\|Special A\]\] \| The rotation2. \|- \|} diff --git a/src/317-Interface-offset.md b/src/317-Interface-offset.md new file mode 100644 index 0000000..1658484 --- /dev/null +++ b/src/317-Interface-offset.md @@ -0,0 +1,15 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Interface offset\|description=Sets the offset for drawing +of an interface\|opcode=70\|type=Fixed\|length=6\|revision=317}} == +Interface offset == + +=== Description === + +Sets the offset for drawing of an interface. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| The X offset \|- \| +\[\[Data Types\#Byte Order\|Little Endian\]\] \[\[Data Types\#Standard +data types\|Short\]\] \| The Y offset \|- \| \[\[Data Types\#Byte +Order\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\| The interface ID \|- \|} diff --git a/src/317-Interface-over-tab.md b/src/317-Interface-over-tab.md new file mode 100644 index 0000000..f0b174a --- /dev/null +++ b/src/317-Interface-over-tab.md @@ -0,0 +1,12 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Interface over tab\|description=Draws an interface over +the tab area.\|opcode=106\|type=Fixed\|length=1\|revision=317}} == Open +Welcome Screen == + +=== Description === + +This packet draws an interface over the tab area. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data type\|Byte\]\] \[\[Data Types\#Non +Standard data types\|Special C\]\] \| Interface ID \|- \|} diff --git a/src/317-Inventory-overlay.md b/src/317-Inventory-overlay.md new file mode 100644 index 0000000..12f4522 --- /dev/null +++ b/src/317-Inventory-overlay.md @@ -0,0 +1,22 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Inventory Overlay\|description=Overlays an interface on +the inventory\|opcode=248\|type=Fixed\|length=4\|revision=317}} == Child +Frame == + +=== Description === + +This packet overlays an interface in the inventory area. This is used in +trading and staking. + +=== Example === + +
sendFrame248(3323, 3321);
+That will set the open interface to interface 3323, which is the trade +interface, with the inventory overlay interface as 3321, which is an +inventory type interface with offer actions. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \[\[Data Types\#Non +Standard data types\|Special A\]\] \| The interface to open. \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| The interface to +overlay the inventory area. \|- \|} diff --git a/src/317-Item-action-1.md b/src/317-Item-action-1.md new file mode 100644 index 0000000..ae46c45 --- /dev/null +++ b/src/317-Item-action-1.md @@ -0,0 +1,18 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Item +action 1\|description=Sent when the player clicks the first option of an +item.\|opcode=122\|type=Fixed\|length=6\|revision=317}} == Item Action 1 +== + +=== Description === + +This packet is sent when a player clicks the first option of an item, +such as "Bury" for bones or "Eat" for food. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The frame ID. \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special +A\]\] \| The slot the item is in. \|- \| \[\[Data Types\#LITTLE +Endian\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\| The ID of the item. \|- \|} diff --git a/src/317-Item-on-floor.md b/src/317-Item-on-floor.md new file mode 100644 index 0000000..c248ab1 --- /dev/null +++ b/src/317-Item-on-floor.md @@ -0,0 +1,23 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Item +on floor\|description=Sent when a player uses an item on another item +thats on the floor.\|opcode=25\|type=Fixed\|length=10\|revision=317}} == +Item on Floor== + +=== Description === + +This packet is sent when a player uses an item on another item thats on +the floor. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The interface ID. \|- \| +Unsigned \[\[Data Types\#Standard data types\|Short\]\] \[\[Data +Types\#Non Standard Data Types\|Special A\]\] \| The item being used ID. +\|- \| \[\[Data Types\#Standard data types\|Short\]\] \| The floor items +ID. \|- \| Unsigned \[\[Data Types\#Standard data types\|Short\]\] +\[\[Data Types\#Non Standard Data Types\|Special A\]\] \| The Y +coordinate of the item. \|- \| Unsigned \[\[Data Types\#Little +Endian\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\[\[Data Types\#Non Standard Data Types\|Special A\]\] \| The items slot +ID. \|- \| \[\[Data Types\#Standard data types\|Short\]\] \| The X +coordinate of the item. \|- \|} diff --git a/src/317-Item-on-item.md b/src/317-Item-on-item.md new file mode 100644 index 0000000..12c45fa --- /dev/null +++ b/src/317-Item-on-item.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Item +on item\|description=Sent when a player uses an item on another +item.\|opcode=53\|type=Fixed\|length=4\|revision=317}} == Item on Item +== + +=== Description === + +This packet is sent when a player uses an item on another item. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| The item being used +on's slot. \|- \| \[\[Data Types\#Standard data types\|Short\]\] +\[\[Data Types\#Non Standard Data Types\|Special A\]\] \| The item being +used's slot. \|- \|} diff --git a/src/317-Item-on-object.md b/src/317-Item-on-object.md new file mode 100644 index 0000000..3fc3825 --- /dev/null +++ b/src/317-Item-on-object.md @@ -0,0 +1,22 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Item +on object\|description=Sent when a player uses an item on an +objet.\|opcode=192\|type=Fixed\|length=12\|revision=317}} == Item on +Object == + +=== Description === + +This packet is sent when a player uses an item on object. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \[\[Data Types\#Non +Standard Data Types\|Special A\]\] \| The frame ID. \|- \| \[\[Data +Types\#Little Endian\|Little Endian\]\] \[\[Data Types\#Standard data +types\|Short\]\] \| The object ID. \|- \| \[\[Data Types\#Big +Endian\|Big Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\[\[Data Types\#Non Standard Data Types\|Special A\]\] \| The objects Y +coordinate. \|- \| \[\[Data Types\#Big Endian\|Big Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The items slot ID. \|- \| +\[\[Data Types\#Big Endian\|Big Endian\]\] \[\[Data Types\#Standard data +types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special A\]\] +\| The objects X coordinate. \|- \| \[\[Data Types\#Standard data +types\|Short\]\] \| The item ID. \|- \|} diff --git a/src/317-Item-on-player.md b/src/317-Item-on-player.md new file mode 100644 index 0000000..f63aa8e --- /dev/null +++ b/src/317-Item-on-player.md @@ -0,0 +1,16 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Item +on player\|description=Sent when a player uses an item on another +player.\|opcode=14\|type=Fixed\|length=8\|revision=317}} == Item on +Player == + +=== Description === + +This packet is sent when a player uses an item on another player. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \[\[Data Types\#Non +Standard Data Types\|Special A\]\] \| The frame ID. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \| The other players ID. \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| The item ID. \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The items slot ID. \|- \|} diff --git a/src/317-Light-item.md b/src/317-Light-item.md new file mode 100644 index 0000000..684c916 --- /dev/null +++ b/src/317-Light-item.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Light +item\|description=Sent when a player attempts to light logs on +fire.\|opcode=79\|type=Fixed\|length=6\|revision=317}} == Light Item == + +=== Description === + +This packet is sent when a player attempts to light logs on fire. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| The items Y +coordinate. \|- \| Unsigned \[\[Data Types\#Standard data +types\|Short\]\] \| The item ID. \|- \| \[\[Data Types\#Little +Endian\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\| The items X coordinate. \|- \|} diff --git a/src/317-Load-map-region.md b/src/317-Load-map-region.md new file mode 100644 index 0000000..3c8810c --- /dev/null +++ b/src/317-Load-map-region.md @@ -0,0 +1,23 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Load +map region\|description=Makes the client load the specified map +region.\|opcode=73\|type=Fixed\|length=4\|revision=317}} == Load Map +Region == + +=== Description === + +Makes the client load the specified map region. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special +A\]\] \| Region X coordinate (absolute X / 8) plus 6. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \| Region Y coordinate (absolute Y +/ 8) plus 6. \|- \|} + +=== Other Information === There are various loops/arrays within the map +region loading functionality of the client which have been misunderstood +by many. {\| border=2 ! Loop type ! Description \|- \| 104 x 104 \| +Maximum size of the client's load area \|- \| 8 x 8 \| Load blocks to +speed up loading NPCs, Items and Objects \|- \| 13 x 13 \| Number of +load blocks to load \|- \|} diff --git a/src/317-Loading-finished.md b/src/317-Loading-finished.md new file mode 100644 index 0000000..7030fc1 --- /dev/null +++ b/src/317-Loading-finished.md @@ -0,0 +1,9 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Loading finished\|description=Sent when the player is +finished loading a map +region\|opcode=121\|type=Fixed\|length=0\|revision=317}} == Loading +Finished == + +=== Description === + +This packet is sent when a player is finished loading a new map region. diff --git a/src/317-Logout.md b/src/317-Logout.md new file mode 100644 index 0000000..4a8052f --- /dev/null +++ b/src/317-Logout.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Logout\|description=Forces the client to +logout.\|opcode=109\|type=Fixed\|length=0\|revision=317}} == Logout == + +=== Description === + +Forces the client to logout cleanly and return to the login screen, +without attempting a reconnection. diff --git a/src/317-Mage-NPC.md b/src/317-Mage-NPC.md new file mode 100644 index 0000000..b1cbae0 --- /dev/null +++ b/src/317-Mage-NPC.md @@ -0,0 +1,10 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Mage +NPC\|description=Sent when a player attempts to use a magic attack on an +NPC.\|opcode=131\|type=Fixed\|length=4\|revision=317}} == Mage NPC == + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Non Standard Data Types\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| ? \|- \| \[\[Data Types\#Standard data +types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special A\]\] +\| ? \|- \|} diff --git a/src/317-Magic-on-items.md b/src/317-Magic-on-items.md new file mode 100644 index 0000000..4ebd752 --- /dev/null +++ b/src/317-Magic-on-items.md @@ -0,0 +1,17 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Magic +on items\|description=Sent when a player casts magic on the items in +their inventory.\|opcode=237\|type=Fixed\|length=8\|revision=317}} == +Magic on Items == + +=== Description === + +This packet is sent when a player casts magic (i.e. High Level Alchemy) +on the items in their inventory. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| The items slot ID. \|- +\| \[\[Data Types\#Standard data types\|Short\]\] \[\[Data Types\#Non +Standard Data Types\|Special A\]\] \| The item ID. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \| The frame ID. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The spell ID. \|- \|} diff --git a/src/317-Magic-on-player.md b/src/317-Magic-on-player.md new file mode 100644 index 0000000..1367c89 --- /dev/null +++ b/src/317-Magic-on-player.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] + +{{packet\|name=Magic on player\|description=This packet is send when a +player attempts to cast magic on +another\|opcode=249\|type=Fixed\|length=4\|revision=317}} == Magic on +Player == === Description === This packet is sent when the player +attempts to cast magic onto another. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \[\[Data Types\#Non +Standard Data Types\|Special A\]\] \| The player index. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Byte +Order\|Little\]\] \| The spell ID. \|- \|} diff --git a/src/317-Minimap-State.md b/src/317-Minimap-State.md new file mode 100644 index 0000000..3c37601 --- /dev/null +++ b/src/317-Minimap-State.md @@ -0,0 +1,15 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Minimap State\|description=Sets the state of the clients +minimap.\|opcode=99\|type=Fixed\|length=1\|revision=317}} == Minimap +State == + +=== Description === + +This packet sets the Minimaps state + +'''States:''' \* 0 - '''Active''': Clickable and viewable \* 1 +-'''Locked''': viewable but not clickable \* 2 -'''Blacked-out''': +Minimap is replaced with black background + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#byte\|byte\]\] \| The state. \|- \|} diff --git a/317-Mouse-click.mediawiki b/src/317-Mouse-click.md similarity index 52% rename from 317-Mouse-click.mediawiki rename to src/317-Mouse-click.md index ca77775..3aadaa6 100644 --- a/317-Mouse-click.mediawiki +++ b/src/317-Mouse-click.md @@ -1,7 +1,5 @@ -[[Category Packet]] -[[Category Packet 317]] -== Mouse click == +\[\[Category Packet\]\] \[\[Category Packet 317\]\] == Mouse click == === Description === -This packet is sent when a player clicks somewhere on the game screen. \ No newline at end of file +This packet is sent when a player clicks somewhere on the game screen. diff --git a/src/317-Move-item.md b/src/317-Move-item.md new file mode 100644 index 0000000..bef4c54 --- /dev/null +++ b/src/317-Move-item.md @@ -0,0 +1,19 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Move +item\|description=Sent when the player moves an item from one slot to +another.\|opcode=214\|type=Fixed\|length=7\|revision=317}} == Move Item +== + +=== Description === + +This packet is sent when a player moves an item from one slot to +another. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The frame ID. \|- \| \[\[Data Types\#Standard +data types\|Byte\]\] \| Insert mode. \|- \| \[\[Data Types\#Little +Endian\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\[\[Data Types\#Non Standard Data Types\|Special A\]\] \| Starting slot. +\|- \| \[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| New slot. \|- \|} diff --git a/src/317-Music.md b/src/317-Music.md new file mode 100644 index 0000000..76b4265 --- /dev/null +++ b/src/317-Music.md @@ -0,0 +1,12 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Audio\|description=Sets the audio to +play.\|opcode=174\|type=Fixed\|length=N/A\|revision=317}} == Audio == + +=== Description === + +Sets what audio to play at a certain moment. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Word\|Word\]\] \| The sound id. \|- \| \[\[Data +Types\#Byte\|Byte\]\] \| The volume. \|- \| \[\[Data +Types\#Word\|Word\]\] \| The delay. \|- \|} diff --git a/317-NPC-Dialogue.mediawiki b/src/317-NPC-Dialogue.md similarity index 50% rename from 317-NPC-Dialogue.mediawiki rename to src/317-NPC-Dialogue.md index 8ccd5e9..5f47c07 100644 --- a/317-NPC-Dialogue.mediawiki +++ b/src/317-NPC-Dialogue.md @@ -1,7 +1,6 @@ -[[Category Packet]] -[[Category Packet 317]] -== NPC Dialogue == +\[\[Category Packet\]\] \[\[Category Packet 317\]\] == NPC Dialogue == === Description === -This packet is what handles when the player hits the "Click here to continue". \ No newline at end of file +This packet is what handles when the player hits the "Click here to +continue". diff --git a/src/317-NPC-action-1.md b/src/317-NPC-action-1.md new file mode 100644 index 0000000..5bb1774 --- /dev/null +++ b/src/317-NPC-action-1.md @@ -0,0 +1,12 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=NPC +action 1\|description=Sent when a player clicks the first option of an +NPC.\|opcode=155\|type=Fixed\|length=2\|revision=317}} == NPC Action 1 +== + +=== Description === + +This packet is sent when a player clicks the first option of an NPC. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The NPC index. \|} diff --git a/src/317-NPC-action-2.md b/src/317-NPC-action-2.md new file mode 100644 index 0000000..146d4dd --- /dev/null +++ b/src/317-NPC-action-2.md @@ -0,0 +1,12 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=NPC +action 2\|description=Sent when a player clicks the second action of an +NPC.\|opcode=17\|type=Fixed\|length=2\|revision=317}} == NPC Action 2 == + +=== Description === + +This packet is sent when a player clicks the second action of an NPC. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The NPC index. \|- \|} diff --git a/src/317-NPC-action-3.md b/src/317-NPC-action-3.md new file mode 100644 index 0000000..bf98482 --- /dev/null +++ b/src/317-NPC-action-3.md @@ -0,0 +1,12 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=NPC +action 3\|description=Sent when a player clicks the third option of an +NPC.\|opcode=21\|type=Fixed\|length=2\|revision=317}} == NPC Action 3 == + +=== Description === + +This packet is sent when a player clicks the third option of an NPC. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +Unsigned \[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The NPC index. \|- \|} diff --git a/src/317-NPC-head-on-interface.md b/src/317-NPC-head-on-interface.md new file mode 100644 index 0000000..39baf54 --- /dev/null +++ b/src/317-NPC-head-on-interface.md @@ -0,0 +1,16 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=NPC +head on interface\|description=Places the head of an NPC on an +interface\|opcode=75\|type=Fixed\|length=4\|revision=317}} == NPC head +on interface == + +=== Description === + +Places the head of an NPC on an interface + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The NPC ID \|- \| \[\[Data Types\#Little +Endian\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\[\[Data Types\#Non Standard Data Types\|Special A\]\] \| The 'slot' ID +for where you wish to place the head \|- \|} diff --git a/src/317-Object-action-1.md b/src/317-Object-action-1.md new file mode 100644 index 0000000..4da0db8 --- /dev/null +++ b/src/317-Object-action-1.md @@ -0,0 +1,18 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Object action 1\|description=Sent when the player clicks +the first option of an +object.\|opcode=132\|type=Fixed\|length=6\|revision=317}} == Object +Action 1 == + +=== Description === + +This packet is sent when a player clicks the first option of an object, +such as "Cut" for trees or "Mine" for rocks. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The objects X coordinate. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \| The objects ID. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The objects Y coordinate. \|- \|} diff --git a/src/317-Object-action-2.md b/src/317-Object-action-2.md new file mode 100644 index 0000000..215df20 --- /dev/null +++ b/src/317-Object-action-2.md @@ -0,0 +1,19 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Object action 2\|description=Sent when the player clicks +the second option available for an an +object.\|opcode=252\|type=Fixed\|length=6\|revision=317}} == Object +action 2 == + +=== Description === + +This packet is sent when a player clicks the second option available of +an object, such as "Prospect" for rocks. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The objects ID. \|- \| \[\[Data Types\#Little +Endian\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\| The objects Y coordinate. \|- \| \[\[Data Types\#Standard data +types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special A\]\] +\| The objects X coordinate. \|} diff --git a/src/317-Object-action-3.md b/src/317-Object-action-3.md new file mode 100644 index 0000000..39aa07f --- /dev/null +++ b/src/317-Object-action-3.md @@ -0,0 +1,18 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Object action 3\|description=Sent when a player clicks +the third action available for an +object.\|opcode=70\|type=Fixed\|length=6\|revision=317}} == Object +Action 3 == + +=== Description === + +This packet is sent when a player clicks the third action available for +an object. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The X coordinate of the object. +\|- \| \[\[Data Types\#Standard data types\|Short\]\] \| The Y +coordinate of the object. \|- \| \[\[Data Types\#Big Endian\|Big +Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] \[\[Data +Types\#Non Standard Data Types\|Special A\]\] \| The object ID. \|} diff --git a/src/317-Object-removal.md b/src/317-Object-removal.md new file mode 100644 index 0000000..7bfc144 --- /dev/null +++ b/src/317-Object-removal.md @@ -0,0 +1,9 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] == Object removal == + +=== Description === + +This packet requests the client to remove an object. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +Negated \[\[Data Types\#byte\|byte\]\] \| object type \<\< 2 + object +rotation & 3 \|- \| \[\[Data Types\#byte\|byte\]\] \| 0 \|- \|} diff --git a/src/317-Object-spawn.md b/src/317-Object-spawn.md new file mode 100644 index 0000000..1f45880 --- /dev/null +++ b/src/317-Object-spawn.md @@ -0,0 +1,11 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] == Object spawn == + +=== Description === + +This packet requests the client to spawn an object. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +subtrahend \[\[Data Types\#byte\|byte\]\] \| 0 \|- \| Little endian +\[\[Data Types\#byte\|byte\]\] \| ObjectID \|- \| subtrahend \[\[Data +Types\#byte\|byte\]\] \| object type \<\< 2 + object rotation & 3 \|- +\|} diff --git a/src/317-Open-chatbox-interface.md b/src/317-Open-chatbox-interface.md new file mode 100644 index 0000000..d258807 --- /dev/null +++ b/src/317-Open-chatbox-interface.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Open +chatbox interface\|description=Displays an interface over the +chatbox.\|opcode=218\|type=Fixed\|length=2\|revision=317}} == Open +chatbox interface == + +=== Description === + +Sending this packet to the client will cause the client to open an +interface over the chatbox. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard data +types\|Special A\]\] \| Interface ID. \|- \|} diff --git a/src/317-Open-welcome-screen.md b/src/317-Open-welcome-screen.md new file mode 100644 index 0000000..6297b32 --- /dev/null +++ b/src/317-Open-welcome-screen.md @@ -0,0 +1,20 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Open +welcome screen\|description=Displays the welcome +screen.\|opcode=176\|type=Fixed\|length=10\|revision=317}} == Open +Welcome Screen == + +=== Description === + +This packet displays the welcome screen. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data type\|Byte\]\] \[\[Data Types\#Non +Standard data types\|Special C\]\] \| Days since last recovery change +(200 for not yet set, 201 for members server). \|- \| \[\[Data +Types\#Standard data type\|Short\]\] \[\[Data Types\#Non Standard data +types\|Special A\]\] \| Number of unread messages. \|- \| \[\[Data +Types\#Standard data types\|Byte\]\] \| Member warning (1 for member, 0 +for non-member). \|- \| \[\[Data Types\#Non Standard data +types\|Middle-Endian Big Integer\]\] \| Last logged IP. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \| Last logged successful log-n. +\|- \|} diff --git a/src/317-Pickup-ground-item.md b/src/317-Pickup-ground-item.md new file mode 100644 index 0000000..b8eadd3 --- /dev/null +++ b/src/317-Pickup-ground-item.md @@ -0,0 +1,18 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Pickup ground item\|description=Sent when the player +picks up an item from the +ground.\|opcode=236\|type=Fixed\|length=6\|revision=317}} == Pickup +Ground Item == + +=== Description === + +This packet is sent when a player clicks the "Pick Up" option on an item +when its on the ground. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The Y coordinate of the item. +\|- \| \[\[Data Types\#Standard data types\|Short\]\] \| The item ID. +\|- \| \[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The X coordinate of the item. +\|- \|} diff --git a/src/317-Play-song.md b/src/317-Play-song.md new file mode 100644 index 0000000..e174376 --- /dev/null +++ b/src/317-Play-song.md @@ -0,0 +1,12 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Play +song\|description=Starts playing a +song.\|opcode=74\|type=Fixed\|length=2\|revision=317}} == Play song == + +=== Description === + +Sending this packet to the client will cause the client to start playing +a song. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The song ID. \|- \|} diff --git a/src/317-Player-Option.md b/src/317-Player-Option.md new file mode 100644 index 0000000..d2a51f2 --- /dev/null +++ b/src/317-Player-Option.md @@ -0,0 +1,10 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Player Option\|description=Adds an option to a player's +right click context +menu.\|opcode=104\|type=Variable\|length=N/A\|revision=317}} == Player +Option == + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] C \| The option position. +\|- \| \[\[Data Types\#Standard data types\|Byte\]\] A \| Flag \|- \| +\[\[Data Types\#Standard data types\|String\]\] \| Action text. \|- \|} diff --git a/src/317-Player-command.md b/src/317-Player-command.md new file mode 100644 index 0000000..313d8e2 --- /dev/null +++ b/src/317-Player-command.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Player command\|description=Sent when a player types a +command in the chat box.\|opcode=103\|type=Variable +Byte\|length=N/A\|revision=317}} == Player Command == + +=== Description === + +This packet is sent when a player types a message with the prefix '::', +the message is then sent to the server and an appropriate action is +taken (e.g. spawning an item). + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[RS String\|RS String\]\] \| The command name and parameters. \|} diff --git a/src/317-Player-head-to-interface.md b/src/317-Player-head-to-interface.md new file mode 100644 index 0000000..b6aad64 --- /dev/null +++ b/src/317-Player-head-to-interface.md @@ -0,0 +1,11 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Send +head model to interface.\|description=Sends the player head model to an +interface.\|opcode=185\|type=Fixed\|length=2\|revision=317}} == Send +player head model to an interface == + +=== Description === + +This packet sends a players head to an interface + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Little Endian Short A\]\] \| The interface ID. \|- \|} diff --git a/src/317-Privacy-options.md b/src/317-Privacy-options.md new file mode 100644 index 0000000..a895bcc --- /dev/null +++ b/src/317-Privacy-options.md @@ -0,0 +1,16 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Privacy options\|description=Sent when a player changes +their privacy options.\|opcode=95\|type=Fixed\|length=3\|revision=317}} +== Privacy Options == + +=== Description === + +This packet is sent when a player changes their privacy options +(i.e. public chat). + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +Unsigned \[\[Data Types\#Standard data types\|Byte\]\] \| The public +chat options. \|- \| Unsigned \[\[Data Types\#Standard data +types\|Byte\]\] \| The private chat options. \|- \| Unsigned \[\[Data +Types\#Standard data types\|Byte\]\] \| The trade/compete options. \|- +\|} diff --git a/src/317-Protocol.md b/src/317-Protocol.md new file mode 100644 index 0000000..9f8ec07 --- /dev/null +++ b/src/317-Protocol.md @@ -0,0 +1,673 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] \[\[Category RS2\]\] +== '''Packet structure''' == When the client sends a packet to the +server, the first byte encapsulates its +\[http://en.wikipedia.org/wiki/Opcode opcode\]. This specific opcode is +encrypted with a value generated by the +\[http://en.wikipedia.org/wiki/ISAAC\_(cipher) ISAAC\] +\[http://en.wikipedia.org/wiki/Pseudorandom\_number\_generator PRNG\] +seeded with a dynamically server generated key during the login block. +The server decrypts it and associates the opcode to the packet's +respective predefined size. If the packet does not contain a fixed size, +the opcode will be followed by either a byte or a word - varying per +packet - for its proper size. This is then followed by the +\[http://en.wikipedia.org/wiki/Payload\_(software) payload\]. + +A list of the 317 Packets may be found +\[http://rswiki.moparisthebest.com/index.php?title=Category:Packet:317 +here\]. + +== '''Login Protocol Overview''' == Every connection to the main +'gateway' server sends a single byte of data, mostly well known as the +connection type. The connection type tells the main server which type of +connection you wish to initiate. The old engine list consists of: \* +Login request - connection type 14 \* Update - connection type 15 \* New +connection login - connection type 16 \* Reconnecting login - connection +type 18 + +The connection type we will cover in the following paragraphs is the +login connection type, 14. After the login handshake initiating +connection type, the client writes hash derived from the logging in +player's username. This is believed to help select the appropriate login +server. On successful handshake, the server sends back 8 ignored bytes. + +
long encodedUsername = TextUtils.encodeAsBase37Integer(username);
+int usernameHash = (int) (encodedUsername >> 16 & 31L);
+out.offset = 0;
+out.writeByte(14); // Initiate connection type
+out.writeByte(usernameHash);
+in.queueBytes(2, out.payload);
+for (int j = 0; j < 8; j++) in.read();
+At this point, the client reads in one byte, called the status code. The +status code 0 is expected to start the login protocol correctly. If the +status code is 0, the client reads a long, dubbed by many as the server +session key. This is used to help generate a unique seed for the client +session's packet opcode masking. The client then stores two ints that +are the upper and lower ints of the client session key, which has the +same purpose as the server's key. The client then starts writing the +login block, which is RSA encrypted. + +The login block starts with the byte 10, which is considered a magic +number. Following it is the client session key and server session key +longs. After the session keys, the session's UID (unique identifier or +user identifier) is written to the block. This is used to distinguish +between multiple sessions. Trailing behind the UID comes the client's +username and password written as modified C-strings that are rather +terminated with a 10 byte than a NUL byte. This block is then RSA +encrypted and stored for later use. + +Now starts the login request packet. It starts off with a flag telling +the server whether or not the client is reconnecting or connecting for +the first time. The byte is 18 or 16, respectively. \[NOW CLASSIFIED AS +A CONNECTION TYPE\] Following is the size of the rest of the login +response packet, including the login block that trails at the end, to +tip the server how much data it should expect. Later comes the magic +number byte 255, and right behind it the client revision short. The +packet is just about crafted completely. A flag byte that represents if +the client is running in low memory or high memory modes is sent, and +after the 9 CRC32 checksums of the file system 0 basic archives (this +includes versionlist, media, config, etc.). To top it off, the RSA +encrypted login block is appended to the end and the packet is sent to +the server. + +The ISAAC ciphers are seeded for packet opcode masking after adding 50 +to each int of the session keys, and the status code is reread. This +finishes the login protocol. + +== '''Login Protocol Breakdown''' == The login is comprised of four +stages in which the client and server switch in regards to which one is +reading and which one is writing.
===Variables:=== The login +process has a lot of variable data, compiled here is a list of the +variables and their different values. ====Name Hash==== A hash of the +player name, thought to be used to select an appropriate login server. +This has no use in current private servers. + +====Server Session Key==== The server-session-key is one of two ciphers +used to encrypt the game protocol, using the ISAAC algorithms.
+===="Data File Version"==== The CRC checks for the cache +files.
+ +====User ID==== A client-side randomly generated integer. This could be +used in reassigning sessions to players that have lost connection. It is +stored as a packed integer in a file named 'uid.dat' in the cache +directory.
+ +====Username==== The username of the player, used to identify their +account.
====Password==== The password of the player account, used +so only they can log into their account.
====Client Session +Key==== The client-session-key is one of two ciphers used to encrypt the +game protocol, using the ISAAC algorithms.
====Connect Status==== +The status of the connection. {\|border=2 ! Value ! Status \|- \| 16 \| +Signifies that the connection is new. \|- \| 18 \| Signifies that the +session is reconnecting a previously lost connection. \|- \|} + +====Size==== The size of the unencrypted login packet, used to determine +how many bytes need to be read from the stream by the server.
+====Client Version==== The memory-version of the game client. +{\|border=2 ! Value ! Status \|- \| 0 \| Signifies the client is a +low-memory client. \|- \| 1 \| Signifies that the client is a +high-memory client. \|- \|} + +====CRC Values==== 9 4-byte values, Each containing the CRC of their +respective cache files. Used by the server to verify client is up to +date.
+ +====Player Status==== The in-game player status - player, player +moderator, or administrator.
{\|border=2 ! Value ! Status \|- \| 0 +\| Signifies that this player is a normal player. \|- \| 1 \| Signifies +that this player is a player moderator. \|- \| 2 \| Signifies that this +player is an administrator. \|- \|} + +====Flagged==== If set to 1, information about mouse movements etc. are +sent to the server. Suspected bot accounts are flagged.
+====Response Codes==== At the beginning and 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.
{\| border=2 ! 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. Please 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 \[\[\#Regarding response code 15\|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 sends byte 18 as it's +\[\[\#Connect Status\|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 poor connection you've +noticed that your chat stays there upon a reconnect, and this is exactly +why. When you implement +response code 15 though, you do NOT need to send the "player status" or +the "flagged" bytes. + +===Login Process:=== ====Stage 1: Client -\> Server==== {\| border=2 \|- +! Data Type ! Value \|- \| ubyte \| 14 \|- \| ubyte \| "name hash" \|- +\|}
+ +====Stage 2: Server -\> Client==== {\| border=2 \|- ! Data Type ! Value +\|- \| byte \| 0 \|- \| byte \| 0 \|- \| byte \| 0 \|- \| byte \| 0 \|- +\| byte \| 0 \|- \| byte \| 0 \|- \| byte \| 0 \|- \| byte \| 0 \|- \| +byte \| "response code" \|- \| \[\[QWord\|long\]\] \| "server session +key" \|- \|}
+ +====Stage 3: Client -\> Server==== {\| border=2 \|- ! Data Type ! Value +\|- \| byte \| "connect status" \|- \| byte \| "size" \|- \| byte \| 255 +\|- \| \[\[Word\|short\]\] \| 317 \|- \| byte \| "client version" \|- \| +\[\[DWord\|int\]\] \| "crc values"\[0\] \|- \| \[\[DWord\|int\]\] \| +"crc values"\[1\] \|- \| \[\[DWord\|int\]\] \| "crc values"\[2\] \|- \| +\[\[DWord\|int\]\] \| "crc values"\[3\] \|- \| \[\[DWord\|int\]\] \| +"crc values"\[4\] \|- \| \[\[DWord\|int\]\] \| "crc values"\[5\] \|- \| +\[\[DWord\|int\]\] \| "crc values"\[6\] \|- \| \[\[DWord\|int\]\] \| +"crc values"\[7\] \|- \| \[\[DWord\|int\]\] \| "crc values"\[8\] \|- \| +byte \| 10 \|- \| \[\[QWord\|long\]\] \| "client session key" \|- \| +\[\[QWord\|long\]\] \| "server session key" \|- \| \[\[DWord\|int\]\] \| +"user id" \|- \| \[\[RS String\|RS String\]\] \| "username" \|- \| +\[\[RS String\|RS String\]\] \| "password" \|- \|}
+ +====Stage 4: Server -\> Client==== {\| border=2 \|- ! Data Type ! Value +\|- \| byte \| "response code" \|- \| byte \| "player status" \|- \| +byte \| "flagged" \|- \|}
+ +== '''Player Updating''' == The player updating process consists of 4 +parts: \* a) Our player movement updates \* b) Other player movement +updates \* c) Player list updating \* c.a) Apperance updating \* c.b) +Location updating \* d) Player update block flag-based updates + +'''Our player movement updates''' + +The client begins by reading 1 bit. This bit tells the client whether or +not it is currently updating 'our player', or the player the client is +controlling. If it's not updating our player, it exits and goes onto +step b. If it is, it then reads 2 bits. The value is called the movement +update type. There are 4 recognized movement update types: + +- Type 0 basically tells the client there is nothing to update for our + player, just add its index to the local updating list. + +- Type 1 tells the client you moved in one direction. The client reads + 3 bits, which represents the direction you moved in, and then 1 bit, + which states whether further update is required. If so, it adds it + to the updating list. This is used in walking. + +- Type 2 functions in much of the same way as its previous, only this + time it reads two 3 bit values. The first represents the player's + last direction, and the second it's current direction. Trailing + behind it is also the 1 bit 'update required' flag as type 1. This + is used in running. + +- Type 3 on the other hand is different. It reads in 2 bits which + represents our player's plane, or its level of height, in the game + world. + +Only 0-3 inclusive are appropriate planes supported by the client. It +then reads 1 bit, which describes whether or not to clear the +awaiting-waypoint queue, basically to stop client from further queued +stepping, such as used in teleporting. After this, it reads the 'update +required' bit, and checks to see if further update is required. Directly +after, it reads two 7 bit quantities, representing the new relative X +and relative Y coordinates of our player to our current map region's +origin. It then sets our players position to the plane, x, and y +positions as told to. + +'''Other player movement updates''' + +The client begins by reading an 8 bit value telling the client how many +players there are to update. It then enters a loop for each player there +is to update. + +Inside this loop, the client reads 1 bit. This is the movement update +required flag. If the flag is 0, it sets the current updating player's +last update cycle time to the current game logic loop cycle time, and +adds the player to the local player list. If the flag is not 0, it then +reads the movement update type, which is a 2 bit quantity. The following +known types are: + +- 0, the client updates the current player's last update cycle time, + adds the current player to the local player list, and adds it to the + updating list. + +- 1, the client updates the current player's last update cycle time + and adds the current player to the local player list as well, but + also reads in 3 bit quantity. This represents the current player's + direction it walked to. It then reads the a 1 bit value that + specifies whether or not to add the player to the updating list. + +- 2, the client does the exact same thing as the type 2 update, except + it reads in two of the 3 bit quantities. The first represents the + current player's last direction, and the second its current + direction running. + +- 3, the client queues to remove the player from the list of players + to be updated but it is possible such as in the instances for when + players teleport to add them back to the list of players to be + updated during the populate update. + +'''Player list updating''' + +The next step in the player updating procedure is the player list +updating, or where the client recieves data on every player in its local +list, such as appearance and location relative to ours. The client loops +through a process for each player in the updating. + +The client reads an 11 bit quantity from the buffer, which is the next +player in the updated list to be informed about. The clietn then checks +if it has a cached buffer for that player's updating, and if it does, it +updates the player appearance. + +'''Appearance updating''' + +Appearance updating starts off by first reading an unsigned byte that +represents the current player's gender. Then it reads another unsigned +byte that represents the player's over-head icon id. This is used with +prayer icons above heads. Next, a loop occurs 12 times to read equipment +data. + +In the loop, the client reads an unsigned byte that is the equipment +slot's item id high byte. If it is 0, the player's equpment slot has no +item. If it is not 0, another unsigned byte is read the merged with the +previous to create the equipment's item id. If the id is 65535 (written +as a -1 signed short), then the player's appearance is that of an NPC. +The client reads in an unsigned short representing the NPC's id and sets +the player's definition to that NPC's. + +After the equipment loop, it loops 5 times, once for each type of +coloured body part. In each loop, the client reads an unsigned short and +assigns it as the color of the current loop idx (which represents the +body part). + +Finally, after the color loop, the client reads 7 unsigned shorts +representing animation indices; the animations belong to: \* Standing +still \* Turning while standing \* Walking \* Turning around (backwards) +\* Turning a quarter-way clockwise \* Turning a quarter-way counter +clockwise \* Running + +After these animation indices are read, a long representing the player's +name is read, an unsigned byte representing the combat level, and an +unsigned short representing the players skill level (for things where +players arent ranked by levels, such as where it states ' +(skill )' as an action menu text). + +'''Location updating''' + +After the appearance updating, the client starts to update that player's +location relative to our player. The player is added to the local player +list and it's last update cycle time. It then reads a 1 bit quantity +that defines whether or not the client has a chunk in the player update +block list. If it does, it adds it to the updating list. The next bit +states whether or not to discard the awaiting-waypoint queue, such as +when teleporting. It then reads to 5 bit values that determine the +players relative X and Y coordinates to our player. The local player +area is 16x16, so if the delta of the two coordinates is \> 15, 32 is +subtracted from it to signify the player is on the other side of ours. +The client then sets the player's position, ending the player list +updating process. + +'''Update block flag-based updating''' + +The following is what most people think of when they say 'update mask' +and 'update flag'. This process of the updating procedure is very +important. It begins with looping through ALL players in the local +player update list, reading an unsigned byte which from now on will be +called the update flag. All further updates are seen to be 'included' by +comparing a bitwise mask to this flag. If the flag has the bits for 0x40 +all on, this signifies that the flag was too large for a simple unsigned +byte and reads in another unsigned byte, which it uses as the upper +unsigned byte, therefore the update flag is an unsigned little-endian +short. The client then passes off the data to a helper method which +processes all updates this flag signifies. + +Inside this method, many different bitwise masks are compared to the +player's flag, and if the mask is set, logic is performed. These masks +are frequently called update masks. A list of player update masks are +below: + +- '''0x400''' The 0x400 mask is used to update the player so they + appear to be asynchronously animating and walking. This mask is + often used for the \[http://runescape.wikia.com/wiki/Agility + Agility\] skill. The data associated goes in order of: byte (type C) + which is the first location's X coordinate value, byte (type S) + which is the first location's Y coordinate value, byte (type S) + which is the second location's X coordinate value, byte (type C) the + second location's Y coordinate value. After the locations are + written, there is a required movement speed which is written as a + short which marks how fast to move from position 1 to position 2. + Another short (type A) is written as the movement speed going from + position 2 to position 1. Finally one byte is written to end the + mask block, which marks the direction. + +- '''0x100''' The 0x100 mask is responsible for player graphics + updating. The data associated is a little-endian unsigned short + which represents the graphics id, and an int which is the graphics + delay. + +- '''0x8''' Animations are handled by the 0x8 mask. The payload for + this update is a little-endian unsigned short that is the animation + id, and an unsigned inversed byte (Special C) which states the + animation's delay. + +- '''0x4''' The beloved 0x4 mask takes care of forced player text that + is only displayed above the player's model. The only data associated + with this is a jagex ASCII string with a terminator of 10. + +- '''0x80''' Unlike the previous, the 0x80 mask handles normal player + chat text. The client will read a little-endian unsigned short which + holds chat text attributes. It holds the text color and chat + effects. Next, the client reads an unsigned byte which states the + player's priveleges (normal player, player moderator, moderator, + staff) to give the chatter's name a crown. Right behind it trails an + unsigned inversed byte that gives chat text length in bytes. + Trailing afterwards is dictionary-compressed chat text. All chat + text characters become indexes into a valid character table and are + written as nibbles (4 bit quantities). + +- '''0x1''' Updating the player's current interacting-entity is done + via mask 0x1. The entity id is written as a little-endian unsigned + short. + +- '''0x10''' The 0x10 mask updates appearance of the player in exact + same way as in updating player list. Only difference is that + appearance is updated from a set-sized buffer filled from the + current buffer. An unsigned inversed byte is read first which + describes appearance buffer size, and the buffer is filled. + +- '''0x2''' Facing coordinate updating is signified by the 0x2 mask. + The player's facing-towards X and Y are set to read values; + specifically, an unsigned lower-inverted short and little-endian + unsigned short, respectively. + +- '''0x20''' Notifying client's of a player's health is done via the + 0x20 mask. The hitpoint damage done to the player is sent as an + unsigned byte, followed by the hit type as a positive inverted byte. + The player's current and max health are read as an unsigned inverted + byte and unsigned byte, respectively. + +- '''0x200''' The 0x200 mask acts in the same way as the 0x20 mask and + is most likely associated with special attacks from weapons that + have the ability to hit twice at the same time. Hitpoint damage is + an unsigned byte, the hit type an unsigned inverted byte, and the + current and maximum health being an unsigned byte and unsigned + inverted byte, respectively. + +After the client processes every single player in the update player +list, it ends player updating. + +==Game Protocol== The game protocol is the in-game communication of +player actions between the server and client.
===Server -\> Client +Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 1 \| FIXED +\| 0 \| \[\[317 Animation reset\|Animation reset\]\] \| Resets all +animations in the immediate area. \|- \| 4 \| FIXED \| 6 \| \[\[317 Draw +graphic at position\|Draw graphic at position\]\] \| Draw a graphic at a +given x/y position after a delay. \|- \| 8 \| FIXED \| 4 \| \[\[317 Set +interface model\|Set interface model\]\] \| Draw a given model on a +given interface. \|- \| 24 \| FIXED \| 1 \| \[\[317 Flash sidebar\|Flash +sidebar\]\] \| Causes a sidebar icon to start flashing. \|- \| 27 \| +FIXED \| 0 \| \[\[317 Input amount\|Input amount\]\] \| Displays the +"Input amount" interface. \|- \| 34 \| VARIABLE\_SHORT \| N/A \| \[\[317 +Draw items on interface\|Draw items on interface\]\] \| Draw a +collection of items on an interface. \|- \| 35 \| FIXED \| 4 \| \[\[317 +Camera shake\|Camera shake\]\] \| Causes the camera to shake. \|- \| 36 +\| FIXED \| 3 \| \[\[317 Force client setting\|Force client setting\]\] +\| Forcefully changes a client's setting's value. Also changes the +default value for that setting. \|- \| 44 \| FIXED \| 5 \| \[\[317 Send +ground item\|Send ground item\]\] \| Place an item stack on the ground. +\|- \| 50 \| FIXED \| 9 \| \[\[317 Send add friend\|Send add friend\]\] +\| Sends a friend to the friend list. \|- \| 53 \| VARIABLE\_SHORT \| +N/A \| \[\[317 Draw items on interface\|Draw items on interface\]\] \| +Draw a collection of items on an interface. \|- \| 60 \| VARIABLE\_SHORT +\| N/A \| \[\[317 Begin processing position related packets\|Begin +processing position related packets\]\] \| Begin processing position +related packets. \|- \| 61 \| FIXED \| 1 \| \[\[317 Show +multi-combat\|Show multi-combat\]\] \| Shows the player that they are in +a multi-combat zone. \|- \| 64 \| FIXED \| 2 \| \[\[317 Delete ground +item\|Delete ground item\]\] \| Delete ground item. \|- \| 65 \| +VARIABLE\_SHORT \| N/A \| \[\[317 NPC updating\|NPC updating\]\] \| NPC +updating \|- \| 68 \| FIXED \| 0 \| \[\[317 Reset button state\|Reset +button state\]\] \| Resets the button state for all buttons. \|- \| 70 +\| FIXED \| 6 \| \[\[317 Interface offset\|Interface offset\]\] \| Sets +the offset for drawing of an interface. \|- \| 71 \| FIXED \| 3 \| +\[\[317 Send sidebar interface\|Send sidebar interface\]\] \| Assigns an +interface to one of the tabs in the game sidebar. \|- \| 72 \| FIXED \| +2 \| \[\[317 Clear inventory\|Clear inventory\]\] \| Clears an +interface's inventory. \|- \| 73 \| FIXED \| 4 \| \[\[317 Load map +region\|Load map region\]\] \| Loads a new map region. \|- \| 74 \| +FIXED \| 4 \| \[\[317 Play song\|Play song\]\] \| Starts playing a song. +\|- \| 75 \| FIXED \| 4 \| \[\[317 NPC head on interface\|NPC head on +interface\]\] \| Place the head of an NPC on an interface \|- \| 78 \| +FIXED \| 0 \| \[\[317 Reset destination\|Reset destination\]\] \| Resets +the players' destination. \|- \| 79 \| FIXED \| 4 \| \[\[317 Scroll +position\|Scroll position\]\] \| Sets the scrollbar position of an +interface. \|- \| 81 \| VARIABLE \| N/A \| \[\[317 Begin player +updating\|Begin player updating\]\] \| Begins the player update +procedure \|- \| 84 \| FIXED \| 7 \| \[\[317 Edit ground item +amount\|Edit ground item amount\]\] \| Edit ground item amount \|- \| 85 +\| FIXED \| 2 \| \[\[317 Set local player coordinates\|Set local player +coordinates\]\] \| Set local player coordinates \|- \| 87 \| FIXED \| 7 +\| \[\[317 Force client setting\|Force client setting\]\] \| Forcefully +changes a client's setting's value. Also changes the default value for +that setting. \|- \| 97 \| FIXED \| 2 \| \[\[317 Show interface\|Show +interface\]\] \| Displays a normal interface. \|- \| 99 \| FIXED \| 1 \| +\[\[317 Minimap State\|Minimap State\]\] \| Sets the mini map's state. +\|- \| 101 \| FIXED \| 3 \| \[\[317 Object removal\|Object removal\]\] +\| Sends an object removal request to the client. \|- \| 104 \| VARIABLE +\| N/A \| \[\[317 Player Option\|Player Option\]\] \| Adds a player +option to the right click menu of player(s). \|- \| 105 \| FIXED \| 4 \| +\[\[317 Play sound in location\|Play sound in location\]\] \| Play sound +in location. \|- \| 106 \| FIXED \| 1 \| \[\[317 Interface over +tab\|Interface over tab\]\] \| Draws an interface over the tab area. \|- +\| 107 \| FIXED \| 0 \| \[\[317 Reset camera\|Reset camera\]\] \| Resets +the camera position. \|- \| 109 \| FIXED \| 0 \| \[\[317 +Logout\|Logout\]\] \| Disconnects the client from the server. \|- \| 110 +\| FIXED \| 1 \| \[\[317 Run energy\|Run energy\]\] \| Sends the players +run energy level. \|- \| 114 \| FIXED \| 2 \| \[\[317 System +update\|System update\]\] \| Sends how many seconds until a 'System +Update.' \|- \| 117 \| N/A \| N/A \| \[\[317 Create Projectile\|Create +Projectile\]\] \| Creates a projectile. \|- \| 121 \| FIXED \| 4 \| +\[\[317 Song Queue\|Song Queue\]\] \| Queues a song to be played next. +\|- \| 122 \| FIXED \| 4 \| \[\[317 Interface color\|Interface color\]\] +\| Changes the color of an interface. \|- \| 126 \| VARIABLE\_SHORT \| +N/A \| \[\[317 Set interface text\|Set interface text\]\] \| Attaches +text to an interface. \|- \| 134 \| FIXED \| 6 \| \[\[317 Skill +level\|Skill level\]\] \| Sends a skill level to the client. \|- \| 142 +\| FIXED \| 2 \| \[\[317 Show inventory interface\|Show inventory +interface\]\] \| Show inventory interface \|- \| 147 \| FIXED \| 14 \| +\[\[317 Player to object transformation\|Player to object +transformation\]\] \| Player to object transformation \|- \| 151 \| +FIXED \| 5 \| \[\[317 Object spawn\|Object spawn\]\] \| Sends an object +spawn request to the client. \|- \| 156 \| FIXED \| 3 \| \[\[317 Remove +non-specified ground items???\|Remove non-specified ground items???\]\] +\| Remove non-specified ground items?????? \|- \| 160 \| FIXED \| 4 \| +\[\[317 Spawn an animated object???\|Spawn an animated object???\]\] \| +Shows an interface in the chat box?????? \|- \| 164 \| FIXED \| 2 \| +\[\[317 Chat interface\|Chat interface\]\] \| Shows an interface in the +chat box. \|- \| 166 \| FIXED \| 6 \| \[\[317 Spin camera\|Spin +camera\]\] \| Spin camera \|- \| 171 \| FIXED \| 3 \| \[\[317 Hidden +Interface\|Hidden Interface\]\] \| Sets an interface to be hidden until +hovered over. \|- \| 174 \| FIXED \| N/A \| \[\[317 Audio\|Audio\]\] \| +Sets what audio/sound is to play at a certain time. \|- \| 176 \| FIXED +\| 10 \| \[\[317 Open welcome screen\|Open welcome screen\]\] \| +Displays the welcome screen. \|- \| 177 \| FIXED \| 6 \| \[\[317 Set +cutscene camera\|Set cutscene camera\]\] \| Set cutscene camera \|- \| +185 \| FIXED \| 2 \| \[\[317 Player head to interface\|Player head to +interface\]\] \| Sends the players head model to an interface \|- \| 187 +\| FIXED \| 0 \| \[\[317 Enter name\|Enter name\]\] \| Displays the +"Enter name" interface. \|- \| 196 \| VARIABLE\_BYTE \| N/A \| \[\[317 +Send private message\|Send private message\]\] \| Sends a private +message to another player. \|- \| 200 \| FIXED \| 4 \| \[\[317 Interface +animation\|Interface animation\]\] \| Sets an interface's model +animation. \|- \| 206 \| FIXED \| 3 \| \[\[317 Chat settings\|Chat +settings\]\] \| Sends the chat privacy settings. \|- \| 208 \| FIXED \| +2 \| \[\[317 Walkable interface\|Walkable interface\]\] \| Displays an +interface in walkable mode. \|- \| 214 \| VARIABLE\_SHORT \| N/A \| +\[\[317 Send add ignore\|Send add ignore\]\] \| Sends a ignored player +to the ignore list. \|- \| 215 \| FIXED \| 7 \| \[\[317 Spawn ground +item for all except specified player\|Spawn ground item for all except +specified player\]\] \| Spawn ground item for all except specified +player \|- \| 218 \| FIXED \| 2 \| \[\[317 Open chatbox interface\|Open +chatbox interface\]\] \| Opens an interface over the chatbox. \|- \| 219 +\| FIXED \| 0 \| \[\[317 Clear screen\|Clear screen\]\] \| Clears the +screen of all open interfaces. \|- \| 221 \| FIXED \| 1 \| \[\[317 +Friends list status\|Friends list status\]\] \| Friends list load +status. \|- \| 230 \| FIXED \| 8 \| \[\[317 Interface model +rotation\|Interface model rotation\]\] \| Sets an interface's model +rotation and zoom \|- \| 240 \| FIXED \| 2 \| \[\[317 Weight\|Weight\]\] +\| Sends the players weight amount. \|- \| 241 \| VARIABLE\_SHORT \| N/A +\| \[\[317 Construct map region\|Construct map region\]\] \| Constructs +a dynamic map region using a palette of 8\*8 tiles. \|- \| 246 \| FIXED +\| 6 \| \[\[317 Interface item\|Interface item\]\] \| Displays an item +model inside an interface. \|- \| 248 \| FIXED \| 4 \| \[\[317 Inventory +overlay\|Inventory overlay\]\] \| Displays an interface over the sidebar +area. \|- \| 249 \| FIXED \| 3 \| \[\[317 Initialize player\|Initialize +player\]\] \| Sends the player's membership status and their current +index on the server's player list. \|- \| 253 \| VARIABLE\_BYTE \| N/A +\| \[\[317 Send message\|Send message\]\] \| Sends a server message +(e.g. 'Welcome to RuneScape') or trade/duel request. \|- \| 254 \| +VARIABLE\_BYTE \| N/A \| \[\[317 Display hint icon\|Display hint +icon\]\] \| Displays a hint icon. \|- \|} + +===Client -\> Server Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 0 \| FIXED +\| 0 \| \[\[317 Idle\|Idle\]\] \| Sent when there are no actions being +performed by the player for this cycle. \|- \| 3 \| FIXED \| 1 \| +\[\[317 Focus change\|Focus change\]\] \| Sent when the game client +window goes out of focus. \|- \| 4 \| VARIABLE BYTE \| N/A \| \[\[317 +Chat\|Chat\]\] \| Sent when the player enters a chat message. \|- \| 14 +\| FIXED \| 8 \| \[\[317 Item on player\|Item on player\]\] \| Sent when +a player uses an item on another player. \|- \| 16 \| FIXED \| 1 \| +\[\[317 Alternate item option 2\|Alternate item option 2\]\] \| Sent +when a player uses an item. This is an alternate item option. \|- \| 17 +\| FIXED \| 2 \| \[\[317 NPC action 2\|NPC action 2\]\] \| Sent when a +player clicks the second option of an NPC. \|- \| 18 \| FIXED \| 2 \| +\[\[317 NPC action 4\|NPC action 4\]\] \| Sent when a player clicks the +fourth option of an NPC. \|- \| 21 \| FIXED \| 2 \| \[\[317 NPC action +3\|NPC action 3\]\] \| Sent when a player clicks the third option of an +NPC. \|- \| 25 \| FIXED \| 10 \| \[\[317 Item on floor\|Item on +floor\]\] \| Sent when a player uses an item on another item thats on +the floor. \|- \| 39 \| FIXED \| 2 \| \[\[317 Trade answer\|Trade +answer\]\] \| Sent when a player answers a trade request from another +player. \|- \| 40 \| FIXED \| N/A \| \[\[317 NPC +Dialogue\|NpcDialogue\]\] \| Sent when a player clicks the "Click here +to continue" on any dialogue. \|- \| 41 \| FIXED \| 6 \| \[\[317 Equip +item\|Equip item\]\] \| Sent when a player equips an item. \|- \| 43 \| +FIXED \| 6 \| \[\[317 Bank 10 items\|Bank 10 items\]\] \| Sent when a +player banks 10 of a certain item. \|- \| 53 \| FIXED \| 4 \| \[\[317 +Item on item\|Item on item\]\] \| Sent when a player uses an item with +another item. \|- \| 70 \| FIXED \| 6 \| \[\[317 Object action 3\|Object +action 3\]\] \| Sent when the player clicks the third action available +for an object. \|- \| 72 \| FIXED \| 2 \| \[\[317 Attack (NPC)\|Attack +(NPC)\]\] \| Sent when a player attacks an NPC. \|- \| 73 \| FIXED \| 2 +\| \[\[317 Trade request\|Trade request\]\] \| Sent when a player +requests a trade with another player. \|- \| 74 \| FIXED \| 8 \| \[\[317 +Remove ignore\|Remove ignore\]\] \| Sent when a player removes a player +from their ignore list. \|- \| 79 \| FIXED \| 6 \| \[\[317 Light +item\|Light item\]\] \| Sent when a player attempts to light logs on +fire. \|- \| 86 \| FIXED \| 4 \| \[\[317 Camera movement\|Camera +movement\]\] \| Sent when the player moves the camera. \|- \| 87 \| +FIXED \| 6 \| \[\[317 Drop item\|Drop item\]\] \| Sent when a player +wants to drop an item onto the ground. \|- \| 95 \| FIXED \| 3 \| +\[\[317 Privacy options\|Privacy options\]\] \| Sent when a player +changes their privacy options (i.e. public chat). \|- \| 98 \| +VARIABLE\_BYTE \| N/A \| \[\[317 Walk on command\|Walk on command\]\] \| +Sent when the player should walk somewhere according to a certain action +performed, such as clicking an object. \|- \| 101 \| FIXED \| 13 \| +\[\[317 Design screen\|Design screen\]\] \| Sent when a player is +choosing their character design options. \|- \| 103 \| VARIABLE\_BYTE \| +N/A \| \[\[317 Player command\|Player command\]\] \| Sent when the +player enters a command in the chat box (e.g. "::command") \|- \| 117 \| +FIXED \| 6 \| \[\[317 Bank 5 items\|Bank 5 items\]\] \| Sent when a +player banks 5 of a certain item. \|- \| 121 \| FIXED \| 0 \| \[\[317 +Loading finished\|Loading finished\]\] \| Sent when the client finishes +loading a map region. \|- \| 122 \| FIXED \| 6 \| \[\[317 Item action +1\|Item action 1\]\] \| Sent when the player clicks the first option of +an item, such as "Bury" for bones. \|- \| 126 \| VARIABLE BYTE \| N/A \| +\[\[317 Private message\|Private message\]\] \| Sent when a player sends +a private message to another player. \|- \| 129 \| FIXED \| 6 \| \[\[317 +Bank all items\|Bank all items\]\] \| Sent when a player banks all of a +certain item that they have in their inventory. \|- \| 130 \| FIXED \| 0 +\| \[\[317 Close window\|Close window\]\] \| Sent when a player presses +the close, exit or cancel button on an interface. \|- \| 131 \| FIXED \| +4 \| \[\[317 Mage NPC\|Mage NPC\]\] \| Sent when a player uses magic +attacks on an NPC. \|- \| 132 \| FIXED \| 6 \| \[\[317 Object action +1\|Object action 1\]\] \| Sent when the player clicks the first option +of an object, such as "Cut" for trees. \|- \| 133 \| FIXED \| 8 \| +\[\[317 Add ignore\|Add ignore\]\] \| Sent when a player adds a player +to their ignore list. \|- \| 135 \| FIXED \| 6 \| \[\[317 Bank X items +part-1\|Bank X items part-1\]\] \| Sent when a player requests to bank +an X amount of items. \|- \| 139 \| FIXED \| 2 \| \[\[317 +Follow\|Follow\]\] \| Sent when a player clicks the follow option on +another player. \|- \| 145 \| FIXED \| 6 \| \[\[317 Unequip +item\|Unequip item\]\] \| Sent when a player unequips an item. \|- \| +155 \| FIXED \| 2 \| \[\[317 NPC action 1\|NPC action 1\]\] \| Sent when +a player clicks first option of an NPC, such as "Talk." \|- \| 164 \| +VARIABLE\_BYTE \| N/A \| \[\[317 Regular walk\|Regular walk\]\] \| Sent +when the player walks regularly. \|- \| 185 \| FIXED \| 2 \| \[\[317 +Button click\|Button click\]\] \| Sent when a player clicks an in-game +button. \|- \| 188 \| FIXED \| 8 \| \[\[317 Add friend\|Add friend\]\] +\| Sent when a player adds a friend to their friend list. \|- \| 192 \| +FIXED \| 12 \| \[\[317 Item on object\|Item on object\]\] \| Sent when a +a player uses an item on an object. \|- \| 202 \| FIXED \| 0 \| \[\[317 +Idle logout\|Idle logout\]\] \| Sent when the player has become idle and +should be logged out. \|- \| 208 \| FIXED \| 4 \| \[\[317 Bank X items +part-2\|Bank X items part-2\]\] \| Sent when a player enters an X amount +of items they want to bank. \|- \| 210 \| FIXED \| 0 \| \[\[317 Region +change\|Region change\]\] \| Sent when a player enters a new map region. +\|- \| 214 \| FIXED \| 7 \| \[\[317 Move item\|Move item\]\] \| Sent +when a player moves an item from one slot to another. \|- \| 215 \| +FIXED \| 8 \| \[\[317 Remove friend\|Remove friend\]\] \| Sent when a +player removes a friend from their friend list. \|- \| 218 \| FIXED \| 8 +\| \[\[317 Report player\|Report player\]\] \| Sent when a player +reports another player. \|- \| 236 \| FIXED \| 6 \| \[\[317 Pickup +ground item\|Pickup ground item\]\] \| Sent when the player picks up an +item from the ground. \|- \| 237 \| FIXED \| 8 \| \[\[317 Magic on +items\|Magic on items\]\] \| Sent when a player casts magic on the items +in their inventory. \|- \| 241 \| FIXED \| 4 \| \[\[317 Mouse +click\|Mouse click\]\] \| Sent when the player clicks somewhere on the +game screen. \|- \| 248 \| VARIABLE\_BYTE \| N/A \| \[\[317 Map +walk\|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. \|- \| 249 \| FIXED \| 4 \| \[\[317 Magic on player\|Magic +on player\]\] \| Sent when a player attempts to cast magic on another +player. \|- \| 252 \| FIXED \| 6 \| \[\[317 Object action 2\|Object +action 2\]\] \| Sent when the player clicks the second option available +for an object. \|- \| 253 \| FIXED \| 6 \| \[\[317 Ground Item +Action\|Ground Item Action\]\] \| Sent when the player clicks the first +option for a ground item (I.E. 'Light Logs') \|- \|} diff --git a/src/317-Region-change.md b/src/317-Region-change.md new file mode 100644 index 0000000..c822eb2 --- /dev/null +++ b/src/317-Region-change.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Region change\|description=Sent when a player enters a +new map region.\|opcode=210\|type=Fixed\|length=0\|revision=317}} == +Region Change == + +=== Description === + +This packet is sent when a player enters a new map region. diff --git a/src/317-Remove-friend.md b/src/317-Remove-friend.md new file mode 100644 index 0000000..fa7337e --- /dev/null +++ b/src/317-Remove-friend.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Remove friend\|description=Sent when a player removes a +friend from their friend +list.\|opcode=215\|type=Fixed\|length=8\|revision=317}} == Remove Friend +== + +=== Description === + +This packet is sent when a player removes a friend from their friends +list. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Long\]\] \| The other players ID. +\|- \|} diff --git a/src/317-Remove-ignore.md b/src/317-Remove-ignore.md new file mode 100644 index 0000000..ae328a5 --- /dev/null +++ b/src/317-Remove-ignore.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Remove ignore\|description=Sent when a player removes +another player from their ignore +list.\|opcode=74\|type=Fixed\|length=8\|revision=317}} == Remove Ignore +== + +=== Description === + +This packet is sent when a player removes another player from their +ignore list. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Long\]\] \| The other players ID. +\|- \|} diff --git a/src/317-Report-player.md b/src/317-Report-player.md new file mode 100644 index 0000000..06517c9 --- /dev/null +++ b/src/317-Report-player.md @@ -0,0 +1,15 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Report player\|description=Sent when a player reports +another player.\|opcode=218\|type=Fixed\|length=8\|revision=317}} == +Report Player == + +=== Description === + +This packet is sent when a player reports another player. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Long\]\] \| The players name as a +long. \|- \| \[\[Data Types\#Standard data types\|Byte\]\] \| The rule +that's being reported \|- \| \[\[Data Types\#Standard data +types\|Byte\]\] \| Mute for 48 hours - Sent as either 1 or 0 for a +boolean client-side \|} diff --git a/src/317-Reset-button-state.md b/src/317-Reset-button-state.md new file mode 100644 index 0000000..7d7aeb6 --- /dev/null +++ b/src/317-Reset-button-state.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Reset +setting states\|description=Resets the states for all +settings.\|opcode=68\|type=Fixed\|length=0\|revision=317}} == Reset +setting states == + +=== Description === + +This packet resets the states for all user settings (inc. buttons). diff --git a/src/317-Reset-camera.md b/src/317-Reset-camera.md new file mode 100644 index 0000000..324dc67 --- /dev/null +++ b/src/317-Reset-camera.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Reset +camera\|description=Resets the camera +position.\|opcode=107\|type=Fixed\|length=0\|revision=317}} == Reset +Camera == + +=== Description === + +Resets the game's camera position to the client default. diff --git a/src/317-Reset-destination.md b/src/317-Reset-destination.md new file mode 100644 index 0000000..511b920 --- /dev/null +++ b/src/317-Reset-destination.md @@ -0,0 +1,9 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Reset +destination\|description=Resets the player's +destination.\|opcode=78\|type=Fixed\|length=0\|revision=317}} == Reset +destination == + +=== Description === + +Sending the packet to the client will make the client reset the player's +destination and effectively stop them from walking. diff --git a/src/317-Run-energy.md b/src/317-Run-energy.md new file mode 100644 index 0000000..4146a23 --- /dev/null +++ b/src/317-Run-energy.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Run +energy\|description=Sends the players run energy +level.\|opcode=110\|type=Fixed\|length=1\|revision=317}} == Run Energy +== + +=== Description === + +Sends how much run energy the player currently has. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Byte\]\] \| The energy level. \|- \|} diff --git a/src/317-Scroll-position.md b/src/317-Scroll-position.md new file mode 100644 index 0000000..fb81ee1 --- /dev/null +++ b/src/317-Scroll-position.md @@ -0,0 +1,15 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Scroll position\|description=Sets the scrollbar position +of an interface.\|opcode=79\|type=Fixed\|length=4\|revision=317}} == +Scroll Position == + +=== Description === + +This packet sets the scrollbar position of an interface. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The interface ID. \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \[\[Data Types\#Non +Standard data types\|Special A\]\] \| The position of the scrollbar. \|- +\|} diff --git a/src/317-Send-Skill.md b/src/317-Send-Skill.md new file mode 100644 index 0000000..0443d7a --- /dev/null +++ b/src/317-Send-Skill.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Send +Skill\|description=Sends a specific +skill\|opcode=154\|type=Fixed\|length=N/A\|revision=317}} == Send Skill +== + +=== Description === + +This packet sends a specific skill. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| The skill you want to +send. \|- \| \[\[Data Types\#Standard data types\|Int\]\] \| The +experience of that skill. \|- \| \[\[Data Types\#Standard data +types\|Byte\]\] \| The level of that skill. \|- \|} diff --git a/src/317-Send-add-friend.md b/src/317-Send-add-friend.md new file mode 100644 index 0000000..42f5e88 --- /dev/null +++ b/src/317-Send-add-friend.md @@ -0,0 +1,37 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +

+[ Description ]{.mw-headline} +

+

+Sends friend data to the client + +Attempts to update player node, if player isn't in the friends list and +there is space, the player is added to the friend list. +

+

+[ Packet Structure ]{.mw-headline} +

+ + + + + + + + + + + +
+Data type + +Description +
+Long + +The player name +
+Byte + +The world (10 = "online" for most clients, 0 = logged out) +
diff --git a/src/317-Send-add-ignore.md b/src/317-Send-add-ignore.md new file mode 100644 index 0000000..17b25b4 --- /dev/null +++ b/src/317-Send-add-ignore.md @@ -0,0 +1,22 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Send +ignored users\|description=Sends a list of all the ignored player +IDs\|opcode=214\|type=VARIABLE\_SHORT\|length=N/A\|revision=317}} == +Send ignored users == + +=== Description === + +Sends the IDs of all the users that this player has in their ignore. + +This packet has a slightly different structure than the other packets. + +int entries = packetSize / 8; for (int i = 0; i \< entries; i++) { +ignoreList\[i\] = stream.readLong(); } + +By looking at the rest of the 317 protocol, there doesn't seem to be a +way to change the list dynamically. It seems as though that whenever the +player decides to add or remove a player from their list, it must send +all the values again. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard Data Types\|Long\]\] \| The Unique Identifier +of the player(s) (possibly determined by their username). \|- \|} diff --git a/src/317-Send-message.md b/src/317-Send-message.md new file mode 100644 index 0000000..216cb44 --- /dev/null +++ b/src/317-Send-message.md @@ -0,0 +1,19 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Send +message\|description=Sends a server message, trade or duel request to +the client's chat panel.\|opcode=253\|type=Variable +Byte\|length=N/A\|revision=317}} == Send Message == + +=== Description === + +Sends a server side message (e.g. 'Welcome to RuneScape'), or +trade/duel/challenge request. + +The format for sending such requests is: '\[player name\]\[request +type\]'. Where request type can be one of the following: ':duelreq:', +':chalreq:' or ':tradereq:'. An example for trading the player 'mopar' +would be: 'mopar:tradereq:'. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[RS String\|RS +String\]\] \| The message. \|- \|} diff --git a/src/317-Send-private-message.md b/src/317-Send-private-message.md new file mode 100644 index 0000000..be8fae6 --- /dev/null +++ b/src/317-Send-private-message.md @@ -0,0 +1,15 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] == Send Private +Message == {\| style="float:right;margin:1em; width:250px;" +cellpadding="3" cellspacing="0" border="1" \|- ! scope="col" colspan="2" +style="background-color:\#3c5;" \| Send Message Sends Message to another +user. \|- ! scope="row"\| Opcode \| 196 \|- ! scope="row"\| Type \| +VARIABLE\_SHORT \|- ! scope="row"\| Length \| N/A \|} + +=== Description === + +Sending a private message to another user on the server. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Long\]\] \| Player name. \|- \| +\[\[Data Types\#Standard data types\|Int\]\] \| ? \|- \| \[\[Data +Types\#Standard data types\|Byte\]\] \| Player rights. \|- \|} diff --git a/src/317-Send-sidebar-interface.md b/src/317-Send-sidebar-interface.md new file mode 100644 index 0000000..3e04553 --- /dev/null +++ b/src/317-Send-sidebar-interface.md @@ -0,0 +1,22 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Send +sidebar interface\|description=Assigns an interface to on of the tabs in +the game sidebar.\|opcode=71\|type=Fixed\|length=3\|revision=317}} == +Send Sidebar Interface == + +=== Description === + +This packet assigns an interface to one of the tabs in the game sidebar. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| The sidebar ID. \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \[\[Data Types\#Non +Standard Data Types\|Special A\]\] \| The interface ID. \|- \|} + +=== Values === The below are the different values for this packet. {\| +border=2 ! Value ! Icon ! Norm. ID \|- \| 0 \|\| Attack type \|\| 2433 +\|- \| 1 \|\| Stats \|\| 3917 \|- \| 2 \|\| Quests \|\| 638 \|- \| 3 +\|\| Inventory \|\| 3213 \|- \| 4 \|\| Wearing \|\| 1644 \|- \| 5 \|\| +Prayer \|\| 5608 \|- \| 6 \|\| Magic \|\| 1151 \|- \| 7 \|\| '''EMPTY''' +\|- \| 8 \|\| Friends list \|\| 5065 \|- \| 9 \|\| Ignore list \|\| 5715 +\|- \| 10 \|\| Log out \|\| 2449 \|- \| 11 \|\| Settings \|\| 4445 \|- +\| 12 \|\| Emotes \|\| 147 \|- \| 13 \|\| Music \|\| 6299 \|- \|} diff --git a/src/317-Set-interface-text.md b/src/317-Set-interface-text.md new file mode 100644 index 0000000..79238ad --- /dev/null +++ b/src/317-Set-interface-text.md @@ -0,0 +1,17 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Set +interface text\|description=Sets the text for a specified +interface\|opcode=126\|type=VARIABLE\_SHORT\|length=N/A\|revision=317}} +== Set Interface Text == + +=== Description === + +Sets the text for the specific interface. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Non Standard Data Types\|RS\_String\]\] \| The new text +for the interface \|- \| \[\[Data Types\#Non Standard Data Types\|Short +A\]\] \| The interface id \|- \|} + +=== Information === I do not recommend you use this to change the text +color. I refer you to \[\[317 Interface color\|Interface Color\]\] for +the proper way to do so. diff --git a/src/317-Show-interface.md b/src/317-Show-interface.md new file mode 100644 index 0000000..cc36de8 --- /dev/null +++ b/src/317-Show-interface.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Show +interface\|description=Displays a normal +interface.\|opcode=97\|type=Fixed\|length=2\|revision=317}} == Show +Interface == + +=== Description === + +Displays a normal non-walkable \[\[Interfaces\|interface\]\] with the +given id. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \| The interface id. \|- \|} diff --git a/src/317-Show-multi-combat.md b/src/317-Show-multi-combat.md new file mode 100644 index 0000000..f1577c4 --- /dev/null +++ b/src/317-Show-multi-combat.md @@ -0,0 +1,15 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Show +multi-combat\|description=Shows the player if they are in a multi-combat +zone.\|opcode=61\|type=Fixed\|length=1\|revision=317}} == Show +multi-combat == + +=== Description === + +Sending this packet to the client will make the client show the player +if they are in a multi-combat zone. + +'''States:''' \* 0 - Not in a multi-combat zone, no crossbones in +bottom-right. \* 1 - In a multi-combat zone, crossbones in bottom-right. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#byte\|byte\]\] \| The state. \|- \|} diff --git a/src/317-Show-tab.md b/src/317-Show-tab.md new file mode 100644 index 0000000..151f2ab --- /dev/null +++ b/src/317-Show-tab.md @@ -0,0 +1,11 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Show +Tab\|description=Shows the given +tab.\|opcode=106\|type=Fixed\|length=1\|revision=317}} == Show Tab == + +=== Description === + +Shows the given tab id. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| U +\[\[Data Types\#Standard data types\|Byte\]\] \[\[Data Types\#Non +Standard Data Types\|Special C\]\] \| Tab ID. \|- \|} diff --git a/src/317-Skill-level.md b/src/317-Skill-level.md new file mode 100644 index 0000000..6d3ecee --- /dev/null +++ b/src/317-Skill-level.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Skill +level\|description=Changes the experience and level of a given skill +id.\|opcode=134\|type=Fixed\|length=6\|revision=317}} == Skill Level == + +=== Description === + +This packet changes the experience and level of a given skill id. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Byte\|Byte\]\] \| The skill ID. \|- \| \[\[Data +Types\#Non Standard data types\|Middle-Endian Small Integer\]\] \| The +skill experience. \|- \| \[\[Data Types\#Byte\|Byte\]\] \| The skill +level. \|- \|} diff --git a/src/317-Song-Queue.md b/src/317-Song-Queue.md new file mode 100644 index 0000000..c6c3851 --- /dev/null +++ b/src/317-Song-Queue.md @@ -0,0 +1,19 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {\| +style="float:right; margin:1em; width:250px;" cellpadding="3" +cellspacing="0" border="1" \|- \| colspan="2" +style="background-color:\#3c5;" \| '''Song Queue'''
Queue's a song +to be played next. \|- !'''Opcode''' \| 121 \|- ! '''Type''' \| FIXED +\|- ! '''Length''' \| 4 \|- \|} == Song Queue == + +=== Description === + +This packet queue's a song to be played next. The client then proceeds +to request the queued song using the ondemand protocol. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The id of the next song. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| The id of the previous song. \|- \|} +\[\[Category Packet\]\] \[\[Category Packet 317\]\] diff --git a/src/317-System-update.md b/src/317-System-update.md new file mode 100644 index 0000000..5a2eeb2 --- /dev/null +++ b/src/317-System-update.md @@ -0,0 +1,19 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=System update\|description=Sends how many seconds until a +'System Update.'\|opcode=114\|type=Fixed\|length=2\|revision=317}} == +System Update == + +=== Description === + +A timer showing how many seconds until a 'System Update' will appear in +the lower left hand corner of the game screen. After the timer reaches 0 +all players are disconnected and are unable to log in again until server +is restarted. Players connecting will receive a message stating, "The +server is being updated. Please wait 1 minute and try again." (unless +stated otherwise). + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Little +Endian\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\| Time until an update. \|- \|} diff --git a/src/317-Trade-answer.md b/src/317-Trade-answer.md new file mode 100644 index 0000000..0bdc49c --- /dev/null +++ b/src/317-Trade-answer.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Trade +answer\|description=Sent when a player answers a trade request from +another player.\|opcode=139\|type=Fixed\|length=2\|revision=317}} == +Trade Answer == + +=== Description === + +This packet is sent when a player answers a trade request from another +player. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The player requesting the +trade's ID. \|- \|} diff --git a/src/317-Trade-request.md b/src/317-Trade-request.md new file mode 100644 index 0000000..c679189 --- /dev/null +++ b/src/317-Trade-request.md @@ -0,0 +1,12 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] {{packet\|name=Trade +request\|description=Sent when a player requests a trade with another +player.\|opcode=73\|type=Fixed\|length=2\|revision=317}} == Trade +Request == + +=== Description === + +This packet is sent when a player requests a trade with another player. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| The other players ID. \|} diff --git a/src/317-Unequip-item.md b/src/317-Unequip-item.md new file mode 100644 index 0000000..0f35311 --- /dev/null +++ b/src/317-Unequip-item.md @@ -0,0 +1,16 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Unequip item\|description=Sent when a player unequips an +item.\|opcode=145\|type=Fixed\|length=6\|revision=317}} == Unequip Item +== + +=== Description === + +This packet is sent when a player unequips an item. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +Unsigned \[\[Data Types\#Standard data types\|Short\]\] \[\[Data +Types\#Non Standard Data Types\|Special A\]\] \| The interface ID. \|- +\| Unsigned \[\[Data Types\#Standard data types\|Short\]\] \[\[Data +Types\#Non Standard Data Types\|Special A\]\] \| The items slot ID. \|- +\| Unsigned \[\[Data Types\#Standard data types\|Short\]\] \[\[Data +Types\#Non Standard Data Types\|Special A\]\] \| The item ID. \|- \|} diff --git a/src/317-Update-item-container.md b/src/317-Update-item-container.md new file mode 100644 index 0000000..585a63b --- /dev/null +++ b/src/317-Update-item-container.md @@ -0,0 +1,26 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Update item container\|description=Updates items in an +interface +component.\|opcode=53\|type=VARIABLE\_SHORT\|length=N/A\|revision=317}} +== Update item container == + +=== Description === Updates the items in a given interface component. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| Unsigned \[\[Data +Types\#Standard data types\|Short\]\] \| Interface ID. \|- \| Unsigned +\[\[Data Types\#Standard data types\|Short\]\] \| Amount of items. \|- +\|} + +The rest in pseudo-code: + +for (i = 0; i \< amt\_of\_items; i++) { item\_amount = read\_u\_byte(); +// Item Amount: U Byte + +if (item\_amount == 255) item\_amount = read\_int\_me\_b(); // Item +Amount (if entered as 255 previously - to allow bigger amounts than +254): Integer Middle-Endian Big (Inverse middle) + +item\_id = read\_u\_short\_le\_a(); // Item ID: U Short Little Endian +Special A } diff --git a/src/317-Walkable-interface.md b/src/317-Walkable-interface.md new file mode 100644 index 0000000..c051b35 --- /dev/null +++ b/src/317-Walkable-interface.md @@ -0,0 +1,12 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Walkable interface\|description=Displays an interface in +walkable mode.\|opcode=208\|type=Fixed\|length=2\|revision=317}} == +Walkable Interface == + +=== Description === + +This packet displays an interface in walkable mode. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Little Endian\|Little Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \| Interface ID. \|- \|} diff --git a/src/317-Weight.md b/src/317-Weight.md new file mode 100644 index 0000000..95b0071 --- /dev/null +++ b/src/317-Weight.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 317\]\] +{{packet\|name=Weight\|description=Sends the players weight +amount.\|opcode=240\|type=Fixed\|length=2\|revision=317}} == Weight == + +=== Description === + +Sends how much weight of equipment the player is wearing (e.g. Rune +plate-body is 9.04kg). + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \| The amount of weight. \|- \|} diff --git a/src/357-Protocol.md b/src/357-Protocol.md new file mode 100644 index 0000000..9ddd3dc --- /dev/null +++ b/src/357-Protocol.md @@ -0,0 +1,17 @@ +\[\[Category RS2\]\] == '''Login Protocol''' == + +The Login protocol is identical to the \[\[317 Protocol\#Login Protocol +Overview\|317 Login protocol\]\]. + +== Game Protocol == + +=== Server -\> Client Packets === {\| border=2 \|- ! Opcode ! Type ! +Length (bytes) ! Name ! Description \|- ! 31 ! VARIABLE\_BYTE ! N/A ! +\[\[357 Send Message\|Send Message\]\] ! Sends a message to the client, +such as 'Welcome to RuneScape'. \|- ! 96 ! VARIBLE\_BYTE ! N/A ! \[\[357 +Send Inventory\|Send Inventory\]\] ! Sends the players inventory to the +client. \|- ! 121 ! FIXED ! 4 ! \[\[357 Load Map Region\|Load Map +Region\]\] ! Tells the client to load a map region depending on the +region's X and Y coordinates. \|- ! 163 ! FIXED ! 3 ! \[\[357 Send +Sidebar Interface\|Send Sidebar Interface\]\] ! Assigns an interface to +one of the tabs in the game sidebar. \|-} diff --git a/src/377-Animation-Reset.md b/src/377-Animation-Reset.md new file mode 100644 index 0000000..77d0eab --- /dev/null +++ b/src/377-Animation-Reset.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] +{{packet\|name=Animation Reset\|description=Resets all animations in the +immediate area.\|opcode=13\|type=Fixed\|length=0\|revision=377}} == +Animation Reset == + +=== Description === + +Resets all animations in the immediate area. diff --git a/src/377-Camera-Shake.md b/src/377-Camera-Shake.md new file mode 100644 index 0000000..4ce5755 --- /dev/null +++ b/src/377-Camera-Shake.md @@ -0,0 +1,17 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] +{{packet\|name=Camera Shake\|description=Set camera shake +parameters.\|opcode=67\|type=Fixed\|length=4\|revision=377}} == Camera +Shake == + +=== Description === Set camera shake parameters. It may be worth reading +about Sine Waves \[http://en.wikipedia.org/wiki/Sine\_wave\]. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Byte\]\] \| The index of the shake parameter to modify. \|- +\| \[\[Data Types\#Standard data types\|Byte\]\] \| The range of the +shake randomness. \|- \| \[\[Data Types\#Standard data types\|Byte\]\] +\| The amplitude (maximum displacement from 0) of the shake. \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| The phase (where in its +cycle the oscillation is at t = 0) of the shake. \|- \|} diff --git a/src/377-Construct-Map-Region.md b/src/377-Construct-Map-Region.md new file mode 100644 index 0000000..c6cae39 --- /dev/null +++ b/src/377-Construct-Map-Region.md @@ -0,0 +1,37 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] +{{packet\|name=Construct Map Region\|description=Creates a map +region.\|opcode=53\|type=Variable Short\|length=N/A\|revision=377}} == +Interface Animation == + +=== Description === Sets the animation for a model on an interface. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Non +Standard Data Types\|Big Endian\]\] \[\[Data Types\#Standard data +types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special A\]\] +\| Map Region Y (absolute Y coordinate / 8 + 6) \|- \| \[\[Data +Types\#Standard data types\|Bit Block\]\] \| 1 bit (0 or 1) to decide if +a tile exists. 26 bits for data about the tile (only if it exists) \|- +\| \[\[Data Types\#Non Standard Data Types\|Big Endian\]\] \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| Map Region X (absolute X coordinate / 8 + 6) \|- +\|} + +=== Information === + +If the tile exists then a 1 gets written to the output stream as a 1 +otherwise a zero gets written to the stream. + +If the tile does exist then you would follow that 1 bit with 26 bits of +information about the tile. + +int info = inStream.readBits(26); int heightLevel = info \>\> 24 & 3; +int rotation = info \>\> 1 & 3; int regionX = info \>\> 14 & 0x3ff; int +regionY = info \>\> 3 & 0x7ff; + +=== Implementation === + +for(int z = 0; z \< 4; z++) { for(int x = 0; x \< 13; x++) { for(int y = +0; y \< 13; y++) { outStream.writeBit(1, tileExists ? 1 : 0); +if(tileExists) outStream.writeBits(26, TILE\_INFORMATION); } } } diff --git a/src/377-Create-Static-Graphic.md b/src/377-Create-Static-Graphic.md new file mode 100644 index 0000000..608df86 --- /dev/null +++ b/src/377-Create-Static-Graphic.md @@ -0,0 +1,15 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] +{{packet\|name=Create Static Graphic\|description=Creates a static +graphic.\|opcode=59\|type=Fixed\|length=6\|revision=377}} == Create +Static Graphic == + +=== Description === Creates a static graphic. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Byte\]\] \| Position (xxxxyyyy) of the graphic. \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| Graphic ID. \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| Height offset. \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| Placement delay. \|- +\|} diff --git a/src/377-Initialize-Player.md b/src/377-Initialize-Player.md new file mode 100644 index 0000000..dfa838c --- /dev/null +++ b/src/377-Initialize-Player.md @@ -0,0 +1,16 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] +{{packet\|name=Initialize Player\|description=Sends the player's +membership status and their current index on the server's player +list.\|opcode=249\|type=Fixed\|length=3\|revision=377}} == Initialize +Player == + +=== Description === Sends the player's membership status and their +current index on the server's player list. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| Unsigned \[\[Data +Types\#Standard data types\|Byte\]\] \| Membership flag (1 = member, 0 = +free). \|- \| Unsigned \[\[Data Types\#Little Endian\|Little Endian\]\] +\[\[Data Types\#Standard data types\|Short\]\] \| Player list index. \|- +\|} diff --git a/src/377-Input-Amount.md b/src/377-Input-Amount.md new file mode 100644 index 0000000..32a101b --- /dev/null +++ b/src/377-Input-Amount.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] {{packet\|name=Input +Amount\|description=Forces the client to open the input amount +interface.\|opcode=58\|type=Fixed\|length=0\|revision=377}} == Input +Amount == + +=== Description === + +Forces the client to open the input amount interface. diff --git a/src/377-Interface-Animation.md b/src/377-Interface-Animation.md new file mode 100644 index 0000000..f12bbc1 --- /dev/null +++ b/src/377-Interface-Animation.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] +{{packet\|name=Interface Animation\|description=Sets a model's animation +on an interface.\|opcode=2\|type=Fixed\|length=4\|revision=377}} == +Interface Animation == + +=== Description === Sets the animation for a model on an interface. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Byte +Order\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\| Interface ID \|- \| \[\[Data Types\#Standard data types\|Short\]\] \| +Animation ID \|- \|} diff --git a/src/377-Interface-Item.md b/src/377-Interface-Item.md new file mode 100644 index 0000000..f6266a3 --- /dev/null +++ b/src/377-Interface-Item.md @@ -0,0 +1,15 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] +{{packet\|name=Interface Item\|description=Sends an item to an +interface.\|opcode=21\|type=Fixed\|length=6\|revision=377}} == Interface +Item == + +=== Description === Sends an item to an interface. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \| Zoom factor. \|- \| \[\[Data Types\#Little +Endian\|Little Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\| Item ID. \|- \| \[\[Data Types\#Little Endian\|Little Endian\]\] +\[\[Data Types\#Standard data types\|Short\]\] \[\[Data Types\#Non +Standard Data Types\|Special A\]\] \| Interface ID. \|- \|} diff --git a/src/377-Inventory-Overlay.md b/src/377-Inventory-Overlay.md new file mode 100644 index 0000000..df599a6 --- /dev/null +++ b/src/377-Inventory-Overlay.md @@ -0,0 +1,16 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] +{{packet\|name=Inventory Overlay\|description=Displays the specified +interface over the specified +inventory.\|opcode=128\|type=Fixed\|length=4\|revision=377}} == +Inventory Overlay == + +=== Description === Displays the specified interface over the specified +inventory. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \[\[Data Types\#Standard data types\|Special A\]\] +\| Interface ID. \|- \| \[\[Data Types\#Byte Order\|Little Endian\]\] +\[\[Data Types\#Standard data types\|Short\]\] \[\[Data Types\#Non +Standard Data Types\|Special A\]\] \| Inventory interface ID \|- \|} diff --git a/src/377-Logout.md b/src/377-Logout.md new file mode 100644 index 0000000..83af180 --- /dev/null +++ b/src/377-Logout.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] +{{packet\|name=Logout\|description=Forces the client to +logout.\|opcode=5\|type=Fixed\|length=0\|revision=377}} == Logout == + +=== Description === + +Forces the client to logout cleanly and return to the login screen, +without attempting a reconnection. diff --git a/src/377-Move-Camera.md b/src/377-Move-Camera.md new file mode 100644 index 0000000..fa8c51f --- /dev/null +++ b/src/377-Move-Camera.md @@ -0,0 +1,17 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] {{packet\|name=Move +Camera\|description=Moves the +camera.\|opcode=3\|type=Fixed\|length=6\|revision=377}} == Move Camera +== + +=== Description === Moves the camera. + +See: void client\#updateCamera + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Byte\]\] \| Tile X coordinate. \|- \| \[\[Data +Types\#Standard data types\|Byte\]\] \| Tile Y coordinate. \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| Height offset. \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| Position offset. \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \| Move speed. \|- \|} diff --git a/src/377-Open-Welcome-Screen.md b/src/377-Open-Welcome-Screen.md new file mode 100644 index 0000000..9111639 --- /dev/null +++ b/src/377-Open-Welcome-Screen.md @@ -0,0 +1,30 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] {{packet\|name=Open +Welcome Screen\|description=Displays the welcome +screen.\|opcode=21\|type=Fixed\|length=23\|revision=377}} == Open +Welcome Screen == + +=== Description === Displays the welcome screen. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Big +Endian\|Big Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] \| +Last password change occurance \|- \| \[\[Data Types\#Big Endian\|Big +Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] \[\[Data +Types\#Non Standard Data Types\|Special A\]\] \| Unknown \#1. \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| Unused \#1. \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| Unknown \#2. \|- \| +\[\[Data Types\#Big Endian\|Big Endian\]\] \[\[Data Types\#Standard data +types\|Short\]\] \| Current server time. \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special +A\]\] \| Inbox message count. \|- \| \[\[Data Types\#Standard data +types\|Short\]\] \[\[Data Types\#Non Standard Data Types\|Special A\]\] +\| Last log-in time. \|- \| \[\[Data Types\#Standard data +types\|Short\]\] \| Amount of members credit (days) remaining. \|- \| +\[\[Data Types\#Big Endian\|Big Endian\]\] \[\[Data Types\#Standard data +types\|Int\]\] \| Last log-in IPV4 address. \|- \| \[\[Data Types\#Big +Endian\|Big Endian\]\] \[\[Data Types\#Standard data types\|Short\]\] +\[\[Data Types\#Non Standard Data Types\|Special A\]\] \| Recovery +question change status. \|- \| \[\[Data Types\#Standard data +types\|Byte\]\] \[\[Data Types\#Non Standard Data Types\|Special A\]\] +\| Unused \#2. \|- \|} \* May be inaccurate. diff --git a/src/377-Play-Ambient-Wave.md b/src/377-Play-Ambient-Wave.md new file mode 100644 index 0000000..0febe49 --- /dev/null +++ b/src/377-Play-Ambient-Wave.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] {{packet\|name=Play +Ambient Wave\|description=Plays an ambient +wave.\|opcode=41\|type=Fixed\|length=4\|revision=377}} == Play Ambient +Wave == + +=== Description === Plays an ambient wave. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Byte\]\] \| Packed (xxxxyyyy) coordinates of sound. \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| Wave index (ID). \|- +\| \[\[Data Types\#Standard data types\|Byte\]\] \| Packed (rrrruuuu) +sound settings, where r is the range of the sound. \|- \|} diff --git a/src/377-Protocol.md b/src/377-Protocol.md new file mode 100644 index 0000000..dac8e29 --- /dev/null +++ b/src/377-Protocol.md @@ -0,0 +1,68 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] \[\[Category RS2\]\] + +== '''Login Protocol''' == + +The Login protocol is identical to the \[\[317 Protocol\#Login Protocol +Overview\|317 Login protocol\]\]. + +==Game Protocol== The game protocol is the in-game communication of +player actions between the server and client.
+ +===Server -\> Client Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- ! 2 ! FIXED ! +4 ! \[\[377 Interface Animation\|Interface Animation\]\] ! Sets an +interface's model animation. \|- ! 3 ! FIXED ! 6 ! \[\[377 Move +Camera\|Camera Move\]\] ! Moves the camera. \|- ! 5 ! FIXED ! 0 ! +\[\[377 Logout\|Logout\]\] ! Disconnects the client from the server. \|- +! 10 ! FIXED ! 3 ! \[\[377 Send Sidebar Interface\|Send Sidebar +Interface\]\] ! Assigns an interface to one of the tabs in the game +sidebar. \|- ! 13 ! FIXED ! 0 ! \[\[377 Animation Reset\|Animation +Reset\]\] ! Resets all entity animations in the immediate area. \|- ! 18 +! FIXED ! 6 ! \[\[377 Interface Model Rotation\|Interface Model +Rotation\]\] ! Sets the rotation speed of an item in an interface. \|- ! +21 ! FIXED ! 6 ! \[\[377 Interface Item\|Interface Item\]\] ! Displays +an item model inside an interface. \|- ! 26 ! FIXED ! 5 ! \[\[377 Send +Sound\|Send Sound\]\] ! Sends a sound to be played. \|- ! 29 ! FIXED ! 0 +! \[\[377 Reset Open Interfaces\|Reset Open Interfaces\]\] ! Resets all +opened interfaces. \|- ! 40 ! FIXED ! 2 ! \[\[377 Reset Ground Items and +Objects\|Reset Ground Items and Objects\]\] ! Resets all ground items +and objects in a 8x8 region. \|- \|- ! 41 ! FIXED ! 4 ! \[\[377 Play +Ambient Wave\|Play Ambient Wave\]\] ! Plays an ambient wave. \|- ! 49 ! +FIXED ! 6 ! \[\[377 Skill Level\|Skill Level\]\] ! Sends a skill level +to the client. \|- ! 50 ! FIXED ! 2 ! \[\[377 Walkable +Interface\|Walkable Interface\]\] ! Displays an interface in walkable +mode. \|- ! 53 ! VARIABLE\_SHORT ! N/A ! \[\[377 Construct Map +Region\|Construct Map Region\]\] ! Constructs a map region given the +region's x and y coordinate. \|- ! 58 ! FIXED ! 0 ! \[\[377 Input +Amount\|Input Amount\]\] ! Displays the "Input amount" interface. \|- ! +59 ! FIXED ! 6 ! \[\[377 Create Static Graphic\|Create Static +Graphic\]\] ! Creates a static graphic. \|- ! 61 ! FIXED ! 0 ! \[\[377 +Clear Waypoint\|Clear Waypoint\]\] ! Resets the waypoint. \|- ! 63 ! +VARIABLE\_BYTE ! N/A ! \[\[377 Send Message\|Send Message\]\] ! Sends a +server message (e.g. 'Welcome to RuneScape') or trade/duel request. \|- +! 67 ! FIXED ! 4 ! \[\[377 Camera Shake\|Camera Shake\]\] ! Causes the +camera to shake. \|- ! 71 ! VARIABLE\_SHORT ! N/A ! \[\[377 Update +Npcs\|Update Npcs\]\] ! Updates NPCs. \|- ! 75 ! FIXED ! 2 ! \[\[377 +Send Position\|Send Position\]\] ! Sends a position (used for packets +such as Ground Items and Projectiles) \|- ! 76 ! FIXED ! 23 ! \[\[377 +Open Welcome Screen\|Open Welcome Screen\]\] ! Displays the welcome +screen. \|- ! 78 ! FIXED ! 9 ! \[\[377 Send Add Friend\|Send Add +Friend\]\] ! Sends a friend to be added to the friend list. \|- ! 82 ! +FIXED ! 3 ! \[\[377 Set Widget Mouse Triggered\|Set Widget Mouse +Triggered\]\] ! Set widget mouse triggered. \|- ! 88 ! FIXED ! 2 ! +\[\[377 Create Object\|Create Object\]\] ! Sends a friend to be added to +the friend list. \|- ! 90 ! VARIABLE\_SHORT ! N/A ! \[\[377 Update +Players\|Update Players\]\] ! Updates players. \|- ! 107 ! FIXED ! 5 ! +\[\[377 Send Ground Item\|Send Ground Item\]\] ! Adds a ground item to +the server. \|- ! 113 ! FIXED ! 0 ! \[\[377 Reset Button State\|Reset +Button State\]\] ! Resets the button state for all buttons. \|- ! 125 ! +FIXED ! 1 ! \[\[377 Run Energy\|Run Energy\]\] ! Sends the players run +energy level. \|- ! 126 ! FIXED ! 3 ! \[\[377 Initialize +Player\|Initialize Player\]\] ! Sends the player's membership status and +their current index on the server's player list. \|- ! 128 ! FIXED ! 4 ! +\[\[377 Inventory Overlay\|Inventory Overlay\]\] ! Displays an interface +over the sidebar area. \|-} diff --git a/src/377-Reset-Button-State.md b/src/377-Reset-Button-State.md new file mode 100644 index 0000000..b9ec6c6 --- /dev/null +++ b/src/377-Reset-Button-State.md @@ -0,0 +1,8 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] {{packet\|name=Reset +Button State\|description=Resets the button state for all +buttons.\|opcode=113\|type=Fixed\|length=0\|revision=377}} == Reset +Button State == + +=== Description === + +Resets the button state for all buttons. diff --git a/src/377-Reset-Ground-Items-and-Objects.md b/src/377-Reset-Ground-Items-and-Objects.md new file mode 100644 index 0000000..8498e10 --- /dev/null +++ b/src/377-Reset-Ground-Items-and-Objects.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] {{packet\|name=Reset +Ground Items and Objects\|description=Resets ground items in potential +viewing area.\|opcode=40\|type=Fixed\|length=2\|revision=377}} == Reset +Ground Items and Objects == + +=== Description === Resets ground items in potential viewing area. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Byte\]\] \[\[Data Types\#Non Standard Data Types\|Special +C\]\] \| X coordinate in potential viewing area. \|- \| \[\[Data +Types\#Standard data types\|Byte\]\] \[\[Data Types\#Non Standard Data +Types\|Special S\]\] \| Y coordinate in potential viewing area. \|- \|} diff --git a/src/377-Run-Energy.md b/src/377-Run-Energy.md new file mode 100644 index 0000000..365dd99 --- /dev/null +++ b/src/377-Run-Energy.md @@ -0,0 +1,12 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] {{packet\|name=Run +Energy\|description=Sends the players run energy +level.\|opcode=125\|type=Fixed\|length=1\|revision=377}} == Run Energy +== + +=== Description === Sends the players run energy level. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| Unsigned \[\[Data +Types\#Standard data types\|Byte\]\] \| The amount of energy remaining. +\|- \|} diff --git a/src/377-Send-Add-Friend.md b/src/377-Send-Add-Friend.md new file mode 100644 index 0000000..643bafa --- /dev/null +++ b/src/377-Send-Add-Friend.md @@ -0,0 +1,12 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] {{packet\|name=Send +Add Friend\|description=Sends a friend to be added to the friend +list.\|opcode=78\|type=Fixed\|length=9\|revision=377}} == Send Add +Friend == + +=== Description === Sends a friend to be added to the friend list. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Long\]\] \| Player name (as long). \|- \| Unsigned \[\[Data +Types\#Standard data types\|Byte\]\] \| World. \|- \|} diff --git a/src/377-Send-Ground-Item.md b/src/377-Send-Ground-Item.md new file mode 100644 index 0000000..6d8aff6 --- /dev/null +++ b/src/377-Send-Ground-Item.md @@ -0,0 +1,15 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] {{packet\|name=Send +Ground Item\|description=Adds a ground item to the server. +\|opcode=107\|type=Fixed\|length=5\|revision=377}} == Send Ground Item +== + +=== Description === Adds a ground item to the server. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \| Item ID. \|- \| \[\[Data Types\#Standard data +types\|Byte\]\] \[\[Data Types\#Non Standard Data Types\|Special S\]\] +\| Packed (xxxxyyyy) coordinates of the ground item. \|- \| \[\[Data +Types\#Standard data types\|Short\]\] \[\[Data Types\#Non Standard Data +Types\|Special A\]\] \| Stack amount of the item. \|- \|} diff --git a/src/377-Send-Message.md b/src/377-Send-Message.md new file mode 100644 index 0000000..ea82d09 --- /dev/null +++ b/src/377-Send-Message.md @@ -0,0 +1,12 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] {{packet\|name=Send +Message\|description=Sends a server message (e.g. 'Welcome to +RuneScape') or trade/duel request.\|opcode=63\|type=Variable +Byte\|length=N/A\|revision=377}} == Send Message == + +=== Description === Sends a server message (e.g. 'Welcome to RuneScape') +or trade/duel request. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[RS String\|RS +String\]\] \| Message. \|- \|} diff --git a/src/377-Send-Sidebar-Interface.md b/src/377-Send-Sidebar-Interface.md new file mode 100644 index 0000000..76f1a26 --- /dev/null +++ b/src/377-Send-Sidebar-Interface.md @@ -0,0 +1,15 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] {{packet\|name=Set +Sidebar Interface\|description=Sets the interface for the +sidebar.\|opcode=10\|type=Fixed\|length=3\|revision=377}} == Interface +Animation == + +=== Description === Sets the specified interface to the specified +sidebar. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Byte\]\] \[\[Data Types\#Standard data types\|Special S\]\] +\| Sidebar Index \|- \| \[\[Data Types\#Standard data types\|Short\]\] +\[\[Data Types\#Non Standard Data Types\|Special A\]\] \| Interface ID +\|- \|} diff --git a/src/377-Send-Sound.md b/src/377-Send-Sound.md new file mode 100644 index 0000000..ed39e8e --- /dev/null +++ b/src/377-Send-Sound.md @@ -0,0 +1,15 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] {{packet\|name=Send +Sound\|description=Sends a sound to be +played.\|opcode=26\|type=Fixed\|length=5\|revision=377}} == Send Sound +== + +=== Description === Sends a sound to be played. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \| Unknown \#1 \|- \| \[\[Data Types\#Standard +data types\|Byte\]\] \| Unknown \#2 \|- \| \[\[Data Types\#Standard data +types\|Short\]\] \| Unknown \#2 \|- \|} + +- Needs more work. diff --git a/src/377-Skill-Level.md b/src/377-Skill-Level.md new file mode 100644 index 0000000..49c7e71 --- /dev/null +++ b/src/377-Skill-Level.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] {{packet\|name=Skill +Level\|description=Sends a skill level to the +client.\|opcode=49\|type=Fixed\|length=6\|revision=377}} == Skill Level +== + +=== Description === Sends a skill level to the client. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Byte\]\] \[\[Data Types\#Non Standard Data Types\|Special +C\]\] \| Skill ID. \|- \| \[\[Data Types\#Standard data types\|Byte\]\] +\| Skill level. \|- \| \[\[Data Types\#Standard data types\|Int\]\] \| +Skill experience. \|- \|} diff --git a/src/377-Walkable-Interface.md b/src/377-Walkable-Interface.md new file mode 100644 index 0000000..d1592f1 --- /dev/null +++ b/src/377-Walkable-Interface.md @@ -0,0 +1,11 @@ +\[\[Category Packet\]\] \[\[Category Packet 377\]\] +{{packet\|name=Walkable interface\|description=Displays an interface in +walkable mode.\|opcode=50\|type=Fixed\|length=2\|revision=377}} == +Walkable Interface == + +=== Description === + +This packet displays an interface in walkable mode. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| Interface ID. \|- \|} diff --git a/src/443-Protocol.md b/src/443-Protocol.md new file mode 100644 index 0000000..aa5d996 --- /dev/null +++ b/src/443-Protocol.md @@ -0,0 +1,310 @@ +\[\[Category RS2\]\] + +==Client States== + +Client states are used to switch between different graphic and logic +procedures. The state of the client is global. There may be cases where +two states will be handled the same graphically but different logically, +vice versa. + + { + --- + +! Opcode ! Name ! Description \|- ! 0 ! Loading (initial) ! Client state +where the client is initially loading itself to the login screen. \|- ! +5 ! Loading ! Client state where the client is loading itself to the +login screen. \|- ! 10 ! Login Screen ! Client state where the client is +on the login screen. \|- ! 20 ! Login (initial) ! Client state where the +client initially engages to log in to the server. \|- ! 25 ! Map Rebuild +! Ingame client state where the client rebuilds the map. \|- ! 30 ! +Ingame ! Default ingame client state. \|- ! 35 ! Ingame (screen overlay) +! Client state where the client screen is overlayed with a widget. \|- ! +40 ! Login ! Client state where the client engages to log in to the +server. \|- ! 1000 ! Fatal Ondemand Error ! Client state where the +client has encountered a fatal ondemand error and will no longer use the +ondemand service. \|} + +==Client Actions== + +===Social=== + + { + --- + +! Opcode ! Frame Name ! Variable 0 ! Variable 1 ! Variable 2 ! +Description \|- ! 31 ! \[\[443 Add Friend\|Add Friend\]\] ! NA ! NA ! NA +! Action for when a friend is added. \|- ! 2 ! \[\[443 Remove +Friend\|Remove Friend\]\] ! NA ! NA ! NA ! Action for when a friend is +removed. \|- ! 21 ! \[\[443 Add Ignore\|Add Ignore\]\] ! NA ! NA ! NA ! +Action for when an ignore is added. \|- ! 50 ! \[\[443 Remove +Ignore\|Remove Ignore\]\] ! NA ! NA ! NA ! Action for when an ignore is +removed. \|} + +===Entities=== + + { + --- + +! Opcode ! Frame Name ! Variable 0 ! Variable 1 ! Variable 2 ! +Description \|- ! 44 ! \[\[443 Player Option 0\|Player Option 0\]\] ! id +! position x ! position y ! Action for the first option of a player. \|- +! 22 ! \[\[443 Player Option 1\|Player Option 1\]\] ! id ! position x ! +position y ! Action for the second option of a player. \|- ! 52 ! +\[\[443 Player Option 2\|Player Option 2\]\] ! id ! position x ! +position y ! Action for the third option of a player. \|- ! 56 ! \[\[443 +Player Option 3\|Player Option 3\]\] ! id ! position x ! position y ! +Action for the fourth option of a player. \|- ! 1 ! \[\[443 Player +Option 4\|Player Option 4\]\] ! id ! position x ! position y ! Action +for the fifth option of a player. \|- ! 41 ! \[\[443 Npc Option 0\|Npc +Option 0\]\] ! id ! position x ! position y ! Action for the first +option of a NPC. \|- ! 17 ! \[\[443 Npc Option 1\|Npc Option 1\]\] ! id +! position x ! position y ! Action for the second option of a NPC. \|- ! +13 ! \[\[443 Npc Option 2\|Npc Option 2\]\] ! id ! position x ! position +y ! Action for the third option of a NPC. \|- ! 53 ! \[\[443 Npc Option +3\|Npc Option 3\]\] ! id ! position x ! position y ! Action for the +fourth option of a NPC. \|- ! 46 ! \[\[443 Npc Option 4\|Npc Option +4\]\] ! id ! position x ! position y ! Action for the fifth option of a +NPC. \|- ! 40 ! \[\[443 Ground Item Option 0\|Ground Item Option 0\]\] ! +item id ! position x ! position y ! Action for the first option of a +ground item. \|- ! 38 ! \[\[443 Ground Item Option 1\|Ground Item Option +1\]\] ! item id ! position x ! position y ! Action for the second option +of a ground item. \|- ! 34 ! \[\[443 Ground Item Option 2\|Ground Item +Option 2\]\] ! item id ! position x ! position y ! Action for the third +option of a ground item. \|- ! 11 ! \[\[443 Ground Item Option 3\|Ground +Item Option 3\]\] ! item id ! position x ! position y ! Action for the +fourth option of a ground item. \|- ! 3 ! \[\[443 Ground Item Option +4\|Ground Item Option 4\]\] ! item id ! position x ! position y ! Action +for the fifth option of a ground item. \|- ! 55 ! \[\[443 Object Option +0\|Object Option 0\]\] ! info hash ! position x ! position y ! Action +for the first option of an object. \|- ! 57 ! \[\[443 Object Option +1\|Object Option 1\]\] ! info hash ! position x ! position y ! Action +for the second option of an object. \|- ! 43 ! \[\[443 Object Option +2\|Object Option 2\]\] ! info hash ! position x ! position y ! Action +for the third option of an object. \|- ! 6 ! \[\[443 Object Option +3\|Object Option 3\]\] ! info hash ! position x ! position y ! Action +for the fourth option of an object. \|- ! 1005 ! \[\[443 Object Option +4\|Object Option 4\]\] ! info hash ! position x ! position y ! Action +for the fifth option of an object. \|- \|} + +===Widget=== + + { + --- + +! Opcode ! Frame Name ! Variable 0 ! Variable 1 ! Variable 2 ! +Description \|- ! 28 ! \[\[443 Item On Widget Option 0\|Item on Widget +Option 0\]\] ! id ! slot ! widget id ! Action for the first option of an +item on a widget. \|- ! 16 ! \[\[443 Item On Widget Option 1\|Item on +Widget Option 1\]\] ! id ! slot ! widget id ! Action for the second +option of an item on a widget. \|- ! 54 ! \[\[443 Item On Widget Option +2\|Item on Widget Option 2\]\] ! id ! slot ! widget id ! Action for the +third option of an item on a widget. \|- ! 32 ! \[\[443 Item On Widget +Option 3\|Item on Widget Option 3\]\] ! id ! slot ! widget id ! Action +for the fourth option of an item on a widget. \|- ! 19 ! \[\[443 Item On +Widget Option 4\|Item on Widget Option 4\]\] ! id ! slot ! widget id ! +Action for the fifth option of an item on a widget. \|- ! 35 ! \[\[443 +Widget Item Option 0\|Widget Item Option 0\]\] ! id ! slot ! widget id ! +Action for the first option of an item on a widget. \|- ! 30 ! \[\[443 +Widget Item Option 1\|Widget Item Option 1\]\] ! id ! slot ! widget id ! +Action for the second option of an item on a widget. \|- ! 26 ! \[\[443 +Widget Item Option 2\|Widget Item Option 2\]\] ! id ! slot ! widget id ! +Action for the third option of an item on a widget. \|- ! 25 ! \[\[443 +Widget Item Option 3\|Widget Item Option 3\]\] ! id ! slot ! widget id ! +Action for the fourth option of an item on a widget. \|- ! 49 ! \[\[443 +Widget Item Option 4\|Widget Item Option 4\]\] ! id ! slot ! widget id ! +Action for the fifth option of an item on a widget. \|} + +===Examine=== + + { + --- + +! Opcode ! Frame Name ! Variable 0 ! Variable 1 ! Variable 2 ! +Description \|- ! 1006 ! \[\[443 Object Examine\|Object Examine\]\] ! id +! position x ! position y ! Action for the examine option of an object. +\|- ! 1001 ! \[\[443 Npc Examine\|Npc Examine\]\] ! id ! position x ! +position y ! Action for the examine option of a Npc. \|- ! 1003 ! +\[\[443 Ground Item Examine\|Ground Item Examine\]\] ! id ! position x ! +position y ! Action for the examine option of a ground item. \|- ! 1004 +! \[\[443 Item Examine\|Item Examine\]\] ! id ! slot ! widget id ! +Action for the examine option of an item. \|} + +===Other=== + + { + --- + +! Opcode ! Frame Name ! Variable 0 ! Variable 1 ! Variable 2 ! +Description \|- ! 29 ! \[\[443 Close Window\|Close Window\]\] ! NA ! NA +! NA ! Action for when the currently open window is closed. \|} + +==Game Protocol== + +===Server Frames=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- ! 29 ! +VARIABLE SHORT ! NA ! \[\[443 Player Update\|Player Update\]\] ! Updates +the players within the client's view. \|- ! 238 ! VARIABLE SHORT ! NA ! +\[\[443 NPC Update\|NPC Update\]\] ! Updates the npcs within the +client's view. \|- ! 121 ! VARIABLE SHORT ! NA ! \[\[443 Rebuild Scene +Graph\|Rebuild Scene Graph\]\] ! Rebuilds the players scene graph. \|- ! +193 ! VARIABLE SHORT ! NA ! \[\[443 Rebuild Scene Graph\|Rebuild Custom +Scene Graph\]\] ! Builds a custom scene graph. \|- ! 199 ! FIXED ! 3 ! +\[\[443 Set Location\|Set Location\]\] ! Sets the location on the map of +where the player is. \|- ! 111 ! FIXED ! 6 ! \[\[443 Move Camera +To\|Move Camera To\]\] ! Moves the camera to a location on the map. \|- +! 157 ! VARIABLE BYTE ! NA ! \[\[443 Send Message\|Send Message\]\] ! +Sends a message to the client's chatbox. \|- ! 58 ! FIXED ! 6 ! \[\[443 +Update Skill\|Update Skill\]\] ! Updates a skill by sending its +experience and dynamic level. \|- ! 226 ! FIXED ! 1 ! \[\[443 Update Run +Energy\|Update Run Energy\]\] ! Updates the amount of run energy the +player has. \|- ! 87 ! FIXED ! 1 ! \[\[443 Set Minimap State\|Set +Minimap State\]\] ! Sets the minimap state. \|- ! 117 ! FIXED ! 1 ! +\[\[443 System Update\|System Update\]\] ! Informs the client that a +system update will be happening. \|- ! 192 ! VARIABLE SHORT ! NA ! +\[\[443 Execute Client Script\|Execute Client Script\]\] ! Executes a +client script. \|- ! 204 ! VARIABLE SHORT ! NA ! \[\[Class Check\|Class +Check Request\]\] ! Parses a request for a class check request. \|- ! 89 +! FIXED ! 5 ! \[\[443 Player Sound Effect\|Player Sound Effect\]\] ! +Plays a sound effect. \|- ! 74 ! FIXED ! 6 ! \[\[443 Set State +Value\|Set State Value (large)\]\] ! Sets the value of a client state +variable. \|- ! 62 ! FIXED ! 3 ! \[\[443 Set State Value\|Set State +Value (small)\]\] ! Sets the value of a client state variable. \|- ! 163 +! FIXED ! 0 ! \[\[443 Reset States\|Reset States\]\] ! Resets all the +client state variables. \|- ! 160 ! FIXED ! 4 ! \[\[443 Display +Window\|Display Window\]\] ! Displays a widget as a window. \|- ! 221 ! +FIXED ! 4 ! \[\[443 Display Screen Overlay\|Display Screen Overlay\]\] ! +Displays widgets over the entire screen of the client. \|- ! 6 ! FIXED ! +2 ! \[\[443 Display Chatbox Interface\|Display Chatbox Interface\]\] ! +Displays the chatbox as a widget. \|- ! 178 ! FIXED ! 0 ! \[\[443 Close +Displayed Widgets\|Close Displayed Widgets\]\] ! Closes all the +displayed widgets except for the chatbox interface. \|- ! 51 ! FIXED ! 0 +! \[\[443 Fetch Input\|Fetch Input\]\] ! Fetches input from the chatbox. +\|- ! 3 ! FIXED ! 6 ! \[\[443 Change Inactive Color\|Change Inactive +Color\]\] ! Changes the widget's inactive color. \|- ! 232 ! FIXED ! 10 +! \[\[443 Set Offset\|Set Offset\]\] ! Sets the x and y offset of a +widget. \|- ! 31 ! FIXED ! 4 ! \[\[443 Display Player On Widget\|Display +Player on Widget\]\] ! Displays the local player on a widget. \|- ! 137 +! FIXED ! 10 ! \[\[443 Display Item On Widget\|Display Item on +Widget\]\] ! Displays the model of an item on a widget. \|- ! 147 ! +FIXED ! 10 ! \[\[443 Set Model Rotation\|Set Model Rotation\]\] ! Sets +the x and y rotation of a model on a widget. \|- ! 73 ! FIXED ! 8 ! +\[\[443 Rotate Model\|Rotate Model\]\] ! Sets the step amount to rotate +the model continuously about the x axis. \|- ! 228 ! VARIABLE SHORT ! NA +! \[\[443 Send Items\|Send Items\]\] ! Sends the items in an item +container. \|- ! 213 ! VARIABLE SHORT ! NA ! \[\[443 Update +Items\|Update Items\]\] ! Updates the items in an item container from +their slot id. \|- ! 245 ! FIXED ! 0 ! \[\[443 Reset Items\|Reset +Items\]\] ! Resets all the items in an item container. \|- ! 82 ! FIXED +! 2 ! \[\[443 Set Spawn Sector\|Set Spawn Sector\]\] ! Sets the sector +on the map where entities will be spawned. \|- ! 244 ! VARIABLE SHORT ! +NA ! \[\[443 Spawn Sector\|Spawn Sector\]\] ! Parses the sector of the +map to spawn entities, then the actual entity spawns. \|- ! 207 ! FIXED +! 5 ! \[\[443 Spawn Ground Item\|Spawn Ground Item\]\] ! Spawns a ground +item. \|- ! 94 ! FIXED ! 7 ! \[\[443 Spawn Ground Item\|Spawn Ground +Item\]\] ! Spawns a ground item that will ignore whoever it has already +been spawned to. \|- ! 79 ! FIXED ! 7 ! \[\[443 Update Ground +Item\|Update Ground Item\]\] ! Updates the item amount for a ground +item. \|- ! 84 ! FIXED ! 3 ! \[\[443 Remove Ground Item\|Remove Ground +Item\]\] ! Removes a ground item. \|- ! 122 ! FIXED ! 4 ! \[\[443 Spawn +Still Object\|Spawn Still Object\]\] ! Spawns a still object. \|- ! 170 +! FIXED ! 4 ! \[\[443 Animate Still Object\|Animate Still Object\]\] ! +Animates a still object. \|- ! 69 ! FIXED ! 2 ! \[\[443 Remove Still +Object\|Remove Still Object\]\] ! Removes a still object. \|- ! 115 ! +FIXED ! 6 ! \[\[443 Spawn Still Graphic\|Spawn Still Graphic\]\] ! +Spawns a still graphic. \|- ! 101 ! FIXED ! 15 ! \[\[443 Spawn +Projectile\|Spawn Projectile\]\] ! Spawns a projectile. \|- ! 109 ! +FIXED ! 5 ! \[\[443 Spawn Ambient Sound Effect\|Spawn Ambient Sound +Effect\]\] ! Spawns an ambient sound effect. \|- ! 133 ! FIXED ! 2 ! +\[\[443 Reset Sector\|Reset Sector\]\] ! Resets all the ground items and +still objects in a sector. \|- ! 41 ! FIXED ! 0 ! \[\[443 +Logout\|Logout\]\] ! Logs the client out from the server. \|} + +===Client Frames=== + +==== Actions ==== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- ! 90 ! FIXED ! +8 ! \[\[443 Add Friend\|Add Friend\]\] ! Called when a new name has been +added to the friend list. \|- ! 159 ! FIXED ! 8 ! \[\[443 Remove +Friend\|Remove Friend\]\] ! Called when a name has been removed from the +friend list. \|- ! 198 ! FIXED ! 8 ! \[\[443 Add Ignore\|Add Ignore\]\] +! Called when a new name has been added to the ignore list. \|- ! 250 ! +FIXED ! 8 ! \[\[443 Remove Ignore\|Remove Ignore\]\] ! Called when a +name has been removed from the ignore list. \|- ! 11 ! FIXED ! 2 ! +\[\[443 Player Option 0\|Player Option 0\]\] ! Called when the first +option of a player is activated. \|- ! 169 ! FIXED ! 2 ! \[\[443 Player +Option 1\|Player Option 1\]\] ! Called when the second option of a +player is activated. \|- ! 229 ! FIXED ! 2 ! \[\[443 Player Option +2\|Player Option 2\]\] ! Called when the third option of a player is +activated. \|- ! 101 ! FIXED ! 2 ! \[\[443 Player Option 3\|Player +Option 3\]\] ! Called when the fourth option of a player is activated. +\|- ! 206 ! FIXED ! 2 ! \[\[443 Player Option 4\|Player Option 4\]\] ! +Called when the fifth option of a player is activated. \|- ! ! ! ! +\[\[443 Npc Option 0\|Npc Option 0\]\] ! \|- ! ! ! ! \[\[443 Npc Option +1\|Npc Option 1\]\] ! \|- ! ! ! ! \[\[443 Npc Option 2\|Npc Option 2\]\] +! \|- ! ! ! ! \[\[443 Npc Option 3\|Npc Option 3\]\] ! \|- ! ! ! ! +\[\[443 Npc Option 4\|Npc Option 4\]\] ! \|- ! ! ! ! \[\[443 Ground Item +Option 0\|Ground Item Option 0\]\] ! \|- ! ! ! ! \[\[443 Ground Item +Option 1\|Ground Item Option 1\]\] ! \|- ! ! ! ! \[\[443 Ground Item +Option 2\|Ground Item Option 2\]\] ! \|- ! ! ! ! \[\[443 Ground Item +Option 3\|Ground Item Option 3\]\] ! \|- ! ! ! ! \[\[443 Ground Item +Option 4\|Ground Item Option 4\]\] ! \|- ! ! ! ! \[\[443 Still Object +Option 0\|Still Object Option 0\]\] ! \|- ! ! ! ! \[\[443 Still Object +Option 1\|Still Object Option 1\]\] ! \|- ! ! ! ! \[\[443 Still Object +Option 2\|Still Object Option 2\]\] ! \|- ! ! ! ! \[\[443 Still Object +Option 3\|Still Object Option 3\]\] ! \|- ! ! ! ! \[\[443 Still Object +Option 4\|Still Object Option 4\]\] ! \|- ! ! ! ! \[\[443 Item On +Player\|Item On Player\]\] ! \|- ! ! ! ! \[\[443 Item On NPC\|Item On +NPC\]\] ! \|- ! ! ! ! \[\[443 Item On Ground Item\|Item On Ground +Item\]\] ! \|- ! ! ! ! \[\[443 Item On Still Object\|Item On Still +Object\]\] ! \|- ! ! ! ! \[\[443 Item On Item\|Item On Item\]\] ! \|- ! +! ! ! \[\[443 Widget On Player\|Widget On Player\]\] ! \|- ! ! ! ! +\[\[443 Widget On NPC\|Widget On NPC\]\] ! \|- ! ! ! ! \[\[443 Widget On +Ground Item\|Widget On Ground Item\]\] ! \|- ! ! ! ! \[\[443 Widget On +Still Object\|Widget On Still Object\]\] ! \|- ! ! ! ! \[\[443 Widget On +Item\|Widget On Item\]\] ! \|- ! ! ! ! \[\[443 Widget On Widget\|Widget +On Widget\]\] ! \|- ! ! ! ! \[\[443 Still Object Examine\|Still Object +Examine\]\] ! \|- ! ! ! ! \[\[443 Npc Examine\|Npc Examine\]\] ! \|- ! ! +! ! \[\[443 Item Examine\|Item Examine\]\] ! \|- ! 54 ! FIXED ! 4 ! +\[\[443 Widget Action\|Widget Action\]\] ! Called when a widget action +is activated. \|- ! 70 ! FIXED ! 0 ! \[\[443 Closed Overlays\|Closed +Overlays\]\] ! Called when the currently opened overlays are closed. \|} + +==== Other ==== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- ! 194 ! +VARIABLE BYTE ! NA ! \[\[Class Check\|Class Check Response\]\] ! +Response to a class check request sent from the server. \|- ! 4 ! NA ! +VARIABLE BYTE ! \[\[443 Chat\|Chat\]\] ! Called when the client enters +in a chat message. \|- ! 21 ! 0 ! FIXED ! \[\[443 Map Rebuilt\|Map +Rebuilt\]\] ! Called when the map has been successfully rebuilt. \|- ! +174 ! NA ! VARIABLE BYTE ! \[\[443 Command\|Command\]\] ! Called when +the client inputs a command. \|} + +=== Update Flags === + +All flags are listed in order in which they are parsed. + +==== Player ==== + +==== NPC ==== + +{\| border=3px ! Opcode ! Name ! Description \|- ! 0x2 ! Face Position ! +Turns to face the NPC to a position on the map. \|- ! 0x20 ! Animate ! +Animates the NPC. \|- ! 0x40 ! Display Hit One ! Displays a hit on the +NPC. \|- ! 0x4 ! Display Still Graphic ! Displays a still graphic on the +NPC. \|- ! 0x10 ! Turn to mobile entity ! Turns to face the NPC to a +mobile entity on the map. \|- ! 0x80 ! Display Hit Two ! Displays a hit +on the npc. \|- ! 0x1 ! Turn into NPC ! Changes the id of the NPC and +its animations. \|- ! 0x8 ! Display chat text ! Displays chat text above +the head of the NPC. \|} diff --git a/src/464-Protocol.md b/src/464-Protocol.md new file mode 100644 index 0000000..0b24a52 --- /dev/null +++ b/src/464-Protocol.md @@ -0,0 +1,36 @@ +\[\[Category RS2\]\] + +Currently under development. + +== '''Packet structure''' == When the client sends a packet to the +server, the first byte encapsulates its opcode. This specific opcode is +encrypted with a value generated by the ISAAC PRNG seeded with a +dynamically server generated key during the login block. The server +decrypts it and associates the opcode to the packet's respective +predefined size. If the packet does not contain a fixed size, the opcode +will be followed by either a byte or a word - varying per packet - for +its proper size. This is then followed by the payload. + +== '''Login''' == Blank at the moment. + +=='''Game Protocol'''== + +===Server -\> Client Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 163 \| +Fixed \| 1 \| \[\[317 Run Energy\|Run Energy\]\] \| Sends the players +run energy percentage. \|- \|} + +===Client -\> Server Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 49 \| +VARIABLE BYTE \| 13 \| \[\[464 Character Design\|Character Design\]\] \| +Sent when accepting the player's appearance on the design screen. \|- \| +115 \| VARIABLE BYTE \| N/A \| \[\[464 Chat\|Chat\]\] \| Sent when the +player enters a chat message. \|- \|} diff --git a/src/468-Protocol.md b/src/468-Protocol.md new file mode 100644 index 0000000..fea028e --- /dev/null +++ b/src/468-Protocol.md @@ -0,0 +1,36 @@ +\[\[Category RS2\]\] + +Currently under development. + +== '''Packet structure''' == When the client sends a packet to the +server, the first byte encapsulates its opcode. This specific opcode is +encrypted with a value generated by the ISAAC PRNG seeded with a +dynamically server generated key during the login block. The server +decrypts it and associates the opcode to the packet's respective +predefined size. If the packet does not contain a fixed size, the opcode +will be followed by either a byte or a word - varying per packet - for +its proper size. This is then followed by the payload. + +== '''Login''' == Blank at the moment. + +=='''Game Protocol'''== + +===Server -\> Client Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 147 \| +DataType.SHORT, DataOrder.LITTLE, \| 1 \| \[\[317 Run Energy\|Run +Energy\]\] \| Sends the Mapregion \|- \|} + +===Client -\> Server Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 49 \| +VARIABLE BYTE \| 13 \| \[\[464 Character Design\|Character Design\]\] \| +Sent when accepting the player's appearance on the design screen. \|- \| +115 \| VARIABLE BYTE \| N/A \| \[\[464 Chat\|Chat\]\] \| Sent when the +player enters a chat message. \|- \|} diff --git a/src/474-Fourth-Interface-Option.md b/src/474-Fourth-Interface-Option.md new file mode 100644 index 0000000..cc6fa23 --- /dev/null +++ b/src/474-Fourth-Interface-Option.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 474\]\] +{{packet\|name=Fourth Interface Option\|description=Triggered when a +fourth interface option has been +clicked.\|opcode=3\|type=Fixed\|length=6\|revision=474}} == Fourth +Interface Option == + +=== Description === + +This is triggered when a fourth interface option has been clicked. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Int\]\] \| The button ID. \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \| The item container +slot. \|- \|} diff --git a/src/474-Protocol.md b/src/474-Protocol.md new file mode 100644 index 0000000..c9891d5 --- /dev/null +++ b/src/474-Protocol.md @@ -0,0 +1,69 @@ +\[\[Category Packet\]\] \[\[Category Packet 474\]\] \[\[Category RS2\]\] + +Not much progress has been made with this revision, don't worry about it +too much. + +== '''Packet structure''' == When the client sends a packet to the +server, the first byte encapsulates its opcode. This specific opcode is +encrypted with a value generated by the ISAAC PRNG seeded with a +dynamically server generated key during the login block. The server +decrypts it and associates the opcode to the packet's respective +predefined size. If the packet does not contain a fixed size, the opcode +will be followed by either a byte or a word - varying per packet - for +its proper size. This is then followed by the payload. + +== '''Login''' == ? + +== '''Game Protocol''' == + +===Server -\> Client Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 209 \| +VARIABLE\_BYTE \| N/A \| \[\[474 Send message\|Send message\]\] \| Sends +a server message (e.g. 'Welcome to RuneScape') or trade/duel request. +\|- \| 231 \| VARIABLE\_SHORT \| N/A \| \[\[474 Send string\|Send +string\]\] \| Replaces a string of text. (e.g. Replace: 'Click here to +Play' with 'Play Now!') \|- \|} + +===Client -\> Server Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 1 \| FIXED +\| 8 \| \[\[474 Remove ignore\|Remove ignore\]\] \| Sent when a player +removes a player from their ignore list. \|- \| 3 \| FIXED \| 6 \| +\[\[474 Fourth Interface Option\|Fourth Interface Option\]\] \| This is +triggered when a fourth interface option has been clicked. \|- \| 4 \| +FIXED \| N/A \| \[\[474 Fourth Object Option\|Fourth Object Option\]\] +\| This is triggered when a fourth object option has been clicked. \|- +\| 11 \| FIXED \| N/A \| \[\[474 Minimap Walk\|Minimap Walk\]\] \| Sends +walking data to the server. \|- \| 13 \| FIXED \| 12 \| \[\[474 Item on +NPC\|Item on NPC\]\] \| Sent when a player uses an item on an NPC. \|- +\| 21 \| FIXED \| 2 \| \[\[474 Npc action 2\|Npc action 2\]\] \| Sent +when a player clicks the second option of an NPC. \|- \| 22 \| FIXED \| +N/A \| \[\[474 Kick Clanchat Participant\|Kick Clanchat Participant\]\] +\| Indicates a friend of the clanChat owner attempts to kick a fellow +clanChatParticipant (non-owner). \|- \| 29 \| FIXED \| N/A \| \[\[474 +Sixth Interface Option\|Sixth Interface Option\]\] \| Tells the server a +sixth interface option has been clicked. \|- \| 31 \| FIXED \| 6 \| +\[\[474 Object action 1\|Object action 1\]\] \| Sent when the player +clicks the first option of an object, such as "Cut" for trees. \|- \| 34 +\| FIXED \| N/A \| \[\[474 Client Focus\|Client Focus\]\] \| Tells the +server the clients focus has changed. \|- \| 35 \| FIXED \| N/A \| +\[\[474 Use Magic On Player\|Use Magic On Player\]\] \| Indicates the +player wants to use a spell on another player. \|- \| 37 \| FIXED \| N/A +\| \[\[474 Third interface option\|Third interface option\]\] \| This is +triggered when one a third interface option has been clicked. \|- \| 203 +\| FIXED \| 6 \| \[\[474 Object action 2\|Object action 2\]\] \| Sent +when the player clicks the second option of an object, such as +"Use-quickly" for Bank Booths. \|- \| 34 \| FIXED \| 1 \| \[\[474 Focus +change\|Focus change\]\] \| Sent when the game client window goes out of +focus. \|- \| 35 \| FIXED \| 8 \| \[\[474 Magic on player\|Magic on +player\]\] \| Sent when the player casts magic on another player.\ +\|- \| 226 \| FIXED \| 2 \| \[\[474 Examine object\|Examine object\]\] +\| Sent when you examine an object.\ +\|- \|} diff --git a/src/474-Remove-ignore.md b/src/474-Remove-ignore.md new file mode 100644 index 0000000..d02bf47 --- /dev/null +++ b/src/474-Remove-ignore.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 474\]\] +{{packet\|name=Remove ignore\|description=Sent when a player removes a +player from their ignore +list.\|opcode=1\|type=Fixed\|length=8\|revision=474}} == Remove ignore +== + +=== Description === + +Signals the player wants to remove an ignore. + +=== Packet Structure === {\|border=2 ! Data Type ! Description \|- \| +\[\[Data Types\#Standard data types\|Long\]\] \| The player that is +going to be removed from the ignore's name. \|- \|} diff --git a/src/508-Protocol.md b/src/508-Protocol.md new file mode 100644 index 0000000..ecaada4 --- /dev/null +++ b/src/508-Protocol.md @@ -0,0 +1,108 @@ +\[\[Category RS2\]\] + +== '''Packet structure''' == When the client sends a packet to the +server, the first byte encapsulates its opcode. This specific opcode is +encrypted with a value generated by the ISAAC PRNG seeded with a +dynamically server generated key during the login block. The server +decrypts it and associates the opcode to the packet's respective +predefined size. If the packet does not contain a fixed size, the opcode +will be followed by either a byte or a word - varying per packet - for +its proper size. This is then followed by the payload. + +== '''Login''' == Every connection to the main 'gateway' server sends a +single byte of data, mostly well known as the connection type. The +connection type tells the main server which type of connection you wish +to initiate. The old engine list consists of: + +- Login initiation - connection type 14 +- Update - connection type 15 +- Fresh login - connection type 16 +- JAGGRAB - connection type 17 +- Reconnecting login - connection type 18 +- Worldlist - varies, connection type 255 in \#508 +- Potentially more... + +The connection type we will cover in the following paragraphs is the +login connection type, 14. After the login handshake initiating +connection type, the client writes a small bit of data derived from the +logging in player's username. This is believed to help select the +appropriate login server. On successful handshake, the server sends back +8 ignored by + +At this point, the client reads in one byte, called the status code. The +status code 0 is expected to start the login protocol correctly. If the +status code is 0, the client reads a long, dubbed by many as the server +session key. This is used to help generate a unique seed for the client +session's packet opcode masking. The client then stores two ints that +are the upper and lower ints of the client session key, which has the +same purpose as the server's key. The client then starts writing the +login block, which is RSA encrypted. + +The login block starts with the byte 10, which is considered a magic +number. Following it is the client session key and server session key +longs. Trailing behind the session keys comes the client's username +packed to a 64-bit long and password written as a C-string +(NUL-terminated ASCII). This block is then RSA encrypted and stored for +later use. + +Now starts the login request packet. It starts off with a flag telling +the server whether or not the client is reconnecting or connecting for +the first time \[NOW CLASSIFIED AS CONNECTION TYPE\]. The byte is 18 or +16, respectively. Following is the size of the rest of the login +response packet, including the login block that trails at the end, to +tip the server how much data it should expect. Later comes the client +revision int. After the client revision, an unknown byte is written that +seems to always be zero (possibly the memory usage game-type flag \[low +mem/high mem\]), followed by constantly zero byte and yet another zero +byte. Next the packet writes the game applet width and height in pixels +as shorts, followed quickly after by the UID (unique identifier or user +identifier). Next comes the C-string settings string passed as a param +to the applet, and after it the int affiliate identifier (probably +identifies the game affiliate it was run on) with another int right +after it. This int that trails behind is an unknown int that only has 22 +bits used, all of which represent various flags within the client. Any +clues as to what they are would be nice. The packet is just about +crafted completely. \[In 525, a strange short is written here\]. To +finish off the main chunk, the client writes all cache's reference table +index-based CRC32 checksums as ints (29 in 539, 27 in 508, etc). To top +it off, the RSA encrypted login block is appended to the end and the +packet is sent to the server. + +The ISAAC ciphers are seeded for packet opcode masking after adding 50 +to each int of the session keys, and the status code is reread. This +finishes the login protocol. + +== '''Game Protocol''' == Game packet header: + +
+ubyte - opcode
+ubyte - packet size only if packet size is sent as -1 (length: VAR_BYTE)
+ushort - packet size only if packet size is sent as -2 (length: VAR_SHORT)
+
+After the header is read by the server, the packet specific data is then +read and decoded by the server. + +===Server -\> Client Packets=== {\| border=2 \|- ! Opcode ! Type ! +Length (bytes) ! Name ! Description \|- \| 8 \| FIXED \| 2 \| \[\[508 +System update\|System update\]\] \| Displays the system update counter +on the player's client. \|- \| 93 \| FIXED \| 7 \| \[\[508 Send +interface\|Send interface\]\] \| \|- \| 99 \| FIXED \| 1 \| \[\[508 Run +energy\|Run energy\]\] \| Sets the players run energy. \|- \| 104 \| +FIXED \| 0 \| \[\[508 Logout\|Logout\]\] \| Logs the player out. \|- \| +217 \| FIXED \| 6 \| \[\[508 Send skill levels\|Send skill levels\]\] \| +Sends the player's skill levels to the client to be drawn on the skill +tab. \|- \| 218 \| VARIABLE BYTE \| N/A \| \[\[508 Send message\|Send +message\]\] \| Writes a string to the client's chat box. \|- \| 239 \| +FIXED \| 3 \| \[\[508 Set window pane\|Set window pane\]\] \| \|- \| 252 +\| VARIABLE BYTE \| N/A \| \[\[508 Send player option\|Send player +option\]\] \| \|} + +===Client -\> Server Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 63 \| FIXED +\| 6 \| \[\[508 Dialogue Options\|Dialogue Options.\]\] \| Sent when a +player clicks an dialogue button. The data sent is InterfaceId, +buttonId, and something yet not discovered. \|- \|} diff --git a/src/634-Protocol.md b/src/634-Protocol.md new file mode 100644 index 0000000..9419c49 --- /dev/null +++ b/src/634-Protocol.md @@ -0,0 +1,27 @@ +\[\[Category RS2\]\] + +== '''Packet structure''' == When the client sends a packet to the +server, the first byte encapsulates its opcode. This specific opcode is +encrypted with a value generated by the ISAAC PRNG seeded with a +dynamically server generated key during the login block. The server +decrypts it and associates the opcode to the packet's respective +predefined size. If the packet does not contain a fixed size, the opcode +will be followed by either a byte or a word - varying per packet - for +its proper size. This is then followed by the payload. + +An addition to modern emulation protocols was the addition to allow +packets with an opcode of a word to be deciphered from the buffer. This +is done by taking the first two ISAAC PRNG seeds; each byte from the +buffer at the current offset is deciphered sequentially. If the first +byte deciphered is less than the maximum of a signed byte then the +packet is assumed to be byte length, otherwise it's considered to be +word length. + +== '''Login''' == Every connection to the main 'gateway' server sends a +single byte of data, mostly well known as the connection type. The +connection type tells the main server which type of connection you wish +to initiate. The old engine list consists of: + +
+Needs documentation on how to login
+
diff --git a/src/666-Protocol.md b/src/666-Protocol.md new file mode 100644 index 0000000..fd40f4b --- /dev/null +++ b/src/666-Protocol.md @@ -0,0 +1,394 @@ +\[\[Category RS2\]\] This page is an attempt to document the protocol +and other relevant information for client build 666. + +== '''Handshakes''' == This section documents the handshake packets sent +from the client to the server. + + { + --- + +! Name ! Opcode ! Length ! Fields ! Description \|- ! Init Game +Connection \| 14 \| 0 \| None \| Indicates that the connection is for +logging the client into the lobby or game. \|- ! Init Update Connection +\| 15 \| 4 \| style="text-align: left" \| \* client\_build: int32 \| +Indicates that the connection is for streaming the game's resources to +the client. \|- ! Game Login \| 16 \| Variable (short) \| +style="text-align: left" \| \* client\_build: int32 \* reconnecting: +int8 \* rsa\_block\_len: int16 \* RSA block \*\* block\_header: int8 +\*\* xtea\_key: int32\[4\] \*\* unknown: int64 \*\* password: cstring +\*\* server\_session\_key: int64 \*\* client\_session\_key: int64 \* +XTEA block \*\* username: cstring \*\* unknown: int8 \*\* screen\_type: +int8 \*\* screen\_width: int16 \*\* screen\_height: int16 \*\* +multisampling\_level: int8 \*\* uid: int8\[24\] \*\* settings: cstring +\*\* affiliate\_id: int32 \*\* preferences\_length: int8 \*\* +preferences\_data: int8\[preferences\_length\] \*\* System info \*\*\* +sysinfo\_version: int8 \*\*\* os\_type: int8 \*\*\* is\_64bit: int8 +\*\*\* os\_version: int8 \*\*\* java\_vendor: int8 \*\*\* java\_release: +int8 \*\*\* java\_version: int8 \*\*\* java\_update: int8 \*\*\* +unsigned: int8 \*\*\* heap\_size: int16 \*\*\* processor\_count: int8 +\*\*\* total\_memory: int24 \*\*\* unknown: int16 \*\*\* unknown: int8 +\*\*\* unknown: int8 \*\*\* unknown: int8 \*\*\* unknown: jstring \*\*\* +unknown: jstring \*\*\* unknown: jstring \*\*\* unknown: jstring \*\*\* +unknown: int8 \*\*\* unknown: int16 \*\* unknown: int32 \*\* user\_flow: +int64 \*\* has\_additional\_info: int8 \*\*\* additional\_info: cstring +\*\* has\_jagtheora: int8 \*\* using\_javascript: int8 \*\* +archive\_checksums: int32\[36\] \| Attempts to login to the game server. +\|- ! Handshake 17 \| 17 \| 0 \| None \| Not used but present in the +client. \|- ! Lobby Login \| 19 \| Variable (short) \| +style="text-align: left" \| \* client\_build: int32 \* rsa\_block\_len: +int16 \* RSA block \*\* block\_header: int8 \*\* xtea\_key: int32\[4\] +\*\* unknown: int64 \*\* password: cstring \*\* server\_session\_key: +int64 \*\* client\_session\_key: int64 \* XTEA block \*\* username: +cstring \*\* game\_id: int8 \*\* language: int8 \*\* uid: int8\[24\] +\*\* settings: cstring \*\* affiliate\_id: int32 \*\* +archive\_checksums: int32\[36\] \| Attempts to login to the lobby +server. \|- ! Create Account \| 22 \| Variable (short) \| +style="text-align: left" \| \* client\_build: int32 \* rsa\_block\_len: +int16 \* RSA block \*\* block\_header: int8 \*\* xtea\_key: int32\[4\] +\*\* padding: int32\[10\] \*\* unknown: int16 \* XTEA block \*\* email: +cstring \*\* affiliate\_id: int16 \*\* password: cstring \*\* +user\_flow: int64 \*\* language: int8 \*\* game\_id: int8 \*\* uid: +int8\[24\] \*\* has\_additional\_info: int8 \*\*\* additional\_info: +cstring \*\* age: int8 \*\* email\_updates: int8 \*\* padding: int8\[7\] +\| Attempts to create an account with the given information. \|- ! +Handshake 23 \| 23 \| 4 \| None \| Not used but present in the client. +\|- ! Handshake 24 \| 24 \| Variable (byte) \| None \| Not used but +present in the client. \|- ! Finished Advertisement \| 26 \| 0 \| None +\| Notifies the server that the client has finished viewing the +advertisement. \|- ! Handshake 27 \| 27 \| 0 \| None \| Not used but +present in the client. \|- ! Check Email \| 28 \| Variable (short) \| +style="text-align: left" \| \* client\_build: int32 \* rsa\_block\_len: +int16 \* RSA block \*\* block\_header: int8 \*\* xtea\_key: int32\[4\] +\*\* padding: int32\[10\] \*\* unknown: int16 \* XTEA block \*\* email: +cstring \*\* language: int8 \*\* padding: int8\[7\] \| Asks the server +to verify whether the given email can be used to create an account. \|- +! Init Social Network Connection \| 29 \| Variable (short) \| +style="text-align: left" \| \* client\_build: int32 \* reconnecting: +int8 (if game server connection) \* rsa\_block\_len: int16 \* RSA block +\*\* block\_header: int8 \*\* xtea\_key: int32\[4\] \*\* +social\_network\_id: int8 \*\* unknown: int16 \*\* language: int8 \*\* +affiliate\_id: int32 \*\* padding: int32\[6\] \*\* client\_session\_key: +int64 \*\* game\_id: int8 \*\* unknown: int8 \| Initializes a connection +using a social network. \|- ! Social Network Login \| 30 \| Variable +(short) \| style="text-align: left" \| \* Game login \*\* XTEA block +\*\*\* unknown: int8 \*\*\* screen\_type: int8 \*\*\* screen\_width: +int16 \*\*\* screen\_height: int16 \*\*\* multisampling\_level: int8 +\*\*\* uid: int8\[24\] \*\*\* settings: cstring \*\*\* affiliate\_id: +int32 \*\*\* preferences\_length: int8 \*\*\* preferences\_data: +int8\[preferences\_length\] \*\*\* System info \*\*\*\* +sysinfo\_version: int8 \*\*\*\* os\_type: int8 \*\*\*\* is\_64bit: int8 +\*\*\*\* os\_version: int8 \*\*\*\* java\_vendor: int8 \*\*\*\* +java\_release: int8 \*\*\*\* java\_version: int8 \*\*\*\* java\_update: +int8 \*\*\*\* unsigned: int8 \*\*\*\* heap\_size: int16 \*\*\*\* +processor\_count: int8 \*\*\*\* total\_memory: int24 \*\*\*\* unknown: +int16 \*\*\*\* unknown: int8 \*\*\*\* unknown: int8 \*\*\*\* unknown: +int8 \*\*\*\* unknown: jstring \*\*\*\* unknown: jstring \*\*\*\* +unknown: jstring \*\*\*\* unknown: jstring \*\*\*\* unknown: int8 +\*\*\*\* unknown: int16 \*\*\* unknown: int32 \*\*\* user\_flow: int64 +\*\*\* has\_additional\_info: int8 \*\*\*\* additional\_info: cstring +\*\*\* has\_jagtheora: int8 \*\*\* using\_javascript: int8 \*\*\* +archive\_checksums: int32\[36\] \* Lobby login \*\* XTEA block \*\*\* +game\_id: int8 \*\*\* language: int8 \*\*\* uid: int8\[24\] \*\*\* +settings: cstring \*\*\* affiliate\_id: int32 \*\*\* archive\_checksums: +int32\[36\] \| Attempts to login to either the game or lobby server +using a social network. \|- \|} + +== '''Game Protocol''' == + +=== '''Packets''' === This section documents the packets sent between +the client and server during normal gameplay. + +==== '''Client-to-Server''' ==== {\| class="wikitable" +style="text-align: center" \|- ! Name ! Opcode ! Length ! Fields ! +Description \|- ! Map Build Complete \| 0 \| 0 \| None \| Indicates that +the client has just finished rebuilding its map. \|- ! Location Option 1 +\| 1 \| 7 \| style="text-align: left" \| \* pos\_y: int16a \* pos\_x: +le\_int16a \* location\_id: le\_int16 \* ctrl\_pressed: int8 \| Sent +when the first option for a location is selected. \|- ! Remove Ignore \| +2 \| Variable (byte) \| style="text-align: left" \| \* name: cstring \| +Sent when the client wants to stop ignoring a player. \|- ! Packet 3 \| +3 \| 8 \| \| \|- ! Player Option 8 \| 4 \| 3 \| style="text-align: left" +\| \* player\_index: int16 \* ctrl\_pressed: int8 \| Sent when the +eighth option for a player is selected. \|- ! Packet 5 \| 5 \| Variable +(byte) \| \| \|- ! Packet 6 \| 6 \| 15 \| \| \|- ! Packet 7 \| 7 \| 8 \| +\| \|- ! Packet 8 \| 8 \| 6 \| \| \|- ! Packet 9 \| 9 \| Variable (byte) +\| \| \|- ! Npc Option 3 \| 10 \| 3 \| style="text-align: left" \| \* +npc\_index: le\_int16a \* ctrl\_pressed: int8c \| Sent when the third +option for an npc is selected. \|- ! Packet 11 \| 11 \| 8 \| \| \|- ! +Packet 12 \| 12 \| Variable (byte) \| \| \|- ! Packet 13 \| 13 \| +Variable (byte) \| \| \|- ! Player Option 10 \| 14 \| 3 \| +style="text-align: left" \| \* player\_index: int16 \* ctrl\_pressed: +int8 \| Sent when the tenth option for a player is selected. \|- ! +Packet 15 \| 15 \| 4 \| \| \|- ! Ground Object Option 5 \| 16 \| 7 \| +style="text-align: left" \| \* pos\_y: int16 \* object\_id: int16 \* +pos\_x: int16 \* ctrl\_pressed: int8 \| Sent when the fifth option for a +ground object is selected. \|- ! Packet 17 \| 17 \| 8 \| \| \|- ! Packet +18 \| 18 \| 1 \| \| \|- ! Packet 19 \| 19 \| Variable (byte) \| \| \|- ! +Packet 20 \| 20 \| 4 \| \| \|- ! Packet 21 \| 21 \| 2 \| \| \|- ! Packet +22 \| 22 \| Variable (byte) \| \| \|- ! Ground Object Option 2 \| 23 \| +7 \| style="text-align: left" \| \* pos\_y: int16 \* object\_id: int16 +\* pos\_x: int16 \* ctrl\_pressed: int8 \| Sent when the second option +for a ground object is selected. \|- ! Ground Object Option 3 \| 24 \| 7 +\| style="text-align: left" \| \* pos\_y: int16 \* object\_id: int16 \* +pos\_x: int16 \* ctrl\_pressed: int8 \| Sent when the third option for a +ground object is selected. \|- ! Packet 25 \| 25 \| 8 \| \| \|- ! Packet +26 \| 26 \| 16 \| \| \|- ! Npc Option 6 \| 27 \| 3 \| style="text-align: +left" \| \* npc\_index: le\_int16a \* ctrl\_pressed: int8c \| Sent when +the sixth option for an npc is selected. \|- ! Ground Object Option 6 \| +28 \| 7 \| style="text-align: left" \| \* pos\_y: int16 \* object\_id: +int16 \* pos\_x: int16 \* ctrl\_pressed: int8 \| Sent when the sixth +option for a ground object is selected. \|- ! Npc Option 1 \| 29 \| 3 \| +style="text-align: left" \| \* npc\_index: le\_int16a \* ctrl\_pressed: +int8c \| Sent when the first option for an npc is selected. \|- ! Packet +30 \| 30 \| Variable (byte) \| \| \|- ! Add Friend \| 31 \| Variable +(byte) \| style="text-align: left" \| \* name: cstring \| Sent when the +client wants to be friends with a player. \|- ! Detect Modified Client +\| 32 \| 4 \| style="text-align: left" \| \* value: int32 \| Sent on +each map rebuild if the client detects that it is not running as an +applet. The ''value'' field will always have value 0x3f008edd. \|- ! No +Timeout \| 33 \| 0 \| None \| Sent if the client has not sent the server +any data for 50 ticks. \|- ! Packet 34 \| 34 \| 6 \| \| \|- ! Remove +Friend \| 35 \| Variable (byte) \| style="text-align: left" \| \* name: +cstring \| Sent when the client wants to stop being friends with a +player. \|- ! Packet 36 \| 36 \| 6 \| \| \|- ! Packet 37 \| 37 \| 4 \| +\| \|- ! Location Option 5 \| 38 \| 7 \| style="text-align: left" \| \* +pos\_y: int16a \* pos\_x: le\_int16a \* location\_id: le\_int16 \* +ctrl\_pressed: int8 \| Sent when the fifth option for a location is +selected. \|- ! Location Option 2 \| 39 \| 7 \| style="text-align: left" +\| \* pos\_y: int16a \* pos\_x: le\_int16a \* location\_id: le\_int16 \* +ctrl\_pressed: int8 \| Sent when the second option for a location is +selected. \|- ! Packet 40 \| 40 \| 8 \| \| \|- ! Packet 41 \| 41 \| 12 +\| \| \|- ! Packet 42 \| 42 \| 15 \| \| \|- ! Player Option 1 \| 43 \| 3 +\| style="text-align: left" \| \* player\_index: int16 \* ctrl\_pressed: +int8 \| Sent when the first option for a player is selected. \|- ! +Player Option 2 \| 44 \| 3 \| style="text-align: left" \| \* +player\_index: int16 \* ctrl\_pressed: int8 \| Sent when the second +option for a player is selected. \|- ! Ground Object Option 1 \| 45 \| 7 +\| style="text-align: left" \| \* pos\_y: int16 \* object\_id: int16 \* +pos\_x: int16 \* ctrl\_pressed: int8 \| Sent when the first option for a +ground object is selected. \|- ! Packet 46 \| 46 \| Variable (byte) \| +\| \|- ! Player Option 5 \| 47 \| 3 \| style="text-align: left" \| \* +player\_index: int16 \* ctrl\_pressed: int8 \| Sent when the fifth +option for a player is selected. \|- ! Packet 48 \| 48 \| 8 \| \| \|- ! +Ground Object Option 4 \| 49 \| 7 \| style="text-align: left" \| \* +pos\_y: int16 \* object\_id: int16 \* pos\_x: int16 \* ctrl\_pressed: +int8 \| Sent when the fourth option for a ground object is selected. \|- +! Packet 50 \| 50 \| Variable (byte) \| \| \|- ! Player Option 9 \| 51 +\| 3 \| style="text-align: left" \| \* player\_index: int16 \* +ctrl\_pressed: int8 \| Sent when the ninth option for a player is +selected. \|- ! Packet 52 \| 52 \| 4 \| \| \|- ! Minimap Walk \| 53 \| +18 \| style="text-align: left" \| \* dest\_y: le\_int16 \* +ctrl\_pressed: int8c \* dest\_x: le\_int16a \* dummy1: int8 \* dummy2: +int8 \* camera\_yaw: int16 \* dummy3: int8 \* yaw\_random: int8 \* +scale\_random: int8 \* dummy4: int8 \* world\_x: int16 \* world\_y: +int16 \* dummy5: int8 \| Sent when a position on the minimap is clicked. +Fields ''dummy1'' and ''dummy2'' should have value -1. ''dummy3'' should +have value 57. ''dummy4'' should have value 89. ''dummy5'' should have +value 63. + +The ''yaw\_random'' and ''scale\_random'' contain the current random +offsets added to the client's camera yaw and minimap scale values. + +The ''world\_x'' and ''world\_y'' fields contain the client's current +position in world coordinates. \|- ! Packet 54 \| 54 \| 8 \| \| \|- ! +Packet 55 \| 55 \| Variable (byte) \| \| \|- ! Game View Walk \| 56 \| 5 +\| style="text-align: left" \| \* dest\_y: le\_int16 \* ctrl\_pressed: +int8c \* dest\_x: le\_int16a \| Sent when a position in the 3d game +world is clicked. \|- ! Packet 57 \| 57 \| 11 \| \| \|- ! Location +Option 4 \| 58 \| 7 \| style="text-align: left" \| \* pos\_y: int16a \* +pos\_x: le\_int16a \* location\_id: le\_int16 \* ctrl\_pressed: int8 \| +Sent when the fourth option for a location is selected. \|- ! Packet 59 +\| 59 \| Variable (byte) \| \| \|- ! Packet 60 \| 60 \| 1 \| \| \|- ! +Npc Option 5 \| 61 \| 3 \| style="text-align: left" \| \* npc\_index: +le\_int16a \* ctrl\_pressed: int8c \| Sent when the fifth option for an +npc is selected. \|- ! Packet 62 \| 62 \| Variable (byte) \| \| \|- ! +Packet 63 \| 63 \| 4 \| \| \|- ! Packet 64 \| 64 \| 0 \| \| \|- ! Packet +65 \| 65 \| 11 \| \| \|- ! Packet 66 \| 66 \| 8 \| \| \|- ! Packet 67 \| +67 \| 2 \| \| \|- ! Add Ignore \| 68 \| Variable (byte) \| +style="text-align: left" \| \* name: cstring \* temporary: int8 \| Sent +when the client wants to ignore a player. \|- ! Npc Option 4 \| 69 \| 3 +\| style="text-align: left" \| \* npc\_index: le\_int16a \* +ctrl\_pressed: int8c \| Sent when the fourth option for an npc is +selected. \|- ! Npc Option 2 \| 70 \| 3 \| style="text-align: left" \| +\* npc\_index: le\_int16a \* ctrl\_pressed: int8c \| Sent when the +second option for an npc is selected. \|- ! Packet 71 \| 71 \| 16 \| \| +\|- ! Player Option 7 \| 72 \| 3 \| style="text-align: left" \| \* +player\_index: int16 \* ctrl\_pressed: int8 \| Sent when the seventh +option for a player is selected. \|- ! Packet 73 \| 73 \| 2 \| \| \|- ! +Packet 74 \| 74 \| Variable (byte) \| \| \|- ! Location Option 6 \| 75 +\| 7 \| style="text-align: left" \| \* pos\_y: int16a \* pos\_x: +le\_int16a \* location\_id: le\_int16 \* ctrl\_pressed: int8 \| Sent +when the sixth option for a location is selected. \|- ! Packet 76 \| 76 +\| 4 \| \| \|- ! Packet 77 \| 77 \| 2 \| \| \|- ! Packet 78 \| 78 \| 3 +\| \| \|- ! Packet 79 \| 79 \| Variable (byte) \| \| \|- ! Packet 80 \| +80 \| Variable (byte) \| \| \|- ! Packet 81 \| 81 \| Variable (byte) \| +\| \|- ! Packet 82 \| 82 \| Variable (byte) \| \| \|- ! Player Option 4 +\| 83 \| 3 \| style="text-align: left" \| \* player\_index: int16 \* +ctrl\_pressed: int8 \| Sent when the fourth option for a player is +selected. \|- ! Packet 84 \| 84 \| 8 \| \| \|- ! Packet 85 \| 85 \| 8 \| +\| \|- ! Location Option 3 \| 86 \| 7 \| style="text-align: left" \| \* +pos\_y: int16a \* pos\_x: le\_int16a \* location\_id: le\_int16 \* +ctrl\_pressed: int8 \| Sent when the third option for a location is +selected. \|- ! Packet 87 \| 87 \| 0 \| \| \|- ! Packet 88 \| 88 \| +Variable (byte) \| \| \|- ! Packet 89 \| 89 \| Variable (byte) \| \| \|- +! Player Option 3 \| 90 \| 3 \| style="text-align: left" \| \* +player\_index: int16 \* ctrl\_pressed: int8 \| Sent when the third +option for a player is selected. \|- ! Player Option 6 \| 91 \| 3 \| +style="text-align: left" \| \* player\_index: int16 \* ctrl\_pressed: +int8 \| Sent when the sixth option for a player is selected. \|- ! +Packet 92 \| 92 \| 4 \| \| \|- ! Packet 93 \| 93 \| Variable (byte) \| +\| \|- \|} + +==== '''Server-to-Client''' ==== {\| class="wikitable" +style="text-align: center" \|- ! Name ! Opcode ! Length ! Fields ! +Description \|- ! Packet 0 \| 0 \| 2 \| \| \|- ! Packet 1 \| 1 \| 0 \| +\| \|- ! Packet 2 \| 2 \| Variable (byte) \| \| \|- ! Packet 3 \| 3 \| +Variable (byte) \| \| \|- ! Packet 4 \| 4 \| 0 \| \| \|- ! Packet 5 \| 5 +\| Variable (short) \| \| \|- ! Packet 6 \| 6 \| Variable (short) \| \| +\|- ! Packet 7 \| 7 \| 20 \| \| \|- ! Packet 8 \| 8 \| 6 \| \| \|- ! +Packet 9 \| 9 \| 10 \| \| \|- ! Packet 10 \| 10 \| 2 \| \| \|- ! Packet +11 \| 11 \| Variable (short) \| \| \|- ! Packet 12 \| 12 \| 7 \| \| \|- +! Packet 13 \| 13 \| Variable (short) \| \| \|- ! Packet 14 \| 14 \| 6 +\| \| \|- ! Packet 15 \| 15 \| Variable (byte) \| \| \|- ! Packet 16 \| +16 \| 2 \| \| \|- ! Packet 17 \| 17 \| Variable (byte) \| \| \|- ! +Packet 18 \| 18 \| 1 \| \| \|- ! Packet 19 \| 19 \| Variable (short) \| +\| \|- ! Packet 20 \| 20 \| 4 \| \| \|- ! Packet 21 \| 21 \| 3 \| \| \|- +! Packet 22 \| 22 \| 6 \| \| \|- ! Packet 23 \| 23 \| Variable (short) +\| \| \|- ! Packet 24 \| 24 \| 5 \| \| \|- ! Packet 25 \| 25 \| 17 \| \| +\|- ! Packet 26 \| 26 \| 6 \| \| \|- ! Packet 27 \| 27 \| 16 \| \| \|- ! +Packet 28 \| 28 \| 0 \| \| \|- ! Packet 29 \| 29 \| 4 \| \| \|- ! Packet +30 \| 30 \| 3 \| \| \|- ! Packet 31 \| 31 \| 10 \| \| \|- ! Packet 32 \| +32 \| Variable (short) \| \| \|- ! Packet 33 \| 33 \| 6 \| \| \|- ! +Packet 34 \| 34 \| 6 \| \| \|- ! Packet 35 \| 35 \| 7 \| \| \|- ! Packet +36 \| 36 \| Variable (byte) \| \| \|- ! Packet 37 \| 37 \| 6 \| \| \|- ! +Packet 38 \| 38 \| Variable (short) \| \| \|- ! Packet 39 \| 39 \| 6 \| +\| \|- ! Packet 40 \| 40 \| 9 \| \| \|- ! Packet 41 \| 41 \| Variable +(short) \| \| \|- ! Packet 42 \| 42 \| 12 \| \| \|- ! Packet 43 \| 43 \| +2 \| \| \|- ! Packet 44 \| 44 \| 1 \| \| \|- ! Packet 45 \| 45 \| +Variable (byte) \| \| \|- ! Packet 46 \| 46 \| 3 \| \| \|- ! Packet 47 +\| 47 \| 8 \| \| \|- ! Packet 48 \| 48 \| 4 \| \| \|- ! Packet 49 \| 49 +\| 3 \| \| \|- ! Packet 50 \| 50 \| Variable (byte) \| \| \|- ! Packet +51 \| 51 \| 4 \| \| \|- ! Packet 52 \| 52 \| Variable (byte) \| \| \|- ! +Packet 53 \| 53 \| 0 \| \| \|- ! Packet 54 \| 54 \| Variable (byte) \| +\| \|- ! Packet 55 \| 55 \| 3 \| \| \|- ! Packet 56 \| 56 \| Variable +(short) \| \| \|- ! Packet 57 \| 57 \| 8 \| \| \|- ! Packet 58 \| 58 \| +2 \| \| \|- ! Packet 59 \| 59 \| 0 \| \| \|- ! Packet 60 \| 60 \| 4 \| +\| \|- ! Packet 61 \| 61 \| 6 \| \| \|- ! Packet 62 \| 62 \| Variable +(byte) \| \| \|- ! Packet 63 \| 63 \| Variable (byte) \| \| \|- ! Packet +64 \| 64 \| 10 \| \| \|- ! Packet 65 \| 65 \| 3 \| \| \|- ! Packet 66 \| +66 \| 4 \| \| \|- ! Packet 67 \| 67 \| 4 \| \| \|- ! Packet 68 \| 68 \| +0 \| \| \|- ! Packet 69 \| 69 \| Variable (short) \| \| \|- ! Packet 70 +\| 70 \| Variable (short) \| \| \|- ! Packet 71 \| 71 \| Variable (byte) +\| \| \|- ! Packet 72 \| 72 \| 8 \| \| \|- ! Packet 73 \| 73 \| 3 \| \| +\|- ! Packet 74 \| 74 \| 6 \| \| \|- ! Packet 75 \| 75 \| 4 \| \| \|- ! +Packet 76 \| 76 \| 7 \| \| \|- ! Packet 77 \| 77 \| 3 \| \| \|- ! Packet +78 \| 78 \| 4 \| \| \|- ! Packet 79 \| 79 \| 1 \| \| \|- ! Packet 80 \| +80 \| 6 \| \| \|- ! Packet 81 \| 81 \| 10 \| \| \|- ! Packet 82 \| 82 \| +Variable (short) \| \| \|- ! Packet 83 \| 83 \| 1 \| \| \|- ! Packet 84 +\| 84 \| Variable (short) \| \| \|- ! Packet 85 \| 85 \| 0 \| \| \|- ! +Packet 86 \| 86 \| Variable (short) \| \| \|- ! Packet 87 \| 87 \| 8 \| +\| \|- ! Packet 88 \| 88 \| Variable (byte) \| \| \|- ! Packet 89 \| 89 +\| 8 \| \| \|- ! Packet 90 \| 90 \| Variable (byte) \| \| \|- ! Packet +91 \| 91 \| 10 \| \| \|- ! Packet 92 \| 92 \| 28 \| \| \|- ! Packet 93 +\| 93 \| 12 \| \| \|- ! Packet 94 \| 94 \| 0 \| \| \|- ! Packet 95 \| 95 +\| Variable (short) \| \| \|- ! Packet 96 \| 96 \| Variable (byte) \| \| +\|- ! Packet 97 \| 97 \| 8 \| \| \|- ! Packet 98 \| 98 \| Variable +(byte) \| \| \|- ! Packet 99 \| 99 \| Variable (short) \| \| \|- ! +Packet 100 \| 100 \| 3 \| \| \|- ! Packet 101 \| 101 \| 4 \| \| \|- ! +Packet 102 \| 102 \| 5 \| \| \|- ! Packet 103 \| 103 \| 0 \| \| \|- ! +Packet 104 \| 104 \| 1 \| \| \|- ! Packet 105 \| 105 \| 6 \| \| \|- ! +Packet 106 \| 106 \| Variable (byte) \| \| \|- ! Packet 107 \| 107 \| 5 +\| \| \|- ! Packet 108 \| 108 \| 9 \| \| \|- ! Packet 109 \| 109 \| 6 \| +\| \|- ! Packet 110 \| 110 \| 2 \| \| \|- ! Packet 111 \| 111 \| 3 \| \| +\|- ! Packet 112 \| 112 \| Variable (short) \| \| \|- ! Packet 113 \| +113 \| 1 \| \| \|- ! Packet 114 \| 114 \| Variable (byte) \| \| \|- ! +Packet 115 \| 115 \| 6 \| \| \|- ! Packet 116 \| 116 \| 12 \| \| \|- ! +Packet 117 \| 117 \| Variable (byte) \| \| \|- ! Packet 118 \| 118 \| +Variable (byte) \| \| \|- ! Packet 119 \| 119 \| 11 \| \| \|- ! Packet +120 \| 120 \| 6 \| \| \|- ! Packet 121 \| 121 \| 4 \| \| \|- ! Packet +122 \| 122 \| Variable (short) \| \| \|- ! Packet 123 \| 123 \| 3 \| \| +\|- ! Packet 124 \| 124 \| 7 \| \| \|- ! Packet 125 \| 125 \| 0 \| \| +\|- ! Packet 126 \| 126 \| 0 \| \| \|- ! Packet 127 \| 127 \| Variable +(byte) \| \| \|- ! Packet 128 \| 128 \| 0 \| \| \|- ! Packet 129 \| 129 +\| 2 \| \| \|- ! Packet 130 \| 130 \| Variable (byte) \| \| \|- ! Packet +131 \| 131 \| 6 \| \| \|- ! Packet 132 \| 132 \| 5 \| \| \|- ! Packet +133 \| 133 \| 6 \| \| \|- ! Packet 134 \| 134 \| Variable (short) \| \| +\|- ! Packet 135 \| 135 \| 6 \| \| \|- ! Packet 136 \| 136 \| 6 \| \| +\|- ! Packet 137 \| 137 \| 2 \| \| \|- ! Packet 138 \| 138 \| Variable +(short) \| \| \|- ! Packet 139 \| 139 \| 7 \| \| \|- ! Packet 140 \| 140 +\| 1 \| \| \|- ! Packet 141 \| 141 \| Variable (short) \| \| \|- ! +Packet 142 \| 142 \| 10 \| \| \|- ! Packet 143 \| 143 \| 6 \| \| \|- ! +Packet 144 \| 144 \| Variable (byte) \| \| \|- \|} + +== '''Update Protocol''' == + +This section documents the communication between the client and server +over the connection used to stream resources. + +=== '''Handshake Response''' === + +After receiving a handshake for the update protocol, the server responds +with one of the following packets: + + { + --- + +! Name ! Id ! Fields ! Description \|- ! OK \| 0 \| style="text-align: +left" \| \* required\_resource\_sizes: int32\[27\] \| Indicates a +successful connection. \|- ! OUT\_OF\_DATE \| 6 \| None \| Indicates +that the client is outdated. \|- ! SERVER\_FULL \| 7 \| None \| +Indicates that the server is full at the moment. \|- ! IP\_LIMIT \| 9 \| +None \| Indicates that the client is being rate limited. \|- \|} + +=== '''Packets''' === This section documents the packets sent between +the client and server over the update connection. + +==== '''Client-to-Server''' ==== All packets sent by the client are 4 +bytes long. Each packet includes a 1-byte opcode and a 3-byte payload. + + { + --- + +! Name ! Opcode ! Fields ! Description \|- ! Prefetch Request \| 0 \| +style="text-align: left" \| \* index: int8 \* file: int16 \| A passive +request for a resource. \|- ! Urgent Request \| 1 \| style="text-align: +left" \| \* index: int8 \* file: int16 \| An urgent request for a +resource. \|- ! Client Logged In \| 2 \| style="text-align: left" \| \* +padding: int24 \| Indicates that the client has logged in. May be useful +for adjusting response rate. \|- ! Client Logged Out \| 3 \| +style="text-align: left" \| \* padding: int24 \| Indicates that the +client has logged out. May be useful for adjusting response rate. \|- ! +Update XOR Code \| 4 \| style="text-align: left" \| \* xor\_code: int8 +\* padding: int16 \| Proposes a code to be used to encrypt all traffic. +May be used to bypass firewalls or related software. \|- ! Connection +Information \| 6 \| style="text-align: left" \| \* version: int24 \| +Sent after a connection is established. The ''version'' field always has +the value 3. \|- ! Drop Request Queue \| 7 \| style="text-align: left" +\| \* padding: int24 \| Asks for currently pending requests to be +dropped by the server. This packet is restricted to administrators by +the client. \|- \|} + +==== '''Server-to-Client''' ==== The server responds to the client's +requests for particular resources by sending back the (possibly +compressed) files. The data is in the following format: + + { + --- + +! Field ! Description \|- \| index: int8 \| The resource's index. \|- \| +file: int16 \| The resource's file number. \|- \| compression\_type: +int8 \| The compression type of the file. Can be 0 (uncompressed), 1 +(compressed using BZIP2), or 2 (compressed using GZIP). \|- \| +file\_size: int32 \| The (possibly compressed) size of the file. \|- \| +uncompressed\_size: int32 \| The uncompressed size of the file. This is +only present if the file is compressed (i.e. the ''compression\_type'' +field is set to 1 or 2). \|- \| data: int8\[file\_size\] \| The +(possibly compressed) file data. \|- \|} + +Of particular note is that the response is grouped into 512-byte blocks. +For every block after the first, the first byte of the block '''must''' +be 0xff (decimal 255). + +In addition, if the client has updated its XOR code to be nonzero, the +server must XOR each byte of the response with the chosen code before it +sends it to the client. diff --git a/src/668-Protocol.md b/src/668-Protocol.md new file mode 100644 index 0000000..1ae112a --- /dev/null +++ b/src/668-Protocol.md @@ -0,0 +1,39 @@ +\[\[Category RS2\]\] + +== '''Packet structure''' == When the client sends a packet to the +server, the first byte encapsulates its opcode. This specific opcode is +encrypted with a value generated by the ISAAC PRNG seeded with a +dynamically server generated key during the login block. The server +decrypts it and associates the opcode to the packet's respective +predefined size. If the packet does not contain a fixed size, the opcode +will be followed by either a byte or a word - varying per packet - for +its proper size. This is then followed by the payload. + +== '''Login''' == Every connection to the main 'gateway' server sends a +single byte of data, mostly well known as the connection type. The +connection type tells the main server which type of connection you wish +to initiate. The old engine list consists of: + +- Login initiation - connection type 14 +- JAGGRAB - connection type 15 +- Create account - connection type 28 +- Facebook login - connection type 29 +- Potentially more... + +
+Needs documentation on how to login
+
+===Server -\> Client Packets=== {\| border=2 \|- ! Opcode ! Type ! +Length (bytes) ! Name ! Description \|- \| 69 \| VARIABLE\_SHORT \| - \| +\[\[668 System update\|System update\]\] \| Displays the system update +counter on the player's client. \|- \|} + +===Client -\> Server Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 63 \| FIXED +\| 6 \| \[\[508 Dialogue Options\|Dialogue Options.\]\] \| Sent when a +player clicks an dialogue button. The data sent is InterfaceId, +buttonId, and something yet not discovered. \|- \|} diff --git a/src/718-Close-window.md b/src/718-Close-window.md new file mode 100644 index 0000000..f91fb49 --- /dev/null +++ b/src/718-Close-window.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 718\]\] {{packet\|name=Close +window\|description=Closes a +window/interface.\|opcode=5\|type=Fixed\|length=4\|revision=718}} == +Close window == + +=== Description === + +Closes an interface that is displayed (NOT CHATBOX INTERFACES!). + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Little +Endian\|Little Endian\]\] \[\[Data Types\#Standard data types\|Int\]\] +\|\| Window ID. \|} diff --git a/src/718-Friends-packet.md b/src/718-Friends-packet.md new file mode 100644 index 0000000..9225b6b --- /dev/null +++ b/src/718-Friends-packet.md @@ -0,0 +1,18 @@ +\[\[Category Packet\]\] \[\[Category Packet 718\]\] +{{packet\|name=Friends packet\|description=Sends friend data to the +client\|opcode=2\|type=VARIABLE\_SHORT\|length=-2\|revision=718}} == +Friends packet == + +=== Description === + +Sends friend data to the client + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| \[\[Data Types\#Standard +data types\|Short\]\] \|\| If it is a warning message. \|- \| \[\[Data +Types\#Standard data types\|String\]\] \|\| Display name \|- \| \[\[Data +Types\#Standard data types\|String\]\] \|\| If the display name does not +equal the player's username, then this sends the username \|- \| +\[\[Data Types\#Standard data types\|Short\]\] \|\| The World ID \|- \| +\[\[Data Types\#Standard data types\|Byte\]\] \|\| The player's rank \|} diff --git a/src/718-Interface.md b/src/718-Interface.md new file mode 100644 index 0000000..89453eb --- /dev/null +++ b/src/718-Interface.md @@ -0,0 +1,15 @@ +\[\[Category Packet\]\] \[\[Category Packet 718\]\] {{packet\|name=Send +Interface\|description=Sends an interface to be +opened.\|opcode=14\|type=Fixed\|length=23\|revision=718}} == Send +Interface == + +=== Description === + +Opens an interface (NOT CHATBOX INTERFACES!). + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| Short \|\| The interface +ID. \|- \| Int \|\| ? \|- \| Int V2 \|\| ? \|- \| Int V1 \|\| Window ID. +\|- \| Byte \|\| If it is a walkable interface (1) or not (0). \|- \| +Int V1 \|\| ? \|- \| Int V2 \|\| ? \|} diff --git a/src/718-Music-effect.md b/src/718-Music-effect.md new file mode 100644 index 0000000..ab8eb27 --- /dev/null +++ b/src/718-Music-effect.md @@ -0,0 +1,14 @@ +\[\[Category Packet\]\] \[\[Category Packet 718\]\] {{packet\|name=Music +effect\|description=Plays a music +effect.\|opcode=9\|type=Fixed\|length=6\|revision=718}} == Music effect +== + +=== Description === + +Plays a sound effect (like the birds chirping). + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| 128 Byte \|\| The volume +(0 - 255). \|- \| 24 Bit Integer V2 \|\| ? \|- \| Short \|\| Music +effect ID. \|} diff --git a/src/718-Open-URL.md b/src/718-Open-URL.md new file mode 100644 index 0000000..63ca336 --- /dev/null +++ b/src/718-Open-URL.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 718\]\] {{packet\|name=Open +URL\|description=Opens a +hyperlink.\|opcode=17\|type=VARIABLE\_SHORT\|length=-2\|revision=718}} +== Close window == + +=== Description === + +Opens a hyperlink sent (doesn't write to the chatbox, just opens). + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| Byte \|\| ? \|- \| String +\|\| The URL. \|} diff --git a/src/718-Player-under-NPC-priority.md b/src/718-Player-under-NPC-priority.md new file mode 100644 index 0000000..d011df6 --- /dev/null +++ b/src/718-Player-under-NPC-priority.md @@ -0,0 +1,13 @@ +\[\[Category Packet\]\] \[\[Category Packet 718\]\] +{{packet\|name=Player under NPC priority\|description=Prioritizes the +player under the NPC.\|opcode=6\|type=Fixed\|length=1\|revision=718}} == +Player under NPC priority == + +=== Description === + +Prioritizes the player under the NPC. + +=== Packet Structure === + +{\| border=2 ! Data type ! Description \|- \| Byte C \|\| If is to +prioritize (1) or not (0). \|} diff --git a/src/718-Protocol.md b/src/718-Protocol.md new file mode 100644 index 0000000..815371c --- /dev/null +++ b/src/718-Protocol.md @@ -0,0 +1,60 @@ +\[\[Category Packet\]\] \[\[Category Packet 718\]\] \[\[Category RS2\]\] + +== '''Packet structure''' == ? + +== '''Login''' == ? + +== '''Game Protocol''' == + +===Server -\> Client Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 2 \| +VARIABLE\_SHORT \| -2 \| \[\[718 Friends packet\|Friends packet\]\] \| +Sends a friend to the friend list. \|- \| 5 \| FIXED \| 4 \| \[\[718 +Close window\|Close window\]\] \| Closes an interface. \|- \| 6 \| FIXED +\| 1 \| \[\[718 Player under NPC priority\|Player under NPC priority\]\] +\| N/A \|- \| 9 \| FIXED \| 6 \| \[\[718 Music effect\|Music effect\]\] +\| Plays a music effect. \|- \| 10 \| VARIABLE\_BYTE \| -1 \| \[\[718 +Set mouse\|Set mouse\]\] \| N/A \|- \| 11 \| FIXED \| -2 \| \[\[718 +World list\|World list\]\] \| Sends the world list. \|- \| 14 \| FIXED +\| 23 \| \[\[718 Interface\|Interface\]\] \| Opens an interface. \|- \| +17 \| VARIABLE\_SHORT \| -2 \| \[\[718 Open URL\|Open URL\]\] \| Opens a +hyperlink. \|- \| 20 \| FIXED \| 16 \| \[\[718 +Projectile\|Projectile\]\] \| Plays a projectile. \|- \| 23 \| FIXED \| +4 \| \[\[718 Player on IComponent\|Music effect\]\] \| N/A \|- \| 25 \| +FIXED \| 1 \| \[\[718 Run energy\|Run energy\]\] \| Sends the run +energy. \|- \| 30 \| VARIABLE\_BYTE \| -1 \| \[\[718 Send friend quick +chat\|Send friend quick chat\]\] \| Sends a friend a quick chat message. +\|- \| 31 \| FIXED \| 8 \| \[\[718 Model on IComponent\|Model on +IComponent\]\] \| Sends a model to an IComponent (child interface). \|- +\| 32 \| FIXED \| -1 \| \[\[718 Receive friend quick chat\|Receive +friend quick chat\]\] \| Displays a received quick chat message to a +friend. \|- \| 33 \| VARIABLE\_BYTE \| -1 \| \[\[718 Receive personal +message\|Receive personal message\]\] \| Received a private message (PM) +and displays it. \|- \| 39 \| FIXED \| 19 \| \[\[718 Game pane\|Game +pane\]\] \| Sends the game pane. \|- \| 40 \| FIXED \| 12 \| \[\[718 +IComponent Settings\|IComponent Settings\]\] \| N/A \|- \| 42 \| +VARIABLE\_SHORT \| -2 \| \[\[718 Load map scene\|Load map scene\]\] \| +Loads a map. \|- \| 44 \| FIXED \| 6 \| \[\[718 Shake camera\|Shake +camera\]\] \| Shakes the camera of the character. \|- \| 45 \| FIXED \| +2 \| \[\[718 Destroy object\|Destroy object\]\] \| Removes an object +from the screen. \|- \| 55 \| VARIABLE\_SHORT \| -2 \| \[\[718 +Ignores\|Ignores\]\] \| Sends a player to a player's ignore list. \|- +\|} + +===Client -\> Server Packets=== + + { + --- + +! Opcode ! Type ! Length (bytes) ! Name ! Description \|- \| 3 \| FIXED +\| 16 \| \[\[718 Item on item\|Item on item\]\] \| Send an item on item +request. \|- \| 4 \| VARIABLE\_BYTE \| -1 \| \[\[718 Add ignore\|Add +ignore\]\] \| Sends a request to add a person to a person's ignore list. +\|- \| 8 \| VARIABLE\_BYTE \| -1 \| \[\[718 Walk\|Walk\]\] \| Sends a +request to walk to specific coordinates. \|- \| 9 \| FIXED \| 3 \| +\[\[718 NPC Examine\|NPC Examine\]\] \| Sends a request to examine an +NPC. \|- \|} diff --git a/src/742-Protocol.md b/src/742-Protocol.md new file mode 100644 index 0000000..c36701c --- /dev/null +++ b/src/742-Protocol.md @@ -0,0 +1,27 @@ +\[\[Category RS2\]\] + +===Server -\> Client Packets=== {\| border=2 \|- ! Opcode ! Type ! Size +! Name ! Description \|- \| 47 \| Unknown \| 23 \| \[\[742 Interface +Packet\|Interface Packet\]\] \| Produces an interface for the player to +see. \|- \| 116 \| Unknown \| -1 \| \[\[742 Commands Packet\|Commands +Packet\]\] \| The packet to utilize commands. \|- \| 156 \| Unknown \| +-3 \| \[\[742 A Config Packet\|A Config Packet\]\] \| A packet to send +one of the four/five types of configs. \|- \| 89 \| Unknown \| -2 \| +\[\[742 Maps Packet\|Maps Packet\]\] \| A packet that sends the loading +of maps. \|- \| 90 \| Unknown \| -2 \| \[\[742 Player Update +Packet\|Player Update Packet\]\] \| A packet to update the player's +appearance etcetera. \|- \| 72 \| Unknown \| -2 \| \[\[742 NPC Update +Packet\|NPC Update Packet\]\] \| A packet to update a NPC's appearance +etcetera. \|- \| 29 \| Unkown \| -2 \| \[\[742 RunScripts +Packet\|RunScripts Packet\]\] \| A packet to send Runscripts. \|- \| 67 +\| Unkown \| -2 \| \[\[742 Items Packet\|Items Packet\]\] \| A packet to +load items in a way? \|- \| 120 \| Unkown \| -1 \| \[\[742 Friends Chat +Receive Message Packet\|Friends Chat Receive Message Packet\]\] \| A +packet that sends the FC message. \|- \| 147 \| Unkown \| 2 \| \[\[742 +System Update Packet\|System Update Packet\]\] \| A packet for the +system update timer. \|- \| 6 \| Unkown \| 3 \| \[\[742 World Tile +Packet\|World Tile Packet\]\] \| A packet to send the World Tile. \|- \| +29 \| Unkown \| -2 \| \[\[742 RunScripts Packet\|RunScripts Packet\]\] +\| A packet to send Runscripts. \|- \| 40 \| Unkown \| 1 \| \[\[742 Send +Skills Packet\|Send Skills Packet\]\] \| A packet to send the skills of +a player. \|- \|} diff --git a/src/Archive-Format.md b/src/Archive-Format.md new file mode 100644 index 0000000..e8bc1ec --- /dev/null +++ b/src/Archive-Format.md @@ -0,0 +1,156 @@ +\[\[Category Cache\]\] + +== Introduction == + +Since 194 all way up until 377, all the files in cache 0 have an +archive-like format which contains a collection of named files (e.g. +'''BADENC.TXT''' is a file which contains bad words in the '''wordenc''' +archive). + +=== Diagram === + +------------------------------------------------------------------------ + +\[http://img263.imageshack.us/img263/9678/68481568.png External Diagram +Image\] + +== Usage == + +These files are used by the client for a variety of purposes. Some, such +as the '''DATA''' file contain data themselves (in this case the +interfaces). Others, such as the '''MAP\_INDEX''' file, contain +information about where to locate the map and landscape files in the +cache. + +== Format == + +tribyte uncompressedsize tribyte compressedsize + +If the uncompressed and compressed sizes are equal, the whole file is +not compressed but the individual entries are compressed using bzip2. If +they are not equal, the entire file is compressed using bzip2 but the +individual entries are not. + +Also note, the magic id at the start of the bzip2 entries are not +included in the cache. If you use an existing API to read the files and +want to add this back, you must append the four characters: BZh1 before +you decompress. + +short fileCount + +Each file entry has the format: + +int nameHash tribyte uncompressedSize tribyte compressedSize + +When you are looping through the files, you need to keep track of the +file offset yourself. This psuedocode demonstrates how: + +int offset = buffer.getCurrentOffset() + numFiles \* 10; for(int i = 0; +i \< numFiles; i++) { // read values int thisFileOffset = offset; offset ++= thisFileCompressedSize; } + +To get a named file by its name, you should first hash the name using +this method: + +public static int hash(String name) { int hash = 0; name = +name.toUpperCase(); for(int j = 0; j \< name.length(); j++) { hash = +(hash \* 61 + name.charAt(j)) - 32; } return hash; } + +Then, loop through the file entries you loaded earlier to find a +matching hash. Read the compressed file size from the offset. If the +whole file is not compressed, you should decompress the individual +entry. + +== '''\#194 Archive Format''' == + +The 194 (RuneScape 2 beta) client worked with a very simple cache +format. Each file in the cache was a file on the operating system. + +=== Name hashing === + +Every name in the cache was hashed using the following method which is, +incidentally, similar to the way player names are converted to longs. + +public static final long gethash(String string) { string = +string.trim(); long l = 0L; for (int i = 0; i \< string.length() && i \< +12; i++) { char c = string.charAt(i); l \*= 37L; if (c \>= 'A' && c \<= +'Z') l += (long) ('\\001' + c - 'A'); else if (c \>= 'a' && c \<= 'z') l ++= (long) ('\\001' + c - 'a'); else if (c \>= '0' && c \<= '9') l += +(long) ('\\033' + c - '0'); } return l; } + +The resulting long was converted to a string and the file was given that +name. + +=== Files === + +The files in the cache were the ones used in the \[\[JAGGRAB +Protocol\|JAGGRAB Protocol\]\] (i.e. files in cache 0 in old engine +caches) and map (mX\_Y) and landscape (lX\_Y) files. Incidentally, this +naming is very similar to the names of the map and landscape files in +new engine caches. + +== '''\#317 Archive Format''' == + +The old engine cache is made up two types of files. + +=== Data file === + +The data file holds all of the files in the cache and is named +'''main\_file\_cache.dat'''. It is therefore very big, typically \~10-20 +megabytes.. + +=== Index file === + +There are several index files, named '''main\_file\_cache.idx''' and +then postfixed with a number. Each index file holds 'pointers' to where +a file is located in the main cache. Each index file represents a type +of file. + +=== Index file format === + +The index file is made up of 6 byte blocks which hold information about +where a file can be located in the data file. The format of a single +block is as follows: + +tribyte fileSize tribyte initialDataBlockId + +=== Data file format === + +The data file is made up of 520 byte blocks. The format of each of these +blocks is as follows: + +short nextFileId short currentFilePartId tribyte nextDataBlockId byte +nextFileTypeId byte\[512\] blockData + +=== Explanation === + +An example will be used here as it is easier to follow. + +Let us say, the client wishes to fetch file type 2, file id 17. + +First off, it will open the main\_file\_cache.idx2 file and seek to the +index 17 \* 6 (102). It will then read two tribytes. + +fileSize = 1200 intialDataBlockId = 4 + +The client will now open the main\_file\_cache.dat file and seek to the +index 4 \* 520 (2080). The values it reads will be: + +nextFileId = 17 currentFilePartId = 0 nextDataBlockId = 5 nextFileTypeId += 2 blockData = ... + +It will read the first 512 bytes of the file and then knows that there +is 688 bytes left. Therefore, it has to read the next block. + +nextFileId = 17 currentFilePartId = 1 nextDataBlockId = 6 nextFileTypeId += 2 blockData ... + +It reads these next 512 bytes of the file and now knows that there are +176 bytes left. So for a final time, it will read the next block. + +nextFileId = 18 currentFilePartId = 2 nextDataBlockId = 7 nextFileTypeId += 2 blockData = ... + +It can ignore most of these values (the next ones are meaningless at +this stage) and read the final 176 bytes. The whole 1200 byte file has +now been read. diff --git a/src/Categories.md b/src/Categories.md new file mode 100644 index 0000000..d25d9f4 --- /dev/null +++ b/src/Categories.md @@ -0,0 +1,9 @@ + +The following categories contain pages or media. \* \[\[Category +Cache\]\] (3 members) \* \[\[Category Data Type\]\] (3 members) \* +\[\[Category Packet\]\] (148 members) \* \[\[Category Packet 194\]\] (4 +members) \* \[\[Category Packet 317\]\] (109 members) \* \[\[Category +Packet 377\]\] (24 members) \* \[\[Category Packet 474\]\] (3 members) +\* \[\[Category Packet 718\]\] (7 members) \* \[\[Category Packet +{{{revision}}}\]\] (1 members) \* \[\[Category RS2\]\] (15 members) \* +\[\[Category RSC\]\] (7 members) diff --git a/Category-Cache.mediawiki b/src/Category-Cache.md similarity index 54% rename from Category-Cache.mediawiki rename to src/Category-Cache.md index 3d7684f..4aac43a 100644 --- a/Category-Cache.mediawiki +++ b/src/Category-Cache.md @@ -4,8 +4,6 @@ == '''Ondemand Protocol''' == -== '''Pages in category "Cache"''' == -The following 3 pages are in this category. -* [[Archive Format]] -* [[JAGGRAB Protocol]] -* [[Ondemand Protocol]] +== '''Pages in category "Cache"''' == The following 3 pages are in this +category. \* \[\[Archive Format\]\] \* \[\[JAGGRAB Protocol\]\] \* +\[\[Ondemand Protocol\]\] diff --git a/src/Category-Category-RS2.md b/src/Category-Category-RS2.md new file mode 100644 index 0000000..7db5241 --- /dev/null +++ b/src/Category-Category-RS2.md @@ -0,0 +1,3 @@ + +== '''Pages in category "Category RS2"''' == The following 1 pages are +in this category. \* \[\[718 Protocol\]\] diff --git a/src/Category-Data-Type.md b/src/Category-Data-Type.md new file mode 100644 index 0000000..dfa9822 --- /dev/null +++ b/src/Category-Data-Type.md @@ -0,0 +1,3 @@ + +== '''Pages in category "Data Type"''' == The following 3 pages are in +this category. \* \[\[DWord\]\] \* \[\[QWord\]\] \* \[\[Word\]\] diff --git a/Category-NPCs.mediawiki b/src/Category-NPCs.md similarity index 51% rename from Category-NPCs.mediawiki rename to src/Category-NPCs.md index 97681b7..c34840c 100644 --- a/Category-NPCs.mediawiki +++ b/src/Category-NPCs.md @@ -1,4 +1,3 @@ -== '''Pages in category "NPCs"''' == -The following 1 pages are in this category. -* [[204 NPCs]] +== '''Pages in category "NPCs"''' == The following 1 pages are in this +category. \* \[\[204 NPCs\]\] diff --git a/src/Category-Packet-194.md b/src/Category-Packet-194.md new file mode 100644 index 0000000..28d3649 --- /dev/null +++ b/src/Category-Packet-194.md @@ -0,0 +1,4 @@ + +== '''Pages in category "Packet 194"''' == The following 4 pages are in +this category. \* \[\[194 Clear screen\]\] \* \[\[194 Logout\]\] \* +\[\[194 Protocol\]\] \* \[\[194 Show interface\]\] diff --git a/src/Category-Packet-317.md b/src/Category-Packet-317.md new file mode 100644 index 0000000..f1cfe16 --- /dev/null +++ b/src/Category-Packet-317.md @@ -0,0 +1,51 @@ +317 Packets + +== '''Pages in category "Packet 317"''' == The following 109 pages are +in this category. \* \[\[317 Add friend\]\] \* \[\[317 Add ignore\]\] \* +\[\[317 Alternate item option 2\]\] \* \[\[317 Animation reset\]\] \* +\[\[317 Attack (NPC)\]\] \* \[\[317 Audio\]\] \* \[\[317 Bank 10 +items\]\] \* \[\[317 Bank 5 items\]\] \* \[\[317 Bank all items\]\] \* +\[\[317 Bank X items part 1\]\] \* \[\[317 Bank X items part 2\]\] \* +\[\[317 Begin player updating\]\] \* \[\[317 Button click\]\] \* \[\[317 +Camera movement\]\] \* \[\[317 Camera shake\]\] \* \[\[317 Chat +interface click\]\] \* \[\[317 Chat interface\]\] \* \[\[317 Chat +settings\]\] \* \[\[317 Clear inventory\]\] \* \[\[317 Clear screen\]\] +\* \[\[317 Close window\]\] \* \[\[317 Construct map region\]\] \* +\[\[317 Create Projectile\]\] \* \[\[317 Design screen\]\] \* \[\[317 +Display hint icon\]\] \* \[\[317 Drop item\]\] \* \[\[317 Enter name\]\] +\* \[\[317 Equip item\]\] \* \[\[317 Flash sidebar\]\] \* \[\[317 Focus +change\]\] \* \[\[317 Follow\]\] \* \[\[317 Force client setting\]\] \* +\[\[317 Friends list status\]\] \* \[\[317 Ground Item Action\]\] \* +\[\[317 Hidden Interface\]\] \* \[\[317 Idle logout\]\] \* \[\[317 +Idle\]\] \* \[\[317 Initialize player\]\] \* \[\[317 Input amount\]\] \* +\[\[317 Interface animation\]\] \* \[\[317 Interface color\]\] \* +\[\[317 Interface item\]\] \* \[\[317 Interface model rotation\]\] \* +\[\[317 Interface offset\]\] \* \[\[317 Interface over tab\]\] \* +\[\[317 Inventory overlay\]\] \* \[\[317 Item action 1\]\] \* \[\[317 +Item on floor\]\] \* \[\[317 Item on item\]\] \* \[\[317 Item on +object\]\] \* \[\[317 Item on player\]\] \* \[\[317 Light item\]\] \* +\[\[317 Loading finished\]\] \* \[\[317 Load map region\]\] \* \[\[317 +Logout\]\] \* \[\[317 Mage NPC\]\] \* \[\[317 Magic on items\]\] \* +\[\[317 Magic on player\]\] \* \[\[317 Minimap State\]\] \* \[\[317 +Mouse click\]\] \* \[\[317 Move item\]\] \* \[\[317 Music\]\] \* \[\[317 +NPC action 1\]\] \* \[\[317 NPC action 2\]\] \* \[\[317 NPC action 3\]\] +\* \[\[317 NPC Dialogue\]\] \* \[\[317 NPC head on interface\]\] \* +\[\[317 Object action 1\]\] \* \[\[317 Object action 2\]\] \* \[\[317 +Object action 3\]\] \* \[\[317 Object removal\]\] \* \[\[317 Object +spawn\]\] \* \[\[317 Open chatbox interface\]\] \* \[\[317 Open welcome +screen\]\] \* \[\[317 Pickup ground item\]\] \* \[\[317 Player +command\]\] \* \[\[317 Player head to interface\]\] \* \[\[317 Player +Option\]\] \* \[\[317 Play song\]\] \* \[\[317 Privacy options\]\] \* +\[\[317 Protocol\]\] \* \[\[317 Region change\]\] \* \[\[317 Remove +friend\]\] \* \[\[317 Remove ignore\]\] \* \[\[317 Report player\]\] \* +\[\[317 Reset button state\]\] \* \[\[317 Reset camera\]\] \* \[\[317 +Reset destination\]\] \* \[\[317 Run energy\]\] \* \[\[317 Scroll +position\]\] \* \[\[317 Send add friend\]\] \* \[\[317 Send add +ignore\]\] \* \[\[317 Send message\]\] \* \[\[317 Send private +message\]\] \* \[\[317 Send sidebar interface\]\] \* \[\[317 Send +Skill\]\] \* \[\[317 Set interface text\]\] \* \[\[317 Show +interface\]\] \* \[\[317 Show multi combat\]\] \* \[\[317 Show tab\]\] +\* \[\[317 Skill level\]\] \* \[\[317 Song Queue\]\] \* \[\[317 System +update\]\] \* \[\[317 Trade answer\]\] \* \[\[317 Trade request\]\] \* +\[\[317 Unequip item\]\] \* \[\[317 Update item container\]\] \* \[\[317 +Walkable interface\]\] \* \[\[317 Weight\]\] diff --git a/src/Category-Packet-377.md b/src/Category-Packet-377.md new file mode 100644 index 0000000..faf0778 --- /dev/null +++ b/src/Category-Packet-377.md @@ -0,0 +1,13 @@ + +== '''Pages in category "Packet 377"''' == The following 24 pages are in +this category. \* \[\[377 Animation Reset\]\] \* \[\[377 Camera +Shake\]\] \* \[\[377 Construct Map Region\]\] \* \[\[377 Create Static +Graphic\]\] \* \[\[377 Initialize Player\]\] \* \[\[377 Input Amount\]\] +\* \[\[377 Interface Animation\]\] \* \[\[377 Interface Item\]\] \* +\[\[377 Inventory Overlay\]\] \* \[\[377 Logout\]\] \* \[\[377 Move +Camera\]\] \* \[\[377 Open Welcome Screen\]\] \* \[\[377 Play Ambient +Wave\]\] \* \[\[377 Protocol\]\] \* \[\[377 Reset Button State\]\] \* +\[\[377 Reset Ground Items and Objects\]\] \* \[\[377 Run Energy\]\] \* +\[\[377 Send Add Friend\]\] \* \[\[377 Send Ground Item\]\] \* \[\[377 +Send Message\]\] \* \[\[377 Send Sidebar Interface\]\] \* \[\[377 Send +Sound\]\] \* \[\[377 Skill Level\]\] \* \[\[377 Walkable Interface\]\] diff --git a/src/Category-Packet-474.md b/src/Category-Packet-474.md new file mode 100644 index 0000000..53b2ee9 --- /dev/null +++ b/src/Category-Packet-474.md @@ -0,0 +1,4 @@ + +== '''Pages in category "Packet 474"''' == The following 3 pages are in +this category. \* \[\[474 Fourth Interface Option\]\] \* \[\[474 +Protocol\]\] \* \[\[474 Remove ignore\]\] diff --git a/src/Category-Packet-718.md b/src/Category-Packet-718.md new file mode 100644 index 0000000..36c984a --- /dev/null +++ b/src/Category-Packet-718.md @@ -0,0 +1,5 @@ + +== '''Pages in category "Packet 718"''' == The following 7 pages are in +this category. \* \[\[718 Close window\]\] \* \[\[718 Friends packet\]\] +\* \[\[718 Interface\]\] \* \[\[718 Music effect\]\] \* \[\[718 Open +URL\]\] \* \[\[718 Player under NPC priority\]\] \* \[\[718 Protocol\]\] diff --git a/src/Category-Packet-{{{revision}}}.md b/src/Category-Packet-{{{revision}}}.md new file mode 100644 index 0000000..318e8e5 --- /dev/null +++ b/src/Category-Packet-{{{revision}}}.md @@ -0,0 +1,3 @@ + +== '''Pages in category "Packet {{{revision}}}"''' == The following 1 +pages are in this category. \* \[\[Template Packet\]\] diff --git a/src/Category-Packet.md b/src/Category-Packet.md new file mode 100644 index 0000000..39dfcf2 --- /dev/null +++ b/src/Category-Packet.md @@ -0,0 +1,67 @@ + +== '''Pages in category "Packet"''' == The following 148 pages are in +this category. \* \[\[194 Clear screen\]\] \* \[\[194 Logout\]\] \* +\[\[194 Protocol\]\] \* \[\[194 Show interface\]\] \* \[\[317 Add +friend\]\] \* \[\[317 Add ignore\]\] \* \[\[317 Alternate item option +2\]\] \* \[\[317 Animation reset\]\] \* \[\[317 Attack (NPC)\]\] \* +\[\[317 Audio\]\] \* \[\[317 Bank 10 items\]\] \* \[\[317 Bank 5 +items\]\] \* \[\[317 Bank all items\]\] \* \[\[317 Bank X items part +1\]\] \* \[\[317 Bank X items part 2\]\] \* \[\[317 Begin player +updating\]\] \* \[\[317 Button click\]\] \* \[\[317 Camera movement\]\] +\* \[\[317 Camera shake\]\] \* \[\[317 Chat interface click\]\] \* +\[\[317 Chat interface\]\] \* \[\[317 Chat settings\]\] \* \[\[317 Clear +inventory\]\] \* \[\[317 Clear screen\]\] \* \[\[317 Close window\]\] \* +\[\[317 Construct map region\]\] \* \[\[317 Create Projectile\]\] \* +\[\[317 Design screen\]\] \* \[\[317 Display hint icon\]\] \* \[\[317 +Drop item\]\] \* \[\[317 Enter name\]\] \* \[\[317 Equip item\]\] \* +\[\[317 Flash sidebar\]\] \* \[\[317 Focus change\]\] \* \[\[317 +Follow\]\] \* \[\[317 Force client setting\]\] \* \[\[317 Friends list +status\]\] \* \[\[317 Ground Item Action\]\] \* \[\[317 Hidden +Interface\]\] \* \[\[317 Idle logout\]\] \* \[\[317 Idle\]\] \* \[\[317 +Initialize player\]\] \* \[\[317 Input amount\]\] \* \[\[317 Interface +animation\]\] \* \[\[317 Interface color\]\] \* \[\[317 Interface +item\]\] \* \[\[317 Interface model rotation\]\] \* \[\[317 Interface +offset\]\] \* \[\[317 Interface over tab\]\] \* \[\[317 Inventory +overlay\]\] \* \[\[317 Item action 1\]\] \* \[\[317 Item on floor\]\] \* +\[\[317 Item on item\]\] \* \[\[317 Item on object\]\] \* \[\[317 Item +on player\]\] \* \[\[317 Light item\]\] \* \[\[317 Loading finished\]\] +\* \[\[317 Load map region\]\] \* \[\[317 Logout\]\] \* \[\[317 Mage +NPC\]\] \* \[\[317 Magic on items\]\] \* \[\[317 Magic on player\]\] \* +\[\[317 Minimap State\]\] \* \[\[317 Mouse click\]\] \* \[\[317 Move +item\]\] \* \[\[317 Music\]\] \* \[\[317 NPC action 1\]\] \* \[\[317 NPC +action 2\]\] \* \[\[317 NPC action 3\]\] \* \[\[317 NPC Dialogue\]\] \* +\[\[317 NPC head on interface\]\] \* \[\[317 Object action 1\]\] \* +\[\[317 Object action 2\]\] \* \[\[317 Object action 3\]\] \* \[\[317 +Object removal\]\] \* \[\[317 Object spawn\]\] \* \[\[317 Open chatbox +interface\]\] \* \[\[317 Open welcome screen\]\] \* \[\[317 Pickup +ground item\]\] \* \[\[317 Player command\]\] \* \[\[317 Player head to +interface\]\] \* \[\[317 Player Option\]\] \* \[\[317 Play song\]\] \* +\[\[317 Privacy options\]\] \* \[\[317 Protocol\]\] \* \[\[317 Region +change\]\] \* \[\[317 Remove friend\]\] \* \[\[317 Remove ignore\]\] \* +\[\[317 Report player\]\] \* \[\[317 Reset button state\]\] \* \[\[317 +Reset camera\]\] \* \[\[317 Reset destination\]\] \* \[\[317 Run +energy\]\] \* \[\[317 Scroll position\]\] \* \[\[317 Send add friend\]\] +\* \[\[317 Send add ignore\]\] \* \[\[317 Send message\]\] \* \[\[317 +Send private message\]\] \* \[\[317 Send sidebar interface\]\] \* +\[\[317 Send Skill\]\] \* \[\[317 Set interface text\]\] \* \[\[317 Show +interface\]\] \* \[\[317 Show multi combat\]\] \* \[\[317 Show tab\]\] +\* \[\[317 Skill level\]\] \* \[\[317 Song Queue\]\] \* \[\[317 System +update\]\] \* \[\[317 Trade answer\]\] \* \[\[317 Trade request\]\] \* +\[\[317 Unequip item\]\] \* \[\[317 Update item container\]\] \* \[\[317 +Walkable interface\]\] \* \[\[317 Weight\]\] \* \[\[377 Animation +Reset\]\] \* \[\[377 Camera Shake\]\] \* \[\[377 Construct Map +Region\]\] \* \[\[377 Create Static Graphic\]\] \* \[\[377 Initialize +Player\]\] \* \[\[377 Input Amount\]\] \* \[\[377 Interface +Animation\]\] \* \[\[377 Interface Item\]\] \* \[\[377 Inventory +Overlay\]\] \* \[\[377 Logout\]\] \* \[\[377 Move Camera\]\] \* \[\[377 +Open Welcome Screen\]\] \* \[\[377 Play Ambient Wave\]\] \* \[\[377 +Protocol\]\] \* \[\[377 Reset Button State\]\] \* \[\[377 Reset Ground +Items and Objects\]\] \* \[\[377 Run Energy\]\] \* \[\[377 Send Add +Friend\]\] \* \[\[377 Send Ground Item\]\] \* \[\[377 Send Message\]\] +\* \[\[377 Send Sidebar Interface\]\] \* \[\[377 Send Sound\]\] \* +\[\[377 Skill Level\]\] \* \[\[377 Walkable Interface\]\] \* \[\[474 +Fourth Interface Option\]\] \* \[\[474 Protocol\]\] \* \[\[474 Remove +ignore\]\] \* \[\[718 Close window\]\] \* \[\[718 Friends packet\]\] \* +\[\[718 Interface\]\] \* \[\[718 Music effect\]\] \* \[\[718 Open +URL\]\] \* \[\[718 Player under NPC priority\]\] \* \[\[718 Protocol\]\] +\* \[\[Template Packet\]\] diff --git a/src/Category-RS2.md b/src/Category-RS2.md new file mode 100644 index 0000000..f2a34a0 --- /dev/null +++ b/src/Category-RS2.md @@ -0,0 +1,53 @@ +== Introduction == + +The RuneScape Protocol is the language in which the RuneScape client and +server communicate. The protocol changes for every version. + +The entire protocol is generally separated into two different +categories: + +- Login Protocol +- Game Protocol + +== Login Protocol == + +The Login Protocol is the protocol that is used to log a player into +RuneScape. This protocol contains information that sets up the +encryption for the entire session, using the ISAAC algorithm. The "login +block" is encrypted using RSA to prevent third party programs from +packet-sniffing the ISAAC cipher keys and breaking the session +encryption for the purpose of monitoring, injecting, and generally +sniffing packets. + +== Game Protocol == + +The Game Protocol is the protocol in which game action information is +transmitted. The opcodes are encrypted using ISAAC in order to prevent +third party programs from tampering with the stream. The game protocol +is made up of packets that are structured like so: + +
+For fixed-size packets:
+    opcode, payload[size]
+
+For variable-sized packets:
+    opcode, size, payload[size]
+
+The ''opcode'' of a game packet is basically an identifier for the type +of game action that the packet represents. The ''size'' of the packet is +the amount of bytes that the payload of the packet carries, and the +''payload'' is an array of bytes that holds the actual data +(information) of the packet. + +A ''fixed-size'' packet is a packet whose payload size does never +change, and the size for the specified opcode is already known between +both client and server. A ''variable-sized'' packet is a packet whose +payload size changes according to the situation of the game session. + +== '''Pages in category "RS2"''' == The following 15 pages are in this +category. \* \[\[194 Protocol\]\] \* \[\[289 Protocol\]\] \* \[\[317 +Protocol\]\] \* \[\[357 Protocol\]\] \* \[\[377 Protocol\]\] \* \[\[443 +Protocol\]\] \* \[\[464 Protocol\]\] \* \[\[468 Protocol\]\] \* \[\[474 +Protocol\]\] \* \[\[508 Protocol\]\] \* \[\[634 Protocol\]\] \* \[\[666 +Protocol\]\] \* \[\[668 Protocol\]\] \* \[\[718 Protocol\]\] \* \[\[742 +Protocol\]\] diff --git a/src/Category-RSC.md b/src/Category-RSC.md new file mode 100644 index 0000000..6999e28 --- /dev/null +++ b/src/Category-RSC.md @@ -0,0 +1,6 @@ +This page will display any information regarding RSC. + +== '''Pages in category "RSC"''' == The following 7 pages are in this +category. \* \[\[135 Protocol\]\] \* \[\[202 Protocol\]\] \* \[\[204 +Items\]\] \* \[\[204 NPCs\]\] \* \[\[204 Objects\]\] \* \[\[204 +Protocol\]\] \* \[\[OB3\]\] diff --git a/src/Class-Check.md b/src/Class-Check.md new file mode 100644 index 0000000..13b3a30 --- /dev/null +++ b/src/Class-Check.md @@ -0,0 +1,85 @@ +The class check originated with the new Runescape engine update which +took place around the 4xx revisions. It gives the Jagex servers the +ability to check the modifiers, update, or fetch the value for a field. +It also gives functionality to invoke a method with parameters and get +it's return value, or check it's modifiers. Each of these +functionalities are described with a request type. A class check request +is built up with many of these request types. Each request is tagged +with an unique id. + +== Request Structure == + ++-------------------------+ \| amount requests : ubyte \| ++-------------------------+ \| uid : dword \| ++-------------------------+--------------+------------------------+ \| +for each request \| type : ubyte \| type dependent data... \| ++-------------------------+--------------+------------------------+ + +== Response Structure == + ++---------------------+ \| uid : dword \| ++---------------------+----------------------+------------------------+ +\| for each request \| response code : byte \| type dependent data... \| ++---------------------+----------------------+------------------------+ +\| payload crc : dword \| +---------------------+ + +== Request Types == + +For request types 0, 2, 4 there will only be one successful response +code and a dword value of the value being requested will be sent. For +request type 1, only the successful response code will be used but no +value will be sent back. + +{\| border=2px ! Opcode ! Name ! Description \|- ! 0 ! Fetch Numeric +Field ! Fetches the value of a numeric field. \|- ! 1 ! Update Numeric +Field ! Updates the value of a numeric field. \|- ! 2 ! Get Field +Modifiers ! Gets the modifiers of a field. \|- ! 3 ! Invoke Method ! +Invokes a method and sends back its return object. \|- ! 4 ! Get Method +Modifiers ! Gets the modifiers of a method. \|} + +== Return Codes == + +All the return codes are in descending priority by numerical order. For +opcode 0, there are cases where a numeric value is sent to the server on +fetch requests. This value is always a dword. For a method invoke +request, there isn't a value that is sent to the server. It is just +assumed that there wasn't a return object from the invoked method. + +{\| border=2px ! Opcode ! Name ! On Receive/Response ! Description \|- ! +0 ! Successful ! Response ! Successfully executed the request. \|- ! 1 ! +Successful - Returned numeric value ! Response ! Successfully executed +the request, and returned a numeric value. \|- ! 2 ! Successful - +Returned string value ! Response ! Successfully executed the request, +and returned a string value. \|- ! 4 ! Successful - Returned object +value ! Response ! Successfully executed the request, and returned an +object value. \|- ! -1 ! ClassNotFoundException ! Receive ! A +ClassNotFoundException was thrown while receiving a request from the +server. \|- ! -2 ! SecurityException ! Receive ! A SecurityException was +thrown while receiving a request from the server. \|- ! -3 ! +NullPointerException ! Receive ! A NullPointerException was thrown while +receiving a request from the server. \|- ! -4 ! Exception ! Receive ! An +Exception was thrown while receiving a request from the server. \|- ! -5 +! Throwable ! Receive ! An error or exception was thrown while receiving +a request from the server. \|- ! -10 ! ClassNotFoundException ! Response +! A ClassNotFoundException was thrown while responding to a request from +the server. \|- ! -11 ! InvalidClassException ! Response ! An +InvalidClassException was thrown while responding to a request from the +server. \|- ! -12 ! StreamCorruptedException ! Response ! A +StreamCorruptedException was thrown while responding to a request from +the server. \|- ! -13 ! OptionalDataException ! Response ! An +OptionDataException was thrown while responding to a request from the +server. \|- ! -14 ! IllegalAccessException ! Response ! An +IllegalAccessException was thrown while responding to a request from the +server. \|- ! -15 ! IllegalArgumentException ! Response ! An +IllegalArgumentException was thrown while responding to a request from +the server. \|- ! -16 ! InvocationTargetException ! Response ! An +InvocationTargetException was thrown while responding to a request from +the server. \|- ! -17 ! SecurityException ! Response ! A +SecurityException was thrown while responding to a request from the +server. ! \|- ! -18 ! IOException ! Response ! An IOException was thrown +while responding to a request from the server. \|- ! -19 ! +NullPointerException ! Response ! A NullPointerException was thrown +while responding to a request from the server. \|- ! -20 ! Exception ! +Response ! An Exception was thrown while responding to a request from +the server. \|- ! -21 ! Throwable ! Response ! An error or exception was +thrown while receiving a request from the server. \|} diff --git a/src/DMCA-Policy.md b/src/DMCA-Policy.md new file mode 100644 index 0000000..1ebb50f --- /dev/null +++ b/src/DMCA-Policy.md @@ -0,0 +1,3 @@ +If you find something on this wiki page that infringes on your +intellectual rights, contact: admin\[at\]moparisthebest.com to ask for +the content's removal. diff --git a/DWord.mediawiki b/src/DWord.md similarity index 83% rename from DWord.mediawiki rename to src/DWord.md index 0ee392d..77b1d9c 100644 --- a/DWord.mediawiki +++ b/src/DWord.md @@ -1,3 +1,3 @@ A "DWord" (double-word) is a data-type that consists of 4 bytes.
It is also commonly known as the "int" data-type in programming. -[[Category Data Type]] \ No newline at end of file +\[\[Category Data Type\]\] diff --git a/src/Data-Types.md b/src/Data-Types.md new file mode 100644 index 0000000..70df5b6 --- /dev/null +++ b/src/Data-Types.md @@ -0,0 +1,85 @@ +== Introduction == + +RuneScape uses a number of standard and non-standard data types. + +== Byte Order == + +Data types that are two bytes or larger can be stored and ordered in a +variety of different ways. Generally people either use big endian or +little endian. + +=== Big Endian === + +In big endian order, the most significant byte (MSB) is stored first and +the least significant byte (LSB) is stored last. + +=== Little Endian === + +In little endian order, the least significant byte (LSB) is stored first +and the most significant byte (MSB) is stored last. + +=== Byte order in RuneScape === + +RuneScape uses both little and big-endian byte orders throughout the +protocol (however, the 194 client only uses big-endian order), +presumably to make reverse-engineering of the protocol harder. Some +confusion has arisen over the byte order as the data types are named +incorrectly in \[\[Server Winterlove\|Winterlove\]\]'s server where +little endian data types are incorrectly named as big endian types. + +== Standard data types == These datatypes can also be read/written by a +DataWriter/DataReader implementation (DataStreams and Buffers) + +Naming conventions: {\| border=2 ! Official name ! Datatype name ! Jagex +name ! Encoding \|- \| Byte \| byte \| 1,1b \|- \| \[\[Word\|WORD\]\] \| +short \| 2,2b \|- \| \[\[DWord\|DWORD\]\] \| int,int32 \| 4,4b \|- \| +\[\[QWord\|QWORD\]\] \| long,int64 \| 8,8b \|- \| C style string \| +string,String,char *,char\[\] \| str,strbyte \| text bytes then '\n' or +10 \|- \| Java style string \| string,String,char *,char\[\] \| strraw +\| WORD length then text bytes \|} + +Note that \[\[Jagex\]\] used to use a new line character as string +terminator, in more recent versions they use the null character \\0 or 0 +to support multi-line strings. + +== Non Standard Data Types == + +{\| border=2 ! Winterlove's name ! Jagex name ! Read transformation ! +Write transformation \|- \| Special A \| Unknown \| value - 128 \| value ++ 128 \|- \| Special C \| Unknown \| 0 - value \| 0 - value \|- \| +Special S \| Unknown \| 128 - value \| 128 - value \|- \| SpaceSaverA \| +smarts \| (value\[0\] \< 128) ? (((value\[0\] - 128)\<\<8)+value\[1\]) : +value\[0\] \| if(value \< 128) putword(value+32768) else putbyte(value); +\|- \| SpaceSaverB \| smart \| (value\[0\] \< 128) ? value\[0\] - 64 \| +((value\[0\]\<\<8)+value\[1\]) - 49152 \| if(i \< 64 && i \>= -64) +putbyte(i + 64) else if(i \< 16384 && i \>= -16384) putword(i + 49152); +\|- \| tribyte / RGBColour / 3Byte / int3 / medium \| 3 \| (value\[0\] +\<\< 24) + (value\[1\] \<\< 16) + value\[2\] \| putbyte(value \>\> +24);putbyte(value \>\> 16);putbyte(value); \|- \| \[\[RS +String\|RS\_String\]\] \| jstr \| Old engine: read until newline +delimiter ("\n")
New engine: read until null byte (value 0). \| +Old engine: write and finish with newline delimiter ("\n")
New +engine: write and finish with null byte (value 0). \|} + +Additionally, RuneScape also uses two endian orders for integers that +are different from a big- or low endian order. Both byte orders are +called middle-endian. + +Their orders could be described as following: + +Middle-endian big int: C3 D4 A1 B2 + +Middle-endian small int: B2 A1 D4 C3 + +Where A1 is the smallest byte (LSB), and D4 the biggest byte (MSB). + +== Bit Access == + +=== Initiating Bit Access === + +Whenever data is to be sent to the server or to the client using bits; +the stream needs to be prepared by setting the bit position. The bit +position can be calculated by multiplying the current buffer position by +8. This is because each byte is comprised of 8 bits. + +Example: int bitPos = bufferPos \* 8; diff --git a/Home.md b/src/Home.md similarity index 100% rename from Home.md rename to src/Home.md diff --git a/src/JAGGRAB-Protocol.md b/src/JAGGRAB-Protocol.md new file mode 100644 index 0000000..33ab657 --- /dev/null +++ b/src/JAGGRAB-Protocol.md @@ -0,0 +1,48 @@ +\[\[Category Cache\]\] + +== Introduction == + +The JAGGRAB protocol is used to 'grab' cache files from the file server +and download them. + +It is a text-based protocol, similar to HTTP/0.9, and the client will +fall back to HTTP if JAGGRAB is unavailable. This generally happens in +unsigned mode and helps users who are behind firewalls. + +== Request format == + +A request is simply the text JAGGRAB, a space, the path to the file and +a newline character. Therefore, it is very similar to a HTTP/0.9 GET +request. + +JAGGRAB /path/to/file + +=== New engine === + +In (perhaps all) new engine clients, the client prefixes the JAGGRAB +request line with a single byte (value 17). + +== Response format == + +The response is simply the raw file data. Once the response is sent, the +connection is closed. + +== Files == + +There are a number of files which map to files in the cache. + +- '''/crc''' - the CRC table +- '''/title''' - cache 0, file 1 +- '''/config''' - cache 0, file 2 +- '''/interface''' - cache 0, file 3 +- '''/media''' - cache 0, file 4 +- '''/versionlist''' - cache 0, file 5 +- '''/textures''' - cache 0, file 6 +- '''/wordenc''' - cache 0, file 7 +- '''/sounds''' - cache 0, file 8 + +NOTE: the client will usually postfix these with random numbers, so when +checking for the file only the start of the string should be examined: +not the whole one. This is to help avoid caches when these files are +fetched over HTTP.
NOTE: The crc is postfixed with the client +revision diff --git a/src/Map-Region-System.md b/src/Map-Region-System.md new file mode 100644 index 0000000..2758f9d --- /dev/null +++ b/src/Map-Region-System.md @@ -0,0 +1,301 @@ +== Intro == Everyone knows that a coordinate system is in place to +navigate through the Runescape world. That coordinate system is based +off upon three variables, the Absolute X, Y Z coordinates. Before we +continue to talk about how these three variables are used in +calculations lets set down some vocabulary: + +== Definitions == ===Tile=== A tile is a representation of an absolute +coordinate. + +''Example: Varrock Coordinates 3211, 3424 represents one tile.'' + +===Tile Chunk=== A chunk of tiles, 8 x 8 in size. Also known as a region +before the scope of a region was understood. The chunk is considered a +point so it has X and Y coordinates. There are two forms of a Chunk, +formatted and non; a formatted chunks equation is: + +int chunkX = (getAbsoluteX() \>\> 3) - 6; int chunkY = (getAbsoluteY() +\>\> 3) - 6; + +This centers the chunk on the map, more on that later. + +The normal chunk equation is: + +int chunkX = (getAbsoluteX() \>\> 3); int chunkY = (getAbsoluteY() \>\> +3); + +''Example: The Coordinates \[3211, 3424\] Chunk X (formatted) is 395 and +the Chunk Y (un-formatted) is 428.'' + +===Region=== A region is 64 x 64 in size, or 8 x 8 in chunks. The region +is considered a point so it has X and Y coordinates. The equation for +finding the region the coordinates is within is: + +int regionx = (getUnformattedRegionX() \>\> 3); +//getUnformatedRegionX()/8; int regiony = (getUnformattedRegionY() \>\> +3); //getUnformatedRegionY()/8; + +''Example: The Coordinates \[3211, 3424\] Region X is 50 and the Region +Y is 53.'' + +Note: The Region X and Region Y coordinates are traditionally not used +in server location calculations; but practical region systems should use +this calculation for many purposes. + +===Map=== There is no calculation for a map, and there is no Map X or +Map Y. A Map is, however, a 104 x 104 area made up of 13 x 13 chunks. +Why is the number not even you may ask? Because it has a center. The +\[7, 7\] map chunk of the map is the center, and is also the formatted +chunk. When a region update is called by the server, a new map is +called, but you must understand that the formatted chunk never changes; +the tiles in the map, however, are updated and trimmed. When the player +moves out of the formatted chunk, the map is re-positioned to make that +chunk the center yet again. As I said, a new update is not needed every +time the player enters a new region, but when the range of +- 32 from +the point in the center of the chunk is reached, an update is required +to update the map to the new objects so that the 'black space' or fog is +not reached. Confused? + +===Diagram=== \[http://i.imgur.com/C3huO.png External Image\] + +The active chunk is the chunk in which the player resides. The definite +rendering chunks are the chunks in which will be rendered on the players +screen no matter where they are in the active chunk. The indefinite +rendering chunks are the chunks in which depending on where the player +is within the active chunk they may be rendered or not. Remember this +depends on the +- distance of 32 from the players absolute position. The +queue chunks are pre-loaded chunks in which after the active chunk is +moved may be disposed of or activated depending upon the direction in +which the active chunk changes. + +==Loading== + +These were the regions loaded for the coordinates \[3183, 3217\]: + +\[http://i.imgur.com/ydl78.png External Image\] + +If you can imagine a puzzle, a 64 x 64 piece does not fit equally within +the 104 x 104 area. So bits of each region are taken that are within the +104 x 104 map area. + +The amount of regions that are to be loaded can be calculated this way: + +Please note that Region X and Region Y are not formatted. + +int amt = 0; for(int i21 = (player.getLocation().getRegionX() - 6) / 8; +i21 \<= (player.getLocation().getRegionX() + 6) / 8; i21++) { for(int +k23 = (player.getLocation().getRegionY() - 6) / 8; k23 \<= +(player.getLocation().getRegionY() + 6) / 8; k23++) amt++; } + +Along with this, the base X and base Y of each of the region can be +calculated: + +for(int i21 = (player.getLocation().getRegionX() - 6) / 8; i21 \<= +(player.getLocation().getRegionX() + 6) / 8; i21++) { for(int k23 = +(player.getLocation().getRegionY() - 6) / 8; k23 \<= +(player.getLocation().getRegionY() + 6) / 8; k23++) +System.out.println(i21+\" X "+(i21 \<\< 6)+","+k23+" Y \"+(k23 \<\< +6));;; } + +The 'X' and 'Y' coordinates represents the coordinates of the region as +depicted in the diagram. After the regions are loaded they are trimmed +to the tiles that are necessary. + +Well hope this gave you some idea of how regions are loaded and such, +tell me if you need explanation on anything. + +Heres an example of a location class that I wrote, sorry for the lack of +comments. If you read everything then this should make sense: + +package net.forge.content.world.node; /\*\* \* RuneForge \| 317 \* +Location.java \* @version 1.0.0 \* @author SiniSoul (SiniSoul\@live.com) +\*/ public final class Location { + + /** + * The Tile X and Y coordinates. + */ + private int tilex = 0, + tiley = 0; + + /** + * The Height of the location. + */ + private int height = 0; + + /** + * The asynchronous Chunk X and Y coordinates; used in region updating. + */ + private int chunkx = 0, + chunky = 0; + + /** + * + * @param tilex + */ + public void setTileX(int tilex) { + this.tilex = (tilex & 0xFFFF); + } + + /** + * + * @return + */ + public int getTileX() { + return tilex; + } + + /** + * + * @param tilex + */ + public void setTileY(int tiley) { + this.tiley = (tiley & 0xFFFF); + } + + /** + * + * @return + */ + public int getTileY() { + return tiley; + } + + /** + * + * @param formated If the chunk is formatted for map positioning or + * other formatted chunk comparison. + * @return + */ + public int calculateChunkX(boolean formated) { + return formated ? (getTileX() >> 3) - 6 : (getTileX() >> 3); + } + + /** + * + * @param formated If the chunk is formatted for map positioning or + * other formatted chunk comparison. + * @return + */ + public int calculateChunkY(boolean formated) { + return formated ? (getTileY() >> 3) - 6 : (getTileY() >> 3); + } + + /** + * + */ + public void updateChunkX() { + this.chunkx = calculateChunkX(true); + } + + /** + * + */ + public void updateChunkY() { + this.chunkx = calculateChunkY(true); + } + + /** + * + * @return + */ + public int getChunkX() { + return chunkx; + } + + /** + * + * @return + */ + public int getMapLocalX() { + return getTileX() - (getChunkX() << 3); + } + + /** + * + * @return + */ + public int getChunkY() { + return chunky; + } + + /** + * + * @return + */ + public int getMapLocalY() { + return getTileX() - (getChunkY() << 3); + } + + /** + * + * @param height + */ + public void setHeight(int height) { + this.height = (height & 0x3); + } + + /** + * + * @return + */ + public int getHeight() { + return height; + } + + /** + * + * @return + */ + public int getRegionX() { + return calculateChunkX(false) >> 3; + } + + /** + * + * @return + */ + public int getRegionLocalX() { + return getTileX() - (getRegionX() << 6); + } + + /** + * + * @return + */ + public int getRegionY() { + return calculateChunkY(false) >> 3; + } + + /** + * + * @return + */ + public int getRegionLocalY() { + return getTileY() - (getRegionY() << 6); + } + + /** + * + * @param tilex + * @param tiley + * @param height + */ + public void set(int tilex, int tiley, int height) { + setTileX(tilex); + setTileY(tiley); + setHeight(height); + } + + /** + * + * @param tilex + * @param tiley + * @param height + */ + public Location(int tilex, int tiley, int height) { + set(tilex, tiley, height); + updateChunkX(); + updateChunkY(); + } + +} diff --git a/OB3.mediawiki b/src/OB3.md similarity index 85% rename from OB3.mediawiki rename to src/OB3.md index 0aafe0d..08809e4 100644 --- a/OB3.mediawiki +++ b/src/OB3.md @@ -1,6 +1,8 @@ -[[Category RSC]] +\[\[Category RSC\]\] -This page refers to .ob3, a custom format for 3D models created by Jagex. It is used by the RuneScape Classic engine since client version #74. For the earlier version of the format see [[OB2|OB2]]. +This page refers to .ob3, a custom format for 3D models created by +Jagex. It is used by the RuneScape Classic engine since client version +\#74. For the earlier version of the format see \[\[OB2\|OB2\]\].
public class OB3Model {
 
@@ -103,11 +105,15 @@ This page refers to .ob3, a custom format for 3D models created by Jagex. It is
     }
 }
 
+== '''Faces''' == A '''negative''' face\_fill\_back or face\_fill\_front +value indicates a '''solid colour''', whereas a'''positive''' value +indicates a '''texture'''. The texture is defined by its offset in the +client's texture array. -== '''Faces''' == -A '''negative''' face_fill_back or face_fill_front value indicates a '''solid colour''', whereas a '''positive''' value indicates a '''texture'''. The texture is defined by its offset in the client's texture array. - -When converting to/from [http://en.wikipedia.org/wiki/Wavefront_.obj_file Wavefront OBJ] format, remember that the OB3 face vertices are one less than the OBJ face vertices. +When converting to/from +\[http://en.wikipedia.org/wiki/Wavefront\_.obj\_file Wavefront OBJ\] +format, remember that the OB3 face vertices are one less than the OBJ +face vertices.
public static int decode_colour(int i) {
     i = -(i + 1);
@@ -117,8 +123,7 @@ When converting to/from [http://en.wikipedia.org/wiki/Wavefront_.obj_file Wavefr
     return (r << 19) + (g << 11) + (b << 3);
 }
 
-
public static int encode_colour(int r, int g, int b) {
     return -1 - (r / 8) * 1024 - (g / 8) * 32 - b / 8;
 }
-
\ No newline at end of file + diff --git a/src/Ondemand-Protocol.md b/src/Ondemand-Protocol.md new file mode 100644 index 0000000..79e2f51 --- /dev/null +++ b/src/Ondemand-Protocol.md @@ -0,0 +1,28 @@ +\[\[Category Cache\]\] + +== Introduction == + +The 'Ondemand' protocol is used to stream updates to the cache. The +client knows which files to update from the CRC file downloaded using +the \[\[JAGGRAB Protocol\|JAGGRAB protocol\]\]. + +== Request packet == + +The client first authenticates as an ondemand client by using the opcode +'15' (as opposed to the game, which uses the type '14'). + +The format of the request is: + +unsigned byte cacheId; unsigned short fileId; unsigned byte priority; + +There can be multiple requests per session. + +== Response packet == + +The response is sent in blocks. The maximum size of a block is 500 +bytes. Smaller blocks (at the end of a file) are permitted. + +Each block has the format: + +unsigned byte cacheId; unsigned short fileId; unsigned short fileSize; +unsigned byte blockNumber; unsigned byte\[\] blockData; diff --git a/src/QWord.md b/src/QWord.md new file mode 100644 index 0000000..181f51b --- /dev/null +++ b/src/QWord.md @@ -0,0 +1,3 @@ +A "QWord" (quad-word) is a data-type that consists of 8 bytes.
It +is also commonly known as the "long" data-type in programming. +\[\[Category Data Type\]\] diff --git a/src/RS-String.md b/src/RS-String.md new file mode 100644 index 0000000..c7a141b --- /dev/null +++ b/src/RS-String.md @@ -0,0 +1,11 @@ +== Introduction == + +RS String is a codename for a custom string data-type used in the +RuneScape protocol.
The string data-type is used to hold a series +of characters in order to form a message. + +===Old Engine Protocol=== In the old engine client, the RS String +datatype is delimited by a newline character (value "\n"). + +===New Engine Protocol=== In the new-engine client, the RS String +datatype is delimited by a null byte (value 0). diff --git a/src/RSWiki-About.md b/src/RSWiki-About.md new file mode 100644 index 0000000..847f0ce --- /dev/null +++ b/src/RSWiki-About.md @@ -0,0 +1,20 @@ +Many of you may recall Graham and Blakeman's runewiki project - it +contained very useful information about numerous client revision +protocols and other resources. Unfortunately, the wiki and any backups +of the database have been lost for over two years now (and there are no +cached copies floating around). Because of this, we've decided (and have +started) embarking on the journey of re-creating the wiki. + +In regards to the aforementioned, we are now releasing the wiki to the +public. Captcha has been added to the wiki to prevent abuse; and of +course, backups have (and are continuously) being made of the database. +Currently, the majority of the information covered is based on the +'''\#317''' Protocol, '''JAGGRAB''' Protocol, '''Ondemand''' Protocol, +'''Cache Archive Format''','''RS Data Types''', and'''\#202''' Protocol. +The format of the wiki is fairly laid out, so it will be quite easy to +expand on certain topics. If anyone has any information on the other +commonly used client revisions (or perhaps a new one) feel free to +contribute. + +RSWiki is hosted and maintained by the \[http://moparisthebest.com +moparisthebest\] community. diff --git a/RSWiki-General-disclaimer.md b/src/RSWiki-General-disclaimer.md similarity index 100% rename from RSWiki-General-disclaimer.md rename to src/RSWiki-General-disclaimer.md diff --git a/RSWiki-IRC.md b/src/RSWiki-IRC.md similarity index 100% rename from RSWiki-IRC.md rename to src/RSWiki-IRC.md diff --git a/src/RSWiki-Privacy-policy.md b/src/RSWiki-Privacy-policy.md new file mode 100644 index 0000000..174c6e7 --- /dev/null +++ b/src/RSWiki-Privacy-policy.md @@ -0,0 +1,32 @@ + +
+What information do we collect?

We collect +information from you when you register on our site or information posted +on our site.

When ordering or registering on our site, as +appropriate, you may be asked to enter your: e-mail address. You may, +however, visit our site anonymously.

What do we use +your information for?

Any of the information we +collect from you may be used to improve customer service (your +information helps us to more effectively respond to your customer +service requests and support needs)

How do we protect +your information?

We implement a variety of +security measures to maintain the safety of your personal information +when you enter, submit, or access your personal information. +

Do we use cookies?

Yes (Cookies +are small files that a site or its service provider transfers to your +computers hard drive through your Web browser (if you allow) that +enables the sites or service providers systems to recognize your browser +and capture and remember certain information

We use cookies +to compile aggregate data about site traffic and site interaction so +that we can offer better site experiences and tools in the +future.

Do we disclose any information to outside +parties?

We do not sell, trade, or otherwise +transfer to outside parties your personally identifiable information. +This does not include trusted third parties who assist us in operating +our website, conducting our business, or servicing you, so long as those +parties agree to keep this information confidential. We may also release +your information when we believe release is appropriate to comply with +the law, enforce our site policies, or protect ours or others rights, +property, or safety. However, non-personally identifiable visitor +information may be provided to other parties for marketing, advertising, +or other uses.

diff --git a/Rules.md b/src/Rules.md similarity index 100% rename from Rules.md rename to src/Rules.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md new file mode 100644 index 0000000..24c8055 --- /dev/null +++ b/src/SUMMARY.md @@ -0,0 +1,202 @@ +# Summary + +- [Home](./Home.md) +- [135-Protocol](./135-Protocol.md) +- [194-Clear-screen](./194-Clear-screen.md) +- [194-Logout](./194-Logout.md) +- [194-Protocol](./194-Protocol.md) +- [194-Show-interface](./194-Show-interface.md) +- [202-Protocol](./202-Protocol.md) +- [204-Items](./204-Items.md) +- [204-NPCs](./204-NPCs.md) +- [204-Objects](./204-Objects.md) +- [204-Protocol](./204-Protocol.md) +- [289-Construct-Map-Region](./289-Construct-Map-Region.md) +- [289-Player-Dialogue-Head](./289-Player-Dialogue-Head.md) +- [289-Protocol](./289-Protocol.md) +- [289-Send-Player-Head](./289-Send-Player-Head.md) +- [289-Send-sidebar-interface](./289-Send-sidebar-interface.md) +- [317-Add-friend](./317-Add-friend.md) +- [317-Add-ignore](./317-Add-ignore.md) +- [317-Alternate-item-option-2](./317-Alternate-item-option-2.md) +- [317-Animation-reset](./317-Animation-reset.md) +- [317-Attack-(NPC)](./317-Attack-(NPC).md) +- [317-Audio](./317-Audio.md) +- [317-Bank-10-items](./317-Bank-10-items.md) +- [317-Bank-5-items](./317-Bank-5-items.md) +- [317-Bank-all-items](./317-Bank-all-items.md) +- [317-Bank-X-items-part-1](./317-Bank-X-items-part-1.md) +- [317-Bank-X-items-part-2](./317-Bank-X-items-part-2.md) +- [317-Begin-player-updating](./317-Begin-player-updating.md) +- [317-Button-click](./317-Button-click.md) +- [317-Camera-movement](./317-Camera-movement.md) +- [317-Camera-shake](./317-Camera-shake.md) +- [317-Chat-interface-click](./317-Chat-interface-click.md) +- [317-Chat-interface](./317-Chat-interface.md) +- [317-Chat-settings](./317-Chat-settings.md) +- [317-Clear-inventory](./317-Clear-inventory.md) +- [317-Clear-screen](./317-Clear-screen.md) +- [317-Close-window](./317-Close-window.md) +- [317-Construct-map-region](./317-Construct-map-region.md) +- [317-Create-Projectile](./317-Create-Projectile.md) +- [317-Design-screen](./317-Design-screen.md) +- [317-Display-hint-icon](./317-Display-hint-icon.md) +- [317-Drop-item](./317-Drop-item.md) +- [317-Enter-name](./317-Enter-name.md) +- [317-Equip-item](./317-Equip-item.md) +- [317-Flash-sidebar](./317-Flash-sidebar.md) +- [317-Focus-change](./317-Focus-change.md) +- [317-Follow](./317-Follow.md) +- [317-Force-client-setting](./317-Force-client-setting.md) +- [317-Friends-list-status](./317-Friends-list-status.md) +- [317-Ground-Item-Action](./317-Ground-Item-Action.md) +- [317-Hidden-Interface](./317-Hidden-Interface.md) +- [317-Idle-logout](./317-Idle-logout.md) +- [317-Idle](./317-Idle.md) +- [317-Initialize-player](./317-Initialize-player.md) +- [317-Input-amount](./317-Input-amount.md) +- [317-Interface-animation](./317-Interface-animation.md) +- [317-Interface-color](./317-Interface-color.md) +- [317-Interface-item](./317-Interface-item.md) +- [317-Interface-model-rotation](./317-Interface-model-rotation.md) +- [317-Interface-offset](./317-Interface-offset.md) +- [317-Interface-over-tab](./317-Interface-over-tab.md) +- [317-Inventory-overlay](./317-Inventory-overlay.md) +- [317-Item-action-1](./317-Item-action-1.md) +- [317-Item-on-floor](./317-Item-on-floor.md) +- [317-Item-on-item](./317-Item-on-item.md) +- [317-Item-on-object](./317-Item-on-object.md) +- [317-Item-on-player](./317-Item-on-player.md) +- [317-Light-item](./317-Light-item.md) +- [317-Loading-finished](./317-Loading-finished.md) +- [317-Load-map-region](./317-Load-map-region.md) +- [317-Logout](./317-Logout.md) +- [317-Mage-NPC](./317-Mage-NPC.md) +- [317-Magic-on-items](./317-Magic-on-items.md) +- [317-Magic-on-player](./317-Magic-on-player.md) +- [317-Minimap-State](./317-Minimap-State.md) +- [317-Mouse-click](./317-Mouse-click.md) +- [317-Move-item](./317-Move-item.md) +- [317-Music](./317-Music.md) +- [317-NPC-action-1](./317-NPC-action-1.md) +- [317-NPC-action-2](./317-NPC-action-2.md) +- [317-NPC-action-3](./317-NPC-action-3.md) +- [317-NPC-Dialogue](./317-NPC-Dialogue.md) +- [317-NPC-head-on-interface](./317-NPC-head-on-interface.md) +- [317-Object-action-1](./317-Object-action-1.md) +- [317-Object-action-2](./317-Object-action-2.md) +- [317-Object-action-3](./317-Object-action-3.md) +- [317-Object-removal](./317-Object-removal.md) +- [317-Object-spawn](./317-Object-spawn.md) +- [317-Open-chatbox-interface](./317-Open-chatbox-interface.md) +- [317-Open-welcome-screen](./317-Open-welcome-screen.md) +- [317-Pickup-ground-item](./317-Pickup-ground-item.md) +- [317-Player-command](./317-Player-command.md) +- [317-Player-head-to-interface](./317-Player-head-to-interface.md) +- [317-Player-Option](./317-Player-Option.md) +- [317-Play-song](./317-Play-song.md) +- [317-Privacy-options](./317-Privacy-options.md) +- [317-Protocol](./317-Protocol.md) +- [317-Region-change](./317-Region-change.md) +- [317-Remove-friend](./317-Remove-friend.md) +- [317-Remove-ignore](./317-Remove-ignore.md) +- [317-Report-player](./317-Report-player.md) +- [317-Reset-button-state](./317-Reset-button-state.md) +- [317-Reset-camera](./317-Reset-camera.md) +- [317-Reset-destination](./317-Reset-destination.md) +- [317-Run-energy](./317-Run-energy.md) +- [317-Scroll-position](./317-Scroll-position.md) +- [317-Send-add-friend](./317-Send-add-friend.md) +- [317-Send-add-ignore](./317-Send-add-ignore.md) +- [317-Send-message](./317-Send-message.md) +- [317-Send-private-message](./317-Send-private-message.md) +- [317-Send-sidebar-interface](./317-Send-sidebar-interface.md) +- [317-Send-Skill](./317-Send-Skill.md) +- [317-Set-interface-text](./317-Set-interface-text.md) +- [317-Show-interface](./317-Show-interface.md) +- [317-Show-multi-combat](./317-Show-multi-combat.md) +- [317-Show-tab](./317-Show-tab.md) +- [317-Skill-level](./317-Skill-level.md) +- [317-Song-Queue](./317-Song-Queue.md) +- [317-System-update](./317-System-update.md) +- [317-Trade-answer](./317-Trade-answer.md) +- [317-Trade-request](./317-Trade-request.md) +- [317-Unequip-item](./317-Unequip-item.md) +- [317-Update-item-container](./317-Update-item-container.md) +- [317-Walkable-interface](./317-Walkable-interface.md) +- [317-Weight](./317-Weight.md) +- [357-Protocol](./357-Protocol.md) +- [377-Animation-Reset](./377-Animation-Reset.md) +- [377-Camera-Shake](./377-Camera-Shake.md) +- [377-Construct-Map-Region](./377-Construct-Map-Region.md) +- [377-Create-Static-Graphic](./377-Create-Static-Graphic.md) +- [377-Initialize-Player](./377-Initialize-Player.md) +- [377-Input-Amount](./377-Input-Amount.md) +- [377-Interface-Animation](./377-Interface-Animation.md) +- [377-Interface-Item](./377-Interface-Item.md) +- [377-Inventory-Overlay](./377-Inventory-Overlay.md) +- [377-Logout](./377-Logout.md) +- [377-Move-Camera](./377-Move-Camera.md) +- [377-Open-Welcome-Screen](./377-Open-Welcome-Screen.md) +- [377-Play-Ambient-Wave](./377-Play-Ambient-Wave.md) +- [377-Protocol](./377-Protocol.md) +- [377-Reset-Button-State](./377-Reset-Button-State.md) +- [377-Reset-Ground-Items-and-Objects](./377-Reset-Ground-Items-and-Objects.md) +- [377-Run-Energy](./377-Run-Energy.md) +- [377-Send-Add-Friend](./377-Send-Add-Friend.md) +- [377-Send-Ground-Item](./377-Send-Ground-Item.md) +- [377-Send-Message](./377-Send-Message.md) +- [377-Send-Sidebar-Interface](./377-Send-Sidebar-Interface.md) +- [377-Send-Sound](./377-Send-Sound.md) +- [377-Skill-Level](./377-Skill-Level.md) +- [377-Walkable-Interface](./377-Walkable-Interface.md) +- [443-Protocol](./443-Protocol.md) +- [464-Protocol](./464-Protocol.md) +- [468-Protocol](./468-Protocol.md) +- [474-Fourth-Interface-Option](./474-Fourth-Interface-Option.md) +- [474-Protocol](./474-Protocol.md) +- [474-Remove-ignore](./474-Remove-ignore.md) +- [508-Protocol](./508-Protocol.md) +- [634-Protocol](./634-Protocol.md) +- [666-Protocol](./666-Protocol.md) +- [668-Protocol](./668-Protocol.md) +- [718-Close-window](./718-Close-window.md) +- [718-Friends-packet](./718-Friends-packet.md) +- [718-Interface](./718-Interface.md) +- [718-Music-effect](./718-Music-effect.md) +- [718-Open-URL](./718-Open-URL.md) +- [718-Player-under-NPC-priority](./718-Player-under-NPC-priority.md) +- [718-Protocol](./718-Protocol.md) +- [742-Protocol](./742-Protocol.md) +- [Archive-Format](./Archive-Format.md) +- [Categories](./Categories.md) +- [Category-Cache](./Category-Cache.md) +- [Category-Category-RS2](./Category-Category-RS2.md) +- [Category-Data-Type](./Category-Data-Type.md) +- [Category-NPCs](./Category-NPCs.md) +- [Category-Packet-194](./Category-Packet-194.md) +- [Category-Packet-317](./Category-Packet-317.md) +- [Category-Packet-377](./Category-Packet-377.md) +- [Category-Packet-474](./Category-Packet-474.md) +- [Category-Packet-718](./Category-Packet-718.md) +- [Category-Packet](./Category-Packet.md) +- [Category-Packet-{{{revision}}}](./Category-Packet-{{{revision}}}.md) +- [Category-RS2](./Category-RS2.md) +- [Category-RSC](./Category-RSC.md) +- [Class-Check](./Class-Check.md) +- [Data-Types](./Data-Types.md) +- [DMCA-Policy](./DMCA-Policy.md) +- [DWord](./DWord.md) +- [JAGGRAB-Protocol](./JAGGRAB-Protocol.md) +- [Map-Region-System](./Map-Region-System.md) +- [OB3](./OB3.md) +- [Ondemand-Protocol](./Ondemand-Protocol.md) +- [QWord](./QWord.md) +- [RS-String](./RS-String.md) +- [RSWiki-About](./RSWiki-About.md) +- [RSWiki-General-disclaimer](./RSWiki-General-disclaimer.md) +- [RSWiki-IRC](./RSWiki-IRC.md) +- [RSWiki-Privacy-policy](./RSWiki-Privacy-policy.md) +- [Rules](./Rules.md) +- [Template-Packet](./Template-Packet.md) +- [Word](./Word.md) diff --git a/src/Template-Packet.md b/src/Template-Packet.md new file mode 100644 index 0000000..0c45b4d --- /dev/null +++ b/src/Template-Packet.md @@ -0,0 +1,10 @@ + { + --------------------------------------------- + colspan="2" style="background-color:\#3c5;" + \- + +! '''Opcode''' \| {{{opcode}}} \|- ! '''Type''' \| {{{type}}} \|- ! +'''Length''' \| {{{length}}} \|- \|} + + \[\[Category Packet\]\] \[\[Category Packet +{{{revision}}}\]\] diff --git a/src/Word.md b/src/Word.md new file mode 100644 index 0000000..9b67c21 --- /dev/null +++ b/src/Word.md @@ -0,0 +1,3 @@ +A "word" is a data-type that consists of 2 bytes.
It is also +commonly known as the "short" data-type in programming. \[\[Category +Data Type\]\] diff --git a/src/chapter_1.md b/src/chapter_1.md new file mode 100644 index 0000000..b743fda --- /dev/null +++ b/src/chapter_1.md @@ -0,0 +1 @@ +# Chapter 1