New York Administrator
- Posts:
- 24
- Group:
- Admins
- Member
- #1
- Joined:
- Feb 24, 2010
|
Credits Gravdiggah//For Making Credits Me// For Converting Credits Axed//For Converting TItem.Java/BankUtils
Add This In ActionButtons.Java
- Code:
-
case 335: case 334: case 336: p.pTrade.buttons.handleButton(interfaceId, packetId, buttonId, buttonId2); break;
Under:
- Code:
-
} else if (buttonId == 42) { // Safety first p.requestAnim(8770, 0); p.requestGFX(1553, 0); } break;
Replace PlayerOption2 With This
- Code:
-
pack'age net.com.espeon.net.packethandler;
import net.com.espeon.com.*; import net.com.espeon.model.Player; import net.com.espeon.util.Misc; import net.com.espeon.io.PacketManager;
public class PlayerOption2 implements Packet { /** * Handles the second player option. * @param p The Player which the frame should be handled for. * @param packetId The packet id this belongs to. * @param packetSize The amount of bytes being recieved for this packet. */ public void handlePacket(Player p, int packetId, int packetSize) { if (p == null || p.stream == null) { return; }
if (!p.playerOption2) { int playerId = p.stream.readUnsignedWord(); if (playerId <= 0 || playerId >= Engine.players.length || Engine.players[playerId] == null) { return; } p.clickId = playerId; p.clickX = Engine.players[playerId].absX; p.clickY = Engine.players[playerId].absY; if (Misc.getDistance(p.absX, p.absY, p.clickX, p.clickY) > 30) { return; } p.playerOption2 = true; } if (Engine.players[p.clickId] == null) { p.playerOption2 = false; return; } if (Misc.getDistance(p.absX, p.absY, p.clickX, p.clickY) > 1) { return; }
Player p2 = Engine.players[p.clickId]; if (p2.pTrade.getPartner() == p) { } else { p.getActionSender().sendMessage(p, "Sending trade request..."); p.getActionSender().sendMessage(p2, p.username.substring(0, 1).toUpperCase() + p.username.substring(1) + ":tradereq:"); } p.requestFaceTo(65535); p.pTrade.tradePlayer(p2); p.playerOption2 = false; } }
Add This To PacketManager Of If U Have It Replace It
- Code:
-
case 253: int playerId = p.stream.readUnsignedWord(); playerId -= 33024; playerId = playerId / 256; playerId++; if (playerId < 0 || playerId >= Engine.players.length || Engine.players[playerId] == null) { return; } if (Engine.players[playerId].pTrade.getPartner() == p) { p.pTrade.tradePlayer(Engine.players[playerId]); }
break
Replace Case 49 With This
- Code:
-
case 49: /* * Main map walking. */ case 119: if(p.interfaceId==335 || p.interfaceId==334 || p.interfaceId==620) { p.pTrade.declineTrade(); if (p.interfaceId == 762) { return; } }
Add This To Imports In Player.java
- Code:
-
import net.com.model.ptrade.PTrade;
Declare This In Player.Java
- Code:
-
public PTrade pTrade;
Now Find
- Code:
-
for (int i = 0; i < bankItems.length; i++) { bankItems[i] = -1; }
Change It To
- Code:
-
for (int i = 0; i < bankItems.length; i++) { bankItems[i] = -1; } pTrade = new PTrade(this); }
Now
Create New Package Called ptrade In net.com.espeon.ptrade Inside It Make A New .Java File Called PTrade.Java
- Code:
-
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package net.com.espeon.model.ptrade;
import java.util.LinkedList; import net..com.espeon.model.items.*; import net.com.espeon.Engine; import net.com.espeon.model.Player; import net.com.espeon.model.ptrade.TItem;
/** * * @author gravediggah//Converted By Sk84Life562 */ public class PTrade {
private Player p; public TButtons buttons; private PlayerItems pi = new PlayerItems(); private BankUtils bu = new BankUtils(); public int tradeStage = 0; public boolean tradeConfirm = false; private String tPartner = ""; private LinkedList<TItem> tradeItems = new LinkedList<TItem>();
public PTrade(Player p) { this.p = p; this.buttons = new TButtons(p); }
public void resetTrade() { this.tradeStage = 0; this.tPartner = ""; this.tradeConfirm = false; this.p.getActionSender().removeShownInterface(p); this.restorePlayer(); returnItems(); try { Engine.fileManager.saveCharacter(p); } catch (Exception e) { return; } }
public void confirmTrade() { if (getPartner().pTrade.tradeConfirm) { nextStage(); } else if (!tradeConfirm) { tradeConfirm = true; refreshScreens(); } else { tradeConfirm = true; } }
public void declineTrade() { getPartner().getActionSender().sendMessage(getPartner(), "The other player declined the trade."); p.getActionSender().sendMessage(p, "Trade declined.");
getPartner().pTrade.resetTrade(); p.pTrade.resetTrade(); }
public void nextStage() { p.pTrade.tradeConfirm = false; getPartner().pTrade.tradeConfirm = false; switch (tradeStage) { case 0: p.pTrade.tradeStage++; getPartner().pTrade.tradeStage++; refreshScreens(); break; case 1: p.pTrade.tradeStage++; getPartner().pTrade.tradeStage++; refreshScreens(); break; case 2: p.pTrade.finishTrade(); break; }
}
public void finishTrade() { p.pTrade.giveItems(); getPartner().pTrade.giveItems();
getPartner().pTrade.tradeStage = 0; getPartner().pTrade.tPartner = ""; getPartner().pTrade.tradeConfirm = false; getPartner().getActionSender().removeShownInterface(getPartner()); getPartner().pTrade.restorePlayer();
this.tradeStage = 0; this.tPartner = ""; this.tradeConfirm = false; this.p.getActionSender().removeShownInterface(p); this.p.pTrade.restorePlayer(); }
public void restorePlayer() { p.getActionSender().restoreInventory(p);
}
public void tradePlayer(Player tp) { if (p.rights >= 2 && tp.rights < 2) { p.getActionSender().sendMessage(p, "Administrators cannot trade normal players."); return; } if (tradeStage == 0) { this.tPartner = tp.username; if (tp.pTrade.tPartner.length() > 1) { if (tp.pTrade.getPartner() != null) { if (tp.pTrade.getPartner() == p) { if(tradeStage==0){nextStage();} } } } } }
public void tradeItemB(int itemSlot, int amount) { int itemId = p.items[itemSlot]; if (Engine.items.isUntradable(itemId)) { p.getActionSender().sendMessage(p, "You cannot trade this item."); return; } int itemAmt = amount;
if (itemId < 0 || amount < 1 || getPartner() == null || !(p.interfaceId == 335)) { return; }
this.tradeConfirm = false; getPartner().pTrade.tradeConfirm = false;
// Player has "amount" of item.
if (!pi.hasPlayerItemAmount(p, itemId, itemAmt)) { if (isStack(itemId)) { itemAmt = p.itemsN[itemSlot]; } else { itemAmt = pi.invItemCount(p, itemId); } }
//Offer the item
if (itemAmt < 1) { return; } else { itemOffer(itemId, itemAmt); }
}
public void removeItemB(int itemSlot, int amount) { int itemId = tradeItems.get(itemSlot).getItemId(); this.tradeConfirm = false; getPartner().pTrade.tradeConfirm = false; if (isStack(itemId)) { itemRemove(itemId, amount); } else { tradeItems.remove(itemSlot); pi.addItem(p, itemId, 1); getPartner().pTrade.flashIcon(itemSlot); refreshScreens(); } }
public void itemOffer(int itemId, int amount) { if (isStack(itemId)) { if (getTradeSlot(itemId) > -1) { tradeItems.get(getTradeSlot(itemId)). incAmount(amount); } else { tradeItems.add(new TItem(itemId, amount)); } } else { for (int i = 0; i < amount; i++) { tradeItems.add(new TItem(itemId, 1)); } } pi.deleteItem(p, itemId, Engine.playerItems.getItemSlot(p, itemId), amount); refreshScreens(); }
public void itemRemove(int itemId, int amount) { if (isStack(itemId)) { int toFlash=getTradeSlot(itemId); if (getTradeSlot(itemId) > -1) { int curAmount = tradeItems.get(getTradeSlot(itemId)).getItemAmount(); if ((curAmount - amount) >= 1) { tradeItems.get(getTradeSlot(itemId)).decAmount(amount); pi.addItem(p, itemId, amount); } else { tradeItems.remove(getTradeSlot(itemId)); pi.addItem(p, itemId, curAmount); } getPartner().pTrade.flashIcon(toFlash); } } refreshScreens(); }
public void removeList(int i) { tradeItems.remove(i); }
public int getTradeSlot(int itemId) { int i = 0; for (TItem ti : tradeItems) { if (ti.getItemId() == itemId) { return i; } i++; } return -1; }
public Player getPartner() { for (Player pl : Engine.players) { if (pl != null) { if (pl.username.toLowerCase().equals(tPartner.toLowerCase())) { return pl; } } } return null; }
public void returnItems() { for (TItem ti : tradeItems) { pi.addItem(p, ti.getItemId(), ti.getItemAmount()); } tradeItems = new LinkedList<TItem>(); }
public void giveItems() { for (TItem ti : tradeItems) { pi.addItem(getPartner(), ti.getItemId(), ti.getItemAmount()); } p.getActionSender().sendMessage(p, "Trade completed."); tradeItems = new LinkedList<TItem>(); }
public boolean isStack(int itemId) { if (bu.isNote(itemId) || Engine.items.stackable(itemId)) { return true; } else { return false; } }
public int[][] getItemsArray() { int[][] itemArray = new int[2][tradeItems.size()]; int i = 0; for (TItem ti : tradeItems) { itemArray[0][i] = ti.getItemId(); itemArray[1][i] = ti.getItemAmount(); i++; } return itemArray; }
public String getSecondString() { String a = ""; if (getItemsArray()[0].length > 0) { for (int i = 0; i < getItemsArray()[0].length; i++) { a = a + "<col=FF9040>" + Engine.items.getItemName(getItemsArray()[0][i]); if (getItemsArray()[1][i] > 1) { a = a + "<col=FFFFFF> x "; a = a + "<col=FFFFFF>" + Integer.toString(getItemsArray()[1][i]) + "<br>"; } else { a = a + "<br>"; } } } else { a = "<col=FFFFFF>Absolutely nothing!"; } return a; }
public void refreshScreens() { switch (this.tradeStage) { case 1: p.pTrade.showFirst(); getPartner().pTrade.showFirst(); break; case 2: p.pTrade.showSecond(); getPartner().pTrade.showSecond(); break; } }
public void showFirst() { p.getActionSender().showInterface(p, 335); p.getActionSender().setInventory(p, 336); p.pTrade.tradeOptions(); p.getActionSender().setItems(p, -1, 2, 90, p.pTrade.getItemsArray()[0], p.pTrade.getItemsArray()[1]); p.getActionSender().setItems(p, -2, 60981, 90, getPartner().pTrade.getItemsArray()[0], getPartner().pTrade.getItemsArray()[1]); p.getActionSender().setItems(p, -1, 1, 93, p.items, p.itemsN); String waitString = ""; if (p.pTrade.tradeConfirm) { waitString = "Waiting for other player..."; } else if (p.pTrade.getPartner().pTrade.tradeConfirm) { waitString = "The other player has accepted."; } p.getActionSender().setString(p, waitString, 335, 36); p.getActionSender().setString(p, "Trading With: " + getPartner().username.substring(0, 1).toUpperCase() + getPartner().username.substring(1), 335, 15); p.getActionSender().setString(p, getPartner().username.substring(0, 1).toUpperCase() + getPartner().username.substring(1)+" has "+Engine.playerItems.freeSlotCount(getPartner())+" free inventory slots.", 335, 21);
}
public void showSecond() { p.getActionSender().showInterface(p, 334); p.getActionSender().setString(p, p.pTrade.getSecondString(), 334, 37); p.getActionSender().setString(p, getPartner().pTrade.getSecondString(), 334, 41); p.getActionSender().setString(p, "<col=00FFFF>Trading with:<br>" + "<col=00FFFF>" + getPartner().username.substring(0, 1).toUpperCase() + getPartner().username.substring(1), 334, 46); p.getActionSender().setInterfaceConfig(p, 334, 37, false); p.getActionSender().setInterfaceConfig(p, 334, 41, false); p.getActionSender().setInterfaceConfig(p, 334, 45, true); p.getActionSender().setInterfaceConfig(p, 334, 46, false); String waitString = new String(new byte[] {}); if (p.pTrade.tradeConfirm) { waitString = "Waiting for other player..."; } else if (p.pTrade.getPartner().pTrade.tradeConfirm) { waitString = "The other player has accepted."; } p.getActionSender().setString(p, waitString, 334, 33);
}
public void tradeOptions() { p.getActionSender().setAccessMask(p, 1026, 30, 335, 0, 27); p.getActionSender().setAccessMask(p, 1026, 32, 335, 0, 27); p.getActionSender().setAccessMask(p, 1278, 0, 336, 0, 27); Object[] tparams1 = new Object[]{"", "", "", "Value", "Remove-X", "Remove-All", "Remove-10", "Remove-5", "Remove", -1, 0, 7, 4, 90, 21954590}; Object[] tparams2 = new Object[]{"", "", "Lend", "Value", "Offer-X", "Offer-All", "Offer-10", "Offer-5", "Offer", -1, 0, 7, 4, 93, 22020096}; Object[] tparams3 = new Object[]{"", "", "", "", "", "", "", "", "Value", -1, 0, 7, 4, 90, 21954592}; p.getActionSender().runScript(p, 150, tparams1, "IviiiIsssssssss"); p.getActionSender().runScript(p, 150, tparams2, "IviiiIsssssssss"); p.getActionSender().runScript(p, 695, tparams3, "IviiiIsssssssss"); }
public void flashIcon(int itemSlot) { Object[] tparams4 = new Object[]{itemSlot, 7, 4, 21954593}; p.getActionSender().runScript(p, 143, tparams4, "Iiii"); } }
Now Create A New .Java File Called TButtons.Java And Put This In It
- Code:
-
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package net.com.espeon.model.ptrade;
import net.com.espeon.Engine; import net.com.espeon.model.Player; import net.com.espeon.model.items.PlayerItems; import net.com.util.Misc;
/** * * @author gravediggah//Converted By Sk84Life562 */ public class TButtons {
private Player p; private PlayerItems pi = new PlayerItems();
public TButtons(Player p) { this.p = p; }
public void handleButton(int interfaceId, int packetId, int buttonId, int buttonId2) { switch (interfaceId) { case 334: secondScreen(packetId,buttonId,buttonId2); break; case 335: firstScreen(packetId, buttonId, buttonId2); break; case 336: inventoryItems(packetId, buttonId2); break;
} }
public void firstScreen(int packetId, int buttonId, int buttonId2) { switch (buttonId) { case 16: p.pTrade.confirmTrade(); break; case 12: case 18: p.pTrade.declineTrade(); break; case 30: if (packetId == 233 && buttonId==30) { p.pTrade.removeItemB(buttonId2, 1); } break; }
}
public void secondScreen(int packetId, int buttonId, int buttonId2) { switch (buttonId) { case 20: p.pTrade.confirmTrade(); break; case 8: case 21: p.pTrade.declineTrade(); break; }
}
public void inventoryItems(int packetId, int buttonId2) { switch (packetId) { case 233: p.pTrade.tradeItemB(buttonId2, 1); break; case 21: p.pTrade.tradeItemB(buttonId2, 5); break; case 169: p.pTrade.tradeItemB(buttonId2, 10); break; case 214: p.pTrade.tradeItemB(buttonId2, 999999999); break; case 173: p.input.request(1, buttonId2); break;
default: //Misc.println("[Game Engine] - Trading Launched"); break; } } }
Now Last For ptrade File Make A New .Java File Called TItem.Java Now Put This In It
- Code:
-
/* * To change this template, choose Tools | Templates * and open the template in the editor. */
package net.com.espeon.model.ptrade;
/** * * @author gravediggah//Converted By Sk4Life562 */ public class TItem { private int itemId; private int itemAmount;
public TItem(int itemId, int itemAmount) { this.itemId=itemId; this.itemAmount=itemAmount; }
public int getItemAmount() { return itemAmount; }
public void setItemAmount(int itemAmount) { this.itemAmount = itemAmount; }
public int getItemId() { return itemId; }
public void setItemId(int itemId) { this.itemId = itemId; }
public void incAmount(int value) { this.itemAmount+=value; }
public void decAmount(int value) { this.itemAmount-=value; }
}
Now,If U Dont Got This Frames Add Them To ActionSender.Java
- Code:
-
/** * Sets item options allowed * @param p The Player which the frame should be created for. * @param set The access mask * @param window The window or child interface id * @param inter The main interface id * @param off The item offset to start with * @param len The item count to set */ public void setAccessMask(Player p, int set, int window, int inter, int off, int len) { if (p == null || p.stream == null || p.disconnected[0]) { return; } p.stream.createFrame(223); p.stream.writeWord(len); p.stream.writeWordBigEndianA(off); p.stream.writeWordBigEndian(window); p.stream.writeWordBigEndian(inter); p.stream.writeWordBigEndian(set); p.stream.writeWordBigEndian(0); }
/** * Runs an ClientScript2 script * @param p The Player which the frame should be created for. * @param id The script id * @param o The script arguments * @param valstring The argument types */ public void runScript(Player p, int id, Object[] o, String valstring) { if (valstring.length() != o.length) { throw new IllegalArgumentException("Argument array size mismatch"); } p.stream.createFrameVarSizeWord(152); p.stream.writeString(valstring); int j = 0; for (int i = (valstring.length() - 1); i >= 0; i--) { if (valstring.charAt(i) == 115) { p.stream.writeString((String) o[j]); } else { p.stream.writeDWord((Integer) o[j]); } j++; } p.stream.writeDWord(id); p.stream.endFrameVarSize(); }
Next,Open Up Items.Java Add This To Imports
- Code:
-
import net.com.espeon.model.items.BankUtils;
Find This Method:
- Code:
-
public boolean noted(int itemId) {
Replace The Whole Method With
- Code:
-
public boolean noted(int itemId) { return new BankUtils().isNote(itemId); }
Now Finally In net.com.espeon.model.items
Make A New .Java File Called BankUtils.Java
Place This In It
- Code:
-
package net.com.espeon.model.items;
import java.util.LinkedList; import net.com.espeon.Engine; import net.com.espeon.world.items.ItemList; import net.com.espeon.world.items.Items;
/** * * @author Gravediggah, Edited by Axed */ public class BankUtils { public BankUtils() {
}
public boolean isNote(int itemId) { String description = Engine.items.getItemDescription(itemId); return description.toLowerCase().startsWith("swap"); }
public boolean canBeNoted(int itemId) { return (findNote(itemId)>-1); }
public int findNote(int itemId) { for(ItemList i : Engine.items.itemLists) { if (i !=null) { if (i.itemDescription.toLowerCase().startsWith("swap") && i.itemName.equals(Engine.items.getItemName(itemId))) { return i.itemId; } } } return -1; }
public int findUnNote(int itemId) { for(ItemList i : Engine.items.itemLists) { if (i !=null) { if (!i.itemDescription.toLowerCase().startsWith("swap") && i.itemName.equals(Engine.items.getItemName(itemId))) { return i.itemId; } } } return -1; } }
Then Compile And Run!
|