9.2 KiB
9.2 KiB
GUID 슬롯 우선순위 - 다양한 슬롯 개수 지원 (최종 업데이트)
📋 업데이트 내용
슬롯 개수가 2개, 4개, 10개 등 다양한 서버 모델에 대응할 수 있도록 슬롯 개수 선택 기능을 추가했습니다.
✨ 새로운 기능
1. 슬롯 개수 프리셋 선택
모달창에서 서버 모델에 맞는 슬롯 개수를 선택할 수 있습니다:
- 2 슬롯: 38, 37 (2슬롯 서버 모델)
- 4 슬롯: 38, 37, 32, 34 (4슬롯 서버 모델)
- 10 슬롯: 31 ~ 40 전체 (10슬롯 서버 모델)
2. 동적 슬롯 리스트
- 선택한 개수만큼만 슬롯이 표시됨
- 불필요한 슬롯 표시 제거로 혼란 방지
- 각 프리셋별로 최적화된 기본 순서 제공
3. 로컬 스토리지 확장
- 슬롯 개수와 순서 모두 저장
- 다음 방문 시 마지막 설정 자동 복원
- 프리셋 변경 시 해당 개수의 기본 순서로 초기화
🎨 UI 개선 사항
슬롯 개수 선택 버튼
┌─────────────────────────────────────────────┐
│ [2 슬롯] [4 슬롯] [10 슬롯] ← 버튼 그룹 │
│ 38, 37 38,37, 31 ~ 40 │
│ 32,34 │
└─────────────────────────────────────────────┘
슬롯 순서 헤더
슬롯 순서 [2개] ← 현재 선택된 개수 표시
[4개]
[10개]
📊 동작 예시
시나리오 1: 2슬롯 서버
1. 모달 열기
↓
2. "2 슬롯" 버튼 클릭
↓
3. 슬롯 리스트에 Slot 38, 37만 표시
↓
4. 드래그로 순서 변경 (예: 37, 38)
↓
5. 확인 버튼 클릭
↓
6. txt 파일:
Slot.37: xxx
Slot.38: yyy
GUID: 0xXXX;0xYYY
시나리오 2: 4슬롯 서버
1. 모달 열기
↓
2. "4 슬롯" 버튼 클릭
↓
3. 슬롯 리스트에 38, 37, 32, 34 표시
↓
4. 원하는 순서로 드래그 (예: 32, 34, 37, 38)
↓
5. txt 파일:
Slot.32: aaa
Slot.34: bbb
Slot.37: ccc
Slot.38: ddd
GUID: 0xAAA;0xBBB;0xCCC;0xDDD
시나리오 3: 10슬롯 서버 (기본)
1. 모달 열기 (10슬롯이 기본 선택됨)
↓
2. 슬롯 31~40 모두 표시
↓
3. 기본 순서: 38, 39, 37, 36, 32, 33, 34, 35, 31, 40
↓
4. 드래그로 자유롭게 순서 조정
🔧 기술 구현
JavaScript - 슬롯 프리셋
// 슬롯 개수별 기본 순서 프리셋
const slotPresets = {
2: ['38', '37'],
4: ['38', '37', '32', '34'],
10: ['38', '39', '37', '36', '32', '33', '34', '35', '31', '40']
};
let currentSlotCount = 10; // 기본값
let currentSlotOrder = [...slotPresets[10]];
슬롯 개수 변경 이벤트
document.querySelectorAll('input[name="slotCount"]').forEach(radio => {
radio.addEventListener('change', function() {
const newCount = parseInt(this.value);
if (newCount !== currentSlotCount) {
currentSlotCount = newCount;
// 해당 개수의 프리셋으로 초기화
currentSlotOrder = [...slotPresets[currentSlotCount]];
// UI 업데이트
updateSlotCountBadge();
renderSlotList();
initSortable();
saveSlotConfigToStorage();
}
});
});
로컬 스토리지 저장/불러오기
// 저장
function saveSlotConfigToStorage() {
localStorage.setItem('guidSlotCount', currentSlotCount.toString());
localStorage.setItem('guidSlotPriority', JSON.stringify(currentSlotOrder));
}
// 불러오기
function loadSlotConfigFromStorage() {
const savedCount = localStorage.getItem('guidSlotCount');
const savedOrder = localStorage.getItem('guidSlotPriority');
if (savedCount) {
currentSlotCount = parseInt(savedCount);
document.getElementById(`slotCount${currentSlotCount}`).checked = true;
}
if (savedOrder) {
currentSlotOrder = JSON.parse(savedOrder);
} else {
// 저장된 순서 없으면 프리셋 사용
currentSlotOrder = [...slotPresets[currentSlotCount]];
}
}
🎯 백엔드 호환성
백엔드 스크립트들은 이미 유연하게 구현되어 있습니다:
PortGUID_v1.py
# 환경변수에서 슬롯 우선순위 읽기
slot_priority_str = os.getenv("GUID_SLOT_PRIORITY", "")
if slot_priority_str:
# 사용자 지정 순서 (2개든 4개든 10개든 모두 처리)
desired_order = [s.strip() for s in slot_priority_str.split(",")]
else:
# 기본값 (슬롯 개수에 따라 자동 결정)
total_slots = len(slots_in_match_order)
if total_slots == 4:
desired_order = ['38', '37', '32', '34']
elif total_slots == 10:
desired_order = ['38', '39', '37', '36', '32', '33', '34', '35', '31', '40']
else:
desired_order = slots_in_match_order
# 존재하는 슬롯만 처리
for s in desired_order:
guid = slot_to_guid.get(s, "Not Found")
if guid != "Not Found": # 존재하는 슬롯만
f.write(f"Slot.{s}: {guid}\n")
hex_guid_list.append(f"0x{guid.replace(':', '').upper()}")
GUIDtxtT0Execl.py
# 슬롯 우선순위에 따라 데이터 재정렬
for slot_num in SLOT_PRIORITY:
slot_key = f"Slot.{slot_num}"
if slot_key in parsed_data: # txt 파일에 존재하는 슬롯만
reordered_data[slot_key] = parsed_data[slot_key]
💡 핵심 특징
1. 유연성
- 2슬롯, 4슬롯, 10슬롯 모두 지원
- 커스텀 슬롯 개수도 확장 가능
- 존재하지 않는 슬롯은 자동으로 스킵
2. 사용자 편의성
- 한 번에 한 가지 프리셋만 선택
- 프리셋 변경 시 즉시 UI 업데이트
- 기본값 복원 시 현재 프리셋의 기본 순서로 복원
3. 일관성
- 모든 GUID 관련 작업에서 동일한 슬롯 개수/순서 적용
- 로컬 스토리지로 설정 유지
- 환경변수로 백엔드까지 일관되게 전달
4. 확장성
- 새로운 프리셋 추가 용이
const slotPresets = { 2: ['38', '37'], 4: ['38', '37', '32', '34'], 6: ['38', '39', '37', '36', '32', '34'], // 새로운 프리셋 추가 10: ['38', '39', '37', '36', '32', '33', '34', '35', '31', '40'] };
⚠️ 주의사항
1. 프리셋 변경 시
- 기존에 드래그로 조정한 순서는 초기화됩니다
- 프리셋의 기본 순서로 리셋됨
- 필요시 다시 드래그로 조정 가능
2. 슬롯 번호 제한
- 현재는 31~40 범위 내의 슬롯만 지원
- 다른 범위 슬롯 필요 시 프리셋 추가 필요
3. 하위 호환성
- 환경변수가 없으면 스크립트가 자동으로 슬롯 개수 감지
- 기존 txt 파일도 정상 처리됨
🚀 향후 개선 방안
1. 커스텀 슬롯 입력
- 프리셋 외에 직접 슬롯 번호 입력 가능
- 예: "32, 33, 38, 39" 입력
2. 자동 감지
- 업로드된 txt 파일에서 실제 존재하는 슬롯 자동 감지
- 감지된 슬롯만 모달에 표시
3. 프리셋 관리
- 사용자 정의 프리셋 저장
- 프로젝트별/서버별 프리셋 관리
4. 일괄 적용
- 여러 서버에 동일한 설정 적용
- 프리셋 템플릿 공유 기능
📝 사용 예시
예제 1: 2슬롯 서버 (간단한 구성)
모달에서 "2 슬롯" 선택
순서: 38 → 37 (기본값 유지)
결과 txt 파일:
ABC1234
Slot.38: 00:11:22:33:44:55:66:77
Slot.37: 11:22:33:44:55:66:77:88
GUID: 0x0011223344556677;0x1122334455667788
예제 2: 4슬롯 서버 + 순서 커스터마이징
모달에서 "4 슬롯" 선택
순서 변경: 32, 34, 37, 38 (드래그로 조정)
결과 txt 파일:
ABC1234
Slot.32: AA:BB:CC:DD:EE:FF:00:11
Slot.34: BB:CC:DD:EE:FF:00:11:22
Slot.37: CC:DD:EE:FF:00:11:22:33
Slot.38: DD:EE:FF:00:11:22:33:44
GUID: 0xAABBCCDDEEFF0011;0xBBCCDDEEFF001122;0xCCDDEEFF00112233;0xDDEEFF0011223344
예제 3: 10슬롯 서버 (역순 정렬)
모달에서 "10 슬롯" 선택 (기본값)
순서 변경: 40, 31, 35, 34, 33, 32, 36, 37, 39, 38
결과: 지정한 순서대로 txt 파일 생성
✅ 테스트 체크리스트
- 2슬롯 프리셋 선택 및 표시
- 4슬롯 프리셋 선택 및 표시
- 10슬롯 프리셋 선택 및 표시 (기본)
- 프리셋 변경 시 슬롯 리스트 업데이트
- 슬롯 개수 배지 동적 업데이트
- 드래그 앤 드롭 정상 동작
- 로컬 스토리지에 개수+순서 저장
- 페이지 새로고침 후 설정 복원
- 기본값 복원 버튼 (현재 프리셋 기준)
- 백엔드 환경변수 전달
- txt 파일 순서 적용
- 엑셀 컬럼 순서 적용
- GUID 합치기 순서 적용
🎉 결과
이제 모든 슬롯 개수의 서버에 대응할 수 있습니다!
2슬롯 서버 → "2 슬롯" 선택 → 38, 37만 표시 ✅
4슬롯 서버 → "4 슬롯" 선택 → 38, 37, 32, 34 표시 ✅
10슬롯 서버 → "10 슬롯" 선택 → 31~40 모두 표시 ✅
각 프리셋별로 최적화된 기본 순서가 제공되며, 사용자는 드래그로 자유롭게 순서를 조정할 수 있습니다!
완벽한 유연성과 확장성을 갖춘 GUID 슬롯 관리 시스템 완성! 🚀