문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. =간단한 모듈 만들기= 기본적으로 모듈은 .lnx 파일 한개와 .lua 파일 하나가 한 쌍이 되어 만들어집니다. .lua 에서는 플러그인 코드를 작성하고, .lnx 는 중간을 매개해주는 역할을 해 줍니다. 이번 예제에서는 간단하게 숫자 두개를 입력받아 더한 값을 되돌려주는 매크로를 모듈로 작성할 것입니다. 먼저, 루아 메뉴의 새로운 루아 모듈을 눌러 새로운 루아 파일을 만듭니다. 여기에서는 "TutorialPlus" 라는 이름으로 만들어 보겠습니다. http://i.imgur.com/r8DZcaK.png http://i.imgur.com/wjViM9c.png 그렇다면 다음과 같이 모듈 폴더에 TutorialPlus.lua 파일이 생성될 것입니다. http://i.imgur.com/WAAIGmW.png 그리고 짝이 되는 .lnx 파일이 필요한데, 아직 피니엔진에서는 모듈 제작 지원이 완벽하지 않으므로 이 부분은 수동으로 빈 텍스트 파일을 생성하여 만들어 줍니다. http://i.imgur.com/WXouJbT.png 그렇다면, 이제 TutorialPlus.lua 그리고 짝이 되는 Tutorialdef.lnx 가 생성되었습니다. 그 다음, 덧셈을 할 루아 함수를 정의해 보겠습니다. 먼저, lua 파일을 텍스트 편집기로 열면 다음과 같은 코드가 기본으로 있습니다. http://i.imgur.com/WbJxOii.png 기본으로 생성해주는 lua 파일의 주석은 전 VM 을 기준으로 작성되어있으므로 현재의 신 VM 에서는 무시해주시고, 다음과 같이 작성해 보겠습니다. <lnx> --최초 1회만 불리는 코드는 여기다 적어주세요. function tutorial_plus(vm, stck) local value1 = vm:ARGU("루아더하기","수1",0) -- 인자 "수1" 의 내용을 가져옵니다 local value2 = vm:ARGU("루아더하기","수2",0) -- 인자 "수2" 의 내용을 가져옵니다 local result = value1 + value2 vm:returnValue(result) -- "결과를 되돌려줍니다" end local function m(XVM) --[루아] 매크로가 불리는 시점에 사용 될 루아 코드를 적어주세요. end return m </lnx> lnx에서 함수 호출을 했을 때, lua 에서는 vm과 stck 의 두 개의 인자가 전달됩니다. vm 은 피니엔진을 돌리는 전반적인 VM 인 LXVM 클래스를 전달해 주며, stck 는 콜스택 객체를 전달해 줍니다. LXVM 객체에서 제공하는 함수에 대해서는, LXVM 문서를 참고해 주시기 바라겠습니다. 여기에서는 여기에서 사용한 ARGU 함수와 returnValue 함수에 대해서만 설명하겠습니다. vm:ARGU() 함수는, 매크로의 인자를 가져오는 함수로서, 첫번째 인자는 매크로 이름, 두번째 인자는 인자 이름, 세번째 인자는 디폴트 값입니다. 따라서, 다음과 같이 작성하였다면, "루아더하기" 라는 함수의 "수1" 인자를 value1 에 저장하고, "수2" 라는 인자는 value2 에 저장하게 되겠죠. 물론, 수1 또는 수2 가 생략될 경우, 각 변수에는 0 이 대신 저장됩니다. 그리고, vm:returnValue() 함수는 전달해 준 값을 되돌려주는 함수입니다. lua 의 return 문으로 값을 되돌려 주는 방식이 아니니 유의하여 작성해주시면 되겠습니다. 다음은 이 lua 파일에 대응하는 lnx 파일을 작성해 보겠습니다. <lnx> [스크립트 실행="아니오" 파일명="TutorialPlus.lua" ] !루아더하기{ "< p class='title'>루아더하기< /p>루아더하기 매크로에 대한 설명입니다"| {1| 수1| ""| 0| "수1 인자에 대한 설명입니다."}| {1| 수2| ""| 0| "수2 인자에 대한 설명입니다."} } @매크로 루아더하기: [[tutorial_plus]] </lnx> 위와 같이 작성해 주시면 되며, 의미는 다음과 같습니다. [스크립트] 구문은, 해당 lua 파일을 불러오는 역할을 하며, 실행은 "아니오" 로 해 주셔야 합니다. !루아더하기 로 시작하는 구문은, 해당 매크로에 대한 설명을 추가하는 구문이며, 설명을 하지 않으실 것이면, 생략이 가능합니다. 중괄호 이후 최초의 칸은 매크로 자체에 대한 설명이며, 그 다음 이어지는 중괄호는 각각 인자 하나하나씩 에대한 설명입니다. 인자의 중괄호 안의 의미는 차례대로 * 1 : 매크로를 자동완성 했을 때, 자동으로 인자를 표기할 지의 여부입니다. 1이면 표기하고, 0이면 숨깁니다. * 수1 : 인자 이름입니다. * "" : 타입입니다. [[Lnx_script|Lnx script]]의 매개변수 표현 방식 페이지를 참고해 주세요. * 0 : 자동완성시의 기본값입니다. * "수1 인자에 대한 설명입니다." : 각 인자에 대한 설명입니다. 입니다. 다음으로, @매크로 구문은 기존 lnx 문법의 @매크로 구문과 같고, [[function_name]] 은 해당하는 이름의 lua 함수를 호출하는 역할을 합니다. 이상으로 플러그인 작성이 끝났으니, 테스트를 해 보겠습니다. 우선, 위에서와 같이 설명을 추가하는 구문을 작성하셨다면, 피니엔진을 껏다 켜면 다음과 같은 설명을 볼 수 있습니다. http://i.imgur.com/xWkPSci.png 다음은 모듈에 정의한 매크로를 실행하는 테스트 코드입니다. <lnx> [스크립트 실행="예" 파일명="Tutorialdef.lnx" ] [텍스트 아이디="루아더하기테스트" 내용=[루아더하기 수1=23 수2=45]] </lnx> 루아더하기의 실행 결과를 텍스트 매크로로 화면에 출력하는 코드입니다. 다음은 실행 결과입니다. http://i.imgur.com/WEG1wXq.png 두 수의 합이 무사히 화면에 표기되는 것을 확인하였습니다. 이상이며, 간단한 모듈 만들기에 대한 문서는 여기까지입니다. 여기까지 따라오셨다면 기본적인 모듈 만들기에 대해서는 기능습득을 하셨으며, 이어서 다른 PiniApi 와 연계하여 사용한다면 원하는 일을 하는 모듈을 만드실 수 있을 것입니다! PiniApi:tuto make simple module 문서로 돌아갑니다.