Files
2006Scape/2006Redone Server/src/com/rebotted/net/packets/impl/Walking.java
T
Daniel Ginovker 43a0f3e9f1 Gptaqbc new stuff 6 (#328)
* 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>
2019-12-26 00:33:18 -05:00

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;
}
}
}