Lotto 6/45 (WoW Classic 20주년 서버용)

Game Version: WoW Classic 1.15.8 (빌드 11508), 2.5.5 (빌드 20505), 
Version: 1.1.9 (2026. 1. 15.)

─────────────────────────────
1. 개요 ─────────────────────────────
■ Lotto 6/45는 1~45 사이의 숫자 중 6개를 무작위로 선택하여 로또 게임을 자동 또는 반자동으로 생성하는 애드온입니다.

■ 단일 게임 생성, 여러 게임 생성, 일부 숫자를 고정한 반자동 생성, 그리고 여러 게임에서 최대/최소빈도값을 계산하는 기능을 지원합니다.

■ 전용 UI를 통해 생성 결과를 시각적으로 관리할 수 있으며, 결과 복사를 위한 전체 선택(Ctrl+A), 초기화, 최소화/최대화 등의 기능을 제공합니다.

─────────────────────────────
2. 주요 기능
─────────────────────────────
■ 자동 게임 생성
 - /lotto 또는 /로또 명령으로 6개의 숫자를 자동 생성

■ 반자동 게임 생성
 - 일부 숫자를 직접 지정하고 나머지를 자동으로 채움

■ 복수 게임 생성
 - '-game' 또는 '-게임' 옵션으로 여러 게임을 한 번에 생성

■ 최대/최소빈도값 계산
 - 여러 게임 결과 중 많이/적게 등장한 숫자를 통해 최대/최소빈도값 도출

■ UI 기능 포함
 - 최소화 및 복원 버튼
 - 입력 창 생성 버튼
 - 결과 복사를 위한 전체 선택(Ctrl+A) 버튼
 - 초기화 버튼

■ FontString 제한에 맞춘 최대 생성 횟수 (최대 365)

─────────────────────────────
3. 설치 방법
─────────────────────────────
■ 아래와 같은 폴더 구조로 설치하세요.

Interface
└── AddOns
    └── Lotto645
        ├── Lotto645.lua
        ├── Lotto645.tga
        ├── Lotto645_TBC.toc
        ├── Lotto645_Vanilla.toc
        └── README.txt

■ 게임 내 ‘애드온’ 탭에서 [Lotto 6/45]가 활성화되어 있는지 확인합니다.

─────────────────────────────
4. 명령어 사용법
─────────────────────────────
■ '/lotto intro' 또는 '/로또 설명'
 - 애드온의 전체 기능 설명 출력

■ '/lotto' 또는 '/로또'
 - 1게임 자동 생성

■ '/lotto -game [숫자]' 또는 '/로또 -게임 [숫자]'
 - 여러 게임 자동 생성
 - 예시: '/lotto -game 5' → 5게임 자동 생성

■ '/lotto [고정 숫자들] -game [숫자]' 또는 '/로또 [고정 숫자들] -게임 [숫자]'
 - 일부 숫자 고정의 여러 게임 반자동 생성
 - 예시: '/lotto 1 2 3 -game 3' → 1, 2, 3 고정 + 나머지 숫자 3개 랜덤으로 3게임 반자동 생성

■ '/lotto -mode [숫자]' 또는 '/로또 -최대빈도값 [숫자]'
 - 여러 게임 생성 후 가장 많이 등장한 숫자 6개 도출

■ '/lotto -rare [숫자]' 또는 '/로또 -최소빈도값 [숫자]'
 - 여러 게임 생성 후 가장 적게 등장한 숫자 6개 도출

■ 헤더(Header) 출력
 - 각 상황에 맞는 헤더가 먼저 나오고, 개별 게임 결과가 뒤이어 출력
 - 최대/최소빈도값 모드에서는 5초 후 개별 게임 결과가 삭제되고 헤더 및 최대/최소빈도값만 남음

─────────────────────────────
5. 애드온 UI
─────────────────────────────
■ 최소화 버튼 (—)
 - 클릭 시 창이 최소화되어 화면을 깔끔하게 유지
 - 다시 최대화 버튼 (M) 클릭 시 원래 크기로 복원 및 이전 출력 내용 복구

■ 로또 작성 버튼
 - 클릭 시 메인 창 오른쪽에 명령어 입력 창 생성

