Thread: Market Trade API CODE

Results 1 to 6 of 6
  1. #1 Market Trade API CODE 
    Registered Member
    Join Date
    Apr 2015
    Posts
    35
    Thanks given
    4
    Thanks received
    0
    Rep Power
    11
    Hey I am trying to add the market api from everythingrs. I am having a issue with converting it to my server code.

    I don't have the normal PI files so I am just unsure on what methods to rename in this line of code. I would appreciate some help.


    Code:
         com.everythingrs.marketplace.Trade trade = new com.everythingrs.marketplace.Trade();
            	trade.setUsername(o.getUsername());
            	trade.setTradeWith(c.getUsername());
            	for (GameItem item : o.getTradeAndDuel().offeredItems) {
            		if (item.id > 0) {
            			String itemName = ItemDefinitions.getDefinitions()[item.id].getitemName();
            			trade.push(new com.everythingrs.marketplace.Item(item.id, item.amount, itemName));
            		}
            	}
            	trade.update("secret_key");
    what I changed to
    Code:
    com.everythingrs.marketplace.Trade trade = new com.everythingrs.marketplace.Trade();
    	        	trade.setUsername(player.getUsername());
    	        	trade.setTradeWith(player.getUsername());
    	        	
    	        	for (GameItem item : player.getTrade().request(MultiplayerSessionStage.OFFER_ITEMS)) {
    	        		if (item.id > 0) {
    	        			String itemName = ItemDefinition.DEFINITIONS[item.id].getName();
    	        			trade.push(new com.everythingrs.marketplace.Item(item.id, item.getAmount(), itemName));
    	        		}
    	        	}
    	        	trade.update("secret_key");

    Error: Description Resource Path Location Type
    The method request(Player) in the type Trade is not applicable for the arguments (int) TradeSession.java /source/src/org/perception/model/interaction/trade line 186 Java Problem

    Code:
    package org.perception.model.interaction.trade;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map.Entry;
    
    import org.perception.Server;
    import org.perception.model.interaction.MultiplayerSession;
    import org.perception.model.interaction.MultiplayerSessionFinalizeType;
    import org.perception.model.interaction.MultiplayerSessionStage;
    import org.perception.model.interaction.MultiplayerSessionType;
    import org.perception.model.items.GameItem;
    import org.perception.model.items.ItemDefinition;
    import org.perception.model.players.Player;
    import org.perception.util.Misc;
    
    import java.util.Objects;
    
    import com.mchange.v1.util.SimpleMapEntry;
    
    public class TradeSession extends MultiplayerSession {
    
    	public TradeSession(List<Player> players, MultiplayerSessionType type) {
    		super(players, type);
    	}
    	
    	@Override public void accept(Player player, Player recipient, int stageId) {
    		switch (stageId) {
    			case MultiplayerSessionStage.OFFER_ITEMS:
    				if (recipient.getItems().freeSlots() < getItems(player).size()) {
    					player.sendMessage(recipient.playerName + " only has "+recipient.getItems().freeSlots()+ ", you need to remove items.");
    					player.getPA().sendFrame126("You have offered more items than "+recipient.playerName+" has free space.", 3431);
    					recipient.getPA().sendFrame126("You do not have enough inventory space to accept this trade.", 3431);
    					return;
    				}
    				for (Player p : players) {
    					GameItem overlap = getOverlappedItem(p);
    	    			if (overlap != null) {
    	    				p.getPA().sendFrame126("Too many of one item! The other player has "+Misc.getValueRepresentation(overlap.getAmount())+" "+player.getItems().getItemName(overlap.getId())+" in their inventory.", 3431);
    	    				getOther(p).getPA().sendFrame126("The other player has offered too many of one item, they must remove some.", 3431);
    	    				return;
    	    			}
    				}
    				if (stage.hasAttachment() && stage.getAttachment() != player) {
    					stage.setStage(MultiplayerSessionStage.CONFIRM_DECISION);
    					stage.setAttachment(null);
    					updateMainComponent();
    					return;
    				}
    				player.getPA().sendFrame126("Waiting for other player...", 3431);
    				stage.setAttachment(player);
    	            recipient.getPA().sendFrame126("Other player has accepted", 3431);
    				break;
    				
    			case MultiplayerSessionStage.CONFIRM_DECISION:
    				if (recipient.getItems().freeSlots() < getItems(player).size()) {
    					player.sendMessage(recipient.playerName + " only has "+recipient.getItems().freeSlots()+ ", the items could not be traded, they would be lost.");
    					recipient.sendMessage(player.playerName + " had too many items to offer, they could have been lost in the trade.");
    					finish(MultiplayerSessionFinalizeType.WITHDRAW_ITEMS);
    					return;
    				}
    				if (stage.hasAttachment() && stage.getAttachment() != player) {
    					finish(MultiplayerSessionFinalizeType.GIVE_ITEMS);
    					player.sendMessage("Trade successfully completed with "+recipient.playerName);
    					recipient.sendMessage("Trade successfully completed with "+player.playerName);
    					return;
    				}
    				stage.setAttachment(player);
    				player.getPA().sendFrame126("Waiting for other player...", 3535);
    	            recipient.getPA().sendFrame126("Other player has accepted", 3535);
    				break;
    				
    			default:
    				finish(MultiplayerSessionFinalizeType.WITHDRAW_ITEMS);
    				break;
    		}
    	}
    	
    	@Override
    	public void updateOfferComponents() {
    		for (Player player : items.keySet()) {
    	   		player.getItems().resetItems(3322);
        		refreshItemContainer(player, player, 3415);
        		refreshItemContainer(player, getOther(player), 3416);
        		player.getPA().sendFrame126("", 3431);
        		player.getPA().sendFrame126("Trading with: " + getOther(player).playerName + " who has @gre@"
        				+ getOther(player).getItems().freeSlots() + " free slots.", 3417);
    		}
    	}
    
    	@Override
    	public boolean itemAddable(Player player, GameItem item) {
    		if (!player.getItems().isTradeable(item.getId())) {
    			player.sendMessage("You cannot trade this item, it is deemed as untradable.");
    			return false;
    		}
    		if (item.getId() == 12926 || item.getId() == 12931 || item.getId() == 12904) {
    			player.sendMessage("You cannot trade this item, it is deemed as untradable.");
    			return false;
    		}
    		if (stage.getStage() != MultiplayerSessionStage.OFFER_ITEMS) {
    			finish(MultiplayerSessionFinalizeType.WITHDRAW_ITEMS);
    			return false;
    		}
    		return true;
    	}
    
    	@Override
    	public boolean itemRemovable(Player player, GameItem item) {
    		if (!Server.getMultiplayerSessionListener().inAnySession(player)) {
    			finish(MultiplayerSessionFinalizeType.WITHDRAW_ITEMS);
    			return false;
    		}
    		if (stage.getStage() != MultiplayerSessionStage.OFFER_ITEMS) {
    			finish(MultiplayerSessionFinalizeType.WITHDRAW_ITEMS);
    			return false;
    		}
    		return true;
    	}
    	
    	@Override
    	public void updateMainComponent() {
    		if (stage.getStage() == MultiplayerSessionStage.OFFER_ITEMS) {
        		for (Player player : players) {
        			player.setTrading(true);
        			player.getItems().resetItems(3322);
        			refreshItemContainer(player, player, 3415);
        			refreshItemContainer(player, player, 3416);
        			player.getPA().sendFrame126("Trading with: " + getOther(player).playerName + " who has @gre@"
        					+ getOther(player).getItems().freeSlots() + "", 3417);
        			player.getPA().sendFrame126("", 3431);
        			player.getPA().sendFrame126("Are you sure you want to make this trade?", 3535);
        			player.getPA().sendFrame248(3323, 3321);
        		}
    		} else if (stage.getStage() == MultiplayerSessionStage.CONFIRM_DECISION) {
    			for (Player player : players) {
    				Player recipient = getOther(player);
    				player.getItems().resetItems(3214);
    				int column = 0;
    				List<GameItem> items = getItems(player);
    				for (GameItem item : items) {
    					if (item.getId() > 0 && item.getAmount() > 0) {
    						player.getPA().sendFrame126(player.getItems().getItemName(item.getId())
    							+ " x "+Misc.getValueRepresentation(item.getAmount()), 55011 + column);
    						column++;
    					}
    				}
    				for (; column < 28; column++) {
    					player.getPA().sendFrame126("", 55011 + column);
    				}
    				column = 0;
    				items = getItems(recipient);
    				for (GameItem item : items) {
    					if (item.getId() > 0 && item.getAmount() > 0) {
    						player.getPA().sendFrame126(player.getItems().getItemName(item.getId())
    							+ " x "+Misc.getValueRepresentation(item.getAmount()), 55051 + column);
    						column++;
    					}
    				}
    				for (; column < 28; column++) {
    					player.getPA().sendFrame126("", 55051 + column);
    				}
        			player.getPA().sendFrame126("Are you sure you want to make this trade?", 3535);
    				player.getPA().sendFrame248(55000, 197);
    			}
    		}
    	}
    
    	@Override
    	public void give() {
    		if (players.stream().anyMatch(client -> Objects.isNull(client))) {
    			finish(MultiplayerSessionFinalizeType.WITHDRAW_ITEMS);
    			return;
    		}
    		for (Player player : items.keySet()) {
    			if (Objects.isNull(player)) {
    				continue;
    			}
    			if (items.get(player).size() <= 0) {
    				continue;
    			}
    			    com.everythingrs.marketplace.Trade trade = new com.everythingrs.marketplace.Trade();
    	        	trade.setUsername(player.getUsername());
    	        	trade.setTradeWith(player.getUsername());
    	        	
    	        	for (GameItem item : player.getTrade().request(MultiplayerSessionStage.OFFER_ITEMS)) {
    	        		if (item.id > 0) {
    	        			String itemName = ItemDefinition.DEFINITIONS[item.id].getName();
    	        			trade.push(new com.everythingrs.marketplace.Item(item.id, item.getAmount(), itemName));
    	        		}
    	        	}
    	        	trade.update("secret_key");
    			for (GameItem item : items.get(player)) {
    				getOther(player).getItems().addItem(item.getId(), item.getAmount());
    			}
    		}
    	}
    
    	@Override
    	public void dispose() {
    		
    	}
    
    	@Override
    	public void withdraw() {
    		for (Player player : items.keySet()) {
    			if (Objects.isNull(player)) {
    				continue;
    			}
    			if (items.get(player).size() <= 0) {
    				continue;
    			}
    			for (GameItem item : items.get(player)) {
    				player.getItems().addItem(item.getId(), item.getAmount());
    			}
    		}
    	}
    
    	@Override
    	@SuppressWarnings("unchecked")
    	public void logSession(MultiplayerSessionFinalizeType type) {
    		if (type == MultiplayerSessionFinalizeType.WITHDRAW_ITEMS) {
    			return;
    		}
    		ArrayList<Entry<Player, String>> participantList = new ArrayList<>();
    		for (Player player : items.keySet()) {
    			String items = createItemList(player);
    			Entry<Player, String> participant = new SimpleMapEntry(player, items);
    			participantList.add(participant);
    		}
    		if (participantList.size() == 2) {
    		//	String query = createQuery(participantList, type);
    			//new Query(query).execute();
    		}
    	}
    
    	/*private String createQuery(ArrayList<Entry<Player, String>> participantList, MultiplayerSessionFinalizeType type) {
    		String status;
    		switch (type) {
    		case GIVE_ITEMS:
    			status = "Completed";
    			break;
    		default:
    			status = "Error";
    			break;
    		}
    		
    		Player player = participantList.get(0).getKey();
    		String items = participantList.get(0).getValue();
    		Player playerOther = participantList.get(1).getKey();
    		String itemsOther = participantList.get(1).getValue();
    		
    		String query = "INSERT into trades (DATE, TRADESTATUS, PLAYER, IP, GIVEN, OTHERPLAYER, OTHERIP, OTHERGIVEN) VALUES(NOW(), '" + status + "', "
    				+ "'" + player.playerName + "', '" + getIp(player) + "', '" + items + "', '" + playerOther.playerName + "', '" + getIp(playerOther)
    				+ "', '" + itemsOther + "')";
    		return query;
    	}*/
    	
    	private String getIp(Player player) {
    		if (player.getRights().isBetween(1, 3)) {
    			return "Private";
    		}
    		return player.connectedFrom;
    	}
    
    	private String createItemList(Player player) {
    		if (items.get(player).size() == 0) {
    			return "";
    		}
    		StringBuilder sb = new StringBuilder();
    		for (GameItem item : items.get(player)) {
    			sb.append(player.getItems().getItemName(item.getId()));
    			if (item.getAmount() != 1) {
    				sb.append(" x" + item.getAmount());
    			}
    			sb.append(", ");
    		}
    		return sb.substring(0, sb.length() - 2).replaceAll("'", "\\\\'");
    	}
    	
    }
    Thank you very much
    Reply With Quote  
     

  2. #2  
    Community Veteran


    Arch337's Avatar
    Join Date
    Sep 2008
    Posts
    2,950
    Thanks given
    210
    Thanks received
    349
    Rep Power
    1376
    Code:
    com.everythingrs.marketplace.Trade trade = new com.everythingrs.marketplace.Trade();
    it can't find this class file's location, and you'll need to locate it in your files.


    "A fail act is something you do regular, but a dumb act is something you can learn from"
    Spoiler for Problem?:
    Reply With Quote  
     

  3. #3  
    Rune-Server Affiliate
    Genesis's Avatar
    Join Date
    Sep 2010
    Posts
    4,149
    Thanks given
    1,508
    Thanks received
    1,980
    Rep Power
    4944
    Post errors please
    Reply With Quote  
     

  4. #4  
    Registered Member Stevenhax's Avatar
    Join Date
    Jul 2014
    Posts
    387
    Thanks given
    55
    Thanks received
    64
    Rep Power
    42
    You're using a wrong parameter in the request method.
    Reply With Quote  
     

  5. #5  
    Rune-Server Affiliate
    Genesis's Avatar
    Join Date
    Sep 2010
    Posts
    4,149
    Thanks given
    1,508
    Thanks received
    1,980
    Rep Power
    4944
    Try changing

    Code:
    for (GameItem item : player.getTrade().request(MultiplayerSessionStage.OFFER_ITEMS)) {
    	        		if (item.id > 0) {
    	        			String itemName = ItemDefinition.DEFINITIONS[item.id].getName();
    	        			trade.push(new com.everythingrs.marketplace.Item(item.id, item.getAmount(), itemName));
    	        		}
    	        	}
    to

    Code:
    for (GameItem item : items.get(player)) {
    	        		if (item.id > 0) {
    	        			String itemName = ItemDefinition.DEFINITIONS[item.id].getName();
    	        			trade.push(new com.everythingrs.marketplace.Item(item.id, item.getAmount(), itemName));
    	        		}
    	        	}
    Reply With Quote  
     

  6. #6  
    Registered Member
    Join Date
    Apr 2015
    Posts
    35
    Thanks given
    4
    Thanks received
    0
    Rep Power
    11
    Quote Originally Posted by Genesis View Post
    Try changing

    Code:
    for (GameItem item : player.getTrade().request(MultiplayerSessionStage.OFFER_ITEMS)) {
    	        		if (item.id > 0) {
    	        			String itemName = ItemDefinition.DEFINITIONS[item.id].getName();
    	        			trade.push(new com.everythingrs.marketplace.Item(item.id, item.getAmount(), itemName));
    	        		}
    	        	}
    to

    Code:
    for (GameItem item : items.get(player)) {
    	        		if (item.id > 0) {
    	        			String itemName = ItemDefinition.DEFINITIONS[item.id].getName();
    	        			trade.push(new com.everythingrs.marketplace.Item(item.id, item.getAmount(), itemName));
    	        		}
    	        	}
    Getting error
    Description Resource Path Location Type
    The method push(Item) is undefined for the type Trade TradeSession.java /source/src/org/perception/model/interaction/trade line 185 Java Problem


    Code:
    for (GameItem item : items.get(player)) {
            		if (item.id > 0) {
            			String itemName = ItemDefinition.DEFINITIONS[item.id].getName();
            			Trade.push(new com.everythingrs.marketplace.Item(item.id, item.getAmount(), itemName));
            		}
            	}
    Trade.java
    Code:
    package org.perception.model.interaction.trade;
    
    import java.util.Arrays;
    import java.util.Objects;
    
    import org.perception.Server;
    import org.perception.model.interaction.Multiplayer;
    import org.perception.model.interaction.MultiplayerSession;
    import org.perception.model.interaction.MultiplayerSessionStage;
    import org.perception.model.interaction.MultiplayerSessionType;
    import org.perception.model.players.Player;
    
    public class Trade extends Multiplayer {
    
    	public Trade(Player player) {
    		super(player);
    	}
    
    	@Override
    	public boolean requestable(Player requested) {
    		if (requested == null) {
    			player.sendMessage("The requested player cannot be found.");
    			return false;
    		}
    		if (player.connectedFrom.equals(requested.connectedFrom)) {
    			player.sendMessage("You cannot trade to your own IP.");
    			return false;
    		}
    		if (Server.getMultiplayerSessionListener().requestAvailable(requested, player,
    				MultiplayerSessionType.TRADE) != null) {
    			player.sendMessage("You have already sent a request to this player.");
    			return false;
    		}
    		if (player.getBH().hasTarget() && player.getBH().getTarget() != null
    				&& player.getBH().getTarget().getName() != null) {
    			if (player.getBH().getTarget().getName().equalsIgnoreCase(requested.playerName)) {
    				player.sendMessage("You cannot trade your bounty hunter target.");
    				return false;
    			}
    		}
    		if (player.playerName.equalsIgnoreCase("furious3lf")) {
    			player.sendMessage("The owner has not given you rights to do this!");
    			return false;
    		}
    		if (Objects.equals(player, requested)) {
    			player.sendMessage("You cannot trade yourself.");
    			return false;
    		}
    		if (Server.getMultiplayerSessionListener().inAnySession(player)) {
    			player.sendMessage("You cannot request a trade whilst in a session.");
    			return false;
    		}
    		if (Server.getMultiplayerSessionListener().inAnySession(requested)) {
    			player.sendMessage("This player is currently is a session with another player.");
    			return false;
    		}
    		if (player.teleTimer > 0 || requested.teleTimer > 0) {
    			player.sendMessage("You cannot request or accept whilst you, or the other player are teleporting.");
    			return false;
    		}
    		return true;
    	}
    
    	@Override
    	public void request(Player requested) {
    		if (Objects.isNull(requested)) {
    			player.sendMessage("The player cannot be found, try again shortly.");
    			return;
    		}
    		if (Objects.equals(player, requested)) {
    			player.sendMessage("You cannot trade yourself.");
    			return;
    		}
    		player.face(requested);
    		MultiplayerSession session = Server.getMultiplayerSessionListener().requestAvailable(player, requested,
    				MultiplayerSessionType.TRADE);
    		if (session != null) {
    			session.getStage().setStage(MultiplayerSessionStage.OFFER_ITEMS);
    			session.populatePresetItems();
    			session.updateMainComponent();
    			Server.getMultiplayerSessionListener().removeOldRequests(player);
    			Server.getMultiplayerSessionListener().removeOldRequests(requested);
    			session.getStage().setAttachment(null);
    		} else {
    			session = new TradeSession(Arrays.asList(player, requested), MultiplayerSessionType.TRADE);
    			if (Server.getMultiplayerSessionListener().appendable(session)) {
    				player.sendMessage("Sending trade offer...");
    				requested.sendMessage(player.playerName + ":tradereq:");
    				session.getStage().setAttachment(player);
    				Server.getMultiplayerSessionListener().add(session);
    			}
    		}
    
    	}
    
    }
    Reply With Quote  
     


Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. 718 - Broken Trade Error Code
    By greavesy in forum Help
    Replies: 1
    Last Post: 06-21-2017, 08:07 PM
  2. Replies: 1
    Last Post: 01-01-2013, 02:40 AM
  3. Replies: 6
    Last Post: 12-28-2012, 12:19 PM
  4. Replies: 0
    Last Post: 08-31-2010, 05:01 AM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •