mirror of
https://github.com/2006-Scape/2006Scape.git
synced 2026-07-05 16:49:06 +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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user