Everything posted by Makar
-
Onyx/Matrix 2023 Full Package
Everything is open source eventually in RSPS it seems.
-
Invision's Map Editor
Absolutely wild.
-
PoserGL Release
Very nice thank you. Been looking for animation information.
-
Zaros 666 - LEAKED VERSION
Thanks, don't even know what this is but hey, we'll check it out.
- OS-Fatality #184 OSRS Server + Runelite + Web
-
Invision's Map Editor
Very nice.
-
[727] All identified packets and information regarding UpdateZone packets
For anyone developing 727 revision, I have managed to refactor almost all of the packets from going client->server and server->client. I would gladly accept any help with refactoring this as it has been a very fun project so far. I know that the index 36 packets have something to do with vorbis and those are the only packets I'm not too sure of. Client->Server Client Packets Server->Client Server Packets Also some eye opening information as to how frameworks like Matrix do not utilize all the bandwidth saving and efficient "update zone" packets. Every single framework I have seen so far only utilizes the packets jagex calls "specific" packets where it sends the entire tile for things such as ground items, spotanims, projectiles, etc. The way these packets should be utilized is as follow for maximum bandwidth and data efficiency: organize all tile-based update events that utilize the "update zone" system (spotanim/projectile/objects/ground items/etc) for each tile that needs updated send update zone packet for each update event that is on that tile send update zone version of packet for that event This means that instead of sending the tile and item for a giant ass pile of items on the floor, you send the coordinates once, then send every item that should be on that tile, only sending a new location when there are items on another tile. Same goes for projectiles, objects, and spotanims. Update Zone Packets Update Zone Packets As for projectiles, I noticed they have a couple more useful flags that can be set that I have not seen utilized in any frameworks yet as well, such as being able to make them follow terrain height rather than a predefined height, etc. Anyone who wants to help figure out the rest or has any information regarding some of the unidentified few that are left, let me know please. Or any corrections/advice are greatly appreciated.
-
Pre-RS3 NPC Half-speed Walking Movement Type
Now I'm sure tons of you have seen ganodermic beasts, new chickens, and grotworms sliding around in a T-Pose when they should be animating while walking. I am sure some of you have seen this wonky hardcode fix going around (this example is from Matrix 3's polypore npc code) @Override public void processMovement() { super.processMovement(); if (realId == 14696 && getNextWalkDirection() != -1) { this.setNextAnimation(new Animation(15465)); this.setNextForceMovement(new NewForceMovement(this, 1, null, 0, Utils.getAngle(Utils.DIRECTION_DELTA_X[getNextWalkDirection()], Utils.DIRECTION_DELTA_Y[getNextWalkDirection()]))); } } Basically forcing a movement animation using forcemovement. Well the render animation definitions of the monster hold animations for a third movement type. Not walking, not running.It seems to be used for monsters that move either half speed of normal monsters, or monsters that move 2 squares in one direction at a time such as ganodermic beasts. The correct way to trigger this animation to be used directly from the render animation of the npc is to just have an exception inside where it updates an npc to be "running". As you can see in the client code here where the client determines which render animation to use, there is a "teleport" animation type. I only call it teleport because it's the same movement type id that players use in player update as a teleport movement. Should probably rename it to SPECIAL or something instead. Here is where the client determines if the NPC uses this specific type of movement so you can update your NPC update methods accordingly: NPCUpdate.java If you're using Matrix's crazy ass control flow for NPC updating, here's where you'd make the change: if (n.getNextRunDirection() == -1) { if (n.getDefinitions().walksSpecial()) { stream.writeBits(2, 2); stream.writeBits(1, 0); stream.writeBits(3, Utils.getNpcMoveDirection(n.getNextWalkDirection())); } else { stream.writeBits(2, 1); stream.writeBits(3, Utils.getNpcMoveDirection(n.getNextWalkDirection())); } } else { stream.writeBits(2, 2); stream.writeBits(1, 1); stream.writeBits(3, Utils.getNpcMoveDirection(n.getNextWalkDirection())); stream.writeBits(3, Utils.getNpcMoveDirection(n.getNextRunDirection())); }
- Nightmare-scape Release