Fixed random trees everywhere (#209)

* Fixed random trees everywhere

* Npcs will no longer face southwest every time they take a step.
Added a fixed for walking forever after teleporting/region change (only tested that walking still works, never tested if the fix would resolve the issue).
You can now only click an object once per tick.
This commit is contained in:
mikeysasse2
2019-11-24 12:48:02 -06:00
committed by Daniel Ginovker
parent 8393c0c928
commit 3650170a84
17 changed files with 31 additions and 39 deletions
@@ -1 +1,4 @@
[2019/10/27] 16:16 michael used command: bank
[2019/11/24] 09:27 michael used command: bank
[2019/11/24] 09:31 michael used command: bank
[2019/11/24] 09:38 michael used command: bank
@@ -553,33 +553,6 @@ public class NpcHandler {
}
}
if (npcs[i].walkingType >= 0) {
switch (npcs[i].walkingType) {
case 5:
npcs[i].turnNpc(npcs[i].absX - 1, npcs[i].absY);
break;
case 4:
npcs[i].turnNpc(npcs[i].absX + 1, npcs[i].absY);
break;
case 3:
npcs[i].turnNpc(npcs[i].absX, npcs[i].absY - 1);
break;
case 2:
npcs[i].turnNpc(npcs[i].absX, npcs[i].absY + 1);
break;
default:
if (npcs[i].walkingType >= 0) {
npcs[i].turnNpc(npcs[i].absX, npcs[i].absY);
}
break;
}
}
if (npcs[i].isDead) {
if (npcs[i].actionTimer == 0 && npcs[i].applyDead == false
&& npcs[i].needRespawn == false) {
@@ -42,7 +42,7 @@ public abstract class Player {
godSpellDelay, singleCombatDelay, singleCombatDelay2, reduceStat,
restoreStatsDelay, logoutDelay, buryDelay, foodDelay, potDelay,
doorDelay, doubleDoorDelay, buySlayerTimer, lastIncrease,
boneDelay, botAttempts, leverDelay = 0, farmTime, searchObjectDelay = 0;
boneDelay, botAttempts, leverDelay = 0, farmTime, searchObjectDelay = 0, clickDelay = 0;
private Npc specialTarget = null;
@@ -26,6 +26,10 @@ public class ClickObject implements PacketType {
THIRD_CLICK = 70, FOURTH_CLICK = 234;
public void onObjectReached(Client player, Consumer<Client> consumer) {
if (System.currentTimeMillis() - player.clickDelay < 300)
return;
player.clickDelay = System.currentTimeMillis();
final int objectX = player.objectX;
final int objectY = player.objectY;
final int objectId = player.objectId;
@@ -170,21 +170,33 @@ public class Walking implements PacketType {
}
player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0;
int firstStepX, firstStepY;
if (player.clickToTele)
int firstStepX, firstStepY;
int realX = 0;
int realY = 0;
if (player.clickToTele) {
firstStepX = player.getInStream().readSignedWordBigEndianA();
else
firstStepX = player.getInStream().readSignedWordBigEndianA()-player.getMapRegionX()*8;
} else {
realX = player.getInStream().readSignedWordBigEndianA();
firstStepX = realX - player.getMapRegionX() * 8;
}
for (int i = 1; i < player.newWalkCmdSteps; i++) {
player.getNewWalkCmdX()[i] = player.getInStream().readSignedByte();
player.getNewWalkCmdY()[i] = player.getInStream().readSignedByte();
}
if (player.clickToTele)
if (player.clickToTele) {
firstStepY = player.getInStream().readSignedWordBigEndian();
else
firstStepY = player.getInStream().readSignedWordBigEndian()-player.getMapRegionY()*8;
} else {
realY = player.getInStream().readSignedWordBigEndian();
firstStepY = realY - player.getMapRegionY() * 8;
}
if (player.distanceToPoint(realX, realY) > 30) {
return;
}
player.setNewWalkCmdIsRunning(player.getInStream().readSignedByteC() == 1 && player.playerEnergy > 0);
for (int i1 = 0; i1 < player.newWalkCmdSteps; i1++) {
if (player.clickToTele)
@@ -146,8 +146,9 @@ public class ObjectManager {
for (Player player : PlayerHandler.players) {
if (player != null) {
Client c = (Client) player;
c.getActionSender().object(o.newId, o.objectX, o.objectY,
o.face, o.type);
if (loadForPlayer(o, c)) {
c.getActionSender().object(o.newId, o.objectX, o.objectY, o.face, o.type);
}
}
}
}
@@ -157,8 +158,7 @@ public class ObjectManager {
if (player != null) {
Client c = (Client) player;
if (c.distanceToPoint(o.objectX, o.objectY) <= 60) {
c.getActionSender().object(o.objectId, o.objectX,
o.objectY, o.face, o.type);
c.getActionSender().object(o.objectId, o.objectX, o.objectY, o.face, o.type);
}
}
}