최종 갱신 (KST)

← 일감 목록
T-060

서버 — 치트 보완 (admin 부여 명령 · 자원 지급 푸시 · 정산 앞당기기)

진우 Closed 우선순위 보통 목표 미정 · 보관됨

배경

치트는 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] 테스트 · 치트.md 2장 표 갱신

완료 조건

클라가 치트 창에서 로그인 Id를 넣고 보내면 그 계정의 admin_level이 1이 되고, 그 계정으로 골드 지급 치트가 통과한다. 운영 서버에서는 권한 없는 계정이 이 명령으로 권한을 얻을 수 없다.

막고 있는 것 / 선행 일감

  • 없음. 이것이 끝나면 클라가 T-059 창에 칸을 붙인다.

관련 커밋

  • 3299259 — 정산 판정 N회 앞당기기(Arg1, 0이면 1 · 상한 100) · 자원 지급 AddItem 푸시 · CheatAdminLevel = 0 · 이슈 #26

참고