채팅 명령어
SML은 맞춤 채팅 명령어를 추가할 수 있는 시스템을 제공합니다. 이 시스템을 사용하는 것이 좋으며, 이를 통해 다양한 모드 간의 채팅 명령어 동작이 일관되게 유지됩니다.
AChatCommandInstance
BP에서 구현하고자 하는 각 채팅 명령어는 AChatCommandInstance
를 상속해야 합니다.
이 클래스에는 SML에 명령어에 대한 정보를 제공하기 위해 설정해야 할 몇 가지 속성이 포함되어 있습니다:
-
Only Usable by Player
이 속성을 사용하면 플레이어만 명령어를 실행할 수 있도록 보장할 수 있습니다. 다른 모드가 이를 호출하는 것을 방지합니다.
-
Min Number Of Arguments
명령어를 실행하는 데 사용된 인수의 수가 이 값보다 적으면 명령어가 실행되지 않습니다.
-
Command Name
추가하고자 하는 명령어의 이름입니다. 사용자가 명령어를 실행하기 위해 입력하는 내용입니다.
-
Aliases
명령어에 대한 대체 명령어 이름 목록입니다. 명령어를 실행할 때 명령어 이름 대신 사용할 수 있습니다.
-
Usage
명령어의 사용 방법에 대한 설명입니다. 도움말 및 인수가 충분하지 않을 때 표시됩니다. 명령어가 수행하는 작업, 각 매개변수가 무엇인지, 그리고 유효한 명령어의 예를 제공해야 합니다.
이제 명령어에 기능을 추가하려면,
Execute Command
함수를 오버라이드하고 여기에 자신의 로직을 추가하면 됩니다.
이 함수는 명령어 발신자, 명령어 인수 및 사용된 별칭(있는 경우)을 수신하며, 성공 시 COMPLETED를 반환하거나, 오류가 발생한 경우 실행이 실패한 이유에 대한 오류를 기록하고 UNCOMPLETED, INSUFFICIENT_PERMISSIONS 또는 BAD_ARGUMENTS를 반환합니다.
그 후, SML이 이를 로드할 수 있도록 명령어를 등록해야 합니다. 이는 단순히
게임 월드 모듈의
M Chat Commands
배열에 추가함으로써 가능합니다.
AChatCommandSubsystem
이 서브시스템은 여러 유용한 채팅 명령어 유틸리티를 제공합니다. 이를 통해…
-
채팅 명령어 인스턴스를 수동으로 등록할 수 있습니다.
-
등록된 명령어 목록을 가져올 수 있습니다.
-
명령어를 프로그래밍적으로 실행할 수 있습니다.
-
ParsePlayerName
함수를 접근할 수 있으며, 이를 통해 플레이어 이름에 따라AFGPlayerController
를 얻을 수 있습니다.-
이는 일반적으로 명령어 인수로 전달된 플레이어 이름을 파싱하는 데 사용됩니다. 또한 @all 및 @self와 같은 명령어에서 선택자를 파싱할 수 있습니다.
-