Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package redone.game.players;
- import java.util.concurrent.CopyOnWriteArrayList;
- import redone.Constants;
- import redone.event.CycleEvent;
- import redone.event.CycleEventContainer;
- import redone.event.CycleEventHandler;
- import redone.game.content.minigames.castlewars.CastleWars;
- import redone.game.items.GameItem;
- import redone.game.items.Item;
- import redone.game.items.ItemAssistant;
- import redone.game.items.impl.RareProtection;
- import redone.util.GameLogger;
- import redone.util.Misc;
- public class Trading {
- private final Player player;
- public Trading(Player Client) {
- player = Client;
- }
- /**
- * Trading
- **/
- public CopyOnWriteArrayList<GameItem> offeredItems = new CopyOnWriteArrayList<GameItem>();
- public void requestTrade(int id) {
- try {
- Client o = (Client) PlayerHandler.players[id];
- if (id == player.playerId) {
- return;
- }
- player.tradeWith = id;
- /*if (c.connectedFrom.equals(o.connectedFrom)) {
- c.getActionSender().sendMessage("You cannot trade your own IP.");
- return;
- }*/
- if (!CastleWars.deleteCastleWarsItems(player, id)) {
- return;
- }
- if (!player.inTrade && o.tradeRequested && o.tradeWith == player.playerId && player.playerIsBusy() == false && o.playerIsBusy() == false) {
- player.getTrading().openTrade();
- o.getTrading().openTrade();
- } else if (!player.inTrade && player.playerIsBusy() == false && o.playerIsBusy() == false) {
- player.tradeRequested = true;
- player.getActionSender().sendMessage("Sending trade request...");
- o.getActionSender()
- .sendMessage(player.playerName + ":tradereq:");
- } else if (player.playerIsBusy() == false && o.playerIsBusy() == true) {
- player.getActionSender().sendMessage("Other player is busy at the moment.");
- }
- } catch (Exception e) {
- Misc.println("Error requesting trade.");
- }
- }
- public void openTrade() {
- Client o = (Client) PlayerHandler.players[player.tradeWith];
- if (o == null) {
- return;
- }
- player.inTrade = true;
- player.tradeStatus = 1;
- player.tradeRequested = false;
- player.getItemAssistant().resetItems(3322);
- resetTItems(3415);
- resetOTItems(3416);
- String out = o.playerName;
- if (o.checkRights(player.MODERATOR)) {
- out = "@cr1@" + out;
- } else if (o.isStaff(1)) {
- out = "@cr2@" + out;
- }
- player.getPlayerAssistant().sendFrame126(
- "Trading with: " + o.playerName + " who has @gre@"
- + o.getItemAssistant().freeSlots() + " free slots",
- 3417);
- player.getPlayerAssistant().sendFrame126("", 3431);
- player.getPlayerAssistant().sendFrame126(
- "Are you sure you want to make this trade?", 3535);
- player.getPlayerAssistant().sendFrame248(3323, 3321);
- }
- public void resetTItems(int WriteFrame) {
- player.getOutStream().createFrameVarSizeWord(53);
- player.getOutStream().writeWord(WriteFrame);
- int len = offeredItems.toArray().length;
- int current = 0;
- player.getOutStream().writeWord(len);
- for (GameItem item : offeredItems) {
- if (item.amount > 254) {
- player.getOutStream().writeByte(255);
- player.getOutStream().writeDWord_v2(item.amount);
- } else {
- player.getOutStream().writeByte(item.amount);
- }
- player.getOutStream().writeWordBigEndianA(item.id + 1);
- current++;
- }
- if (current < 27) {
- for (int i = current; i < 28; i++) {
- player.getOutStream().writeByte(1);
- player.getOutStream().writeWordBigEndianA(-1);
- }
- }
- player.getOutStream().endFrameVarSizeWord();
- player.flushOutStream();
- }
- public boolean fromTrade(int itemID, int fromSlot, int amount) {
- Client o = (Client) PlayerHandler.players[player.tradeWith];
- if (o == null) {
- return false;
- }
- try {
- if (!player.inTrade) {
- declineTrade();
- return false;
- }
- player.tradeConfirmed = false;
- o.tradeConfirmed = false;
- if (!Item.itemStackable[itemID]) {
- for (int a = 0; a < amount; a++) {
- for (GameItem item : offeredItems) {
- if (item.id == itemID) {
- if (!item.stackable) {
- offeredItems.remove(item);
- player.getItemAssistant().addItem(itemID, 1);
- o.getPlayerAssistant().sendFrame126(
- "Trading with: "
- + player.playerName
- + " who has @gre@"
- + player.getItemAssistant()
- .freeSlots()
- + " free slots", 3417);
- } else {
- if (item.amount > amount) {
- item.amount -= amount;
- player.getItemAssistant()
- .addItem(itemID, amount);
- o.getPlayerAssistant().sendFrame126(
- "Trading with: "
- + player.playerName
- + " who has @gre@"
- + player.getItemAssistant()
- .freeSlots()
- + " free slots", 3417);
- } else {
- amount = item.amount;
- offeredItems.remove(item);
- player.getItemAssistant()
- .addItem(itemID, amount);
- o.getPlayerAssistant().sendFrame126(
- "Trading with: "
- + player.playerName
- + " who has @gre@"
- + player.getItemAssistant()
- .freeSlots()
- + " free slots", 3417);
- }
- }
- break;
- }
- o.getPlayerAssistant().sendFrame126(
- "Trading with: " + player.playerName
- + " who has @gre@"
- + player.getItemAssistant().freeSlots()
- + " free slots", 3417);
- player.tradeConfirmed = false;
- o.tradeConfirmed = false;
- player.getItemAssistant().resetItems(3322);
- resetTItems(3415);
- o.getTrading().resetOTItems(3416);
- player.getPlayerAssistant().sendFrame126("", 3431);
- o.getPlayerAssistant().sendFrame126("", 3431);
- }
- }
- }
- for (GameItem item : offeredItems) {
- if (item.id == itemID) {
- if (!item.stackable) {
- } else {
- if (item.amount > amount) {
- item.amount -= amount;
- player.getItemAssistant().addItem(itemID, amount);
- o.getPlayerAssistant().sendFrame126(
- "Trading with: " + player.playerName
- + " who has @gre@"
- + player.getItemAssistant().freeSlots()
- + " free slots", 3417);
- } else {
- amount = item.amount;
- offeredItems.remove(item);
- player.getItemAssistant().addItem(itemID, amount);
- o.getPlayerAssistant().sendFrame126(
- "Trading with: " + player.playerName
- + " who has @gre@"
- + player.getItemAssistant().freeSlots()
- + " free slots", 3417);
- }
- }
- break;
- }
- }
- o.getPlayerAssistant().sendFrame126(
- "Trading with: " + player.playerName + " who has @gre@"
- + player.getItemAssistant().freeSlots() + " free slots",
- 3417);
- player.tradeConfirmed = false;
- o.tradeConfirmed = false;
- player.getItemAssistant().resetItems(3322);
- resetTItems(3415);
- o.getTrading().resetOTItems(3416);
- player.getPlayerAssistant().sendFrame126("", 3431);
- o.getPlayerAssistant().sendFrame126("", 3431);
- } catch (Exception e) {
- }
- return true;
- }
- public boolean tradeItem(int itemID, int fromSlot, int amount) {
- Client o = (Client) PlayerHandler.players[player.tradeWith];
- if (o == null) {
- return false;
- }
- if (amount >= 1000000000) {
- player.getActionSender().sendMessage("You can't possibly have that much of that item!");
- player.getItemAssistant().deleteItem(itemID, fromSlot, amount);
- return false;
- }
- for (int i : Constants.ITEM_TRADEABLE) {
- if (i == itemID && player.isPlayer()) {
- player.getActionSender().sendMessage(
- "You can't trade this item.");
- return false;
- }
- }
- if (!RareProtection.doOtherDupe(player, itemID)) {
- return false;
- }
- player.tradeConfirmed = false;
- o.tradeConfirmed = false;
- if (!Item.itemStackable[itemID] && !Item.itemIsNote[itemID]) {
- for (int a = 0; a < amount && a < 28; a++) {
- if (player.getItemAssistant().playerHasItem(itemID, 1)) {
- offeredItems.add(new GameItem(itemID, 1));
- player.getItemAssistant().deleteItem(itemID,
- player.getItemAssistant().getItemSlot(itemID), 1);
- o.getPlayerAssistant().sendFrame126(
- "Trading with: " + player.playerName + " who has @gre@"
- + player.getItemAssistant().freeSlots()
- + " free slots", 3417);
- }
- }
- o.getPlayerAssistant().sendFrame126(
- "Trading with: " + player.playerName + " who has @gre@"
- + player.getItemAssistant().freeSlots() + " free slots",
- 3417);
- player.getItemAssistant().resetItems(3322);
- resetTItems(3415);
- o.getTrading().resetOTItems(3416);
- player.getPlayerAssistant().sendFrame126("", 3431);
- o.getPlayerAssistant().sendFrame126("", 3431);
- }
- if (player.getItemAssistant().getItemCount(itemID) < amount) {
- amount = player.getItemAssistant().getItemCount(itemID);
- if (amount == 0) {
- return false;
- }
- }
- if (!player.inTrade) {
- declineTrade();
- return false;
- }
- if (Item.itemStackable[itemID] || Item.itemIsNote[itemID]) {
- boolean inTrade = false;
- for (GameItem item : offeredItems) {
- if (item.id == itemID) {
- inTrade = true;
- item.amount += amount;
- player.getItemAssistant().deleteItem2(itemID, amount);
- o.getPlayerAssistant().sendFrame126(
- "Trading with: " + player.playerName + " who has @gre@"
- + player.getItemAssistant().freeSlots()
- + " free slots", 3417);
- break;
- }
- }
- if (!inTrade) {
- offeredItems.add(new GameItem(itemID, amount));
- player.getItemAssistant().deleteItem2(itemID, amount);
- o.getPlayerAssistant().sendFrame126(
- "Trading with: " + player.playerName + " who has @gre@"
- + player.getItemAssistant().freeSlots()
- + " free slots", 3417);
- }
- }
- o.getPlayerAssistant().sendFrame126(
- "Trading with: " + player.playerName + " who has @gre@"
- + player.getItemAssistant().freeSlots() + " free slots",
- 3417);
- player.getItemAssistant().resetItems(3322);
- resetTItems(3415);
- o.getTrading().resetOTItems(3416);
- player.getPlayerAssistant().sendFrame126("", 3431);
- o.getPlayerAssistant().sendFrame126("", 3431);
- return true;
- }
- public void resetTrade() {
- offeredItems.clear();
- player.inTrade = false;
- player.tradeWith = 0;
- player.tradeConfirmed = false;
- player.tradeConfirmed2 = false;
- player.acceptedTrade = false;
- player.getPlayerAssistant().removeAllWindows();
- player.tradeResetNeeded = false;
- player.getPlayerAssistant().sendFrame126(
- "Are you sure you want to make this trade?", 3535);
- }
- public void declineTrade() {
- player.tradeStatus = 0;
- declineTrade(true);
- }
- public void declineTrade(boolean tellOther) {
- player.getPlayerAssistant().removeAllWindows();
- Client o = (Client) PlayerHandler.players[player.tradeWith];
- if (o == null) {
- return;
- }
- if (tellOther) {
- o.getTrading().declineTrade(false);
- o.getTrading().player.getPlayerAssistant().removeAllWindows();
- }
- for (GameItem item : offeredItems) {
- if (item.amount < 1) {
- continue;
- }
- if (item.stackable) {
- player.getItemAssistant().addItem(item.id, item.amount);
- } else {
- for (int i = 0; i < item.amount; i++) {
- player.getItemAssistant().addItem(item.id, 1);
- }
- }
- }
- player.tradeConfirmed = false;
- player.tradeConfirmed2 = false;
- offeredItems.clear();
- player.inTrade = false;
- player.tradeWith = 0;
- }
- public void resetOTItems(int WriteFrame) {
- Client o = (Client) PlayerHandler.players[player.tradeWith];
- if (o == null) {
- return;
- }
- player.getOutStream().createFrameVarSizeWord(53);
- player.getOutStream().writeWord(WriteFrame);
- int len = o.getTrading().offeredItems.toArray().length;
- int current = 0;
- player.getOutStream().writeWord(len);
- for (GameItem item : o.getTrading().offeredItems) {
- if (item.amount > 254) {
- player.getOutStream().writeByte(255); // item's stack count. if
- // over 254, write byte
- // 255
- player.getOutStream().writeDWord_v2(item.amount);
- } else {
- player.getOutStream().writeByte(item.amount);
- }
- player.getOutStream().writeWordBigEndianA(item.id + 1); // item id
- current++;
- }
- if (current < 27) {
- for (int i = current; i < 28; i++) {
- player.getOutStream().writeByte(1);
- player.getOutStream().writeWordBigEndianA(-1);
- }
- }
- player.getOutStream().endFrameVarSizeWord();
- player.flushOutStream();
- }
- public void confirmScreen() {
- Client o = (Client) PlayerHandler.players[player.tradeWith];
- if (o == null) {
- return;
- }
- if(!player.inTrade) {
- declineTrade();
- return;
- }
- player.getItemAssistant().resetItems(3214);
- String SendTrade = "Absolutely nothing!";
- String SendAmount = "";
- int Count = 0;
- for (GameItem item : offeredItems) {
- if (item.id > 0) {
- if (item.amount >= 1000 && item.amount < 1000000) {
- SendAmount = "@cya@" + item.amount / 1000 + "K @whi@("
- + Misc.format(item.amount) + ")";
- } else if (item.amount >= 1000000) {
- SendAmount = "@gre@" + item.amount / 1000000
- + " million @whi@(" + Misc.format(item.amount)
- + ")";
- } else {
- SendAmount = "" + Misc.format(item.amount);
- }
- if (Count == 0) {
- SendTrade = ItemAssistant.getItemName(item.id);
- } else {
- SendTrade = SendTrade + "\\n"
- + ItemAssistant.getItemName(item.id);
- }
- if (item.stackable) {
- SendTrade = SendTrade + " x " + SendAmount;
- }
- Count++;
- }
- }
- player.getPlayerAssistant().sendFrame126(SendTrade, 3557);
- SendTrade = "Absolutely nothing!";
- SendAmount = "";
- Count = 0;
- for (GameItem item : o.getTrading().offeredItems) {
- if (item.id > 0) {
- if (item.amount >= 1000 && item.amount < 1000000) {
- SendAmount = "@cya@" + item.amount / 1000 + "K @whi@("
- + Misc.format(item.amount) + ")";
- } else if (item.amount >= 1000000) {
- SendAmount = "@gre@" + item.amount / 1000000
- + " million @whi@(" + Misc.format(item.amount)
- + ")";
- } else {
- SendAmount = "" + Misc.format(item.amount);
- }
- if (Count == 0) {
- SendTrade = ItemAssistant.getItemName(item.id);
- } else {
- SendTrade = SendTrade + "\\n"
- + ItemAssistant.getItemName(item.id);
- }
- if (item.stackable) {
- SendTrade = SendTrade + " x " + SendAmount;
- }
- Count++;
- }
- }
- player.getPlayerAssistant().sendFrame126(SendTrade, 3558);
- // TODO: find out what 197 does eee 3213
- player.getPlayerAssistant().sendFrame248(3443, 197);
- }
- public void giveItems() {
- Client o = (Client) PlayerHandler.players[player.tradeWith];
- if (o == null) {
- return;
- }
- try {
- for (GameItem item : o.getTrading().offeredItems) {
- String itemName = ItemAssistant.getItemName(item.id);
- if (item.id > 0) {
- player.getItemAssistant().addItem(item.id, item.amount);
- if (player.isPlayer()) {
- GameLogger.writeLog(o.playerName, "tradesgave", o.playerName + " traded " + player.playerName + " and gave " + item.amount + " " + itemName + "");
- }
- }
- if (player.isPlayer()) {
- GameLogger.writeLog(player.playerName, "tradesrecieved", player.playerName + " was traded by " + o.playerName + " and recieved " + item.amount + " " + itemName + "");
- }
- }
- player.getPlayerAssistant().removeAllWindows();
- player.tradeResetNeeded = true;
- CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() {
- @Override
- public void execute(CycleEventContainer container) {
- if (player.inTrade && player.tradeResetNeeded) {
- Client o = (Client) PlayerHandler.players[player.tradeWith];
- if (o != null) {
- if (o.tradeResetNeeded) {
- player.getTrading().resetTrade();
- o.getTrading().resetTrade();
- container.stop();
- } else {
- container.stop();
- }
- } else {
- container.stop();
- }
- } else {
- container.stop();
- }
- }
- @Override
- public void stop() {
- player.tradeResetNeeded = false;
- }
- }, 1);
- } catch (Exception e) {
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement