2.7 벛꽃팩 인벤정리 기능추가
반드시 사용중인 서버팩은 백업 먼저 하세요.
컴파일 하고 나서 인게임에서
.정리
하시면 됩니다.
2.70 벚꽃팩\src\l1j\server\server\model\L1Inventory.java
수정 전 코드
public void shuffle() {
Collections.shuffle(_items);
}
수정 후 코드
public void shuffle() {
// 1. 현재 아이템 리스트를 복사 (정렬을 위해)
List<L1ItemInstance> itemList = new ArrayList<L1ItemInstance>(_items);
// 2. 정렬 규칙 적용 (무기1 -> 방어구2 -> 소모품0 순서)
Collections.sort(itemList, new java.util.Comparator<L1ItemInstance>() {
@Override
public int compare(L1ItemInstance o1, L1ItemInstance o2) {
int type1 = o1.getItem().getType2();
int type2 = o2.getItem().getType2();
// 소모품(0)을 가장 뒤(우선순위 3)로 보내기
int p1 = (type1 == 0) ? 3 : type1;
int p2 = (type2 == 0) ? 3 : type2;
if (p1 != p2) {
return Integer.compare(p1, p2);
}
// 같은 타입 내에서는 아이템 ID 순서대로 정렬
return Integer.compare(o1.getItemId(), o2.getItemId());
}
});
// 3. 정렬된 리스트를 원본 리스트(_items)에 다시 넣기
_items.clear();
_items.addAll(itemList);
}
2.70 벚꽃팩\src\l1j\server\server\clientpackets\C_Chat.java
수정 전 코드
// GM커멘드
if (chatText.startsWith(".")) {
String cmd = chatText.substring(1);
GMCommands.getInstance().handleCommands(pc, cmd);
return;
}
수정 후 코드
// GM커멘드
if (chatText.startsWith(".")) {
String cmd = chatText.substring(1);
if (cmd.equalsIgnoreCase("정리")) {
pc.getInventory().shuffle(); // 메모리상 정렬 실행
// 1. 현재 인벤토리의 모든 아이템을 가져옴
java.util.List<l1j.server.server.model.Instance.L1ItemInstance> items = pc.getInventory().getItems();
// 2. 화면에서 모든 아이템을 일단 삭제 (실제 삭제가 아니라 화면에서만 지움)
for (l1j.server.server.model.Instance.L1ItemInstance item : items) {
pc.sendPackets(new l1j.server.server.serverpackets.S_DeleteInventoryItem(item));
}
// 3. 정렬된 순서대로 다시 화면에 추가
for (l1j.server.server.model.Instance.L1ItemInstance item : items) {
pc.sendPackets(new l1j.server.server.serverpackets.S_AddItem(item));
}
pc.sendPackets(new l1j.server.server.serverpackets.S_SystemMessage("인벤토리가 종류별로 정리되었습니다."));
return;
}
GMCommands.getInstance().handleCommands(pc, cmd);
return;
}

뷸바다 님의 최근 댓글