Jump to content
View in the app

A better way to browse. Learn more.

RuneSuite RSPS Development

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

'Kyle

Members
  • Joined

  • Last visited

Everything posted by 'Kyle

  1. 'Kyle replied to a post in a topic in RS3
    Oooooohhhh! Much appreciated, man!
  2. Very nice! Definitely going to give this thing a peek-a-boo.
  3. You know those pesky little rocks and bushes that you'd like to add around for some more aesthetic appeal? But there is an issue ...you aren't quite sure as to how to obtain the idea of the object, being that you cannot right-click and examine in debug-mode. Well, here you go! Hope this helps. case "objdebug": System.out.println("Standing on " + World.getObject(player)); Region r = World.getRegion(player.getRegionY() | (player.getRegionX() << 8)); if (r == null) { player.getPackets().sendGameMessage("Region is null!"); return true; } List<WorldObject> objects = r.getObjects(); if (objects == null) { player.getPackets().sendGameMessage("Objects are null!"); return true; } for (WorldObject o : objects) { if (o == null || !o.matches(player)) { continue; } System.out.println("Objects coords: " + o.getX() + ", " + o.getY()); System.out.println("[Object]: id=" + o.getId() + ", type=" + o.getType() + ", rot=" + o.getRotation() + "."); } return true;
  4. Hey, thanks! I will definitely be adding this.
  5. You're supposed to thieve a stall, the stall respawns a temporary empty stall object for "x" amount of seconds, then the original stall comes back. So the original cached map objects -such as the ones in Draynor or East Ardougne- will respawn the stall with the items after the allotted time has been met. Yet, with spawned in thieved stalls, this seems to not work. I have added some stalls around varrock, fally, etc. Whenever you thieve the stall, it will spawn the temporary empty stall. Although, after its time to respawn the stall with the items it will despawn completely... This is frustrating me. Any ideas? (P.S. Seed stall at Draynor works, but not anywhere I have spawned it) Here are some gifs of what is supposed to happen: Instead, right before the stall comes back, it despawns. This method is involved, albiet I doubt it is the culprit. public static void handleStalls(final Player player, final WorldObject object) { // if (player.getAttackedBy() != null && player.getAttackedByDelay() > Utils.currentTimeMillis()) { // player.getPackets().sendGameMessage("You can't do this while you're under combat."); // return; // } for (final Stalls stall : Stalls.values()) { if (stall.getObjectId() == object.getId()) { final WorldObject emptyStall = new WorldObject( stall.getReplaceObject(), 10, object.getRotation(), object.getX(), object.getY(), object.getPlane()); if (player.getSkills().getLevel(Skills.THIEVING) < stall .getLevel()) { player.getPackets().sendGameMessage( "You need a thieving level of " + stall.getLevel() + " to steal from this.", true); return; } if (player.getInventory().getFreeSlots() <= 0) { player.getPackets().sendGameMessage( "Not enough space in your inventory.", true); return; } player.setNextAnimation(new Animation(881)); player.lock(2); WorldTasksManager.schedule(new WorldTask() { boolean gaveItems; @Override public void run() { // prevents multiempty stall spawn if many ppl using // same spot and also checks if stall there still if (!World.getRegion(object.getRegionId()) .containsObject(object.getId(), object)) { stop(); return; } if (!gaveItems) { player.getInventory().addItem( stall.getItem(Utils .getRandom(stall.item.length - 1)), Utils.getRandom(stall.getAmount())); player.getSkills().addXp(Skills.THIEVING, stall.getExperience()); gaveItems = true; checkGuards(player); } else { World.spawnTemporaryObject(emptyStall, (int) (1500 * stall.getTime())); stop(); } } }, 0, 0); } } }
  6. 'Kyle replied to Yasin's topic in Elvarg \ OSRSPK
    So you're going to continue working with this project?.. Or are you just releasing for the public to utilize, seeing as it was a paid project that you were hired to do?
  7. First you'll need to declare your packets+size inside WPD: private final static int ITEM_ON_FLOOR_EXAMINE = 102; Then add this under processPackets method: } else if (packetId == ITEM_ON_FLOOR_EXAMINE) { int y = stream.readUnsignedShort(); //CLIENT SENDS THEM BACKWARDS ON PURPOSE int x = stream.readUnsignedShortLE(); int id = stream.readUnsignedShort(); boolean forceRun = stream.readUnsigned128Byte() == 1; player.getPackets().sendItemMessage(0, 15263739, id, x, y, ItemExamines.getExamine(new Item(id))); // ChatboxMessage Inside WPE: public void sendItemMessage(int border, int colour, int id, int x, int y, String message) { sendGameMessage(message); sendGlobalString(306, message); sendGlobalConfig(1699, colour); //"color" - Default; 1 - Black sendGlobalConfig(1700, border); //"border" - Default; 0 - White; 1 - Red; 2 - No Border sendGlobalConfig(1695, 1); sendItemInterface(new Item(id), new WorldTile(x, y, player.getPlane()), true, 746, 0, 1177); } public void sendItemInterface(Item item, WorldTile tile, boolean noclipped, int windowId, int windowComponentId, int interfaceId) { int[] xteas = new int[4]; OutputStream stream = new OutputStream(30); stream.writePacket(player, 36); stream.writeByte128(noclipped ? 1 : 0); stream.writeIntV2(xteas[0]); stream.writeIntLE((windowId << 16) | windowComponentId); stream.writeIntV1(xteas[1]); stream.writeShort(item.getId()); stream.writeIntV1(xteas[2]); stream.writeInt(xteas[3]); stream.writeShortLE(interfaceId); stream.writeInt((tile.getPlane() << 28) | (tile.getX() << 14) | tile.getY()); session.write(stream); }
  8. This is for the Underwall Tunnel at the Grand Exchange. In your ObjectHandler, you will want to place these two methods (preferably under HandleOption5, somewhere): public static void climbTunnel(final Player player, final boolean goingIn) { if (player.getBoneDelay() > Utils.currentTimeMillis()) return; player.addBoneDelay(150); if (!goingIn) { player.addWalkSteps(3144, 3514, 0, false); player.setNextWorldTile(new WorldTile(3143, 3514, 0)); player.setNextAnimation(new Animation(2589)); } else { player.addWalkSteps(3138, 3516, 0, false); player.setNextWorldTile(new WorldTile(3139, 3516, 0)); player.setNextAnimation(new Animation(2589)); } player.getPackets().sendGameMessage("Climb into the tunnel..."); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { if (!goingIn) { player.addBoneDelay(3000); //5sec-2sec=3sec walkTunnel(player, false); } else { player.addBoneDelay(3000); //5sec-2sec=3sec walkTunnel(player, true); } stop(); } }, 2); } public static void walkTunnel(final Player player, final boolean goingIn) { if (!goingIn) { player.setNextAnimation(new Animation(2591)); player.setNextWorldTile(new WorldTile(3139, 3516, 0)); } else { player.setNextAnimation(new Animation(2591)); player.setNextWorldTile(new WorldTile(3143, 3514, 0)); } player.getPackets().sendGameMessage((goingIn) ? "...and end up inside the Grand Exchange" : "...and end up outside the Grand Exchange."); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { if (!goingIn) { player.addWalkSteps(3138, 3516, 0, false); } else { player.addWalkSteps(3144, 3514, 0, false); } stop(); } }); } Then, in your HandleOption1 method, inside ObjectHandler, add this: } else if (id == 9311 && object.getX() == 3139 && object.getY() == 3516) { climbTunnel(player, true); // GE Tunnel outside to inside } else if (id == 9312 && object.getX() == 3143 && object.getY() == 3514) { climbTunnel(player, false); // GE Tunnel inside to outside
  9. 'Kyle replied to Pax's topic in Other
    Thanks, I am going to use this!

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.