26성 바로 되는 오류 해결법
src - packet - PacketProvider.java - addInventoryInfo 검색후 아래내용으로 교체
public static void addInventoryInfo(WritingPacket w, MapleCharacter chr) {
w.writeLong(0); //1.2.201+
w.writeInt(chr.getId());
w.write0(29);
w.writeShort(0); //1.2.220+
w.write(chr.getInventory(MapleInventoryType.EQUIP).getSlotLimit()); // equip slots
w.write(chr.getInventory(MapleInventoryType.USE).getSlotLimit()); // use slots
w.write(chr.getInventory(MapleInventoryType.SETUP).getSlotLimit()); // set-up slots
w.write(chr.getInventory(MapleInventoryType.ETC).getSlotLimit()); // etc slots
w.write(chr.getInventory(MapleInventoryType.CASH).getSlotLimit()); // cash slots
MapleQuestStatus stat = chr.getQuestNoAdd(MapleQuest.getInstance(GameConstants.PENDANT_SLOT));
if (stat != null && stat.getCustomData() != null && Long.parseLong(stat.getCustomData()) > System.currentTimeMillis()) {
w.write(new byte[]{0, (byte) 0xC0, (byte) 0xEC, (byte) 0x3A, (byte) 0xD2, (byte) 0xB3, (byte) 0xFF, 1});
} else {
w.write(unk1);
w.write(unk2);
}
w.write(0);
MapleInventory iv = chr.getInventory(MapleInventoryType.EQUIPPED);
Collection<IItem> equippedC = iv.list();
List<IItem> equipped = new ArrayList<IItem>(equippedC.size());
for (IItem item : equippedC) {
equipped.add((IItem) item);
}
//장착중인 아이템 시작
Collections.sort(equipped);
for (IItem item : equipped) {
if (item.getPosition() < 0 && item.getPosition() > -100) {
addItemInfo(w, item, false, false, null);
}
}
//장착중인 아이템 종료
w.writeShort(0);
//장착중인 캐시아이템 시작
for (IItem item : equipped) {
if ((item.getPosition() <= -100 && item.getPosition() > -1000)) {
addItemInfo(w, item, false, false, null);
}
}
//장착중인 캐시아이템 종료
w.writeShort(0);
//장비 인벤토리 시작
iv = chr.getInventory(MapleInventoryType.EQUIP);
for (IItem item : iv.list()) {
addItemInfo(w, item, false, false, null);
}
//장비 인벤토리종료
w.writeShort(0);
//에반 장비 인벤토리 시작
for (IItem item : equipped) {
if (item.getPosition() <= -1000 && item.getPosition() > -1100) {
addItemInfo(w, item, false, false, null);
}
}
//에반 장비 인벤토리 종료
w.writeShort(0);
//메카닉 장비 인벤토리 시작
for (IItem item : equipped) {
if (item.getPosition() <= -1100 && item.getPosition() > -1200) {
addItemInfo(w, item, false, false, null);
}
}
//메카닉 장비 인벤토리 종료
w.writeShort(0);
//안드로이드 장비 인벤토리 시작
for (IItem item : equipped) {
if (item.getPosition() <= -1200 && item.getPosition() > -1500) {
addItemInfo(w, item, false, false, null);
}
}
//안드로이드 장비 안벤토리 종료
w.writeShort(0);
w.writeShort(0); //v169
w.writeShort(0); //v182
w.writeShort(0); //v183
w.writeShort(0); //v193
w.writeShort(0); //v201
//소비 인벤토리 시작
iv = chr.getInventory(MapleInventoryType.USE);
for (IItem item : iv.list()) {
addItemInfo(w, item, false, false, null);
}
//소비 인벤토리 종료
w.write(0);
//설치 인벤토리 시작
iv = chr.getInventory(MapleInventoryType.SETUP);
for (IItem item : iv.list()) {
addItemInfo(w, item, false, false, null);
}
//설치 인벤토리 종료
w.write(0);
//기타 인벤토리 시작
iv = chr.getInventory(MapleInventoryType.ETC);
for (IItem item : iv.list()) {
addItemInfo(w, item, false, false, chr);
}
//기타 인벤토리 종료
w.write(0);
//캐시 인벤토리 시작
iv = chr.getInventory(MapleInventoryType.CASH);
for (IItem item : iv.list()) {
addItemInfo(w, item, false, false, chr);
}
//캐시 인벤토리 종료
w.write(0);
w.writeInt(0);
w.writeInt(chr.getExtendedSlots().size());
for (int i = 0; i < chr.getExtendedSlots().size(); i++) {
w.writeInt(i);
w.writeInt(chr.getInventory(MapleInventoryType.ETC).findByUniqueId(chr.getExtendedSlot(i)).getItemId());
for (IItem item : chr.getInventory(MapleInventoryType.ETC).list()) {
if (item.getPosition() > (i * 100 + 100) && item.getPosition() < (i * 100 + 200)) {
addItemInfo(w, item, false, false, false, true, chr);
}
}
w.writeInt(-1);
}
w.writeLong(0); // 173 new
w.write(0); // 173 new
}

박인성 님의 최근 댓글