mirror of
https://github.com/2006-Scape/2006Scape.git
synced 2026-07-03 00:31:51 +00:00
This update resolves dginovker/2006rebotted#166
Added proper object size calculations. Removed old objectDistance code. Added current task support, allows easy creation of player tasks that cannot duplicate.
This commit is contained in:
Generated
-9
@@ -81,15 +81,6 @@
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/2006Redone file_server/assets/netty-3.6.6.Final.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
[2019/10/26] 13:49 michael dropped 1 chef's hat absX: 3250 absY: 3225
|
||||
[2019/10/26] 13:49 michael dropped 1 fire talisman absX: 3250 absY: 3225
|
||||
@@ -0,0 +1,2 @@
|
||||
[2019/10/26] 13:50 michael picked up fire talisman itemX: 3250, itemY: 3226
|
||||
[2019/10/26] 13:50 michael picked up chef's hat itemX: 3250, itemY: 3226
|
||||
@@ -48,8 +48,10 @@ public class CycleEventHandler {
|
||||
* @param event
|
||||
* @param cycles
|
||||
*/
|
||||
public void addEvent(int id, Object owner, CycleEvent event, int cycles) {
|
||||
events.add(new CycleEventContainer(id, owner, event, cycles));
|
||||
public CycleEventContainer addEvent(int id, Object owner, CycleEvent event, int cycles) {
|
||||
CycleEventContainer container = new CycleEventContainer(id, owner, event, cycles);
|
||||
events.add(container);
|
||||
return container;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -59,8 +61,10 @@ public class CycleEventHandler {
|
||||
* @param event
|
||||
* @param cycles
|
||||
*/
|
||||
public void addEvent(Object owner, CycleEvent event, int cycles) {
|
||||
events.add(new CycleEventContainer(-1, owner, event, cycles));
|
||||
public CycleEventContainer addEvent(Object owner, CycleEvent event, int cycles) {
|
||||
CycleEventContainer container = new CycleEventContainer(-1, owner, event, cycles);
|
||||
events.add(container);
|
||||
return container;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package redone.game.objects;
|
||||
|
||||
import redone.world.clip.ObjectDef;
|
||||
|
||||
public class Objects {
|
||||
|
||||
public long delay, oDelay;
|
||||
@@ -36,6 +38,33 @@ public class Objects {
|
||||
objectTicks = ticks;
|
||||
}
|
||||
|
||||
public int[] getObjectSize() {
|
||||
ObjectDef def = ObjectDef.getObjectDef(objectId);
|
||||
if (def == null)
|
||||
return new int[] {1, 1};
|
||||
int xLength;
|
||||
int yLength;
|
||||
if (objectFace != 1 && objectFace != 3) {
|
||||
xLength = def.xLength();
|
||||
yLength = def.yLength();
|
||||
} else {
|
||||
xLength = def.yLength();
|
||||
yLength = def.xLength();
|
||||
}
|
||||
|
||||
return new int[] {xLength, yLength};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Objects{" +
|
||||
"objectId=" + objectId +
|
||||
", objectX=" + objectX +
|
||||
", objectY=" + objectY +
|
||||
", objectHeight=" + objectHeight +
|
||||
'}';
|
||||
}
|
||||
|
||||
public int getObjectHeight() {
|
||||
return objectHeight;
|
||||
}
|
||||
|
||||
@@ -139,8 +139,7 @@ public class Client extends Player {
|
||||
private Mining mining = new Mining();
|
||||
private ChallengePlayer challengePlayer = new ChallengePlayer();
|
||||
private DwarfCannon dwarfCannon = new DwarfCannon(this);
|
||||
|
||||
|
||||
private CycleEventContainer currentTask;
|
||||
|
||||
public DwarfCannon getCannon() {
|
||||
return dwarfCannon;
|
||||
@@ -322,14 +321,6 @@ public class Client extends Player {
|
||||
return witchsPotion;
|
||||
}
|
||||
|
||||
public void setCurrentTask(Future<?> task) {
|
||||
currentTask = task;
|
||||
}
|
||||
|
||||
public Future<?> getCurrentTask() {
|
||||
return currentTask;
|
||||
}
|
||||
|
||||
public synchronized Stream getInStream() {
|
||||
return inStream;
|
||||
}
|
||||
@@ -397,7 +388,19 @@ public class Client extends Player {
|
||||
public Food getFood() {
|
||||
return food;
|
||||
}
|
||||
|
||||
|
||||
public void startCurrentTask(int ticksBetweenExecution, CycleEvent event) {
|
||||
endCurrentTask();
|
||||
currentTask = CycleEventHandler.getSingleton().addEvent(this, event, ticksBetweenExecution);
|
||||
}
|
||||
|
||||
public void endCurrentTask() {
|
||||
if (currentTask != null && currentTask.isRunning()) {
|
||||
currentTask.stop();
|
||||
currentTask = null;
|
||||
}
|
||||
}
|
||||
|
||||
private Map<Integer, TinterfaceText> interfaceText = new HashMap<Integer, TinterfaceText>();
|
||||
|
||||
public class TinterfaceText {
|
||||
@@ -427,7 +430,6 @@ public class Client extends Player {
|
||||
public int lowMemoryVersion = 0;
|
||||
public int timeOutCounter = 0;
|
||||
public int returnCode = 2;
|
||||
private Future<?> currentTask;
|
||||
|
||||
public Client(IoSession s, int _playerId) {
|
||||
super(_playerId);
|
||||
|
||||
@@ -401,7 +401,7 @@ public abstract class Player {
|
||||
totalDamageDealt, globalDamageDealt, oldNpcIndex, fightMode, attackTimer;
|
||||
public boolean magicFailed, oldMagicFailed;
|
||||
public int bowSpecShot, clickNpcType, clickObjectType, objectId, objectX,
|
||||
objectY, objectXOffset, objectYOffset, objectDistance;
|
||||
objectY;
|
||||
public int pItemX, pItemY, pItemId;
|
||||
public boolean isMoving, walkingToItem;
|
||||
public boolean isShopping, updateShop;
|
||||
|
||||
@@ -18,7 +18,7 @@ public class PlayersOnlineWebsite {
|
||||
|
||||
private static int count = 50;
|
||||
public static void addUpdatePlayersOnlineTask() {
|
||||
if (!password.equals("")) {
|
||||
if (password != null && !password.equals("")) {
|
||||
if (count == 0) {
|
||||
try {
|
||||
setWebsitePlayersOnline(PlayerHandler.getPlayerCount());
|
||||
|
||||
@@ -18,6 +18,7 @@ public class AttackPlayer implements PacketType {
|
||||
|
||||
@Override
|
||||
public void processPacket(Client c, int packetType, int packetSize) {
|
||||
c.endCurrentTask();
|
||||
c.playerIndex = 0;
|
||||
c.npcIndex = 0;
|
||||
switch (packetType) {
|
||||
|
||||
@@ -15,7 +15,7 @@ public class Bank10 implements PacketType {
|
||||
int interfaceId = player.getInStream().readUnsignedWordBigEndian();
|
||||
int removeId = player.getInStream().readUnsignedWordA();
|
||||
int removeSlot = player.getInStream().readUnsignedWordA();
|
||||
|
||||
player.endCurrentTask();
|
||||
switch (interfaceId) {
|
||||
|
||||
case 4233:
|
||||
|
||||
@@ -15,7 +15,7 @@ public class Bank5 implements PacketType {
|
||||
int interfaceId = player.getInStream().readSignedWordBigEndianA();
|
||||
int removeId = player.getInStream().readSignedWordBigEndianA();
|
||||
int removeSlot = player.getInStream().readSignedWordBigEndian();
|
||||
|
||||
player.endCurrentTask();
|
||||
switch (interfaceId) {
|
||||
|
||||
case 4233:
|
||||
|
||||
@@ -17,6 +17,7 @@ public class BankAll implements PacketType {
|
||||
int removeSlot = player.getInStream().readUnsignedWordA();
|
||||
int interfaceId = player.getInStream().readUnsignedWord();
|
||||
int removeId = player.getInStream().readUnsignedWordA();
|
||||
player.endCurrentTask();
|
||||
switch (interfaceId) {
|
||||
case 3900:
|
||||
player.getShopAssistant().buyItem(removeId, removeSlot, 10);
|
||||
|
||||
@@ -14,6 +14,7 @@ public class BankX1 implements PacketType {
|
||||
|
||||
@Override
|
||||
public void processPacket(Client c, int packetType, int packetSize) {
|
||||
c.endCurrentTask();
|
||||
if (packetType == 135) {
|
||||
c.xRemoveSlot = c.getInStream().readSignedWordBigEndian();
|
||||
c.xInterfaceId = c.getInStream().readUnsignedWordA();
|
||||
|
||||
@@ -11,6 +11,7 @@ public class BankX2 implements PacketType {
|
||||
|
||||
@Override
|
||||
public void processPacket(Client player, int packetType, int packetSize) {
|
||||
player.endCurrentTask();
|
||||
int Xamount = player.getInStream().readDWord();
|
||||
if (Xamount < 0) {
|
||||
Xamount = player.getItemAssistant().getItemAmount(player.xRemoveId);
|
||||
|
||||
@@ -81,6 +81,7 @@ public class ChangeAppearance implements PacketType {
|
||||
client.playerAppearance[11] = colors[3]; // feet colour
|
||||
client.playerAppearance[12] = colors[4]; // skin colour
|
||||
|
||||
client.endCurrentTask();
|
||||
client.getPlayerAssistant().removeAllWindows();
|
||||
client.getPlayerAssistant().requestUpdates();
|
||||
client.canChangeAppearance = false;
|
||||
|
||||
@@ -23,6 +23,7 @@ public class ClickItem implements PacketType {
|
||||
|
||||
@Override
|
||||
public void processPacket(Client player, int packetType, int packetSize) {
|
||||
player.endCurrentTask();
|
||||
player.getInStream().readSignedWordBigEndianA();
|
||||
int itemSlot = player.getInStream().readUnsignedWordA();
|
||||
int itemId = player.getInStream().readUnsignedWordBigEndian();
|
||||
|
||||
@@ -29,6 +29,7 @@ public class ClickNPC implements PacketType {
|
||||
client.getPlayerAssistant().resetFollow();
|
||||
client.getCombatAssistant().resetPlayerAttack();
|
||||
client.getPlayerAssistant().requestUpdates();
|
||||
client.endCurrentTask();
|
||||
switch (packetType) {
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,30 +11,109 @@ import redone.game.content.skills.core.Woodcutting;
|
||||
import redone.game.content.skills.thieving.Stalls;
|
||||
import redone.game.globalworldobjects.Doors;
|
||||
import redone.game.npcs.NpcHandler;
|
||||
import redone.game.objects.Objects;
|
||||
import redone.game.players.Client;
|
||||
import redone.net.packets.PacketType;
|
||||
import redone.util.Misc;
|
||||
import redone.world.clip.ObjectDef;
|
||||
import redone.world.clip.Region;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class ClickObject implements PacketType {
|
||||
|
||||
public static final int FIRST_CLICK = 132, SECOND_CLICK = 252,
|
||||
THIRD_CLICK = 70, FOURTH_CLICK = 234;
|
||||
|
||||
public void onObjectReached(Client player, Consumer<Client> consumer) {
|
||||
final int objectX = player.objectX;
|
||||
final int objectY = player.objectY;
|
||||
final int objectId = player.objectId;
|
||||
|
||||
Objects object = Region.getObject(objectId, objectX, objectY, player.heightLevel);
|
||||
if (object == null) {
|
||||
// Since most content is coded poorly we will have to assume the object is valid
|
||||
// but we won't know the face direction, so some objects will behave incorrectly
|
||||
// if the object size is not equal on both axes and the face
|
||||
// is not set to zero. The proper fix would be when an object is removed or added
|
||||
// they are added into the region configuration properly so we can retrieve
|
||||
// the object at runtime. This will suffice for now.
|
||||
object = new Objects(objectId, objectX, objectY, player.heightLevel, 0, 10, 0);
|
||||
}
|
||||
|
||||
int[] size = object.getObjectSize();
|
||||
|
||||
player.startCurrentTask(1, new CycleEvent() {
|
||||
@Override
|
||||
public void execute(CycleEventContainer container) {
|
||||
if (objectX != player.objectX || objectY != player.objectY || objectId != player.objectId) {
|
||||
container.stop();
|
||||
return;
|
||||
}
|
||||
|
||||
int x = player.absX;
|
||||
int y = player.absY;
|
||||
int xMin = objectX - 1;
|
||||
int xMax = xMin + size[0] + 1;
|
||||
int yMin = objectY - 1;
|
||||
int yMax = yMin + size[1] + 1;
|
||||
|
||||
if (x >= xMin && y >= yMin && x <= xMax && y <= yMax) {
|
||||
consumer.accept(player);
|
||||
container.stop();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processPacket(final Client player, int packetType,
|
||||
int packetSize) {
|
||||
public void processPacket(final Client player, int packetType, int packetSize) {
|
||||
player.clickObjectType = player.objectX = player.objectId = player.objectY = 0;
|
||||
player.objectYOffset = player.objectXOffset = 0;
|
||||
player.getPlayerAssistant().resetFollow();
|
||||
player.getCombatAssistant().resetPlayerAttack();
|
||||
player.getPlayerAssistant().requestUpdates();
|
||||
player.endCurrentTask();
|
||||
switch (packetType) {
|
||||
|
||||
case FIRST_CLICK:
|
||||
player.objectX = player.getInStream().readSignedWordBigEndianA();
|
||||
player.objectId = player.getInStream().readUnsignedWord();
|
||||
player.objectY = player.getInStream().readUnsignedWordA();
|
||||
player.objectDistance = 1;
|
||||
player.turnPlayerTo(player.objectX, player.objectY);
|
||||
case FIRST_CLICK:
|
||||
player.objectX = player.getInStream().readSignedWordBigEndianA();
|
||||
player.objectId = player.getInStream().readUnsignedWord();
|
||||
player.objectY = player.getInStream().readUnsignedWordA();
|
||||
onObjectReached(player, (p) -> completeObjectClick(p, 1));
|
||||
break;
|
||||
|
||||
case SECOND_CLICK:
|
||||
player.objectId = player.getInStream().readUnsignedWordBigEndianA();
|
||||
player.objectY = player.getInStream().readSignedWordBigEndian();
|
||||
player.objectX = player.getInStream().readUnsignedWordA();
|
||||
onObjectReached(player, (p) -> completeObjectClick(p, 2));
|
||||
break;
|
||||
|
||||
case THIRD_CLICK: // 'F'
|
||||
player.objectX = player.getInStream().readSignedWordBigEndian();
|
||||
player.objectY = player.getInStream().readUnsignedWord();
|
||||
player.objectId = player.getInStream().readUnsignedWordBigEndianA();
|
||||
onObjectReached(player, (p) -> completeObjectClick(p, 3));
|
||||
break;
|
||||
|
||||
|
||||
case FOURTH_CLICK:
|
||||
player.objectX = player.getInStream().readSignedWordBigEndianA();
|
||||
player.objectId = player.getInStream().readUnsignedWordA();
|
||||
player.objectY = player.getInStream().readUnsignedWordBigEndianA();
|
||||
onObjectReached(player, (p) -> completeObjectClick(p, 4));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void completeObjectClick(final Client player, int objectOption) {
|
||||
player.turnPlayerTo(player.objectX, player.objectY);
|
||||
|
||||
switch (objectOption) {
|
||||
case 1:
|
||||
if (player.playerRights == 3 || player.debugMode) {
|
||||
player.getActionSender().sendMessage("ObjectId: " + player.objectId + " ObjectX: " + player.objectX + " ObjectY: " + player.objectY + " Objectclick = 1, Xoff: " + (player.getX() - player.objectX) + " Yoff: " + (player.getY() - player.objectY));
|
||||
}
|
||||
@@ -43,7 +122,7 @@ public class ClickObject implements PacketType {
|
||||
//System.out.println("Door debug?");
|
||||
}
|
||||
//}
|
||||
|
||||
|
||||
/*if (client.performingAction) {
|
||||
return;
|
||||
}*/
|
||||
@@ -62,12 +141,6 @@ public class ClickObject implements PacketType {
|
||||
player.resetWalkingQueue();
|
||||
break;
|
||||
}
|
||||
if (Mining.rockExists(player.objectId)) {
|
||||
player.objectDistance = 5;
|
||||
}
|
||||
if (Woodcutting.playerTrees(player, player.objectId)) {
|
||||
player.objectDistance = 3;
|
||||
}
|
||||
switch (player.objectId) {
|
||||
case 1276:
|
||||
Woodcutting.startWoodcutting(player, 0, player.objectX, player.objectY, player.clickObjectType);
|
||||
@@ -132,7 +205,7 @@ public class ClickObject implements PacketType {
|
||||
case 1332:
|
||||
Woodcutting.startWoodcutting(player, 20, player.objectX, player.objectY, player.clickObjectType);
|
||||
break;
|
||||
|
||||
|
||||
case 1292:
|
||||
if (player.spiritTree == false && player.clickedTree == true) {
|
||||
player.getActionSender().sendMessage("You have already spawned a tree spirit.");
|
||||
@@ -152,7 +225,7 @@ public class ClickObject implements PacketType {
|
||||
case 1317:
|
||||
player.getPlayerAssistant().spiritTree();
|
||||
break;
|
||||
|
||||
|
||||
case 2164:
|
||||
case 2165:
|
||||
Server.trawler.fixNet(player);
|
||||
@@ -171,18 +244,11 @@ public class ClickObject implements PacketType {
|
||||
}
|
||||
CastleWarObjects.handleObject(player, player.objectId, player.objectX, player.objectY);
|
||||
break;
|
||||
|
||||
|
||||
case 2513:
|
||||
player.getRangersGuild().fireAtTarget();
|
||||
break;
|
||||
|
||||
case 12163:
|
||||
case 12164:
|
||||
case 12165:
|
||||
case 12166:
|
||||
player.objectDistance = 4;
|
||||
break;
|
||||
|
||||
|
||||
case 8930:
|
||||
player.fade(1975, 4409, 3);
|
||||
break;
|
||||
@@ -190,223 +256,6 @@ public class ClickObject implements PacketType {
|
||||
player.fade(2442, 10147, 0);
|
||||
break;
|
||||
|
||||
case 12982:
|
||||
if (player.absY == 3278) {
|
||||
player.objectYOffset = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 300:
|
||||
if (player.objectX == 3093 && player.objectY == 3509) {
|
||||
player.objectDistance = 2;
|
||||
}
|
||||
break;
|
||||
case 2479:
|
||||
case 2482:
|
||||
case 10596:
|
||||
case 10595:
|
||||
case 1725:
|
||||
case 2483:
|
||||
case 4568:
|
||||
case 2145:
|
||||
player.objectDistance = 3;
|
||||
break;
|
||||
|
||||
case 11993:
|
||||
case 245:
|
||||
case 246:
|
||||
case 273:
|
||||
case 272:
|
||||
case 8959:
|
||||
player.objectDistance = 1;
|
||||
break;
|
||||
|
||||
case 492:
|
||||
case 5100:
|
||||
case 12127:
|
||||
case 5083:
|
||||
case 4551:
|
||||
case 4558:
|
||||
case 2634:
|
||||
case 1742:
|
||||
case 2484:
|
||||
case 8966:
|
||||
case 993:
|
||||
case 2230:
|
||||
case 2265:
|
||||
case 4569:
|
||||
case 5098:
|
||||
case 5096:
|
||||
case 5094:
|
||||
case 3828:
|
||||
player.objectDistance = 2;
|
||||
break;
|
||||
|
||||
|
||||
case 2617:
|
||||
if (player.objectX == 3077 && player.objectY == 9768) {
|
||||
player.objectDistance = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2781:
|
||||
if (player.objectX == 3272 && player.objectY == 3185) {
|
||||
player.objectDistance = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2216:
|
||||
if (player.absX == 2880) {
|
||||
player.objectXOffset = 3;
|
||||
player.objectYOffset = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3760:
|
||||
if (player.objectX == 2892 && player.objectY == 10072) {
|
||||
player.objectYOffset = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 96:
|
||||
if (player.objectX == 2638 && player.objectY == 9763
|
||||
|| player.objectY == 9740) {
|
||||
player.objectXOffset = 3;
|
||||
player.objectYOffset = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2323:
|
||||
if (player.objectX == 2703 && player.objectY == 3205) {
|
||||
player.objectXOffset = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2322:
|
||||
if (player.objectX == 2705 && player.objectY == 3209) {
|
||||
player.objectXOffset = 4;
|
||||
}
|
||||
break;
|
||||
|
||||
case 190:
|
||||
player.objectDistance = 3;
|
||||
break;
|
||||
|
||||
case 154:
|
||||
player.objectDistance = 2;
|
||||
break;
|
||||
|
||||
case 10885:
|
||||
player.objectYOffset = -3;
|
||||
player.objectXOffset = 1;
|
||||
break;
|
||||
|
||||
case 10859:
|
||||
if (player.objectX == 3356 && player.objectY == 2847) {
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = -1;
|
||||
} else if (player.objectX == 3364 && player.objectY == 2833) {
|
||||
player.objectXOffset = 2;
|
||||
player.objectYOffset = 1;
|
||||
} else {
|
||||
player.objectYOffset = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 10860:
|
||||
if (player.objectX == 3372 && player.objectY == 2839) {
|
||||
player.objectYOffset = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 10886:
|
||||
player.objectXOffset = 2;
|
||||
player.objectYOffset = 1;
|
||||
break;
|
||||
|
||||
case 10862:
|
||||
if (player.objectX == 3362 && player.objectY == 2849) {
|
||||
player.objectXOffset = -3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 6552:
|
||||
if (player.absX == 3234) {
|
||||
player.objectXOffset = 2;
|
||||
player.objectYOffset = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2711:
|
||||
if (player.objectX == 2631 && player.objectY == 3322) {
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3044:
|
||||
if (player.objectX == 3078 && player.objectY == 9495) {
|
||||
player.objectDistance = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1737:
|
||||
if (player.objectX == 2662 && player.objectY == 3291) {
|
||||
player.objectYOffset = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 11737:
|
||||
player.objectYOffset = 1;
|
||||
break;
|
||||
|
||||
case 11724:
|
||||
if (player.absX == 2971) {
|
||||
player.objectXOffset = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 11729:
|
||||
if (player.absY == 3340) {
|
||||
player.objectYOffset = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 11732:
|
||||
if (player.objectX == 3034 && player.objectY == 3363) {
|
||||
player.objectXOffset = 2;
|
||||
} else if (player.objectX == 3048 && player.objectY == 3352) {
|
||||
player.objectYOffset = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 11735:
|
||||
if (player.absY == 3340 || player.absY == 3384) {
|
||||
player.objectYOffset = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 11725:
|
||||
if (player.absY == 3348) {
|
||||
player.objectYOffset = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 5097:
|
||||
if (player.objectX == 2635 && player.objectY == 9514) {
|
||||
player.objectXOffset = 2;
|
||||
player.objectYOffset = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1726:
|
||||
if (player.absX == 3285 && player.absY == 3492) {
|
||||
player.objectDistance = 1;
|
||||
} else {
|
||||
player.objectXOffset = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1568:
|
||||
if (player.objectX == 2399 && player.objectY == 3099) {
|
||||
player.getActionSender()
|
||||
@@ -531,8 +380,6 @@ public class ClickObject implements PacketType {
|
||||
if (player.objectX == 3058 && player.objectY == 3376) {
|
||||
player.getPlayerAssistant().movePlayer(3058, 9776, 0);
|
||||
} else if (player.objectX == 2603 && player.objectY == 3078) {
|
||||
player.objectXOffset = 3;
|
||||
player.objectYOffset = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -560,7 +407,7 @@ public class ClickObject implements PacketType {
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
|
||||
|
||||
}
|
||||
}, 1);
|
||||
}
|
||||
@@ -580,16 +427,12 @@ public class ClickObject implements PacketType {
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
|
||||
|
||||
}
|
||||
}, 1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 4407:
|
||||
player.objectXOffset = 2;
|
||||
break;
|
||||
|
||||
case 4387:
|
||||
CastleWars.addToWaitRoom(player, 1); // saradomin
|
||||
break;
|
||||
@@ -606,390 +449,11 @@ public class ClickObject implements PacketType {
|
||||
case 4390: // zammy waiting room portal
|
||||
CastleWars.leaveWaitingRoom(player);
|
||||
break;
|
||||
|
||||
/*
|
||||
* werewolf agility course stepping stone
|
||||
*/
|
||||
case 5138:
|
||||
case 5136:
|
||||
case 5141:
|
||||
case 5133:
|
||||
case 5152:
|
||||
player.objectDistance = 2;
|
||||
break;
|
||||
/*
|
||||
* agility pyramid gap
|
||||
*/
|
||||
case 10863:
|
||||
case 10857:
|
||||
player.objectDistance = 4;
|
||||
break;
|
||||
/*
|
||||
* rope swing in barbarian agility arena
|
||||
*/
|
||||
case 2282:
|
||||
player.objectDistance = 4;
|
||||
break;
|
||||
|
||||
case 2294:
|
||||
player.objectDistance = 4;
|
||||
break;
|
||||
|
||||
case 9295:
|
||||
if (player.absX == 3155) {
|
||||
player.objectDistance = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2491:
|
||||
if (player.objectX == 2926 && player.objectY == 4817) {
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = -3;
|
||||
}
|
||||
if (player.objectX == 2927 && player.objectY == 4814) {
|
||||
player.objectXOffset = -1;
|
||||
player.objectYOffset = 3;
|
||||
}
|
||||
if (player.objectX == 2893 && player.objectY == 4812) {
|
||||
player.objectXOffset = 2;
|
||||
player.objectYOffset = 5;
|
||||
}
|
||||
if (player.objectX == 2925 && player.objectY == 4848) {
|
||||
player.objectXOffset = 2;
|
||||
player.objectYOffset = 5;
|
||||
}
|
||||
if (player.objectX == 2891 && player.objectY == 4847) {
|
||||
player.objectXOffset = 2;
|
||||
player.objectYOffset = -1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2609:
|
||||
player.objectYOffset = 2;
|
||||
break;
|
||||
|
||||
case 4755:
|
||||
player.objectYOffset = 1;
|
||||
break;
|
||||
|
||||
case 7056:
|
||||
player.objectXOffset = 2;
|
||||
break;
|
||||
|
||||
case 26983:
|
||||
case 26982:
|
||||
case 24355:
|
||||
case 24354:
|
||||
player.objectYOffset = 1;
|
||||
player.objectDistance = 0;
|
||||
break;
|
||||
|
||||
case 1722:
|
||||
if (player.absX == 3159) {
|
||||
player.objectXOffset = 3;
|
||||
} else if (player.objectX == 3175 && player.objectY == 3420) {
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = 3;
|
||||
} else if (player.objectX == 3177 && player.objectY == 3401) {
|
||||
player.objectXOffset = 3;
|
||||
player.objectYOffset = 1;
|
||||
} else if (player.absY == 3298) {
|
||||
player.objectYOffset = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 11666:
|
||||
player.objectXOffset = -1;
|
||||
player.objectYOffset = -1;
|
||||
break;
|
||||
|
||||
case 1723:
|
||||
if (player.objectX == 3100 && player.objectY == 3266
|
||||
|| player.objectX == 2663 && player.objectY == 3321) {
|
||||
player.objectXOffset = 2;
|
||||
player.objectYOffset = 1;
|
||||
} else if (player.objectX == 3259 && player.objectY == 3447
|
||||
|| player.objectX == 2590 && player.objectY == 3090
|
||||
|| player.objectX == 3212 && player.objectY == 3474) {
|
||||
player.objectYOffset = 2;
|
||||
} else if (player.objectX == 2590 && player.objectY == 3085) {
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1738:
|
||||
if (player.objectX == 3204 && player.objectY == 3207 || player.objectX == 2648 && player.objectY == 3310) {
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = 2;
|
||||
} else if (player.objectX == 3204 && player.objectY == 3229) {
|
||||
player.objectXOffset = 2;
|
||||
} else if (player.objectX == 2839 && player.objectY == 3537 || player.objectX == 2673 && player.objectY == 3300 || player.objectX == 2728 && player.objectY == 3460) {
|
||||
player.objectXOffset = 2;
|
||||
player.objectYOffset = 1;
|
||||
} else if (player.absX == 2746) {
|
||||
player.objectXOffset = 2;
|
||||
} else if (player.objectX == 3010 && player.objectY == 3515 || player.objectX == 2648 && player.objectY == 3310) {
|
||||
player.objectDistance = 2;
|
||||
} else if (player.objectX == 2895 && player.objectY == 3513 || player.objectX == 3144 && player.objectY == 3447) {
|
||||
player.objectDistance = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1739:
|
||||
if (player.objectX == 3204 && player.objectY == 3207) {
|
||||
player.objectDistance = 3;
|
||||
} else if (player.objectX == 3204 && player.objectY == 3229) {
|
||||
player.objectXOffset = 2;
|
||||
} else if (player.objectX == 3204 && player.objectY == 3207) {
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1740:
|
||||
if (player.objectX == 3205 && player.objectY == 3208) {
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = 2;
|
||||
} else if (player.objectX == 3144 && player.objectY == 3448) {
|
||||
player.objectDistance = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 12536:
|
||||
player.objectXOffset = 2;
|
||||
player.objectYOffset = 1;
|
||||
break;
|
||||
|
||||
case 12537:
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = 2;
|
||||
break;
|
||||
|
||||
case 12538:
|
||||
player.objectYOffset = 1;
|
||||
break;
|
||||
|
||||
case 2287:
|
||||
if (player.absX == 2552 && player.absY == 3561) {
|
||||
player.objectYOffset = 2;
|
||||
} else if (player.absX == 2552 && player.absY == 3558) {
|
||||
player.objectYOffset = -1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1734:
|
||||
if (player.objectX == 2569 && player.objectY == 9522) {
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = 3;
|
||||
} else if (player.objectX == 3187 && player.objectY == 9833) {
|
||||
player.objectXOffset = 3;
|
||||
player.objectYOffset = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 4493:
|
||||
case 4494:
|
||||
case 4495:
|
||||
case 4496:
|
||||
player.objectDistance = 5;
|
||||
break;
|
||||
|
||||
case 6522:
|
||||
case 10229:
|
||||
player.objectDistance = 2;
|
||||
break;
|
||||
|
||||
case 4417:
|
||||
if (player.objectX == 2425 && player.objectY == 3074) {
|
||||
player.objectYOffset = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 4420:
|
||||
if (player.getX() >= 2383 && player.getX() <= 2385) {
|
||||
player.objectYOffset = 1;
|
||||
} else {
|
||||
player.objectYOffset = -2;
|
||||
}
|
||||
// fall through
|
||||
break;
|
||||
|
||||
case 2878:
|
||||
case 2879:
|
||||
player.objectDistance = 3;
|
||||
break;
|
||||
|
||||
case 2558:
|
||||
player.objectDistance = 0;
|
||||
if (player.absX > player.objectX && player.objectX == 3044) {
|
||||
player.objectXOffset = 1;
|
||||
}
|
||||
if (player.absY > player.objectY) {
|
||||
player.objectYOffset = 1;
|
||||
}
|
||||
if (player.absX < player.objectX && player.objectX == 3038) {
|
||||
player.objectXOffset = -1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 9356:
|
||||
player.objectDistance = 2;
|
||||
break;
|
||||
|
||||
case 1815:
|
||||
case 1816:
|
||||
case 5959:
|
||||
case 5960:
|
||||
player.objectDistance = 0;
|
||||
break;
|
||||
|
||||
case 9293:
|
||||
player.objectDistance = 2;
|
||||
break;
|
||||
|
||||
case 4418:
|
||||
if (player.objectX == 2374 && player.objectY == 3131) {
|
||||
player.objectYOffset = -2;
|
||||
} else if (player.objectX == 2369 && player.objectY == 3126) {
|
||||
player.objectXOffset = 2;
|
||||
} else if (player.objectX == 2380 && player.objectY == 3127) {
|
||||
player.objectYOffset = 2;
|
||||
} else if (player.objectX == 2369 && player.objectY == 3126) {
|
||||
player.objectXOffset = 2;
|
||||
} else if (player.objectX == 2374 && player.objectY == 3131) {
|
||||
player.objectYOffset = -2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 9706:
|
||||
player.objectDistance = 0;
|
||||
player.objectXOffset = 1;
|
||||
break;
|
||||
|
||||
case 9707:
|
||||
player.objectDistance = 0;
|
||||
player.objectYOffset = -1;
|
||||
break;
|
||||
|
||||
case 4419:
|
||||
if (player.getX() >= 2417 && player.getX() <= 2418) {
|
||||
player.objectYOffset = 3;
|
||||
} else {
|
||||
player.objectYOffset = -1;
|
||||
player.objectXOffset = -3;
|
||||
player.objectDistance = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 6707:
|
||||
player.objectYOffset = 3;
|
||||
break;
|
||||
|
||||
case 6823:
|
||||
player.objectDistance = 2;
|
||||
player.objectYOffset = 1;
|
||||
break;
|
||||
|
||||
case 6706:
|
||||
player.objectXOffset = 2;
|
||||
break;
|
||||
|
||||
case 6772:
|
||||
player.objectDistance = 2;
|
||||
player.objectYOffset = 1;
|
||||
break;
|
||||
|
||||
case 6705:
|
||||
player.objectYOffset = -1;
|
||||
break;
|
||||
|
||||
case 6822:
|
||||
player.objectDistance = 2;
|
||||
player.objectYOffset = 1;
|
||||
break;
|
||||
|
||||
case 6704:
|
||||
player.objectYOffset = -1;
|
||||
break;
|
||||
|
||||
case 6773:
|
||||
player.objectDistance = 2;
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = 1;
|
||||
break;
|
||||
|
||||
case 6703:
|
||||
player.objectXOffset = -1;
|
||||
break;
|
||||
|
||||
case 6771:
|
||||
player.objectDistance = 2;
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = 1;
|
||||
break;
|
||||
|
||||
case 6702:
|
||||
player.objectXOffset = -1;
|
||||
break;
|
||||
|
||||
case 6821:
|
||||
player.objectDistance = 2;
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = 1;
|
||||
break;
|
||||
|
||||
/*
|
||||
* case 1276: case 1278: case 1306: case 1307: case 1308: case 1309:
|
||||
* case 1281: case 1319: case 1332: case 1318: case 1330:
|
||||
* client.objectDistance = 3; break;
|
||||
*/
|
||||
|
||||
default:
|
||||
player.objectDistance = 1;
|
||||
player.objectXOffset = 0;
|
||||
player.objectYOffset = 0;
|
||||
break;
|
||||
}
|
||||
if (player.goodDistance(player.objectX + player.objectXOffset,
|
||||
player.objectY + player.objectYOffset, player.getX(),
|
||||
player.getY(), player.objectDistance)) {
|
||||
player.getObjects().firstClickObject(player.objectId,
|
||||
player.objectX, player.objectY);
|
||||
} else {
|
||||
player.clickObjectType = 1;
|
||||
CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() {
|
||||
@Override
|
||||
public void execute(CycleEventContainer container) {
|
||||
if (player.clickObjectType == 1
|
||||
&& player.goodDistance(player.objectX
|
||||
+ player.objectXOffset, player.objectY
|
||||
+ player.objectYOffset, player.getX(),
|
||||
player.getY(), player.objectDistance)) {
|
||||
player.getObjects().firstClickObject(
|
||||
player.objectId, player.objectX,
|
||||
player.objectY);
|
||||
container.stop();
|
||||
}
|
||||
if (player.clickObjectType > 1
|
||||
|| player.clickObjectType == 0) {
|
||||
container.stop();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
player.clickObjectType = 0;
|
||||
}
|
||||
}, 1);
|
||||
}
|
||||
player.getObjects().firstClickObject(player.objectId, player.objectX, player.objectY);
|
||||
break;
|
||||
|
||||
case SECOND_CLICK:
|
||||
player.objectId = player.getInStream().readUnsignedWordBigEndianA();
|
||||
player.objectY = player.getInStream().readSignedWordBigEndian();
|
||||
player.objectX = player.getInStream().readUnsignedWordA();
|
||||
player.objectDistance = 1;
|
||||
case 2:
|
||||
if (player.playerRights == 3) {
|
||||
player.getActionSender().sendMessage("ObjectId: " + player.objectId + " ObjectX: " + player.objectX + " ObjectY: " + player.objectY + " Objectclick = 2, Xoff: " + (player.getX() - player.objectX) + " Yoff: " + (player.getY() - player.objectY));
|
||||
}
|
||||
@@ -997,155 +461,28 @@ public class ClickObject implements PacketType {
|
||||
Stalls.attemptStall(player, player.objectId, player.objectX, player.objectX);
|
||||
return;
|
||||
}
|
||||
switch (player.objectId) {
|
||||
case 6162:
|
||||
case 6163:
|
||||
case 6164:
|
||||
case 6165:
|
||||
case 6166:
|
||||
case 9390:
|
||||
player.objectDistance = 2;
|
||||
break;
|
||||
|
||||
case 12537:
|
||||
player.objectDistance = 2;
|
||||
break;
|
||||
|
||||
case 2781:
|
||||
if (player.objectX == 3272 && player.objectY == 3185) {
|
||||
player.objectDistance = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1739:
|
||||
if (player.objectX == 3204 && player.objectY == 3207) {
|
||||
player.objectDistance = 3;
|
||||
} else if (player.objectX == 3204 && player.objectY == 3229) {
|
||||
player.objectXOffset = 2;
|
||||
} else if (player.objectX == 3204 && player.objectY == 3207) {
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
player.objectDistance = 1;
|
||||
player.objectXOffset = 0;
|
||||
player.objectYOffset = 0;
|
||||
break;
|
||||
}
|
||||
if (player.goodDistance(player.objectX + player.objectXOffset, player.objectY + player.objectYOffset, player.getX(), player.getY(), player.objectDistance)) {
|
||||
player.getObjects().secondClickObject(player.objectId, player.objectX, player.objectY);
|
||||
} else {
|
||||
player.clickObjectType = 2;
|
||||
CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() {
|
||||
@Override
|
||||
public void execute(CycleEventContainer container) {
|
||||
if (player.clickObjectType == 2 && player.goodDistance(player.objectX + player.objectXOffset, player.objectY + player.objectYOffset, player.getX(), player.getY(), player.objectDistance)) {
|
||||
player.getObjects().secondClickObject(player.objectId, player.objectX, player.objectY);
|
||||
container.stop();
|
||||
}
|
||||
if (player.clickObjectType != 2) {
|
||||
container.stop();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void stop() {
|
||||
player.clickObjectType = 0;
|
||||
}
|
||||
}, 1);
|
||||
}
|
||||
player.getObjects().secondClickObject(player.objectId, player.objectX, player.objectY);
|
||||
break;
|
||||
|
||||
case THIRD_CLICK: // 'F'
|
||||
player.objectX = player.getInStream().readSignedWordBigEndian();
|
||||
player.objectY = player.getInStream().readUnsignedWord();
|
||||
player.objectId = player.getInStream().readUnsignedWordBigEndianA();
|
||||
case 3: // 'F'
|
||||
if (player.playerRights == 3) {
|
||||
player.getActionSender().sendMessage("ObjectId: " + player.objectId + " ObjectX: " + player.objectX + " ObjectY: " + player.objectY + " Objectclick = 3, Xoff: " + (player.getX() - player.objectX) + " Yoff: " + (player.getY() - player.objectY));
|
||||
}
|
||||
switch (player.objectId) {
|
||||
case 12537:
|
||||
player.objectDistance = 2;
|
||||
break;
|
||||
case 1739:
|
||||
if (player.objectX == 3204 && player.objectY == 3207) {
|
||||
player.objectDistance = 3;
|
||||
} else if (player.objectX == 3204 && player.objectY == 3229) {
|
||||
player.objectXOffset = 2;
|
||||
} else if (player.objectX == 3204 && player.objectY == 3207) {
|
||||
player.objectXOffset = 1;
|
||||
player.objectYOffset = 2;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
player.objectDistance = 1;
|
||||
break;
|
||||
}
|
||||
player.objectXOffset = 0;
|
||||
player.objectYOffset = 0;
|
||||
if (player.goodDistance(player.objectX + player.objectXOffset, player.objectY + player.objectYOffset, player.getX(), player.getY(), player.objectDistance)) {
|
||||
player.getObjects().thirdClickObject(player.objectId, player.objectX, player.objectY);
|
||||
} else {
|
||||
player.clickObjectType = 3;
|
||||
CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() {
|
||||
@Override
|
||||
public void execute(CycleEventContainer container) {
|
||||
if (player.clickObjectType == 3 && player.goodDistance(player.objectX + player.objectXOffset, player.objectY + player.objectYOffset, player.getX(), player.getY(), player.objectDistance)) {
|
||||
player.getObjects().thirdClickObject(player.objectId, player.objectX, player.objectY);
|
||||
container.stop();
|
||||
}
|
||||
if (player.clickObjectType < 3) {
|
||||
container.stop();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
player.clickObjectType = 0;
|
||||
}
|
||||
}, 1);
|
||||
}
|
||||
player.getObjects().thirdClickObject(player.objectId, player.objectX, player.objectY);
|
||||
break;
|
||||
|
||||
|
||||
case FOURTH_CLICK:
|
||||
player.objectX = player.getInStream().readSignedWordBigEndianA();
|
||||
player.objectId = player.getInStream().readUnsignedWordA();
|
||||
player.objectY = player.getInStream().readUnsignedWordBigEndianA();
|
||||
case 4:
|
||||
if (player.playerRights == 3) {
|
||||
player.getActionSender().sendMessage("ObjectId: " + player.objectId + " ObjectX: " + player.objectX + " ObjectY: " + player.objectY + " Objectclick = 4, Xoff: " + (player.getX() - player.objectX) + " Yoff: " + (player.getY() - player.objectY));
|
||||
}
|
||||
switch (player.objectId) {
|
||||
default:
|
||||
player.objectDistance = 1;
|
||||
break;
|
||||
}
|
||||
player.objectXOffset = 0;
|
||||
player.objectYOffset = 0;
|
||||
if (player.goodDistance(player.objectX + player.objectXOffset, player.objectY + player.objectYOffset, player.getX(), player.getY(), player.objectDistance)) {
|
||||
player.getObjects().fourthClickObject(player.objectId, player.objectX, player.objectY);
|
||||
} else {
|
||||
player.clickObjectType = 4;
|
||||
CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() {
|
||||
@Override
|
||||
public void execute(CycleEventContainer container) {
|
||||
if (player.clickObjectType == 4 && player.goodDistance(player.objectX + player.objectXOffset, player.objectY + player.objectYOffset, player.getX(), player.getY(), player.objectDistance)) {
|
||||
player.getObjects().fourthClickObject(player.objectId, player.objectX, player.objectY);
|
||||
container.stop();
|
||||
}
|
||||
if (player.clickObjectType < 4) {
|
||||
container.stop();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
player.clickObjectType = 0;
|
||||
}
|
||||
}, 1);
|
||||
}
|
||||
player.getObjects().fourthClickObject(player.objectId, player.objectX, player.objectY);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -66,6 +66,9 @@ public class DropItem implements PacketType {
|
||||
"You can't drop items on tutorial island!");
|
||||
return;
|
||||
}
|
||||
|
||||
player.endCurrentTask();
|
||||
|
||||
switch (itemId) {
|
||||
case 1560:
|
||||
if (!player.hasNpc) {
|
||||
|
||||
@@ -31,5 +31,6 @@ public class FollowPlayer implements PacketType {
|
||||
c.usingRangeWeapon = false;
|
||||
c.followDistance = 1;
|
||||
c.followId = followPlayer;
|
||||
c.endCurrentTask();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,9 @@ public class ItemClick2 implements PacketType {
|
||||
if (!c.getItemAssistant().playerHasItem(itemId, 1)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
c.endCurrentTask();
|
||||
|
||||
if (HandleEmpty.canEmpty(c, itemId)) {
|
||||
HandleEmpty.handleEmptyItem(c, itemId, HandleEmpty.filledToEmpty(c, itemId));
|
||||
return;
|
||||
|
||||
@@ -18,6 +18,7 @@ public class ItemClick2OnGroundItem implements PacketType {
|
||||
c.getActionSender().sendMessage("You can't do that there!");
|
||||
return;
|
||||
}
|
||||
c.endCurrentTask();
|
||||
for (LogData l : LogData.values()) {
|
||||
if (itemId == l.getLogId()) {
|
||||
Firemaking.attemptFire(c, 590, itemId, itemX, itemY, true);
|
||||
|
||||
@@ -29,6 +29,9 @@ public class ItemClick3 implements PacketType {
|
||||
if (player.duelStatus > 0 && player.duelStatus < 5 || player.tradeStatus == 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
player.endCurrentTask();
|
||||
|
||||
switch (itemId) {
|
||||
|
||||
case 2552:
|
||||
|
||||
@@ -23,6 +23,8 @@ public class ItemOnGroundItem implements PacketType {
|
||||
return;
|
||||
}
|
||||
|
||||
player.endCurrentTask();
|
||||
|
||||
switch (itemUsed) {
|
||||
case 590:
|
||||
case 7331:
|
||||
|
||||
@@ -15,6 +15,7 @@ public class ItemOnItem implements PacketType {
|
||||
if (!player.getItemAssistant().playerHasItem(useWith, 1, usedWithSlot)|| !player.getItemAssistant().playerHasItem(itemUsed, 1, itemUsedSlot)) {
|
||||
return;
|
||||
}
|
||||
player.endCurrentTask();
|
||||
UseItem.ItemonItem(player, itemUsed, useWith);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ public class ItemOnNpc implements PacketType {
|
||||
final int slot = player.getInStream().readSignedWordBigEndian();
|
||||
final int npcId = NpcHandler.npcs[i].npcType;
|
||||
SkillHandler.resetItemOnNpc(player);
|
||||
player.endCurrentTask();
|
||||
if (player.playerRights == 3) {
|
||||
player.getActionSender().sendMessage("Item id: " + itemId + " slot: " + slot + " i: " + i);
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ public class ItemOnObject implements PacketType {
|
||||
player.turnPlayerTo(objectX, objectY);
|
||||
player.objectX = objectX;
|
||||
player.objectY = objectY;
|
||||
player.endCurrentTask();
|
||||
if (!player.getItemAssistant().playerHasItem(itemId, 1)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ public class ItemOnPlayer implements PacketType {
|
||||
public void processPacket(Client c, int packetType, int packetSize) {
|
||||
int playerId = c.inStream.readUnsignedWord();
|
||||
int itemId = c.playerItems[c.inStream.readSignedWordBigEndian()] - 1;
|
||||
c.endCurrentTask();
|
||||
switch (itemId) {
|
||||
|
||||
case 962:
|
||||
|
||||
@@ -26,6 +26,7 @@ public class MagicOnFloorItems implements PacketType {
|
||||
return;
|
||||
}
|
||||
c.usingMagic = true;
|
||||
c.endCurrentTask();
|
||||
if (!c.getCombatAssistant().checkMagicReqs(51)) {
|
||||
c.stopMovement();
|
||||
return;
|
||||
|
||||
@@ -14,6 +14,7 @@ public class MagicOnItems implements PacketType {
|
||||
int itemId = player.getInStream().readSignedWordA();
|
||||
player.getInStream().readSignedWord();
|
||||
int spellId = player.getInStream().readSignedWordA();
|
||||
player.endCurrentTask();
|
||||
if(!player.getItemAssistant().playerHasItem(itemId, 1, slot)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -28,5 +28,6 @@ public class MoveItems implements PacketType {
|
||||
return;
|
||||
}
|
||||
c.getItemAssistant().moveItems(from, to, interfaceId, insertMode);
|
||||
c.endCurrentTask();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ public class PickupItem implements PacketType {
|
||||
return;
|
||||
}
|
||||
player.getCombatAssistant().resetPlayerAttack();
|
||||
player.endCurrentTask();
|
||||
if (player.stopPlayerPacket) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -23,6 +23,9 @@ public class RemoveItem implements PacketType {
|
||||
if (!RareProtection.removeItem(c, removeId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
c.endCurrentTask();
|
||||
|
||||
switch (interfaceId) {
|
||||
|
||||
case 4233:
|
||||
|
||||
@@ -14,6 +14,7 @@ public class Trade implements PacketType {
|
||||
public void processPacket(Client c, int packetType, int packetSize) {
|
||||
int tradeId = c.getInStream().readSignedWordBigEndian();
|
||||
c.getPlayerAssistant().resetFollow();
|
||||
c.endCurrentTask();
|
||||
if (c.disconnected) {
|
||||
c.tradeStatus = 0;
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ public class Walking implements PacketType {
|
||||
@Override
|
||||
public void processPacket(Client player, int packetType, int packetSize) {
|
||||
player.getDueling().checkDuelWalk();
|
||||
|
||||
if (player.canChangeAppearance) { //|| c.performingAction) {
|
||||
return;
|
||||
}
|
||||
@@ -155,6 +156,9 @@ public class Walking implements PacketType {
|
||||
if (player.respawnTimer > 3) {
|
||||
return;
|
||||
}
|
||||
|
||||
player.endCurrentTask();
|
||||
|
||||
if (packetType == 248) {
|
||||
packetSize -= 14;
|
||||
}
|
||||
|
||||
@@ -29,6 +29,9 @@ public class WearItem implements PacketType {
|
||||
if (player.playerIndex > 0 || player.npcIndex > 0) {
|
||||
player.getCombatAssistant().resetPlayerAttack();
|
||||
}
|
||||
|
||||
player.endCurrentTask();
|
||||
|
||||
if (player.wearId >= 5509 && player.wearId <= 5515) {
|
||||
int pouch = -1;
|
||||
int a = player.wearId;
|
||||
|
||||
@@ -28,7 +28,21 @@ public class Region {
|
||||
public static boolean blockedShot(int x, int y, int z) {
|
||||
return (getClipping(x, y, z) & 0x20000) == 0;
|
||||
}
|
||||
|
||||
|
||||
public static Objects getObject(int id, int x, int y, int z) {
|
||||
Region r = getRegion(x, y);
|
||||
if (r == null)
|
||||
return null;
|
||||
for (Objects o : r.realObjects) {
|
||||
if (o.objectId == id) {
|
||||
if (o.objectX == x && o.objectY == y && o.objectHeight == z) {
|
||||
return o;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean objectExists(int id, int x, int y, int z) {
|
||||
Region r = getRegion(x, y);
|
||||
if (r == null)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user