![](https://blog.kakaocdn.net/dn/cZi6VF/btsKutDcHYr/U7I2KQ9n6E95dfoRc6lj6K/img.png)
1. **환경 설정 및 준비**
먼저 PvPGN 서버의 소스 코드를 수정할 준비가 되어 있어야 합니다. 이는 서버가 이미 설치되어 있고, 소스 코드를 컴파일할 환경이 필요하다는 것을 의미합니다. 대개 서버는 C++로 작성되어 있어, `gcc` 나 `g++`와 같은 컴파일러가 필요합니다.
```bash
# 소스 코드 클론
git clone https://github.com/pvpgn/pvpgn-server.git
GitHub - pvpgn/pvpgn-server: Next generation of PvPGN server
Next generation of PvPGN server. Contribute to pvpgn/pvpgn-server development by creating an account on GitHub.
github.com
cd pvpgn-server
# 빌드를 위한 도구 설치
sudo apt-get update
sudo apt-get install build-essential
```
2. **소스 코드 수정**
사용자 정의 명령어는 주로 `bnetd` 디렉토리 아래의 C++ 소스 파일에 추가됩니다. 예를 들어, 기존 명령어 파일에 새로운 `!status` 명령어를 추가해 보겠습니다.
```cpp
// mycommands.cpp 파일 (예: bnetd_commands.cpp)
#include "server.h"
void cmd_status(bncs_command_packet *packet) {
// 명령어 처리 로직
send_message("Server is running smoothly!", packet->user);
}
```
위 코드에서는 `cmd_status`라는 함수가 새로운 명령어의 기능을 정의합니다. `send_message` 함수는 사용자에게 메시지를 반환합니다.
3. **명령어 등록**
명령어를 제대로 인식하고 등록하기 위해, 명령어 테이블에 해당 명령어를 추가해야 합니다.
```cpp
// 명령어 테이블 등록 코드 (예: command_table.cpp)
struct command_entry commands[] = {
{"!status", cmd_status, ACCESS_USER, "Returns the server status."},
// 다른 명령어들...
};
```
여기서는 `!status` 명령어가 `cmd_status` 함수와 매핑되어 있으며, 기본적인 사용 권한(ACCESS_USER)과 설명이 정의되어 있습니다.
4. **새로운 기능 컴파일 및 테스트**
모든 수정이 완료되면, 서버 소스를 다시 컴파일하여 변경 사항을 적용해야 합니다.
```bash
# 컴파일
make
# 서버 실행
./bnetd/bnetd
```
서버가 실행된 후, 클라이언트를 통해 `!status` 명령어를 입력하면 서버 상태 메시지가 반환되는지 확인합니다.
```bash
# 클라이언트 명령어 입력 예시
!status
# 기대 결과
Server is running smoothly!
```
5. **결론**
PvPGN 배틀넷 서버에 사용자 명령어를 추가하면 향상된 사용자 경험을 제공할 수 있습니다. 명령어 설계 시 보안 및 서버 성능에 영향을 미치지 않도록 주의가 필요합니다. 항상 최신 상태의 백업을 유지하며 업데이트를 진행하는 것이 좋습니다. 각 개발 단계에서 충분한 테스트를 통해 안정성을 확보하세요.