5792
대표칭호 없음
5792 4e070eabdf1544f28d3c5d01f0b77065
이해도 | 입문자(아무것도 몰라요) |
---|---|
게임버전 (JE) | 관련없음 |
게임버전 (BE) | 관련없음 |
스크립트 버전 | 잘 모르겠어요 |
스크립트 애드온 | 사용 애드온 skRayFall(여기에 필요한진 모름) |
이 사이트 스크립트 강좌에서 코드를 참고해서 PVP 매칭 시스템을 만들고 있습니다.
순서는
1. 사용자가 /game.join으로 게임 매칭에 참여하고
2. 두 명이 모이면 5초간의 대기 시간이 지난 후에 대기실로 이동하며 게임 준비 대기 상태가 됩니다.
2-1. 만약 대기 시간 중에 누군가가 나간다면 해당 매칭은 취소됩니다.
3. 게임 준비 대기 상태에서 사용자 두 명이 모두 /game.ready를 하면 본 맵으로 이동하면서 게임이 시작됩니다.
입니다.
그런데 이 중에서 2번에 문제가 생겼습니다.
대기시간이 끝나고 {game::ready}를 true로 설정했습니다. 그리고 게임 매칭 참여 중에 준비하는 것을 막기 위해 {game::ready}가 false일 때는 실행되지 않게 했더니 {game::ready}가 true임에도 아직 준비 대기 상태가 아니라고 나옵니다.
어떻게 해결하면 될까요?
추가로 코드 간결화도 도와주시면 감사드리겠습니다.
qsef1256
2022.09.20컴퓨터는 거짓말을 하지 않습니다. 97번 98번 들여쓰기가 어떻게 되어 있는지 확인하세요.
5792
2022.09.20감사합니다. 하루동안 해결하지 못 한 문제를 하셨네요..
qsef1256
2022.09.20코드 간결화는 이렇게 하시면 될 것 같습니다:
1. 당연한 주석은 모두 제거 (코드에 나와 있는 내용을 다시 설명하는 주석들)
2. 함수 활용 (game.leave와 on quit가 같은 내용을 공유하고 있음, game.move 를 명령어로 호출하는 코드등)
3. game.move 변수 재작명 (적절한 이름이 아닙니다. 단순히 move라는 이름은 헷갈릴 수 있으며 isNotPending 등의 이름이 되어야 합니다)
4. args 활용 (서브 명령어)
5. 컨벤션 미준수 코드 고치기 (Player 대문자)
5792
2022.09.20감사합니다!