mirror of
https://github.com/2006-Scape/2006Scape.git
synced 2026-07-03 00:31:51 +00:00
9ed0acfb04
* Make ::update automatically restart server as well * Added toggeable snow(only activable in december), added walking queue reset when using objects changing Z, made it so the wildy warning interface is appearing when entering in wildy For some reason the resetWalkingQueue added to the execute method wasnt doing anything so I manually added it to every interaction possible... LOL Wildy warning interface was appearing when clicking with player in wildy. I made it so it appears straight when walking 1 tile in wildy zone. Wont appears if player logs in wildy as he already knows this shit.
202 lines
5.7 KiB
Java
202 lines
5.7 KiB
Java
package com.rebotted.net.packets.impl;
|
|
|
|
import com.rebotted.game.content.skills.SkillHandler;
|
|
import com.rebotted.game.content.skills.cooking.Cooking;
|
|
import com.rebotted.game.content.skills.core.Fishing;
|
|
import com.rebotted.game.content.skills.smithing.Smelting;
|
|
import com.rebotted.game.players.Client;
|
|
import com.rebotted.game.players.Player;
|
|
import com.rebotted.game.players.PlayerHandler;
|
|
import com.rebotted.net.packets.PacketType;
|
|
|
|
/**
|
|
* Walking packet
|
|
**/
|
|
public class Walking implements PacketType {
|
|
|
|
@Override
|
|
public void processPacket(Player player, int packetType, int packetSize) {
|
|
player.getDueling().checkDuelWalk();
|
|
|
|
if (player.canChangeAppearance) { //|| c.performingAction) {
|
|
return;
|
|
}
|
|
if (player.getCannon().settingUp) {
|
|
return;
|
|
}
|
|
if (player.isTeleporting == true) {
|
|
player.isTeleporting = false;
|
|
}
|
|
if (player.playerSkilling[10]) {// fishing
|
|
Fishing.resetFishing(player);
|
|
}
|
|
if (player.playerIsCooking) {// cooking
|
|
Cooking.resetCooking(player);
|
|
}
|
|
if (player.playerSkilling[13]) {// smelting
|
|
Smelting.resetSmelting(player);
|
|
}
|
|
if (player.playerStun) {
|
|
return;
|
|
}
|
|
if (player.stopPlayer == true) {
|
|
return;
|
|
}
|
|
if (player.isFiremaking == true) {
|
|
player.isFiremaking = false;
|
|
}
|
|
if (player.stopPlayerPacket == true) {
|
|
return;
|
|
}
|
|
if (player.inTrade) {
|
|
player.inTrade = false;
|
|
player.getTrading().declineTrade(true);
|
|
}
|
|
if (player.tutorialProgress > 35 && !player.isSmithing) {
|
|
player.getPacketSender().closeAllWindows();
|
|
} else if (player.tutorialProgress < 36 && player.isSmithing) {
|
|
player.getPacketSender().closeAllWindows();
|
|
player.isSmithing = false;
|
|
}
|
|
SkillHandler.resetSkills(player);
|
|
if (player.closeTutorialInterface == false && player.tutorialProgress == 36) {
|
|
player.getDialogueHandler().sendDialogues(3116, player.npcType);
|
|
}
|
|
if (player.gliderOpen == true) {
|
|
player.gliderOpen = false;
|
|
}
|
|
if (player.isBanking == true) {
|
|
player.isBanking = false;
|
|
}
|
|
if (player.canWalkTutorial == false && player.tutorialProgress < 36) {
|
|
return;
|
|
}
|
|
if (player.followId > 0 || player.followId2 > 0) {
|
|
player.getPlayerAssistant().resetFollow();
|
|
}
|
|
if (player.getPlayerAction().checkWalking() == false) {
|
|
return;
|
|
}
|
|
if (packetType == 248 || packetType == 164) {
|
|
player.faceUpdate(0);
|
|
player.npcIndex = 0;
|
|
player.playerIndex = 0;
|
|
if (player.clickObjectType > 0) {
|
|
player.clickObjectType = 0;
|
|
} else if (player.clickNpcType > 0) {
|
|
player.clickNpcType = 0;
|
|
}
|
|
}
|
|
|
|
if (player.duelRule[1] && player.duelStatus == 5) {
|
|
if (PlayerHandler.players[player.duelingWith] != null) {
|
|
if (!player.goodDistance(player.getX(), player.getY(),
|
|
PlayerHandler.players[player.duelingWith].getX(),
|
|
PlayerHandler.players[player.duelingWith].getY(), 1)
|
|
|| player.attackTimer == 0) {
|
|
player.getPacketSender().sendMessage(
|
|
"Walking has been disabled in this duel!");
|
|
}
|
|
}
|
|
player.playerIndex = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
if (player.freezeTimer > 0) {
|
|
if (PlayerHandler.players[player.playerIndex] != null) {
|
|
if (player.goodDistance(player.getX(), player.getY(),
|
|
PlayerHandler.players[player.playerIndex].getX(),
|
|
PlayerHandler.players[player.playerIndex].getY(), 1)
|
|
&& packetType != 98) {
|
|
player.playerIndex = 0;
|
|
return;
|
|
}
|
|
}
|
|
if (packetType != 98) {
|
|
player.getPacketSender().sendMessage("A magical force stops you from moving.");
|
|
player.playerIndex = 0;
|
|
}
|
|
return;
|
|
}
|
|
|
|
if (System.currentTimeMillis() - player.lastSpear < 4000) {
|
|
player.getPacketSender().sendMessage("You have been stunned.");
|
|
player.playerIndex = 0;
|
|
return;
|
|
}
|
|
|
|
if (packetType == 98) {
|
|
player.mageAllowed = true;
|
|
}
|
|
|
|
if(player.openDuel) {
|
|
Client o = (Client) PlayerHandler.players[player.duelingWith];
|
|
if(o != null) {
|
|
o.getDueling().declineDuel();
|
|
}
|
|
player.getDueling().declineDuel();
|
|
}
|
|
if((player.duelStatus >= 1 && player.duelStatus <= 4) || player.duelStatus == 6) {
|
|
if(player.duelStatus == 6) {
|
|
player.getDueling().claimStakedItems();
|
|
}
|
|
return;
|
|
}
|
|
|
|
if (player.respawnTimer > 3) {
|
|
return;
|
|
}
|
|
|
|
player.endCurrentTask();
|
|
|
|
if (packetType == 248) {
|
|
packetSize -= 14;
|
|
}
|
|
player.newWalkCmdSteps = (packetSize - 5) / 2;
|
|
if (++player.newWalkCmdSteps > player.walkingQueueSize) {
|
|
player.newWalkCmdSteps = 0;
|
|
return;
|
|
}
|
|
|
|
player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0;
|
|
|
|
int firstStepX, firstStepY;
|
|
int realX = 0;
|
|
int realY = 0;
|
|
|
|
if (player.clickToTele) {
|
|
firstStepX = player.getInStream().readSignedWordBigEndianA();
|
|
} 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) {
|
|
firstStepY = player.getInStream().readSignedWordBigEndian();
|
|
} else {
|
|
realY = player.getInStream().readSignedWordBigEndian();
|
|
firstStepY = realY - player.getMapRegionY() * 8;
|
|
}
|
|
|
|
if (!player.clickToTele) {
|
|
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)
|
|
player.getPlayerAssistant().movePlayer(player.getNewWalkCmdX()[i1] + firstStepX, player.getNewWalkCmdY()[i1] + firstStepY, player.heightLevel);
|
|
player.getNewWalkCmdX()[i1] += firstStepX;
|
|
player.getNewWalkCmdY()[i1] += firstStepY;
|
|
}
|
|
}
|
|
|
|
}
|