스크립트 적용 방법
파일에 직접 적용하기
이 방법은 스크립트가 서버가 시작될 때, 클라이언트가 켜졌을 때 동작해야 할 스크립트가 필요할 때 사용됩니다.
먼저 서버 스크립트는 프로젝트 폴더 아래에 있는 /ServerScripts 폴더에, 클라이언트 스크립트는 프로젝트 폴더 아래에 있는 /Scripts 폴더에 각각 *.lua 파일을 추가하면 적용됩니다.
EX) /ServerScripts 폴더 아래에 Hello.lua 라는 파일을 생성 후 스크립트 작성
이벤트에 적용하기
이 방법은 유닛이 이벤트와 닿았을 때에 동작할 스크립트가 필요한 경우에 사용됩니다.
먼저 이벤트 유닛을 생성하고 해당 유닛에 '스크립트' 이벤트를 적용한 뒤, 필요한 스크립트를 작성하면 적용됩니다.
이벤트 유닛에서 스크립트를 실행하는 경우 로컬 테이블에 unit, event 키워드가 추가되어 사용할 수 있습니다.
unit은 이 이벤트를 실행시킨 플레이어 유닛을 나타내며, event는 해당 이벤트 유닛을 나타냅니다. 단 이벤트의 시작 조건이 맵 생성시, 자동 시작과 같이 이벤트를 실행시킨 유닛이 없으면 unit 키워드는 사용하실 수 없습니다.
EX) 버튼 입력 시 시작되는 이벤트 유닛에 '스크립트' 이벤트를 추가하고
unit.SendCenterLabel("Hello!") 스크립트 입력
/script 명령어 사용하기
이 방법은 간단히 스크립트를 테스트하고 싶은 경우에 사용됩니다. /script [스크립트 내용] 와 같이 채팅창에 입력하게 되면 해당 스크립트 내용이 실행됩니다.
해당 방법으로 스크립트를 실행하는 경우 로컬 테이블에 me, unit 키워드가 추가되어 사용할 수 있습니다. me는 해당 명령어를 입력한 플레이어, unit은 해당 명령어를 입력한 플레이어 유닛을 나타냅니다.
EX) /script unit.SendCenterLabel("Hello!")
게임의 관리자 권한이 있거나 테스트 환경에서만 사용할 수 있습니다.
데미지 공식에서의 스크립트
데이터베이스에서 스킬, 상태등 데미지 공식을 입력하는 공간이 존재하는데, 이 공간에 적는 데미지 공식도 스크립트로 실행됩니다.
해당 공식 내의 로컬 테이블에는 a, b, critical, level 등이 있는데
a는 공격자, b는 방어자, critical은 크리티컬 유무, level은 스킬의 레벨을 의미합니다. 데이터베이스-상태에서 사용되는 데미지 공식은 a와 b만 로컬 테이블에 존재합니다
EX) a.atk - b.def
정보
보통 주체가 되는 플레이어 유닛을 찾을 수 있는 스크립트를 입력하는 공간에는 로컬 테이블에 unit 키워드가 존재합니다
전역 공간에 생성한 변수들은 모든 스크립트 실행에 공유됩니다.
파일에 직업 적용한 스크립트에서 함수를 정의하고, 이벤트 실행시의 스크립트에서 해당 함수를 사용하는 방식도 가능합니다.
서버 스크립트와 클라이언트 스크립트는 용도와 사용법이 다르며, 같은 이벤트 내에서 실행되는 스크립트라도 서버, 클라이언트 구분에 따라 오류가 날 수 있습니다. 해당 문서의 예제들은 전부 서버 스크립트를 예제로 들었습니다.
EX) 클라이언트 스크립트 입력란에 서버 스크립트 입력