Originally Posted by
Zotic
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);
}
}