Thread: Moving items in inventory bug

Results 1 to 7 of 7
  1. #1 Moving items in inventory bug 
    Registered Member
    Join Date
    Dec 2014
    Posts
    16
    Thanks given
    1
    Thanks received
    2
    Rep Power
    11
    Reply With Quote  
     

  2. #2  
    Registered Member
    Join Date
    May 2012
    Posts
    445
    Thanks given
    31
    Thanks received
    19
    Rep Power
    48
    ItemAssistant.Java --> Post your moveItems method
    Reply With Quote  
     

  3. #3  
    Registered Member
    Join Date
    Dec 2014
    Posts
    16
    Thanks given
    1
    Thanks received
    2
    Rep Power
    11
    Quote Originally Posted by No1killme View Post
    ItemAssistant.Java --> Post your moveItems method
    Code:
     public void moveItems(int from, int to, int moveWindow, boolean insertMode) {
    		if (moveWindow == 3214) {
    			int tempI;
    			int tempN;
    			tempI = c.playerItems[from];
    			tempN = c.playerItemsN[from];
    			c.playerItems[from] = c.playerItems[to];
    			c.playerItemsN[from] = c.playerItemsN[to];
    			c.playerItems[to] = tempI;
    			c.playerItemsN[to] = tempN;
    		}
    		
    		if (moveWindow == 5382 && from >= 0 && to >= 0 && from < Config.BANK_SIZE && to < Config.BANK_SIZE && to < Config.BANK_SIZE) {
    			if(insertMode){
    				int tempFrom = from;
    				for(int tempTo = to; tempFrom != tempTo;)
    					if(tempFrom > tempTo)
    					{
    						swapBankItem(tempFrom, tempFrom - 1);
    						tempFrom--;
    					} else
    					if(tempFrom < tempTo)
    					{
    						swapBankItem(tempFrom, tempFrom + 1);
    						tempFrom++;
    					}
    			} else {
    				swapBankItem(from, to);
    			}
    		}
    		
    		if (moveWindow == 5382) {
    			resetBank();
    		}
    		if (moveWindow == 5064) {
    			int tempI;
    			int tempN;
    			tempI = c.playerItems[from];
    			tempN = c.playerItemsN[from];
    
    			c.playerItems[from] = c.playerItems[to];
    			c.playerItemsN[from] = c.playerItemsN[to];
    			c.playerItems[to] = tempI;
    			c.playerItemsN[to] = tempN;
    			resetItems(3214);
    		}
    		resetTempItems();
    		if (moveWindow == 3214) {
    			resetItems(3214);
    		}
    
    	}
    Reply With Quote  
     

  4. #4  
    Registered Member
    Join Date
    May 2012
    Posts
    445
    Thanks given
    31
    Thanks received
    19
    Rep Power
    48
    Quote Originally Posted by Vanished View Post
    Code:
     public void moveItems(int from, int to, int moveWindow, boolean insertMode) {
    		if (moveWindow == 3214) {
    			int tempI;
    			int tempN;
    			tempI = c.playerItems[from];
    			tempN = c.playerItemsN[from];
    			c.playerItems[from] = c.playerItems[to];
    			c.playerItemsN[from] = c.playerItemsN[to];
    			c.playerItems[to] = tempI;
    			c.playerItemsN[to] = tempN;
    		}
    		
    		if (moveWindow == 5382 && from >= 0 && to >= 0 && from < Config.BANK_SIZE && to < Config.BANK_SIZE && to < Config.BANK_SIZE) {
    			if(insertMode){
    				int tempFrom = from;
    				for(int tempTo = to; tempFrom != tempTo;)
    					if(tempFrom > tempTo)
    					{
    						swapBankItem(tempFrom, tempFrom - 1);
    						tempFrom--;
    					} else
    					if(tempFrom < tempTo)
    					{
    						swapBankItem(tempFrom, tempFrom + 1);
    						tempFrom++;
    					}
    			} else {
    				swapBankItem(from, to);
    			}
    		}
    		
    		if (moveWindow == 5382) {
    			resetBank();
    		}
    		if (moveWindow == 5064) {
    			int tempI;
    			int tempN;
    			tempI = c.playerItems[from];
    			tempN = c.playerItemsN[from];
    
    			c.playerItems[from] = c.playerItems[to];
    			c.playerItemsN[from] = c.playerItemsN[to];
    			c.playerItems[to] = tempI;
    			c.playerItemsN[to] = tempN;
    			resetItems(3214);
    		}
    		resetTempItems();
    		if (moveWindow == 3214) {
    			resetItems(3214);
    		}
    
    	}
    The red part is the part for inventory, nothing is wrong there.. So post your MoveItems class, resetTempItems (in ItemAssistant class) method and resetItems (in ItemAssistant class) Method.
    Reply With Quote  
     

  5. #5  
    Registered Member
    Join Date
    Dec 2014
    Posts
    16
    Thanks given
    1
    Thanks received
    2
    Rep Power
    11
    Quote Originally Posted by No1killme View Post
    The red part is the part for inventory, nothing is wrong there.. So post your MoveItems class, resetTempItems (in ItemAssistant class) method and resetItems (in ItemAssistant class) Method.
    Code:
     package server.game.entity.player.packet;
    
    import server.game.entity.player.Client;
    import server.game.entity.player.PacketType;
    
    public class MoveItems implements PacketType {
    
    	@Override
    	public void processPacket(Client c, int packetType, int packetSize) {
    	
    		int interfaceId = c.getInStream().readSignedWordBigEndianA();
    		boolean insertMode = c.getInStream().readSignedByteC() == 1;
    		int from = c.getInStream().readSignedWordBigEndianA();
    		int to = c.getInStream().readSignedWordBigEndian();
    		if(!c.isBanking)
    			return;
    		if(c.inTrade) {
    			c.getTrading().declineTrade();
        	}
    		if(c.inGamble) {
    			c.getGamble().decline();
        	}
    		if(c.tradeStatus == 1) {
    			c.getTrading().declineTrade();
        	}
    		if(c.duelStatus == 1) {
    			c.getDueling().declineDuel();
    		}
    		c.getItems().moveItems(from, to, interfaceId, insertMode);
    		
    	}
    }
    Code:
     public void resetTempItems(){
    		synchronized(c) {
    			int itemCount = 0;
    			for (int i = 0; i < c.playerItems.length; i++) {
    				if (c.playerItems[i] > -1) {
    					itemCount=i;
    				}
    			}
    			c.getOutStream().createFrameVarSizeWord(53);
    			c.getOutStream().writeWord(5064);
    			c.getOutStream().writeWord(itemCount+1); 
    			for (int i = 0; i < itemCount+1; i++) {
    				if (c.playerItemsN[i] > 254) {
    					c.getOutStream().writeByte(255); 						
    					c.getOutStream().writeDWord_v2(c.playerItemsN[i]);
    				} else {
    					c.getOutStream().writeByte(c.playerItemsN[i]);
    				}
    				if (c.playerItems[i] > Config.ITEM_LIMIT || c.playerItems[i] < 0) {
    					c.playerItems[i] = Config.ITEM_LIMIT;
    				}
    				c.getOutStream().writeWordBigEndianA(c.playerItems[i]); 
    			}
    			c.getOutStream().endFrameVarSizeWord();	
    			c.flushOutStream();
    		}
    	}
    Code:
     public void resetItems(int WriteFrame) {
    		synchronized (c) {
    			if (c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrameVarSizeWord(53);
    				c.getOutStream().writeWord(WriteFrame);
    				c.getOutStream().writeWord(c.playerItems.length);
    				for (int i = 0; i < c.playerItems.length; i++) {
    					if (c.playerItemsN[i] > 254) {
    						c.getOutStream().writeByte(255);
    						c.getOutStream().writeDWord_v2(c.playerItemsN[i]);
    					} else {
    						c.getOutStream().writeByte(c.playerItemsN[i]);
    					}
    					c.getOutStream().writeWordBigEndianA(c.playerItems[i]);
    				}
    				c.getOutStream().endFrameVarSizeWord();
    				c.flushOutStream();
    			}
    		}
    	}
    Reply With Quote  
     

  6. #6  
    Registered Member
    Join Date
    May 2012
    Posts
    445
    Thanks given
    31
    Thanks received
    19
    Rep Power
    48
    Quote Originally Posted by Vanished View Post
    Code:
     package server.game.entity.player.packet;
    
    import server.game.entity.player.Client;
    import server.game.entity.player.PacketType;
    
    public class MoveItems implements PacketType {
    
        @Override
        public void processPacket(Client c, int packetType, int packetSize) {
        
            int interfaceId = c.getInStream().readSignedWordBigEndianA();
            boolean insertMode = c.getInStream().readSignedByteC() == 1;
            int from = c.getInStream().readSignedWordBigEndianA();
            int to = c.getInStream().readSignedWordBigEndian();
            if(!c.isBanking)
                return;
            if(c.inTrade) {
                c.getTrading().declineTrade();
            }
            if(c.inGamble) {
                c.getGamble().decline();
            }
            if(c.tradeStatus == 1) {
                c.getTrading().declineTrade();
            }
            if(c.duelStatus == 1) {
                c.getDueling().declineDuel();
            }
            c.getItems().moveItems(from, to, interfaceId, insertMode);
            
        }
    }
    Code:
     public void resetTempItems(){
            synchronized(c) {
                int itemCount = 0;
                for (int i = 0; i < c.playerItems.length; i++) {
                    if (c.playerItems[i] > -1) {
                        itemCount=i;
                    }
                }
                c.getOutStream().createFrameVarSizeWord(53);
                c.getOutStream().writeWord(5064);
                c.getOutStream().writeWord(itemCount+1); 
                for (int i = 0; i < itemCount+1; i++) {
                    if (c.playerItemsN[i] > 254) {
                        c.getOutStream().writeByte(255);                         
                        c.getOutStream().writeDWord_v2(c.playerItemsN[i]);
                    } else {
                        c.getOutStream().writeByte(c.playerItemsN[i]);
                    }
                    if (c.playerItems[i] > Config.ITEM_LIMIT || c.playerItems[i] < 0) {
                        c.playerItems[i] = Config.ITEM_LIMIT;
                    }
                    c.getOutStream().writeWordBigEndianA(c.playerItems[i]); 
                }
                c.getOutStream().endFrameVarSizeWord();    
                c.flushOutStream();
            }
        }
    Code:
     public void resetItems(int WriteFrame) {
            synchronized (c) {
                if (c.getOutStream() != null && c != null) {
                    c.getOutStream().createFrameVarSizeWord(53);
                    c.getOutStream().writeWord(WriteFrame);
                    c.getOutStream().writeWord(c.playerItems.length);
                    for (int i = 0; i < c.playerItems.length; i++) {
                        if (c.playerItemsN[i] > 254) {
                            c.getOutStream().writeByte(255);
                            c.getOutStream().writeDWord_v2(c.playerItemsN[i]);
                        } else {
                            c.getOutStream().writeByte(c.playerItemsN[i]);
                        }
                        c.getOutStream().writeWordBigEndianA(c.playerItems[i]);
                    }
                    c.getOutStream().endFrameVarSizeWord();
                    c.flushOutStream();
                }
            }
        }
    Delete whats in red and it will be fixed. --> if(c.isBanking) return;
    Code:
     package server.game.entity.player.packet;
    
    import server.game.entity.player.Client;
    import server.game.entity.player.PacketType;
    
    public class MoveItems implements PacketType {
    
        @Override
        public void processPacket(Client c, int packetType, int packetSize) {
        
            int interfaceId = c.getInStream().readSignedWordBigEndianA();
            boolean insertMode = c.getInStream().readSignedByteC() == 1;
            int from = c.getInStream().readSignedWordBigEndianA();
            int to = c.getInStream().readSignedWordBigEndian();
            if(!c.isBanking)
                return;
            if(c.inTrade) {
                c.getTrading().declineTrade();
            }
            if(c.inGamble) {
                c.getGamble().decline();
            }
            if(c.tradeStatus == 1) {
                c.getTrading().declineTrade();
            }
            if(c.duelStatus == 1) {
                c.getDueling().declineDuel();
            }
            c.getItems().moveItems(from, to, interfaceId, insertMode);
            
        }
    }
    Reply With Quote  
     

  7. #7  
    Registered Member
    Join Date
    Dec 2014
    Posts
    16
    Thanks given
    1
    Thanks received
    2
    Rep Power
    11
    Quote Originally Posted by No1killme View Post
    Delete whats in red and it will be fixed. --> if(c.isBanking) return;
    Code:
     package server.game.entity.player.packet;
    
    import server.game.entity.player.Client;
    import server.game.entity.player.PacketType;
    
    public class MoveItems implements PacketType {
    
        @Override
        public void processPacket(Client c, int packetType, int packetSize) {
        
            int interfaceId = c.getInStream().readSignedWordBigEndianA();
            boolean insertMode = c.getInStream().readSignedByteC() == 1;
            int from = c.getInStream().readSignedWordBigEndianA();
            int to = c.getInStream().readSignedWordBigEndian();
            if(!c.isBanking)
                return;
            if(c.inTrade) {
                c.getTrading().declineTrade();
            }
            if(c.inGamble) {
                c.getGamble().decline();
            }
            if(c.tradeStatus == 1) {
                c.getTrading().declineTrade();
            }
            if(c.duelStatus == 1) {
                c.getDueling().declineDuel();
            }
            c.getItems().moveItems(from, to, interfaceId, insertMode);
            
        }
    }
    Thank you!
    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. Moving Items in the Inventory
    By Defiled-X in forum Help
    Replies: 3
    Last Post: 04-20-2011, 11:04 PM
  2. Replies: 10
    Last Post: 03-02-2011, 08:06 AM
  3. counting items in inventory
    By I Kolo I in forum Help
    Replies: 1
    Last Post: 04-25-2010, 08:44 PM
  4. Replies: 3
    Last Post: 11-07-2009, 11:33 PM
  5. Replies: 3
    Last Post: 05-09-2009, 07:44 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
  •