public C_PetMenu(byte abyte0[], LineageClient clientthread) throws Exception { super(abyte0); int petId = readD(); L1PetInstance pet = (L1PetInstance) L1World.getInstance().findObject(petId); L1PcInstance pc = clientthread.getActiveChar(); if (pet != null && pc != null) { pc.sendPackets(new S_PetInventory(pet)); } }
public C_SoldierGive(byte abyte0[], LineageClient clientthread) { super(abyte0); // SoldierGiveSelect.java 여야 하지만 길어서 셀렉트는 생략. int objid = readD(); // 말 건 npc id int type = readH(); // 선택 L1PcInstance pc = clientthread.getActiveChar(); if (pc == null) { return; } int castle_id = pc.getClan().getCastleId(); L1Soldier soldier = SoldierTable.getInstance().getSoldierTable(castle_id); int count = 0; switch (type) { case 0: if (soldier.getSoldier1() <= 0) { return; } else { count = soldier.getSoldier1(); } break; case 1: if (soldier.getSoldier2() <= 0) { return; } else { count = soldier.getSoldier2(); } break; case 2: if (soldier.getSoldier3() <= 0) { return; } else { count = soldier.getSoldier3(); } break; case 3: if (soldier.getSoldier4() <= 0) { return; } else { count = soldier.getSoldier4(); } break; default: break; } for (L1Object obj : L1World.getInstance().getVisibleObjects(pc, 1)) { if (obj instanceof L1PcInstance) { int sumX = pc.getX() - obj.getX(); int sumY = pc.getY() - obj.getY(); L1PcInstance target = (L1PcInstance) obj; if (sumX == 1 && sumY == -2) { send(pc, target, objid, type, count); break; } else if (sumX == 0 && sumY == -1) { send(pc, target, objid, type, count); break; } else if (sumX == -1 && sumY == -1) { send(pc, target, objid, type, count); break; } else { send(pc, pc, objid, type, count); } } else { send(pc, pc, objid, type, count); } } }
public C_DeleteInventoryItem(byte[] decrypt, LineageClient client) { super(decrypt); if (client == null) { return; } int itemObjectId = readD(); int count = readD(); // 추가 L1PcInstance pc = client.getActiveChar(); L1ItemInstance item = pc.getInventory().getItem(itemObjectId); // 삭제하려고 한 아이템이 서버상에 없는 경우 if (item == null) { return; } if (item.getItem().isCantDelete()) { pc.sendPackets(new S_ServerMessage(125)); return; } if (item.isEquipped()) { // \f1삭제할 수 없는 아이템이나 장비 하고 있는 아이템은 버릴 수 없습니다. pc.sendPackets(new S_ServerMessage(125)); return; } if (!pc.isGm() && (item.getItemId() >= 0 && (item.getItemId() == 46115 // 마빈 || item.getItemId() == 46116 // 구슬조각 || item.getItemId() == 46118 // 구슬조각 || item.getItemId() == 4500011 // 서버정보 || item.getItemId() == 41159 // 서버정보 || item.getItemId() == 46193))) { // 생존외침 pc.sendPackets(new S_ServerMessage(210, item.getItem().getName())); return; } // if (item.getBless() >= 128) {//봉인템삭제가능 // pc.sendPackets(new S_ServerMessage(210, item.getItem().getName())); // \f1%0은 // 버리거나 // 또는 // 타인에게 // 양일을 // 할 수 // 없습니다. // return; // } Object[] petlist = pc.getPetList().values().toArray(); L1PetInstance pet = null; for (Object petObject : petlist) { if (petObject instanceof L1PetInstance) { pet = (L1PetInstance) petObject; if (item.getId() == pet.getItemObjId()) { // \f1%0은 버리거나 또는 타인에게 양일을 할 수 없습니다. pc.sendPackets(new S_ServerMessage(210, item.getItem().getName())); return; } } } CodeLogger.getInstance().oblog("인벤삭제", pc.getName(), item, item.getCount()); // eva.LogObserverAppend("템삭제","<"+pc.getName()+">"+item.getName() // +"(+"+item.getEnchantLevel()+")"+"[갯수]"+" ("+item.getCount()+")"); // 추가 eva.LogObserverAppend("템삭제", pc.getName(), item, item.getCount(), itemObjectId); if (count == 0) count = item.getCount(); pc.getInventory().removeItem(item, count); pc.getLight().turnOnOffLight(); }