Implement Party Room, A bunch of client side changes, Other stuff (#503)

* Fixup Discord links

* Fix required level to chop Dramen tree

* More Discord link fixes

* Show bots as (store)

* Fixup port

move to port 8080 as used by file server

* Fixup report handler

* Some client changes

* minor changes

Show mod status

* Show item value on ground

* Mark stores and players differently on mini map

* Some tidy up

* default to world 1

* Update trade with text

* revert nodeID changes

* Update RS Guide name

* Remove some command aliases

* Log bots and players differently

* Fixup

* minor changes

* Fixup colors

* Update RSInterface.java

* Settings for controlling options

* Add memory command

* Update server skill magic numbers

* Update server skill magic numbers

* Update colors for ground item text

* Update .gitignore

* Update player health value more often

* Add in game item/NPC/object search

* Item amounts and value displayed

* Update examine text

* Start with volume off

* Fixup tab 7 still showing with other interfaces

* Fixup search

* Fixup entering numbers after letter in amounts

* minor fixup

* fix indentation

* change type of value

* Fixup values shown

* Fix when clicking while tab 7 open

* Fixup negative amounts

* Update some method names

* Fixup method name

* tidy up method values

* Initial move for overlays

* Update more method names, variables

* Update debug menu

* Update experience info area

* Update Signlink.java

* more refactoring/deob

* Tidy up

* refresh skills

* Update method name, debug display

* fixup

* Show wrench icon on custom settings tab

* alignment

* Modify zoom

* Use smaller numbers for exp/h

* Update interface command

* tidy up

* Fixup tele location

* Fixup if interface doesn't exist

* Add some interface options

* Update checks

* Open bank interface for item search

TODO:
change title
maybe not display in chat
change options for items?
change command to searchitem - open the bank interface, open a text input interface

* re-fix

* Show open interface ID

* Update bank string shown

* Update search function

* Scroll zooming

* Only fill chat with search if not searching for an item

* add comments

* Change system update message

* Remove fps command

* Increase draw distance

* fixup

* Draw distance option

* [Party Room] Fix party room stairs

* Add new free slots method to check for stackable items counting as a free slot

* [Party Room] Deposit/Withdraw items all working

* [Party Room] Fully working

* [Party Room] Don't spawn balloons on the table

Players cannot pickup the items

* Fixup boundary

* Drop items in random amounts up to 4 stacks

* Update swampy boat to work

* Minor fixup

* Update Game.java

* Move player name up slightly

* Update some naming

* Tidy up

* Add ectoplasm agility shortcuts

* Update ObjectsActions.java

* Ectofuntus stuff

* fixup

* Ectofuntus bone grinder get status

* auto worship

* Allow claiming ecto-tokens

* change variable

* fixup

* Make use of GameConstants.WORLD

* Randomize bot passwords

* Don't show player shops as online

* Update opening oysters

* Update GemCutting.java

* Dragontooth island transport

* Ectofuntus stuff

* More constants

* Bill teach travel to Mos Le'Harmless and back

Also able to explore the whole ship

* Use better looking buttons

* Update .gitignore
This commit is contained in:
Danial
2021-09-29 11:40:34 +13:00
committed by GitHub
parent d30e833dd8
commit 8589277ece
51 changed files with 1756 additions and 717 deletions
@@ -30,29 +30,48 @@ public class PacketSender {
}
public PacketSender sendUpdateItems(int frame, Item[] items) {
player.getOutStream().createFrameVarSizeWord(53);
player.getOutStream().writeWord(frame);
player.getOutStream().writeWord(items.length);
Item[] var6 = items;
if (player.getOutStream() != null) {
player.getOutStream().createFrameVarSizeWord(53);
player.getOutStream().writeWord(frame);
player.getOutStream().writeWord(items.length);
}
for (int i = 0; i < items.length; i++) {
Item item = var6[i];
if (item == null) {
player.getOutStream().writeByte(0);
player.getOutStream().writeWordBigEndianA(0);
} else {
Item item = items[i];
if (player.getOutStream() != null) {
if (item.getCount() > 254) {
player.getOutStream().writeByte(255);
player.getOutStream().writeDWord_v2(item.getCount());
} else {
player.getOutStream().writeByte(item.getCount());
}
player.getOutStream().writeWordBigEndianA(item.getId());
}
int id = item.getId() + 1;
if (item.getCount() < 1) {
id = 0;
}
if (id > GameConstants.ITEM_LIMIT || id < 0) {
id = GameConstants.ITEM_LIMIT;
}
if (player.getOutStream() != null) {
player.getOutStream().writeWordBigEndianA(id);
}
}
if (player.getOutStream() != null) {
player.getOutStream().endFrameVarSizeWord();
player.flushOutStream();
}
return this;
}
public PacketSender sendUpdateItems(int frame, int[] itemIDs, int[] itemAmounts) {
Item[] items = new Item[itemIDs.length];
for(int i = 0; i < itemIDs.length; i++) {
items[i] = new Item(itemIDs[i], itemAmounts[i]);
}
return sendUpdateItems(frame, items);
}
public PacketSender loginPlayer() {
player.getPlayerAssistant().loginScreen();
@@ -101,7 +120,7 @@ public class PacketSender {
player.getPacketSender().sendMessage("Welcome to @blu@" + GameConstants.SERVER_NAME + "@bla@ - we are currently in Server Stage v@blu@" + GameConstants.TEST_VERSION + "@bla@.");
player.getPacketSender().sendMessage("@red@Did you know?@bla@ We're open source! Pull requests are welcome");
player.getPacketSender().sendMessage("Source code at github.com/2006-Scape/2006Scape");
player.getPacketSender().sendMessage("Join our Discord: discord.gg/4zrA2Wy");
player.getPacketSender().sendMessage("Join our Discord: https://discord.gg/hZ6VfWG");
/*if (!hasBankpin) { //Kind of annoying. Maybe add Random % 10 or something.
getActionSender().sendMessage("You do not have a bank pin it is highly recommended you set one.");
}*/
@@ -146,7 +165,7 @@ public class PacketSender {
player.getPacketSender().sendFrame107(); // reset screen
player.getPacketSender().setChatOptions(0, 0, 0); // reset private messaging options
player.correctCoordinates();
player.getPacketSender().showOption(4, 0, "Trade With", 3);
player.getPacketSender().showOption(4, 0, "Trade with", 3);
player.getPacketSender().showOption(5, 0, "Follow", 4);
player.getItemAssistant().resetItems(3214);
player.getItemAssistant().resetBonus();
@@ -169,7 +188,7 @@ public class PacketSender {
player.getItemAssistant().addSpecialBar(player.playerEquipment[player.playerWeapon]);
player.saveTimer = GameConstants.SAVE_TIMER;
player.saveCharacter = true;
Misc.println("[REGISTERED]: " + player.playerName + "");
Misc.println((player.isBot ? "[BOT-REGISTERED]" : "[REGISTERED]") + ": " + player.playerName + " (level-" + player.calculateCombatLevel() + ")");
player.handler.updatePlayer(player, player.outStream);
player.handler.updateNPC(player, player.outStream);
player.flushOutStream();
@@ -304,8 +323,12 @@ public class PacketSender {
return this;
}
public PacketSender sendString(String s, int id) { //Seems to be about chat messsages
if(!player.checkPacket126Update(s, id)) {
public PacketSender sendString(String s, int id) { // Update string in interfaces etc
return sendString(s, id, false);
}
public PacketSender sendString(String s, int id, boolean forceSend) { // Update string in interfaces etc
if(!forceSend && !player.checkPacket126Update(s, id)) {
return this;
}
if (player.getOutStream() != null && player != null) {
@@ -503,8 +526,6 @@ public class PacketSender {
if (player.getOutStream() != null && player != null) {
if (world != 0) {
world += 9;
} else if (!GameConstants.WORLD_LIST_FIX) {
world += 1;
}
player.getOutStream().createFrame(50);
player.getOutStream().writeQWord(playerName);
@@ -621,11 +642,9 @@ public class PacketSender {
player.getItemAssistant().rearrangeBank();
player.getItemAssistant().resetBank();
player.getItemAssistant().resetTempItems();
player.getOutStream().createFrame(248);
player.getOutStream().writeWordA(5292);
player.lastMainFrameInterface = MainFrameIDs.BANK; //Setting it to 5292, since I *think* that's what interface got opened
player.getOutStream().writeWord(5063);
sendFrame248(5292, 5063);
player.flushOutStream();
player.getPacketSender().sendString("The Bank of " + GameConstants.SERVER_NAME, 5383, true);
player.isBanking = true;
}
return this;
@@ -1172,15 +1191,7 @@ public class PacketSender {
if (player.heightLevel != height) {
return this;
}
player.getOutStream().createFrame(85);
player.getOutStream().writeByteC(itemY - 8 * player.mapRegionY);
player.getOutStream().writeByteC(itemX - 8 * player.mapRegionX);
player.getOutStream().createFrame(44);
player.getOutStream().writeWordBigEndianA(itemID);
player.getOutStream().writeWord(itemAmount);
player.getOutStream().writeByte(0);
player.flushOutStream();
return this;
return createGroundItem(itemID, itemX, itemY, itemAmount);
}
@@ -5,6 +5,7 @@ import com.rs2.game.content.random.PartyRoom;
import com.rs2.game.content.skills.crafting.JewelryMaking;
import com.rs2.game.players.Player;
import com.rs2.net.packets.PacketType;
import com.rs2.world.Boundary;
/**
* Bank 10 Items
@@ -19,6 +20,13 @@ public class Bank10 implements PacketType {
player.endCurrentTask();
switch (interfaceId) {
case 2274:
if (Boundary.isIn(player, Boundary.PARTY_ROOM)) {
PartyRoom.withdrawItem(player, removeSlot, 10);
return;
}
break;
case 4233:
case 4239:
case 4245:
@@ -49,7 +57,7 @@ public class Bank10 implements PacketType {
if(!player.getItemAssistant().playerHasItem(removeId)) {
return;
}
if (player.inPartyRoom) {
if (Boundary.isIn(player, Boundary.PARTY_ROOM)) {
PartyRoom.depositItem(player, removeId, 10);
break;
}
@@ -5,6 +5,7 @@ import com.rs2.game.content.random.PartyRoom;
import com.rs2.game.content.skills.crafting.JewelryMaking;
import com.rs2.game.players.Player;
import com.rs2.net.packets.PacketType;
import com.rs2.world.Boundary;
/**
* Bank 5 Items
@@ -19,6 +20,12 @@ public class Bank5 implements PacketType {
player.endCurrentTask();
switch (interfaceId) {
case 2274:
if (Boundary.isIn(player, Boundary.PARTY_ROOM)) {
PartyRoom.withdrawItem(player, removeSlot, 5);
return;
}
break;
case 4233:
case 4239:
case 4245:
@@ -50,7 +57,7 @@ public class Bank5 implements PacketType {
if(!player.getItemAssistant().playerHasItem(removeId)) {
return;
}
if (player.inPartyRoom) {
if (Boundary.isIn(player, Boundary.PARTY_ROOM)) {
PartyRoom.depositItem(player, removeId, 5);
break;
}
@@ -5,6 +5,7 @@ import com.rs2.game.items.GameItem;
import com.rs2.game.items.ItemData;
import com.rs2.game.players.Player;
import com.rs2.net.packets.PacketType;
import com.rs2.world.Boundary;
/**
* Bank All Items
@@ -18,6 +19,12 @@ public class BankAll implements PacketType {
int removeId = player.getInStream().readUnsignedWordA();
player.endCurrentTask();
switch (interfaceId) {
case 2274:
if (Boundary.isIn(player, Boundary.PARTY_ROOM)) {
PartyRoom.withdrawItem(player, removeSlot, player.partyN[removeSlot]);
return;
}
break;
// buy x
case 3900:
player.outStream.createFrame(27);
@@ -51,7 +58,7 @@ public class BankAll implements PacketType {
if(!player.getItemAssistant().playerHasItem(removeId)) {
return;
}
if (player.inPartyRoom) {
if (Boundary.isIn(player, Boundary.PARTY_ROOM)) {
PartyRoom.depositItem(player, removeId, player.getItemAssistant().itemAmount(player.playerItems[removeSlot]));
break;
}
@@ -76,21 +76,21 @@ public class ClickItem implements PacketType {
return;
}
switch (itemId) {
case 4251:
player.getPlayerAssistant().movePlayer(3661, 3526, 0);
player.getItemAssistant().replaceItem(4251, 4252);
break;
case 4079:
player.startAnimation(1457);
break;
case 407:
if (Misc.random(1) == 0) {
player.getItemAssistant().addItem(409, 1);
player.getItemAssistant().deleteItem(407, 1);
int rand = Misc.random(1, 5);
if (rand <= 2) {
player.getItemAssistant().replaceItem(407, 409);
} else if (rand <= 4) {
player.getItemAssistant().replaceItem(407, 411);
} else {
if (Misc.random(1) == 0) {
player.getItemAssistant().addItem(411, 1);
player.getItemAssistant().deleteItem(409, 1);
} else if (Misc.random(1) == 1) {
player.getItemAssistant().addItem(413, 1);
player.getItemAssistant().deleteItem(407, 1);
}
player.getItemAssistant().replaceItem(407, 413);
}
break;
@@ -481,6 +481,15 @@ public class Commands implements PacketType {
player.getPacketSender().sendMessage("Player Must Be Offline.");
}
break;
case "mem":
Runtime runtime = Runtime.getRuntime();
int totalMemK = (int) (runtime.totalMemory() / 1024L);
int freeMemK = (int) (runtime.freeMemory() / 1024L);
int usedMemK = (int) totalMemK - freeMemK;
player.getPacketSender().sendMessage("Total memory: " + (totalMemK / 1024) + "MB");
player.getPacketSender().sendMessage("Used memory: " + (usedMemK / 1024) + "MB");
player.getPacketSender().sendMessage("Free memory: " + (freeMemK / 1024) + "MB");
break;
case "update":
try {
if (arguments.length == 0) {
@@ -574,9 +583,24 @@ public class Commands implements PacketType {
if (arguments.length == 0) {
player.getPacketSender().sendMessage("You must specify an id: ::interface id");
return;
} else if (arguments.length == 1) {
int interface1 = Integer.parseInt(arguments[0]);
player.getPacketSender().showInterface(interface1);
return;
} else if (arguments.length == 2) {
int interface1 = Integer.parseInt(arguments[0]);
int interface2 = Integer.parseInt(arguments[1]);
player.getPacketSender().sendFrame248(interface1, interface2);
return;
} else if (arguments.length == 2) {
int interface1 = Integer.parseInt(arguments[0]);
int interface2 = Integer.parseInt(arguments[1]);
int interface3 = Integer.parseInt(arguments[2]);
player.getPacketSender().sendFrame246(interface1, interface2, interface3);
return;
} else {
player.getPacketSender().sendMessage("Too many IDs specified, maximum of 3");
}
int interfaceID = Integer.parseInt(arguments[0]);
player.getPacketSender().showInterface(interfaceID);
break;
case "gfx":
if (arguments.length == 0) {
@@ -616,7 +640,6 @@ public class Commands implements PacketType {
case "bank":
player.getPacketSender().openUpBank();
break;
case "xteletome":
case "teletome":
try {
if (arguments.length == 0) {
@@ -637,7 +660,6 @@ public class Commands implements PacketType {
player.getPacketSender().sendMessage("Player is not online.");
}
break;
case "xteleto":
case "teleto":
if (arguments.length == 0) {
player.getPacketSender().sendMessage("You must specify a player name: ::teleto playername");
@@ -5,6 +5,7 @@ import com.rs2.game.content.skills.cooking.Cooking;
import com.rs2.game.content.skills.smithing.Smelting;
import com.rs2.game.players.Player;
import com.rs2.net.packets.PacketType;
import com.rs2.world.Boundary;
public class InterfaceX implements PacketType {
@@ -27,15 +28,21 @@ public class InterfaceX implements PacketType {
}
}
switch (player.xInterfaceId) {
case 5064:
if (player.inPartyRoom) {
PartyRoom.depositItem(player, player.xRemoveId, player.getItemAssistant().itemAmount(player.playerItems[player.xRemoveSlot]));
break;
case 2274:
if (Boundary.isIn(player, Boundary.PARTY_ROOM)) {
PartyRoom.withdrawItem(player, player.xRemoveSlot, Xamount);
return;
}
break;
case 5064:
if (player.inTrade) {
player.getPacketSender().sendMessage("You can't store items while trading!");
return;
}
if (Boundary.isIn(player, Boundary.PARTY_ROOM)) {
PartyRoom.depositItem(player, player.xRemoveId, Xamount);
return;
}
player.getItemAssistant().bankItem(player.playerItems[player.xRemoveSlot], player.xRemoveSlot, Xamount);
break;
@@ -7,6 +7,7 @@ import com.rs2.game.content.skills.cooking.CookingTutorialIsland;
import com.rs2.game.content.skills.crafting.JewelryMaking;
import com.rs2.game.content.skills.crafting.Pottery;
import com.rs2.game.content.skills.crafting.Spinning;
import com.rs2.game.content.skills.prayer.Ectofuntus;
import com.rs2.game.items.UseItem;
import com.rs2.game.items.impl.Fillables;
import com.rs2.game.players.Player;
@@ -28,10 +29,19 @@ public class ItemOnObject implements PacketType {
player.objectX = objectX;
player.objectY = objectY;
player.endCurrentTask();
int distance = 3;
switch (objectId) {
case Ectofuntus.ECTOFUNTUS:
distance = 5;
break;
default:
distance = 3;
break;
}
if (!player.getItemAssistant().playerHasItem(itemId, 1)) {
return;
}
if (!player.goodDistance(player.objectX, player.objectY, player.absX, player.absY, 3)) {
if (!player.goodDistance(player.objectX, player.objectY, player.absX, player.absY, distance)) {
return;
}
if (player.playerRights == 3) {
@@ -1,6 +1,7 @@
package com.rs2.net.packets.impl;
import com.rs2.Connection;
import com.rs2.GameConstants;
import com.rs2.game.players.Client;
import com.rs2.game.players.Player;
import com.rs2.game.players.PlayerHandler;
@@ -41,7 +42,7 @@ public class PrivateMessaging implements PacketType {
Client o = (Client) PlayerHandler.players[i2];
if (o != null) {
if (PlayerHandler.players[i2].privateChat == 0 || PlayerHandler.players[i2].privateChat == 1 && o.getPlayerAssistant().isInPM(Misc.playerNameToInt64(player.playerName))) {
player.getPacketSender().loadPM(friendToAdd, 1);
player.getPacketSender().loadPM(friendToAdd, GameConstants.WORLD);
break;
}
}
@@ -134,7 +135,7 @@ public class PrivateMessaging implements PacketType {
&& PlayerHandler.players[i1].isActive) {
Client o = (Client) PlayerHandler.players[i1];
if (o != null) {
o.getPlayerAssistant().updatePM(player.playerId, 1);
o.getPlayerAssistant().updatePM(player.playerId, GameConstants.WORLD);
}
}
}
@@ -7,6 +7,7 @@ import com.rs2.game.items.Weight;
import com.rs2.game.items.impl.RareProtection;
import com.rs2.game.players.Player;
import com.rs2.net.packets.PacketType;
import com.rs2.world.Boundary;
/**
* Remove Item
@@ -28,6 +29,13 @@ public class RemoveItem implements PacketType {
switch (interfaceId) {
case 2274:
if (Boundary.isIn(player, Boundary.PARTY_ROOM)) {
PartyRoom.withdrawItem(player, removeSlot, 1);
return;
}
break;
case 4233:
case 4239:
case 4245:
@@ -48,7 +56,7 @@ public class RemoveItem implements PacketType {
break;
case 5064:
if (player.inPartyRoom) {
if (Boundary.isIn(player, Boundary.PARTY_ROOM)) {
PartyRoom.depositItem(player, removeId, 1);
} else {
player.getItemAssistant().bankItem(removeId, removeSlot, 1);
@@ -133,9 +133,8 @@ public class ReportHandler {
.format(new Date()));
String day = new SimpleDateFormat("dd").format(new Date());
bw = new BufferedWriter(new FileWriter(
"data/Reportabuses/"
+ file + " month;" + month + " day;" + day
+ " ms-id;" + time + ".txt", true));
"data/logs/reports/"
+ file + ".txt", true));
bw.write(data);
bw.newLine();
bw.write(text);