Thread: [PI] Wear Error

Page 1 of 3 123 LastLast
Results 1 to 10 of 21
  1. #1 [PI] Wear Error 
    Registered Member Unicode's Avatar
    Join Date
    May 2013
    Age
    30
    Posts
    296
    Thanks given
    18
    Thanks received
    6
    Rep Power
    16
    Code:
    [1/30/14 10:55 PM]: java.lang.ArrayIndexOutOfBoundsException: -1
    [1/30/14 10:55 PM]:     at server.model.items.ItemAssistant.wearItem(ItemAssista
    nt.java:1474)
    [1/30/14 10:55 PM]:     at server.model.players.packets.WearItem.processPacket(W
    earItem.java:38)
    [1/30/14 10:55 PM]:     at server.model.players.PacketHandler.processPacket(Pack
    etHandler.java:138)
    [1/30/14 10:55 PM]:     at server.model.players.Client.processQueuedPackets(Clie
    nt.java:1643)
    [1/30/14 10:55 PM]:     at server.model.players.PlayerHandler.process(PlayerHand
    ler.java:137)
    [1/30/14 10:55 PM]:     at server.Server.main(Server.java:160)
    Is the error I get wearing certain equipment. It's a strange error effects items like Saradomin Plate, Wizzy (t) etc.

    I took a look through all the wearItem and couldn't find anything blocking these items so i'm not sure what could be causing this.

    Reply With Quote  
     

  2. #2  
    Officially Retired


    Join Date
    Oct 2007
    Age
    30
    Posts
    5,454
    Thanks given
    558
    Thanks received
    122
    Rep Power
    1364
    show me the wear item method?
    Reply With Quote  
     

  3. #3  
    Registered Member Unicode's Avatar
    Join Date
    May 2013
    Age
    30
    Posts
    296
    Thanks given
    18
    Thanks received
    6
    Rep Power
    16
    Quote Originally Posted by Zotic View Post
    show me the wear item method?
    Code:
    public class WearItem implements PacketType {
    
    	@Override
    	public void processPacket(Client c, int packetType, int packetSize) {
    		c.wearId = c.getInStream().readUnsignedWord();
    		c.wearSlot = c.getInStream().readUnsignedWordA();
    		c.interfaceId = c.getInStream().readUnsignedWordA();
    		if(c.wearId == -1)
    		return;
    		int oldCombatTimer = c.attackTimer;
    		if ((c.playerIndex > 0 || c.npcIndex > 0) && c.wearId != 4153)
    			c.getCombat().resetPlayerAttack();
    		if (c.wearId >= 5509 && c.wearId <= 5515) {
    			int pouch = -1;
    			int a = c.wearId;
    			if (a == 5509)
    				pouch = 0;
    			if (a == 5510)
    				pouch = 1;
    			if (a == 5512)
    				pouch = 2;
    			if (a == 5514)
    				pouch = 3;
    			c.getPA().emptyPouch(pouch);
    			return;
    		}
    			//c.attackTimer = oldCombatTimer;
    		if (!c.inTrade) {
                c.getItems().wearItem(c.wearId, c.wearSlot);
            }
    	}
    
    }
    WearItem in WearItem.java

    WearItem in ItemAssitant.java

    Code:
    public boolean wearItem(int wearID, int slot) {
    		synchronized(c) {
    			int targetSlot=0;
    			boolean canWearItem = true;
    			switch(wearID){
        case 9747:
        case 9748:
        case 9749:
        if(c.getPA().getLevelForXP(c.playerXP[0]) < 99) {
        c.sendMessage("You need 99 attack to wear this item.");
        return false;
        }
        break;
     
        case 9750:
        case 9751:
        case 9752:
        if(c.getPA().getLevelForXP(c.playerXP[2]) < 99) {
        c.sendMessage("You need 99 strength to wear this item.");
        return false;
        }       
        break;  
     
        case 9753:
        case 9754:
        case 9755:
        if(c.getPA().getLevelForXP(c.playerXP[1]) < 99) {
        c.sendMessage("You need 99 defence to wear this item.");
        return false;
        }       
        break;      
     
        case 9756:
        case 9757:
        case 9758:
        if(c.getPA().getLevelForXP(c.playerXP[4]) < 99) {
        c.sendMessage("You need 99 range to wear this item.");
        return false;
        }
        break;      
     
        case 9759:
        case 9760:
        case 9761:
        if(c.getPA().getLevelForXP(c.playerXP[5]) < 99) {
        c.sendMessage("You need 99 prayer to wear this item.");
        return false;
        }
        break;  
     
        case 9762:
        case 9763:
        case 9764:
        if(c.getPA().getLevelForXP(c.playerXP[6]) < 99) {
        c.sendMessage("You need 99 magic to wear this item.");
        return false;
        }
        break;  
     
        case 9768:
        case 9769:
        case 9770:
        if(c.getPA().getLevelForXP(c.playerXP[3]) < 99) {
        c.sendMessage("You need 99 hitpoints to wear this item.");
        return false;
        }
        break;
         
        case 9767:
        case 9765:
        case 9766:
        if(c.getPA().getLevelForXP(c.playerXP[20]) < 99) {
        c.sendMessage("You need 99 runecrafting to wear this item.");
        return false;
        }
        break;
         
        case 9771:
        case 9772:
        case 9773:
        if(c.getPA().getLevelForXP(c.playerXP[16]) < 99) {
        c.sendMessage("You need 99 agility to wear this item.");
        return false;
        }
        break;
     
        case 9774:
        case 9775:
        case 9776:
        if(c.getPA().getLevelForXP(c.playerXP[15]) < 99) {
        c.sendMessage("You need 99 Herblore to wear this item.");
        return false;
        }
        break;  
         
        case 9777:
        case 9778:
        case 9779:
        if(c.getPA().getLevelForXP(c.playerXP[17]) < 99) {
        c.sendMessage("You need 99 Thieving to wear this item.");
        return false;
        }
        break;
     
        case 9780:
        case 9781:
        case 9782:
        if(c.getPA().getLevelForXP(c.playerXP[12]) < 99) {
        c.sendMessage("You need 99 Crafting to wear this item.");
        return false;
        }
        break;
         
        case 9783:
        case 9784:
        case 9785:
        if(c.getPA().getLevelForXP(c.playerXP[9]) < 99) {
        c.sendMessage("You need 99 Fletching to wear this item.");
        return false;
        }
        break;
         
        case 9786:
        case 9787:
        case 9788:
        if(c.getPA().getLevelForXP(c.playerXP[18]) < 99) {
        c.sendMessage("You need 99 Slayer to wear this item.");
        return false;
        }
        break;  
         
        case 9792:
        case 9793:
        case 9794:
        if(c.getPA().getLevelForXP(c.playerXP[14]) < 99) {
        c.sendMessage("You need 99 Mining to wear this item.");
        return false;
        }
        break;
         
        case 9795:
        case 9796:
        case 9797:
        if(c.getPA().getLevelForXP(c.playerXP[13]) < 99) {
        c.sendMessage("You need 99 Smithing to wear this item.");
        return false;
        }
        break;  
         
        case 9798:
        case 9799:
        case 9800:
        if(c.getPA().getLevelForXP(c.playerXP[10]) < 99) {
        c.sendMessage("You need 99 Fishing to wear this item.");
        return false;
        }
        break;
         
        case 9801:
        case 9802:
        case 9803:
        if(c.getPA().getLevelForXP(c.playerXP[7]) < 99) {
        c.sendMessage("You need 99 Cooking to wear this item.");
        return false;
        }
        break;
         
        case 9806:
        case 9805:
        case 9804:
        if(c.getPA().getLevelForXP(c.playerXP[11]) < 99) {
        c.sendMessage("You need 99 Firemaking to wear this item.");
        return false;
        }
        break;
         
        case 9807:
        case 9808:
        case 9809:
        if(c.getPA().getLevelForXP(c.playerXP[8]) < 99) {
        c.sendMessage("You need 99 Woodcutting to wear this item.");
        return false;
        }
        break;
     
        case 9810:
        case 9811:
        case 9812:
        if(c.getPA().getLevelForXP(c.playerXP[19]) < 99) {
        c.sendMessage("You need 99 Farming to wear this item.");
        return false;
        }
        break;                      
    }
    			if(wearID == -1)
    				return false;
    			if(c.playerItems[slot] == (wearID+1)) {				
    				getRequirements(getItemName(wearID).toLowerCase(), wearID);	
    				targetSlot = targetSlot(getItemName(wearID).toLowerCase());
    				if(wearID == 1835)
    				targetSlot = 7;
    				if(wearID == 12754)
    				targetSlot = 1;
    				if(wearID == 12753)
    				targetSlot = 9;
    				if(wearID == 12752)
    				targetSlot = 10;
    				if(wearID == 12751)
    				targetSlot = 7;
    				if(wearID == 12750)
    				targetSlot = 4;
    				if(wearID == 12749)
    				targetSlot = 0;
    				if(c.duelRule[11] && targetSlot == 0) {
    					c.sendMessage("Wearing hats has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[12] && targetSlot == 1) {
    					c.sendMessage("Wearing capes has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[13]  && targetSlot == 2) {
    					c.sendMessage("Wearing amulets has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[14]  && targetSlot == 3) {
    					c.sendMessage("Wielding weapons has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[15]  && targetSlot == 4) {
    					c.sendMessage("Wearing bodies has been disabled in this duel!");
    					return false;
    				}
    				if((c.duelRule[16] && targetSlot == 5) || (c.duelRule[16] && is2handed(getItemName(wearID).toLowerCase(), wearID))) {
    					c.sendMessage("Wearing shield has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[17]  && targetSlot == 7) {
    					c.sendMessage("Wearing legs has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[18]  && targetSlot == 9) {
    					c.sendMessage("Wearing gloves has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[19]  && targetSlot == 10) {
    					c.sendMessage("Wearing boots has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[20]  && targetSlot == 12) {
    					c.sendMessage("Wearing rings has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[21]  && targetSlot == 13) {
    					c.sendMessage("Wearing arrows has been disabled in this duel!");
    					return false;
    				}
    
    				if(Config.itemRequirements) {
    
    				if(targetSlot == 10 || targetSlot == 7 || targetSlot == 5 || targetSlot == 4 || targetSlot == 0 || targetSlot == 9 || targetSlot == 10) {
    						if(c.defenceLevelReq > 0) {
    							if(c.getPA().getLevelForXP(c.playerXP[1]) < c.defenceLevelReq) {
    								c.sendMessage("You need a defence level of "+c.defenceLevelReq+" to wear this item.");
    								canWearItem = false;
    							}
    						}
    						if(c.rangeLevelReq > 0) {
    							if(c.getPA().getLevelForXP(c.playerXP[4]) < c.rangeLevelReq) {
    								c.sendMessage("You need a range level of "+c.rangeLevelReq+" to wear this item.");
    								canWearItem = false;
    							}
    						}
    						if(c.magicLevelReq > 0) {
    							if(c.getPA().getLevelForXP(c.playerXP[6]) < c.magicLevelReq) {
    								c.sendMessage("You need a magic level of "+c.magicLevelReq+" to wear this item.");
    								canWearItem = false;
    							}
    						}
    					}
    					if(targetSlot == 3) {
    						if(c.attackLevelReq > 0) {
    							if(c.getPA().getLevelForXP(c.playerXP[0]) < c.attackLevelReq) {
    								c.sendMessage("You need an attack level of "+c.attackLevelReq+" to wield this weapon.");
    								canWearItem = false;
    							}
    						}
    						if(c.rangeLevelReq > 0) {
    							if(c.getPA().getLevelForXP(c.playerXP[4]) < c.rangeLevelReq) {
    								c.sendMessage("You need a range level of "+c.rangeLevelReq+" to wield this weapon.");
    								canWearItem = false;
    							}
    						}
    						if(c.prayerLevelReq > 0) {
    							if(c.getPA().getLevelForXP(c.playerXP[5]) < c.prayerLevelReq) {
    								c.sendMessage("You need a prayer level of "+c.prayerLevelReq+" to wield this weapon.");
    								canWearItem = false;
    							}
    						}
    						if(c.magicLevelReq > 0) {
    							if(c.getPA().getLevelForXP(c.playerXP[6]) < c.magicLevelReq) {
    								c.sendMessage("You need a magic level of "+c.magicLevelReq+" to wield this weapon.");
    								canWearItem = false;
    							}
    						}
    					}
    				}
    
    				if(!canWearItem) {
    					return false;
    				}
    				if (targetSlot == c.playerWeapon) {
    					c.getPA().resetAutocast();
    				}
    				
    				int wearAmount = c.playerItemsN[slot];
    				if (wearAmount < 1) {
    					return false;
    				}
    
    				if(slot >= 0 && wearID >= 0) {
    					int toEquip = c.playerItems[slot];
    					int toEquipN = c.playerItemsN[slot];
    					int toRemove = c.playerEquipment[targetSlot];
    					int toRemoveN = c.playerEquipmentN[targetSlot];
    					if (toEquip == toRemove + 1 && Item.itemStackable[toRemove]) {
    						deleteItem(toRemove, getItemSlot(toRemove), toEquipN);
    						c.playerEquipmentN[targetSlot] += toEquipN;
    					} else if (targetSlot != 5 && targetSlot != 3) {
    						//c.playerItems[slot] = toRemove + 1;
    						//c.playerItemsN[slot] = toRemoveN;
    						//c.playerEquipment[targetSlot] = toEquip - 1;
    						//c.playerEquipmentN[targetSlot] = toEquipN;
    					c.playerItems[slot] = 0;
                        c.playerItemsN[slot] = 0;
                        if (toRemove > 0 && toRemoveN > 0)
                        addItem(toRemove, toRemoveN);
                        c.playerEquipment[targetSlot] = toEquip - 1;
                        c.playerEquipmentN[targetSlot] = toEquipN;						
    					} else if (targetSlot == 5) {
    						boolean wearing2h = is2handed(getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase(), c.playerEquipment[c.playerWeapon]);
    						boolean wearingShield = c.playerEquipment[c.playerShield] > 0;
    						if (wearing2h) {
    							toRemove = c.playerEquipment[c.playerWeapon];
    							toRemoveN = c.playerEquipmentN[c.playerWeapon];
    							c.playerEquipment[c.playerWeapon] = -1;
    							c.playerEquipmentN[c.playerWeapon] = 0;
    							updateSlot(c.playerWeapon);
    						}
    						c.playerItems[slot] = toRemove + 1;
    						c.playerItemsN[slot] = toRemoveN;
    						c.playerEquipment[targetSlot] = toEquip - 1;
    						c.playerEquipmentN[targetSlot] = toEquipN;			
    					} else if (targetSlot == 3) {
    						boolean is2h = is2handed(getItemName(wearID).toLowerCase(), wearID);
    						boolean wearingShield = c.playerEquipment[c.playerShield] > 0;
    						boolean wearingWeapon = c.playerEquipment[c.playerWeapon] > 0;
    						if (is2h) {
    							if (wearingShield && wearingWeapon) {
    								if (freeSlots() > 0) {
    									c.playerItems[slot] = toRemove + 1;
    									c.playerItemsN[slot] = toRemoveN;
    									c.playerEquipment[targetSlot] = toEquip - 1;
    									c.playerEquipmentN[targetSlot] = toEquipN;
    									removeItem(c.playerEquipment[c.playerShield], c.playerShield);
    								} else {
    									c.sendMessage("You do not have enough inventory space to do this.");
    									return false;
    								}						
    							} else if (wearingShield && !wearingWeapon) {
    								c.playerItems[slot] = c.playerEquipment[c.playerShield] + 1;
    								c.playerItemsN[slot] = c.playerEquipmentN[c.playerShield];
    								c.playerEquipment[targetSlot] = toEquip - 1;
    								c.playerEquipmentN[targetSlot] = toEquipN;
    								c.playerEquipment[c.playerShield] = -1;
    								c.playerEquipmentN[c.playerShield] = 0;
    								updateSlot(c.playerShield);
    							} else {
    								c.playerItems[slot] = toRemove + 1;
    								c.playerItemsN[slot] = toRemoveN;
    								c.playerEquipment[targetSlot] = toEquip - 1;
    								c.playerEquipmentN[targetSlot] = toEquipN;	
    							}
    						} else {
    							c.playerItems[slot] = toRemove + 1;
    							c.playerItemsN[slot] = toRemoveN;
    							c.playerEquipment[targetSlot] = toEquip - 1;
    							c.playerEquipmentN[targetSlot] = toEquipN;	
    						}
    					}
    					c.setAwaitingUpdate(true);
    				}
    				if(targetSlot == 3) {
    					c.usingSpecial = false;
    					addSpecialBar(wearID);
    				}
    				if(c.getOutStream() != null && c != null ) {
    					c.getOutStream().createFrameVarSizeWord(34);
    					c.getOutStream().writeWord(1688);
    					c.getOutStream().writeByte(targetSlot);
    					c.getOutStream().writeWord(wearID+1);
    
    					if (c.playerEquipmentN[targetSlot] > 254) {
    						c.getOutStream().writeByte(255);
    						c.getOutStream().writeDWord(c.playerEquipmentN[targetSlot]);
    					} else {
    						c.getOutStream().writeByte(c.playerEquipmentN[targetSlot]);
    					}
    					
    					c.getOutStream().endFrameVarSizeWord();
    					c.flushOutStream();
    				}
    				sendWeapon(c.playerEquipment[c.playerWeapon], getItemName(c.playerEquipment[c.playerWeapon]));
    				resetBonus();
    				getBonus();
    				writeBonus();
    				c.getCombat().getPlayerAnimIndex(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
    				c.getPA().requestUpdates();
    				return true;
    			} else {
    				return false;
    			}
    		}
    	}
    	
    	
    	public void wearItem(int wearID, int wearAmount, int targetSlot) {	
    		if(c.getOutStream() != null && c != null) {
    			c.getOutStream().createFrameVarSizeWord(34);
    			c.getOutStream().writeWord(1688);
    			c.getOutStream().writeByte(targetSlot);
    			c.getOutStream().writeWord(wearID+1);
    			if (wearAmount > 254) {
    				c.getOutStream().writeByte(255);
    				c.getOutStream().writeDWord(wearAmount);
    			} else
    				c.getOutStream().writeByte(wearAmount);	
    			c.getOutStream().endFrameVarSizeWord();
    			c.flushOutStream();
    			c.playerEquipment[targetSlot]=wearID;
    			c.playerEquipmentN[targetSlot]=wearAmount;
    			c.getItems().sendWeapon(c.playerEquipment[c.playerWeapon], c.getItems().getItemName(c.playerEquipment[c.playerWeapon]));
    			c.getItems().resetBonus();
    			c.getItems().getBonus();
    			c.getItems().writeBonus();
    			c.getCombat().getPlayerAnimIndex(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
    			c.updateRequired = true; 
    			c.setAppearanceUpdateRequired(true);
    		}
    	}

    Reply With Quote  
     

  4. #4  
    Officially Retired


    Join Date
    Oct 2007
    Age
    30
    Posts
    5,454
    Thanks given
    558
    Thanks received
    122
    Rep Power
    1364
    Add me on skype @haqim182. i try to check on your server.
    Reply With Quote  
     

  5. #5  
    Registered Member Unicode's Avatar
    Join Date
    May 2013
    Age
    30
    Posts
    296
    Thanks given
    18
    Thanks received
    6
    Rep Power
    16
    Quote Originally Posted by Zotic View Post
    Add me on skype @haqim182. i try to check on your server.
    I'll have to download Skype.

    Reply With Quote  
     

  6. #6  
    Registered Member Unicode's Avatar
    Join Date
    May 2013
    Age
    30
    Posts
    296
    Thanks given
    18
    Thanks received
    6
    Rep Power
    16
    Bump still need help.

    Reply With Quote  
     

  7. #7  
    Respected Member


    Join Date
    Jan 2009
    Posts
    5,743
    Thanks given
    1,162
    Thanks received
    3,603
    Rep Power
    5000
    at server.model.items.ItemAssistant.wearItem(ItemAssi sta
    nt.java:1474)
    what line is that?
    Reply With Quote  
     

  8. #8  
    Registered Member Unicode's Avatar
    Join Date
    May 2013
    Age
    30
    Posts
    296
    Thanks given
    18
    Thanks received
    6
    Rep Power
    16
    Quote Originally Posted by Stuart View Post
    what line is that?
    Code:
    int toRemove = c.playerEquipment[targetSlot]; // Line 1474

    Reply With Quote  
     

  9. #9  
    Registered Member
    Join Date
    Oct 2011
    Posts
    87
    Thanks given
    0
    Thanks received
    4
    Rep Power
    11
    I kind of cheated for my fix. It's just checking that the ID isn't a negative integer.
    Code:
    if (toRemove < 0) {
         return;
    }

    Spoiler for Supports:
    None ATM
    Reply With Quote  
     

  10. #10  
    Registered Member Unicode's Avatar
    Join Date
    May 2013
    Age
    30
    Posts
    296
    Thanks given
    18
    Thanks received
    6
    Rep Power
    16
    Quote Originally Posted by nice0s View Post
    I kind of cheated for my fix. It's just checking that the ID isn't a negative integer.
    Code:
    if (toRemove < 0) {
         return;
    }
    This works though and makes the armour equitable? Where in the method did you add this?

    Reply With Quote  
     

Page 1 of 3 123 LastLast

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. PI Wear item error
    By Herb Budz in forum Help
    Replies: 1
    Last Post: 07-13-2012, 02:30 AM
  2. (Pi) Client Error
    By FusionFrenzi in forum Help
    Replies: 1
    Last Post: 06-26-2010, 03:11 AM
  3. PI command error
    By Despised Icon in forum Help
    Replies: 2
    Last Post: 06-09-2010, 09:11 PM
  4. Riot/pi clickingInGame error.
    By ICEAuthority in forum Help
    Replies: 2
    Last Post: 05-25-2010, 12:18 PM
  5. wear error
    By Leanbow in forum Help
    Replies: 1
    Last Post: 08-26-2009, 06:39 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
  •