Welcome Guest [Log In] [Register]
Add Reply
[Espeon]Tradeing
Topic Started: Feb 26 2010, 04:43 PM (27 Views)
Sir Thomas
New York Administrator
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!
Offline Profile Quote Post Goto Top
 
1 user reading this topic (1 Guest and 0 Anonymous)
« Previous Topic · Tutorials/Snippets/Config · Next Topic »
Add Reply



Find more zetaboards themes at InkDropStyles.com