전략게시판

전략게시판 [스튜디오]
[루아스크립트] #2. 루아 스크립트 API, 스크립트 에러 해결하기, FQA
2021.02.16 16:38 조회 : 4596
Lv. 401토게피 CosyClimbing 작성자 게시물 더보기


이번 편에서는 넥슨에서 제공하는 스튜디오 스크립트 API와
스크립트 에러가 발생하였을때 해결하는 방법을 알려드리겠습니다.

2 - 1. 루아 스크립트 API

루아스크립트를 제대로 짜고 싶으시다면
반드시 루아스크립트 API를 옆에 끼고 살아가셔야 합니다.

API 에서는 스크립트가 제공하는 여러 도구, 함수들을 찾아 사용할 수 있습니다.
아래 링크를 통하여 스크립트 API를 확인하실 수 있습니다.


정말 지겹도록 쳐다볼 페이지니, 미리 북마크를 해두거나
보기 쉬운 어딘가에 기록해두세요.


아직은 저것들이 다 뭐라고 하는지 이해가 가지 않으실테지만 걱정하지 마세요.
이제부터 천천히 배우다 보면 보이지 않던 것들이 보이게 될 것입니다.

3편부터 진행하는 스크립트 설명, 혹은 직접 루아스크립트 예제를 분석할 때
API를 보면서 무엇을 하는지, 어떻게 쓰는지 공부하는 것을 추천드립니다.



2 - 2. 스크립트 에러 해결하기

* 약간의 영어 실력 필요 *
루아 스크립트를 에러 없이 잘 짜는 것도 중요하지만,
에러를 잘 찾아서 고쳐내는 것 역시 중요합니다.

1편에서 했던 것처럼 game.lua에 아래 스크립트를 복사하고,
스크립트 테스트를 진행해봅시다.

function Game.Rule:OnPlayerSpawn(player)
    player.maxheaIth = 32767
end


저런! 스크립트 에러가 발생했죠?

스튜디오 창작 모드에서 스크립트 에러가 발생하면,
에러 로그가 콘솔에 출력됩니다. 기본설정 [~] 키로 콘솔 창을 열 수 있습니다.


스크립트 에러 로그입니다. 이 로그가 의미하는 바는 다음과 같습니다.

Error : runtime error => 에러의 종류를 알 수 있습니다.

런타임 에러는 루아의 문법은 잘 맞추었으나, 순서가 꼬이거나 잘못된 값이 들어 있어 에러를 낸 것입니다.
루아의 문법이 틀려서 에러가 났을 경우 Error : compile error 라고 출력됩니다.


[string "function Game.Rule:OnPlayerS..."]:2: => 에러가 발생한 위치를 알 수 잇습니다.

가장 중요한 정보입니다. 숫자 2가 적혀있으니,
2번째 줄에서 에러가 발생했다는 것을 알 수 있습니다.
(해당 스크립트에서는 "player.maxheaIth = 32767")


sol: attenot to index (set) nil value "maxheaIth" on userdata (... => 에러가 발생한 이유를 알 수 있습니다.

기본적으로 영어 실력(과 프로그래밍 스킬)을 가진 분이라면, 해당 문구에서
무엇을 어떻게 고쳐야 하는지에 대한 정보를 추가로 얻을 수 있습니다.
지금 문구에서는 maxheaIth라는 정보가 없다고 하네요. 오타가 난 듯 합니다.

위에서 얻은 메시지들을 종합하면,
2번째 줄 player.maxheaIth = 32767 에서 maxheaIth가 문제라는 결론을 낼 수 있습니다.
자세히 보니 maxheaI(대문자 i)th 가 아니라, maxheal(소문자 L)th로 고쳐야 하네요!

오타가 난 maxheaIth 를 제대로 고쳐준 뒤 적용하고 스크립트 테스트를 진행하면
무슨 일이 일어났었냐는듯이 다시 제대로 동작하는 것을 확인할 수 있습니다.


앞으로 수많은 에러들을 만나시게 될 것입니다.
모든 에러 종류를 일일히 설명할 수는 없지만,
이번에 학습한 에러 로그를 분석하는 방법을 침착하게 응용한다면,
스크립트 에러를 해결하는데 좋은 도움이 될 것입니다.

2 - 3. FQA

본격적으로 스크립트 설명을 하기 전에
자주 받던 질문의 답을 미리 해놓겠습니다.

루아 다룰 때 쓰는 프로그램 :
저는 NotePad++씁니다. 구글에 검색하시면 바로 다운로드 홈페이지가 나옵니다.
(따로 사용하는 텍스트 편집기가 있으면 그거를 사용하시면 됩니다. 한글, MS워드로도 가능은 하지만...)


루아를 다룰 때 필요한것 :
1위 : 기본적인 영어 스킬 (루아 문법 검색, 로그분석할때 필수적입니다!)
2위 : 집중력 (잘 안풀려도 끝가지 붙들고 늘어지면 해결되었을때 얻는 경험치도 커집니다.)
3위 : 프로그래밍 언어 경험 (있으면 좋고, 아님말고 수준이에요.)


루아 공부하는 방법 : (저도 이렇게 공부했습니다.)
1위 : 미리 만들어진 루아 분석하기
2위 : 미리 만들어진 루아 따라 만들기
3위 : API 적혀있는거 아무거나 가져다가 쓰면서 삽질하기


루아 공부할만한 레퍼런스 :

1. 헤드라인 모드

맵 복사가 활성화되어 있으니 루아를 내보내기하여 가져온 뒤 분석해보세요.

2 . 새 스튜디오 맵 만들기 => 루아 튜토리얼, 루아 더스트2 팀데스매치

넥슨에서 제공한 루아스크립트 예제를 가져온 뒤 분석해보세요.

3. 합법적 핵 (중급자+)

복사가 되지 않지만 아이디어 자체는 간단하므로, 직접 만들어 볼 수 있습니다.
Game, UI, Common 세 분야가 적절히 섞여 있어 공부하기에는 가장 좋습니다.
이 맵을 따라 만들 줄 알게된다면 루아스크립트를 충분히 능숙하게 다룰 수 있는 레벨이 되었다고 보시면 됩니다.

4. dow gen 유튜브

카스온라인 루아스크립트 영상과, 소스코드를 공개해주는 영상이 여럿 있습니다.



3편에서는 본격적으로 스크립트를 다루기 전에
루아 스크립트에 사용되는 기본적인 문법에 대해 알아보겠습니다

감사합니다.





추천 : 6
댓글을 남기시려면 로그인 해주세요
댓글 : 1
  • 개추 Lv. 524망겜 2021.02.16