■ Ctrl+A 버튼
 - 게임 결과 전체 선택 (5초간 유지)
 - 이 상태에서 Ctrl+C로 복사 가능
 - 5초 경과 또는 최소화 시 자동 해제

■ 초기화 버튼
 - 생성된 게임 결과 전체 삭제

─────────────────────────────
6. 사용 제한
─────────────────────────────
■ -game / -게임
 - 생성 횟수는 최대 365 (FontString 출력 한계)
 - 고정 숫자는 1~45, 최대 5개

■ -mode / -최대빈도값 / -rare / -최소빈도값
 - 생성 횟수는 최대 365
 - 고정 숫자는 선택할 수 없음

■ 인자 중복
 - '-game' / '-mode' / '-rare' 옵션은 하나만 선택
 - 생성 횟수 또한 하나로 제한

■ 잘못된 명령어
 - 잘못된 명령어 입력 시 해당 상황에 맞는 오류 메시지 출력

─────────────────────────────
7. 코드 개선 사항
─────────────────────────────
■ 공통 로직 추출
 - 옵션 파싱 : '-game', '-mode', '-rare'의 공통 숫자 인자 파싱 로직을 'parseSingleNumberOption' 헬퍼 함수로 통합
 - 빈도값 계산 : 최대/최소빈도값 도출 공통 로직을 'GetFrequent' 함수로 묶고, 이를 기반으로 'GetMostFrequent', 'GetLeastFrequent' 정의
 - 결과 평탄화 : 여러 게임의 숫자 테이블을 하나로 모으는 'flattenGames' 함수 추가

■ UI 생성의 모듈화
 - 반복되는 '라벨 + 입력 박스' 형태의 UI 요소를 'createLabeledEditBox' 헬퍼 함수로 통합

■ 가독성과 유지보수성 향상
 - 이벤트 등록, UI 생성, 옵션 파싱, 결과 출력 등 기능별로 함수 분리
 - 중복 코드 제거 및 함수화로 수정 용이성 향상

─────────────────────────────
8. 변경 이력
─────────────────────────────
■ 1.0.0 (2024. 12. 23.) : 자동 게임, 반자동 게임

■ 1.0.1 (2024. 12. 25.) : 채팅 모드 수정

■ 1.0.2 (2024. 12. 27.) : 창 모드 수정

■ 1.0.3 (2024. 12. 29.) : 최소화 버튼 추가

■ 1.0.4 (2024. 12. 30.) : 초기화 버튼 추가

■ 1.0.5 (2025. 1. 13.) : Ctrl+A 버튼 추가

■ 1.1.0 (2025. 1. 15.) : 채팅 모드 제거

■ 1.1.1 (2025. 1. 22.) : WIDTH 최소화 수정

■ 1.1.2 (2025. 1. 24.) : 최소화 시 Ctrl+A 버튼 EDITBOX 수정

■ 1.1.3 (2025. 1. 29.) : 고정 숫자 (1~45, 최대 5개), 생성 횟수 (최대 100) 제한

■ 1.1.4 (2025. 1. 31.) : 최대빈도값 기능 추가

■ 1.1.5 (2025. 2. 2.) : 최소빈도값 기능 추가

■ 1.1.6 (2025. 2. 3.) : 옵션/횟수 중복 입력 수정

■ 1.1.7 (2025. 2. 5.) : 최대/최소빈도값 고정 숫자 제한, 상황별 헤더 추가, 텍스트 코드 수정

■ 1.1.8 (2025. 2. 7.) : FontString 출력으로 인해 최대/최소빈도값을 위한 게임 생성 제한 (최대 365), 게임 및 Ctrl+A 출력 구조 수정 (메인 프레임 자식, 오프셋 조정), 로또 작성 버튼 추가 (입력 창으로 게임 생성)

■ 1.1.9 (2026. 1. 15.)
 - 기존 toc 파일명 변경 및 TBC용 toc 추가 

─────────────────────────────
9. 저작권 및 이용 조건
─────────────────────────────
■ 개인 목적에 한해 자유롭게 사용 가능

■ 개발자 표기

■ 상업적 이용 및 무단 전재/재배포 금지

─────────────────────────────
10. 개발자 정보
─────────────────────────────
■ Author: Goyathlay, 20주년 기념일 펜구스의 흉포 KR 호드

■ Contact: 인게임 우편/디스코드


