mirror of
https://github.com/2006-Scape/2006Scape.git
synced 2026-07-03 00:31:51 +00:00
43a0f3e9f1
* Some stuff on weight Some stuff on weight * Cleaned some code related to trading and fixed most likely the issue where the player stays busy and cant trade till relog Cleaned some code related to trading and fixed most likely the issue where the player stays busy and cant trade till relog * removed a shitload of '== true' I did a search and replace but I manually checked the changes that were made so there shouldn't be any issue with that. * Fixed drop issue * Fixed duel arena, changed some chat message so they are all the same, changed Additem Fixed duel arena: > 98% completed duel (the winning duel sound is still missing) > Added forfeiting > Added checks to prevent tbing, teleothers, teleport and logout from duel > Remove the check for same IP to disable duel Item Assistant: > Changed the AddItem method so it now drops items on the ground if inventory is full Cleaned some stuff while I was at it... * Update ItemAssistant.java Oupsie * Resolving my issues * Allow walking during movement * Why won't commit work Co-authored-by: Gptaqbc <56596815+Gptaqbc@users.noreply.github.com>
258 lines
7.8 KiB
Java
258 lines
7.8 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.playerIsBusy()) {
|
|
player.playerIsBusy = false;
|
|
}
|
|
if (player.canChangeAppearance) { //|| c.performingAction) {
|
|
return;
|
|
}
|
|
if (player.getCannon().settingUp) {
|
|
return;
|
|
}
|
|
if (player.isTeleporting) {
|
|
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) {
|
|
return;
|
|
}
|
|
if (player.isFiremaking) {
|
|
player.isFiremaking = false;
|
|
}
|
|
if (player.stopPlayerPacket) {
|
|
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) {
|
|
player.gliderOpen = false;
|
|
}
|
|
if (player.isBanking) {
|
|
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.WildernessWarning && player.wildLevel > 0) {
|
|
player.resetWalkingQueue();
|
|
player.WildernessWarning = true;
|
|
player.getPacketSender().sendFrame126("WARNING!", 6940);
|
|
player.getPacketSender().showInterface(1908);
|
|
}
|
|
if (player.openDuel && player.duelStatus <= 3) {
|
|
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;
|
|
}
|
|
//
|
|
// if (player.clickToTele) {
|
|
// player.newWalkCmdSteps = (packetSize - 5) / 2;
|
|
// if (++player.newWalkCmdSteps > player.walkingQueueSize) {
|
|
// player.newWalkCmdSteps = 0;
|
|
// return;
|
|
// }
|
|
// player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0;
|
|
// int firstStepX, firstStepY;
|
|
// firstStepX = player.getInStream().readSignedWordBigEndianA();
|
|
// for (int i = 1; i < player.newWalkCmdSteps; i++) {
|
|
// player.getNewWalkCmdX()[i] = player.getInStream().readSignedByte();
|
|
// player.getNewWalkCmdY()[i] = player.getInStream().readSignedByte();
|
|
// }
|
|
// firstStepY = player.getInStream().readSignedWordBigEndian();
|
|
// player.setNewWalkCmdIsRunning(player.getInStream().readSignedByteC() == 1 && player.playerEnergy > 0);
|
|
// for (int i1 = 0; i1 < player.newWalkCmdSteps; i1++) {
|
|
// player.getPlayerAssistant().movePlayer(player.getNewWalkCmdX()[i1] + firstStepX, player.getNewWalkCmdY()[i1] + firstStepY, player.heightLevel);
|
|
// player.getNewWalkCmdX()[i1] += firstStepX;
|
|
// player.getNewWalkCmdY()[i1] += firstStepY;
|
|
// }
|
|
// }
|
|
// else {
|
|
// player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0;
|
|
// int steps = (packetSize - 5) / 2;
|
|
//
|
|
// int[][] path = new int[steps][2];
|
|
// int firstStepX = player.getInStream().readSignedWordBigEndianA();
|
|
// for (int i = 0; i < steps; i++) {
|
|
// path[i][0] = player.getInStream().readSignedByte();
|
|
// path[i][1] = player.getInStream().readSignedByte();
|
|
// }
|
|
// int firstStepY = player.getInStream().readSignedWordBigEndian();
|
|
// int x = firstStepX;
|
|
// int y = firstStepY;
|
|
// player.setNewWalkCmdIsRunning(player.isRunning2 && player.playerEnergy > 0);
|
|
// for (int i = 0; i < steps; i++) {
|
|
// path[i][0] += firstStepX;
|
|
// path[i][1] += firstStepY;
|
|
// x = path[i][0];
|
|
// y = path[i][1];
|
|
// }
|
|
// //System.out.println("Player has requested to walk to: "+x+","+y);
|
|
// player.getPlayerAssistant().playerWalk(x, y);
|
|
// }
|
|
// }
|
|
//}
|
|
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;
|
|
}
|
|
}
|
|
|
|
}
|