배경
치트는 t_user.admin_level ≥ 1인 계정만 통과한다 (Server/docs/치트.md).
그런데 admin을 주는 통로가 로컬 DB를 직접 고치는 것뿐이라, 새 테스트 계정을 만들 때마다 DB 도구를 열어야 한다.
클라 치트 창(T-059)에서 버튼 하나로 주고 싶다.
할 일
- [x]
→ 만들지 않았다. 개발 기간엔ECheatCommand에 admin 부여 명령 추가CheatAdminLevel = 0으로 모든 계정이 치트를 쓴다 (권한 테스트는 Skip, 배포 전 1로 되돌린다) - [x] 닭과 달걀 해결 방식 결정 — 위 방식으로 해소 — 지금 규칙으로는 admin이어야 치트를 보낼 수 있어서, 첫 admin을 이 명령으로 만들 수 없다. 예: 로컬·개발 서버에서만 이 명령을 권한 검사 없이 허용 / 서버 콘솔 명령으로 둔다 등. 운영에서 열리지 않는 것이 조건
- [x] (해당 없음) 대상이 접속 중이면 메모리의
User.AdminLevel도 바꿔 재로그인 없이 적용되는지 결정 - [x] (해당 없음) 패킷 인자 결정 —
C_CheatRequest의Arg는long뿐이라 문자열 Id를 실을 자리가 없다 - [x] 자원 지급 치트가 화면에 반영되게 —
CheatGiveItem이GainItem(푸시 없음) 대신AddItem(S_UpdateItemResponse송신)을 부르면 클라 수정 없이 된다 (이슈 #26 댓글) - [x] 정산 치트가 판정을 앞당기게 — 지금은 쌓인 진행도만 정산하는데 스케줄러가 0.1초마다 먼저 정산해 늘 0개다 (이슈 #26 댓글)
- [x] 테스트 ·
치트.md2장 표 갱신
완료 조건
클라가 치트 창에서 로그인 Id를 넣고 보내면 그 계정의 admin_level이 1이 되고,
그 계정으로 골드 지급 치트가 통과한다. 운영 서버에서는 권한 없는 계정이 이 명령으로 권한을 얻을 수 없다.
막고 있는 것 / 선행 일감
- 없음. 이것이 끝나면 클라가 T-059 창에 칸을 붙인다.
관련 커밋
3299259— 정산 판정 N회 앞당기기(Arg1, 0이면 1 · 상한 100) · 자원 지급AddItem푸시 ·CheatAdminLevel = 0· 이슈 #26
참고
Server/docs/치트.md- 클라 창 규칙:
cheat-console 규칙.md— "치트 추가하기"