From 0d776a82b9d14d2d887a662ab14afaf77484a966 Mon Sep 17 00:00:00 2001 From: RedSparr0w Date: Mon, 20 Sep 2021 01:22:27 +1200 Subject: [PATCH] Update how player shop is handled --- .../src/main/java/com/rs2/game/bots/Bot.java | 2 +- .../java/com/rs2/game/bots/BotHandler.java | 9 +++++++++ .../rs2/game/dialogues/DialogueHandler.java | 10 ++++++++++ .../rs2/game/dialogues/DialogueOptions.java | 18 +++++++++++++++++ .../com/rs2/game/shops/ShopAssistant.java | 6 +++--- .../java/com/rs2/game/shops/ShopHandler.java | 20 +++++++++---------- .../com/rs2/net/packets/impl/Commands.java | 8 ++++---- 7 files changed, 54 insertions(+), 19 deletions(-) diff --git a/2006Scape Server/src/main/java/com/rs2/game/bots/Bot.java b/2006Scape Server/src/main/java/com/rs2/game/bots/Bot.java index 08ad915b..fdba28a9 100644 --- a/2006Scape Server/src/main/java/com/rs2/game/bots/Bot.java +++ b/2006Scape Server/src/main/java/com/rs2/game/bots/Bot.java @@ -84,7 +84,7 @@ public class Bot { botClient.setChatTextUpdateRequired(true); } - private String formatSellPrice(int price) { + public static String formatSellPrice(int price) { DecimalFormat df = new DecimalFormat("#.##"); if (price >= 1e9) { return df.format(Math.floor(price / 1e8) / 10) + "b"; diff --git a/2006Scape Server/src/main/java/com/rs2/game/bots/BotHandler.java b/2006Scape Server/src/main/java/com/rs2/game/bots/BotHandler.java index 075a18fb..f4d18fd3 100644 --- a/2006Scape Server/src/main/java/com/rs2/game/bots/BotHandler.java +++ b/2006Scape Server/src/main/java/com/rs2/game/bots/BotHandler.java @@ -176,6 +176,15 @@ public class BotHandler { shop.getItemAssistant().addItem(currency, amount); } + public static int checkCoins(Player player) { + Client shop = getPlayerShop(player.playerName); + if (shop == null) return 0; + if (!shop.getItemAssistant().playerHasItem(currency)) { + return 0; + } + return shop.getItemAssistant().getItemAmount(currency); + } + public static void takeCoins(Player player) { if (!player.getItemAssistant().playerHasItem(currency) && player.getItemAssistant().freeSlots() <= 0) { player.getPacketSender().sendMessage("You don't have enough space in your inventory."); diff --git a/2006Scape Server/src/main/java/com/rs2/game/dialogues/DialogueHandler.java b/2006Scape Server/src/main/java/com/rs2/game/dialogues/DialogueHandler.java index ea1de0d6..201996ad 100644 --- a/2006Scape Server/src/main/java/com/rs2/game/dialogues/DialogueHandler.java +++ b/2006Scape Server/src/main/java/com/rs2/game/dialogues/DialogueHandler.java @@ -2,6 +2,8 @@ package com.rs2.game.dialogues; import com.rs2.GameConstants; import com.rs2.GameEngine; +import com.rs2.game.bots.Bot; +import com.rs2.game.bots.BotHandler; import com.rs2.game.content.quests.QuestAssistant; import com.rs2.game.content.quests.QuestRewards; import com.rs2.game.content.randomevents.FreakyForester; @@ -7516,6 +7518,14 @@ public class DialogueHandler { player.getDialogueHandler().sendNpcChat(player.talkingNpc, ChatEmotes.HAPPY_JOYFUL, "Thank you again traveller. Happy Easter!"); player.getDialogueHandler().endDialogue(); break; + case 10000: + sendOption( + "Summon Shop", // 9178 + "Close Shop", // 9179 + "Withdraw Money (" + Bot.formatSellPrice(BotHandler.checkCoins(player)) + ")" // 9180 + ); + player.dialogueAction = 10000; + break; } } public void chatboxText(String text, String text1, String text2, diff --git a/2006Scape Server/src/main/java/com/rs2/game/dialogues/DialogueOptions.java b/2006Scape Server/src/main/java/com/rs2/game/dialogues/DialogueOptions.java index a9ee2117..9f22ce44 100644 --- a/2006Scape Server/src/main/java/com/rs2/game/dialogues/DialogueOptions.java +++ b/2006Scape Server/src/main/java/com/rs2/game/dialogues/DialogueOptions.java @@ -1,5 +1,7 @@ package com.rs2.game.dialogues; +import com.rs2.game.bots.Bot; +import com.rs2.game.bots.BotHandler; import com.rs2.game.content.skills.crafting.JewelryMaking; import com.rs2.game.items.impl.Flowers; import com.rs2.game.items.impl.Teles; @@ -93,6 +95,14 @@ public class DialogueOptions { case 7555: //lostCity 1 player.getDialogueHandler().sendDialogues(3701, player.npcType); return; + case 10000: // Shop + if (!player.inPlayerShopArea()) { + player.getDialogueHandler().sendStatement("You need to be in a bank zone or trade area for this."); + return; + } + player.getDialogueHandler().sendStatement("You summoned your shop!"); + BotHandler.playerShop(player); + return; } player.dialogueAction = 0; player.getPacketSender().closeAllWindows(); @@ -177,6 +187,10 @@ public class DialogueOptions { case 7555: player.getDialogueHandler().sendDialogues(3597, player.npcType); return; + case 10000: + player.getDialogueHandler().sendStatement("You close your shop!"); + BotHandler.closeShop(player); + return; } player.dialogueAction = 0; player.getPacketSender().closeAllWindows(); @@ -264,6 +278,10 @@ public class DialogueOptions { case 7555: player.getDialogueHandler().sendDialogues(3599, player.npcType); return; + case 10000: + player.getDialogueHandler().sendStatement("You withdraw " + Bot.formatSellPrice(BotHandler.checkCoins(player)) + " from your shop!"); + BotHandler.takeCoins(player); + return; } player.dialogueAction = 0; player.getPacketSender().closeAllWindows(); diff --git a/2006Scape Server/src/main/java/com/rs2/game/shops/ShopAssistant.java b/2006Scape Server/src/main/java/com/rs2/game/shops/ShopAssistant.java index c4653e74..71bb5058 100644 --- a/2006Scape Server/src/main/java/com/rs2/game/shops/ShopAssistant.java +++ b/2006Scape Server/src/main/java/com/rs2/game/shops/ShopAssistant.java @@ -526,8 +526,8 @@ public class ShopAssistant { int value = 0; int currency = 995; // player owned shop - boolean showIsOwnedByThisPlayer = ShopHandler.playerOwnsStore(player.shopId, player); - if (showIsOwnedByThisPlayer) { // PLayers own shop, no cost + boolean shopIsOwnedByThisPlayer = ShopHandler.playerOwnsStore(player.shopId, player); + if (shopIsOwnedByThisPlayer) { // PLayers own shop, no cost value = 0; currency = -1; } else if (isPlayerShop) { // Shop owned by another player @@ -573,7 +573,7 @@ public class ShopAssistant { } String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); - if (!showIsOwnedByThisPlayer) { + if (!shopIsOwnedByThisPlayer) { player.getItemAssistant().deleteItem(currency, totalValue); player.getPacketSender().sendMessage("You bought " + amount + " " + itemName + " for " + totalValue + " " + currencyName + "." ); // If it is a player owned shop, we need to give them the coins diff --git a/2006Scape Server/src/main/java/com/rs2/game/shops/ShopHandler.java b/2006Scape Server/src/main/java/com/rs2/game/shops/ShopHandler.java index 8040dfab..5adaa771 100644 --- a/2006Scape Server/src/main/java/com/rs2/game/shops/ShopHandler.java +++ b/2006Scape Server/src/main/java/com/rs2/game/shops/ShopHandler.java @@ -94,17 +94,6 @@ public class ShopHandler { shopItemsDelay[i][j]++; } } - if (DidUpdate) { - for (int k = 1; k < PlayerHandler.players.length; k++) { - if (PlayerHandler.players[k] != null) { - if (PlayerHandler.players[k].isShopping && PlayerHandler.players[k].shopId == i) { - PlayerHandler.players[k].updateShop = true; - PlayerHandler.players[k].updateShop(i); - } - } - } - DidUpdate = false; - } } } @@ -266,6 +255,15 @@ public class ShopHandler { } } } + + for (int k = 1; k < PlayerHandler.players.length; k++) { + if (PlayerHandler.players[k] != null) { + if (PlayerHandler.players[k].isShopping && PlayerHandler.players[k].shopId == shop_id) { + PlayerHandler.players[k].updateShop = true; + PlayerHandler.players[k].updateShop(shop_id); + } + } + } } public static int getStock(int shop_id, int item_id) { diff --git a/2006Scape Server/src/main/java/com/rs2/net/packets/impl/Commands.java b/2006Scape Server/src/main/java/com/rs2/net/packets/impl/Commands.java index ad0d649b..bae36a75 100644 --- a/2006Scape Server/src/main/java/com/rs2/net/packets/impl/Commands.java +++ b/2006Scape Server/src/main/java/com/rs2/net/packets/impl/Commands.java @@ -45,7 +45,7 @@ public class Commands implements PacketType { public static void playerCommands(Player player, String playerCommand, String[] arguments) { switch (playerCommand.toLowerCase()) { - case "hideYell": + case "hideyell": player.hideYell = !player.hideYell; player.getPacketSender().sendMessage("Your yell visibility preferences have been updated."); break; @@ -173,9 +173,6 @@ public class Commands implements PacketType { case "prayer": player.getPacketSender().sendMessage(String.format("Prayer points: %d", player.playerLevel[5])); break; - case "shop": - BotHandler.playerShop(player); - break; case "snow": Calendar date = new GregorianCalendar(); if ((date.get(Calendar.MONTH) + 1) == 12 && !player.inWild()) { @@ -189,6 +186,9 @@ public class Commands implements PacketType { } } break; + case "shop": + player.getDialogueHandler().sendDialogues(10000, 0); + break; case "withdrawshop": player.getPacketSender().sendMessage("Shorter version: ::wshop"); case "wshop":