← 목록

mLua · Nemotron-CC 리프레이즈 (CPT)

총 8,200개 · 페이지 197/274
🔀 랜덤
불러오는 중…

[task] | diverse_qa [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | 질문: 메이플스토리 월드에서 스크립트를 작성할 때 사용하는 프로그래밍 언어는 무엇인가요? 답변: 메이플스토리 월드에서는 루아(Lua)라는 언어를 사용하여 스크립트를 작성합니다. 질문: 루아에서 데이터를 저장하는 메모리 공간을 가리키는 용어는 무엇인가요? 답변: 변수입니다. 질문: 루아에서 변수의 범위는 크게 몇 가지로 나뉘며 각각 무엇인가요? 답변: 전역(global) 변수와 지역(local) 변수 두 가지로 나뉩니다. 질문: 메이플스토리 월드에서는 전역 변수의 사용을 어떻게 권장하나요? 답변: 메이플스토리 월드에서는 전역 변 [original] | # 학습 과정 소개 메이플스토리 월드에서는 **루아**라는 언어를 사용하여 스크립트를 작성합니다. 이번 시간에는 **루아**의 기본 사용법과 메이플스토리 월드에서 사용하는 예제를 함께 살펴보겠습니다. # 변수 변수란 데이터를 저장하는 메모리 공간, 값을 담아두는 그릇입니다. ## 변수의 범위 루아에서 사용하는 변수는 아래의 두 가지로 나뉩니다. | 변수 | 설명 | | --- | --- | | 전역(global) 변수 | 어느 곳이든 접근 가능한 변수로 아무 선언 없이 사용하면 전역 변수입니다. **단, 메이플스토리 [chunk_id] | Guides:822:0

[task] | distill [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | # mLua (Lua 5.3) 기초: 변수 및 테이블 ## 변수 타입 mLua는 동적 타이핑을 사용하며, 할당된 값에 따라 타입이 결정됩니다. `type()` 함수로 타입을 확인할 수 있습니다. | 타입 | 설명 | | :--- | :--- | | `nil` | 값 없음. 논리 연산에서 `false`, 테이블 키/전역 변수에서 삭제됨. | | `boolean` | `true`, `false`. 수치로 자동 변환되지 않음. | | `number` | 64-bit 실수 (Float). | | `integer` | 64-bit 정수. [original] | 루아의 변수는 내부적으로 유형이 존재하기는 하지만 변수를 생성할 때 그 유형을 명시하지는 않습니다. 변수에 들어가는 값에 따라 그 유형이 정해집니다. | 변수 유형 | 설명 | | --- | --- | | nil | 값이 없음을 뜻합니다. 논리 연산에서 nil은 거짓(false)이고 전역 변수 및 테이블 키에서의 nil은 버려집니다. | | boolean | true와 false 값만 갖습니다. 0, 1의 수치로 변환되지 않습니다. | | number | 64비트 실수입니다. | | integer | 64비트 정수입니다. | [chunk_id] | Guides:822:1

[task] | knowledge_list [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | - 루아 변수는 생성 시 유형을 명시하지 않으며, 변수에 대입되는 값에 따라 내부적으로 유형이 결정됩니다. - nil 유형은 값이 없음을 뜻하며, 논리 연산에서는 거짓(false)으로 취급되고 전역 변수 및 테이블 키에서는 해당 항목이 버려집니다. - boolean 유형은 true와 false 값만 가지며, 0이나 1과 같은 수치로 변환되지 않습니다. - number 유형은 64비트 실수를 나타내며, 정수(1)와 실수(1234.5678) 모두 이 유형으로 분류됩니다. - integer 유형은 64비트 정수를 나타내며, 문서의 typ [original] | 루아의 변수는 내부적으로 유형이 존재하기는 하지만 변수를 생성할 때 그 유형을 명시하지는 않습니다. 변수에 들어가는 값에 따라 그 유형이 정해집니다. | 변수 유형 | 설명 | | --- | --- | | nil | 값이 없음을 뜻합니다. 논리 연산에서 nil은 거짓(false)이고 전역 변수 및 테이블 키에서의 nil은 버려집니다. | | boolean | true와 false 값만 갖습니다. 0, 1의 수치로 변환되지 않습니다. | | number | 64비트 실수입니다. | | integer | 64비트 정수입니다. | [chunk_id] | Guides:822:1

[task] | wikipedia [title] | 타이머 만들기 [category] | Guides [rephrased] | # 카드 짝 맞추기 타이머 만들기 이 섹션은 카드 짝 맞추기 게임의 핵심 로직을 구현하는 `CardPairGameLogic` 컴포넌트에 대한 설명입니다. 이 컴포넌트는 게임 시작 시 UI를 활성화하고, 제한 시간 카운트다운을 수행하며, 카드 선택 및 매칭 처리와 게임 종료 처리를 담당합니다. 모든 메서드는 클라이언트에서만 실행되도록 `[client only]` 실행 공간으로 지정되어 있습니다. ## 프로퍼티 `CardPairGameLogic` 컴포넌트는 다음 세 가지 프로퍼티를 정의합니다. * `CardPairGameUI [original] | #### CardPairGameLogic 로직 ```lua Property: [None] Entity CardPairGameUI = /ui/CardPairGameUI [None] number PlayTime = 60 [None] number RemainingTime = 0 Method: [client only] void OnBeginPlay() { self:StartGame() } [client only] void StartGame() { self.CardPairGameUI.Enable = true [chunk_id] | Guides:821:4

[task] | wikipedia [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | # 루아 기초: 변수와 그 범위 메이플스토리 월드에서는 스크립트 작성에 **루아(Lua)** 언어를 사용합니다. 본 가이드에서는 루아의 기본 사용법과 메이플스토리 월드 환경에 특화된 예제를 통해 변수의 개념과 범위를 설명합니다. ## 변수란? 변수란 데이터를 저장하기 위해 할당된 메모리 공간, 즉 값을 담아두는 그릇이라고 정의할 수 있습니다. 루아에서 사용하는 변수는 선언 방식과 유효 범위에 따라 **전역 변수**와 **지역 변수**로 구분됩니다. ### 전역 변수 (Global Variable) 전역 변수는 스크립트 내 어 [original] | # 학습 과정 소개 메이플스토리 월드에서는 **루아**라는 언어를 사용하여 스크립트를 작성합니다. 이번 시간에는 **루아**의 기본 사용법과 메이플스토리 월드에서 사용하는 예제를 함께 살펴보겠습니다. # 변수 변수란 데이터를 저장하는 메모리 공간, 값을 담아두는 그릇입니다. ## 변수의 범위 루아에서 사용하는 변수는 아래의 두 가지로 나뉩니다. | 변수 | 설명 | | --- | --- | | 전역(global) 변수 | 어느 곳이든 접근 가능한 변수로 아무 선언 없이 사용하면 전역 변수입니다. **단, 메이플스토리 [chunk_id] | Guides:822:0

[task] | diverse_qa [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | 질문: 배열에서 특정 인덱스의 값을 제거하기 위해 사용하는 함수명은 무엇인가요? 답변: `table.remove()` 함수를 사용합니다. 질문: 다음 코드를 실행했을 때 `log(array[1])`의 출력 결과는 무엇인가요? ```lua local array = {11, 22, 33, 44, 55} table.remove(array, 1) log(array[1]) ``` 답변: 22가 출력됩니다. 질문: 사전(Dictionary) 자료 구조의 형태는 어떻게 정의되나요? 답변: **key - value** 형태의 테이블입니다. [original] | 배열에서 값을 제거할 때는 `table.remove()` 함수를 사용합니다. ```lua local array = {11, 22, 33, 44, 55} -- 1번 인덱스를 제거 table.remove(array, 1) log(array[1]) -- 22 ``` > **더 알아보기** > 스크립트 에디터에서 테이블에서 활용할 수 있는 다양한 함수들을 확인할 수 있습니다. > ## 사전(Dictionary) 사전은 **key - value** 형태의 테이블입니다. 자료 구조에서 데이터를 빠르게 검색하기 위해 주로 사용합니다. [chunk_id] | Guides:822:2

[task] | distill [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | # mLua 기초 연산자 및 함수 ## 연산자 ### 산술 연산자 숫자 계산에 사용됩니다. | 연산자 | 설명 | | :--- | :--- | | `+` | 더하기 | | `-` | 빼기 | | `*` | 곱하기 | | `/` | 나누기 | | `//` | 나눈 후 몫만 취함 | | `%` | 나눈 후 나머지만 취함 | | `^` | 지수 | ```lua log(1 + 1) -- 2 log(13 / 5) -- 2.6 log(13 // 5) -- 2 log(13 % 5) -- 3 log(2 ^ 4) -- 16.0 ``` ## [original] | 산술 연산을 할 때 사용하는 연산자입니다. | 연산자 | 설명 | | --- | --- | | `+` | 더하기 | | `-` | 빼기 | | `*` | 곱하기 | | `/` | 나누기 | | `//` | 나눈 후 몫만 취함 | | `%` | 나눈 후 나머지만 취함 | | `^` | 지수 | 예를 들어 아래와 같이 입력하고 **log**를 출력하면 주석의 값이 출력됩니다. ```lua log(1 + 1) -- 2 log(1 - 1) -- 0 log(5 * 5) -- 25 log(13 / 5) -- 2.6 log(13 // 5) [chunk_id] | Guides:822:3

[task] | extract_knowledge [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | # 루아 변수와 범위 (mLua) ## 1. 개념 설명 메이플스토리 월드(mLua) 스크립트에서는 데이터를 저장하는 공간인 **변수**를 사용하며, 루아(Lua) 언어의 문법을 기반으로 합니다. mLua에서 변수는 접근 가능한 범위(Scope)에 따라 두 가지 유형으로 구분됩니다. 1. **전역(Global) 변수**: * 아무 선언 없이 사용되면 전역 변수로 취급되며, 스크립트 어디서나 접근 가능합니다. * **주의**: mLua에서는 전역 변수 사용을 권장하지 않습니다. 전역 변수처럼 스크립트 전체에 [original] | # 학습 과정 소개 메이플스토리 월드에서는 **루아**라는 언어를 사용하여 스크립트를 작성합니다. 이번 시간에는 **루아**의 기본 사용법과 메이플스토리 월드에서 사용하는 예제를 함께 살펴보겠습니다. # 변수 변수란 데이터를 저장하는 메모리 공간, 값을 담아두는 그릇입니다. ## 변수의 범위 루아에서 사용하는 변수는 아래의 두 가지로 나뉩니다. | 변수 | 설명 | | --- | --- | | 전역(global) 변수 | 어느 곳이든 접근 가능한 변수로 아무 선언 없이 사용하면 전역 변수입니다. **단, 메이플스토리 [chunk_id] | Guides:822:0

[task] | knowledge_list [title] | 점수 만들기 [category] | Guides [rephrased] | 제시된 문서에 포함된 정보만 바탕으로 핵심 사실을 추출한 목록입니다. 1. `PlayerStats` 컴포넌트는 점수 증가를 담당하며, `DefalutPlayer` 엔티티에 추가되어야 합니다. 2. `PlayerStats` 컴포넌트에는 동기화되지 않는 `[None]` 속성으로 `number` 타입의 `Score` 프로퍼티가 선언되며, 초기값은 0입니다. 3. `PlayerStats` 컴포넌트에는 `number` 타입의 매개변수 `add`를 받는 `void AddScore(number add)` 메서드가 존재하며, 이 메서드는 `se [original] | # 점수 만들기 카드 짝 맞출 때마다 일정한 점수가 증가하게 만들어봅시다. 1. **PlayerStats** 컴포넌트를 **DefalutPlayer**에 추가합니다. **PlayerStats** 컴포넌트는 점수 증가를 담당합니다. 2. **PlayerStats** 컴포넌트에 number 타입 프로퍼티를 아래와 같이 추가합니다. ```lua Property: [None] number Score = 0 ``` 3. 초깃값이 0인 **Score** 프로퍼티에 점수가 더해질 수 있도록 `A [chunk_id] | Guides:823:0

[task] | wikipedia [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | # 메이플스토리 월드 루아 기초: 변수와 테이블 메이플스토리 월드의 스크립트 언어인 mLua는 Lua 5.3 기반으로 동작하며, 변수는 내부적으로 유형이 존재하지만 선언 시점에 유형을 명시하지 않습니다. 변수에 할당된 값에 따라 그 유형이 동적으로 결정됩니다. ## 변수 유형 mLua에서 사용할 수 있는 기본 변수 유형은 다음과 같습니다. 첫째, `nil`은 값이 없음을 의미합니다. 논리 연산에서는 `nil`이 거짓(`false`)으로 취급되며, 전역 변수 또는 테이블의 키에서 `nil` 값은 삭제(버려짐)됩니다. 둘째, [original] | 루아의 변수는 내부적으로 유형이 존재하기는 하지만 변수를 생성할 때 그 유형을 명시하지는 않습니다. 변수에 들어가는 값에 따라 그 유형이 정해집니다. | 변수 유형 | 설명 | | --- | --- | | nil | 값이 없음을 뜻합니다. 논리 연산에서 nil은 거짓(false)이고 전역 변수 및 테이블 키에서의 nil은 버려집니다. | | boolean | true와 false 값만 갖습니다. 0, 1의 수치로 변환되지 않습니다. | | number | 64비트 실수입니다. | | integer | 64비트 정수입니다. | [chunk_id] | Guides:822:1

[task] | diverse_qa [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | 질문: 산술 연산자 `//`의 역할은 무엇이며, `13 // 5`의 결과 값은 얼마인가요? 답변: `//` 연산자는 나눈 후 몫만 취하는 역할을 하며, `13 // 5`의 결과는 2입니다. 질문: 산술 연산자 `%`를 사용하여 `13 % 5`를 계산하면 어떤 값이 출력되나요? 답변: 3이 출력됩니다. 질문: 아래 코드의 `log(2 ^ 4)` 실행 결과는 무엇이며, `^` 연산자는 어떤 의미를 가집니까? ```lua log(2 ^ 4) ``` 답변: 16.0이 출력되며, `^` 연산자는 지수를 의미합니다. 질문: 관계 연산자의 [original] | 산술 연산을 할 때 사용하는 연산자입니다. | 연산자 | 설명 | | --- | --- | | `+` | 더하기 | | `-` | 빼기 | | `*` | 곱하기 | | `/` | 나누기 | | `//` | 나눈 후 몫만 취함 | | `%` | 나눈 후 나머지만 취함 | | `^` | 지수 | 예를 들어 아래와 같이 입력하고 **log**를 출력하면 주석의 값이 출력됩니다. ```lua log(1 + 1) -- 2 log(1 - 1) -- 0 log(5 * 5) -- 25 log(13 / 5) -- 2.6 log(13 // 5) [chunk_id] | Guides:822:3

[task] | extract_knowledge [title] | 타이머 만들기 [category] | Guides [rephrased] | # 카드 짝 맞추기 게임 로직 구현 (CardPairGameLogic) 본 절에서는 `CardPairGameLogic` 컴포넌트를 사용하여 카드 짝 맞추기 게임의 시간 제한, 카드 선택 및 매칭 처리 로직을 구현하는 방법을 다룹니다. 해당 로직은 클라이언트 측에서만 실행되며, UI 상태 관리와 카드 객체의 상호작용을 제어합니다. ## 1. 개념 설명 `CardPairGameLogic`은 다음과 같은 핵심 기능을 수행합니다. 1. **게임 시작 및 초기화**: 플레이 시작 시 UI를 활성화하고 카드를 배치하며, 남은 시간을 [original] | #### CardPairGameLogic 로직 ```lua Property: [None] Entity CardPairGameUI = /ui/CardPairGameUI [None] number PlayTime = 60 [None] number RemainingTime = 0 Method: [client only] void OnBeginPlay() { self:StartGame() } [client only] void StartGame() { self.CardPairGameUI.Enable = true [chunk_id] | Guides:821:4

[task] | diverse_qa [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | 질문: 루아에서 변수를 생성할 때 데이터 유형을 명시해야 하나요? 답변: 아니요, 루아의 변수는 내부적으로 유형이 존재하지만 변수를 생성할 때 유형을 명시하지 않으며, 변수에 들어가는 값에 따라 유형이 정해집니다. 질문: 루아에서 `nil` 값은 무엇을 뜻하며, 논리 연산에서 어떤 역할을 하나요? 답변: `nil`은 값이 없음을 뜻하며, 논리 연산에서는 거짓(false)으로 취급됩니다. 또한 전역 변수 및 테이블 키에서의 nil은 버려집니다. 질문: 루아의 `boolean` 유형은 0이나 1의 수치로 자동 변환되나요? 답변: 아 [original] | 루아의 변수는 내부적으로 유형이 존재하기는 하지만 변수를 생성할 때 그 유형을 명시하지는 않습니다. 변수에 들어가는 값에 따라 그 유형이 정해집니다. | 변수 유형 | 설명 | | --- | --- | | nil | 값이 없음을 뜻합니다. 논리 연산에서 nil은 거짓(false)이고 전역 변수 및 테이블 키에서의 nil은 버려집니다. | | boolean | true와 false 값만 갖습니다. 0, 1의 수치로 변환되지 않습니다. | | number | 64비트 실수입니다. | | integer | 64비트 정수입니다. | [chunk_id] | Guides:822:1

[task] | distill [title] | 점수 만들기 [category] | Guides [rephrased] | # 카드 짝 맞추기 점수 만들기 카드 매칭 시 점수를 증가시키고 UI에 반영하는 절차입니다. ### 1. 점수 관리 (PlayerStats) `DefaultPlayer`에 **PlayerStats** 컴포넌트를 추가하여 점수를 관리합니다. **Property:** ```lua [None] number Score = 0 ``` **Method:** `add` 매개변수를 받아 점수를 증가시킵니다. ```lua void AddScore (number add) { self.Score = self.Score + add } `` [original] | # 점수 만들기 카드 짝 맞출 때마다 일정한 점수가 증가하게 만들어봅시다. 1. **PlayerStats** 컴포넌트를 **DefalutPlayer**에 추가합니다. **PlayerStats** 컴포넌트는 점수 증가를 담당합니다. 2. **PlayerStats** 컴포넌트에 number 타입 프로퍼티를 아래와 같이 추가합니다. ```lua Property: [None] number Score = 0 ``` 3. 초깃값이 0인 **Score** 프로퍼티에 점수가 더해질 수 있도록 `A [chunk_id] | Guides:823:0

[task] | wikipedia [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | **테이블 값 제거** 배열에서 특정 인덱스에 위치한 값을 제거할 때는 `table.remove()` 함수를 사용합니다. 이 함수는 제거할 인덱스를 인수로 받아 해당 위치의 요소를 삭제합니다. 예를 들어 `{11, 22, 33, 44, 55}`라는 배열에서 1번 인덱스의 값을 제거하면, 원래 2번 인덱스에 있던 값인 22가 1번 인덱스로 이동하게 됩니다. ```lua local array = {11, 22, 33, 44, 55} -- 1번 인덱스를 제거 table.remove(array, 1) log(array[1]) -- 2 [original] | 배열에서 값을 제거할 때는 `table.remove()` 함수를 사용합니다. ```lua local array = {11, 22, 33, 44, 55} -- 1번 인덱스를 제거 table.remove(array, 1) log(array[1]) -- 22 ``` > **더 알아보기** > 스크립트 에디터에서 테이블에서 활용할 수 있는 다양한 함수들을 확인할 수 있습니다. > ## 사전(Dictionary) 사전은 **key - value** 형태의 테이블입니다. 자료 구조에서 데이터를 빠르게 검색하기 위해 주로 사용합니다. [chunk_id] | Guides:822:2

[task] | wikipedia [title] | 타이머 만들기 [category] | Guides [rephrased] | # 카드 짝 맞추기 타이머 만들기 본 문서는 메이플스토리 월드(MapleStory Worlds)의 mLua 스크립트 언어를 사용하여 카드 짝 맞추기 게임의 타이머 및 카드 관리 기능을 구현하는 방법을 설명한다. 해당 스크립트 컴포넌트는 클라이언트에서 카드의 생성, 소거, 선택 및 남은 시간 표시를 담당한다. ## 프로퍼티 설정 스크립트 컴포넌트에는 다음과 같은 세 가지 프로퍼티가 정의되어 있다. * `CardSpawnRoot`: 카드 엔티티가 생성될 부모 엔티티를 참조한다. 기본 값은 `/ui/CardPairGameUI/ [original] | ```lua Property: [None] Entity CardSpawnRoot = /ui/CardPairGameUI/UI_Board/UI_Blocks/UI_Block_Group [None] Card SelectedCard = nil [None] Entity TimeText = /ui/CardPairGameUI/UI_Board/Background/Title/Timer_Background/UI_Time/UI_Time_Text Method: [client only] void OnUpdate (number delta) { sel [chunk_id] | Guides:821:2

[task] | knowledge_list [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | ```lua -- 산술 연산자 log(1 + 1) -- 2 log(1 - 1) -- 0 log(5 * 5) -- 25 log(13 / 5) -- 2.6 log(13 // 5) -- 2 log(13 % 5) -- 3 log(2 ^ 4) -- 16.0 -- 관계 연산자 local a = 1 local b = 2 log(a == b) -- false log(a ~= b) -- true log(a > b) -- false log(a < b) -- true log(a >= b) -- false log(a <= b) -- true -- 기 [original] | 산술 연산을 할 때 사용하는 연산자입니다. | 연산자 | 설명 | | --- | --- | | `+` | 더하기 | | `-` | 빼기 | | `*` | 곱하기 | | `/` | 나누기 | | `//` | 나눈 후 몫만 취함 | | `%` | 나눈 후 나머지만 취함 | | `^` | 지수 | 예를 들어 아래와 같이 입력하고 **log**를 출력하면 주석의 값이 출력됩니다. ```lua log(1 + 1) -- 2 log(1 - 1) -- 0 log(5 * 5) -- 25 log(13 / 5) -- 2.6 log(13 // 5) [chunk_id] | Guides:822:3

[task] | wikipedia [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | # 메이플스토리 월드 루아 기초: 연산자, 함수, 주석 메이플스토리 월드 스크립트 언어 mLua(Lua)는 산술, 관계, 논리, 기타 연산자를 지원하며, 이를 통해 데이터 처리와 조건 분기 로직을 구현할 수 있습니다. 또한 함수를 정의하고, 주석 및 Annotation을 사용하여 코드의 가독성과 메타데이터를 관리합니다. ## 연산자 ### 산술 연산자 산술 연산은 수학적 계산을 수행하기 위해 사용됩니다. `+`는 덧셈, `-`는 뺄셈, `*`는 곱셈, `/`는 나눗셈을 수행합니다. `/` 연산자는 소수점 이하 값을 포함한 실수 [original] | 산술 연산을 할 때 사용하는 연산자입니다. | 연산자 | 설명 | | --- | --- | | `+` | 더하기 | | `-` | 빼기 | | `*` | 곱하기 | | `/` | 나누기 | | `//` | 나눈 후 몫만 취함 | | `%` | 나눈 후 나머지만 취함 | | `^` | 지수 | 예를 들어 아래와 같이 입력하고 **log**를 출력하면 주석의 값이 출력됩니다. ```lua log(1 + 1) -- 2 log(1 - 1) -- 0 log(5 * 5) -- 25 log(13 / 5) -- 2.6 log(13 // 5) [chunk_id] | Guides:822:3

[task] | wikipedia [title] | 점수 만들기 [category] | Guides [rephrased] | # 점수 시스템 구현 가이드 이 가이드는 메이플스토리 월드(MapleStory Worlds)에서 카드 짝 맞추기 게임을 제작할 때, 카드가 성공적으로 매칭될 때마다 점수가 증가하고 해당 값이 사용자 인터페이스(UI)에 실시간으로 반영되도록 설정하는 방법을 설명합니다. 이 과정은 `PlayerStats` 컴포넌트를 통해 점수 상태를 관리하고, `CardBoard` 컴포넌트를 통해 시각적 피드백을 제공하는 방식으로 구성됩니다. ## 1. PlayerStats 컴포넌트 구성 점수 증가 로직을 담당할 `PlayerStats` 컴포넌트 [original] | # 점수 만들기 카드 짝 맞출 때마다 일정한 점수가 증가하게 만들어봅시다. 1. **PlayerStats** 컴포넌트를 **DefalutPlayer**에 추가합니다. **PlayerStats** 컴포넌트는 점수 증가를 담당합니다. 2. **PlayerStats** 컴포넌트에 number 타입 프로퍼티를 아래와 같이 추가합니다. ```lua Property: [None] number Score = 0 ``` 3. 초깃값이 0인 **Score** 프로퍼티에 점수가 더해질 수 있도록 `A [chunk_id] | Guides:823:0

[task] | distill [title] | 점수 만들기 [category] | Guides [rephrased] | ### 카드 관리 메서드 (Client Only) 모든 함수는 `[client only]` 환경에서 실행되며, `self.CardSpawnRoot` 하위 엔티티를 조작합니다. ```lua [client only] void ClearCardEntities() { local cardEntities = self.CardSpawnRoot.Children for i = 1, #cardEntities do cardEntities[i]:Destroy() end } [client only] void Sel [original] | [client Only] void ClearCardEntities () { local cardEntities = self.CardSpawnRoot.Children for i = 1, #cardEntities do cardEntities[i]:Destroy() end } [client only] void SelectCardCard (Card card) { self.SelectedCard = card card:CardOn() } [client only] void [chunk_id] | Guides:823:2

[task] | extract_knowledge [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | # 1. 루아(Lua) 변수 유형 메이플스토리 월드 스크립트 언어 mLua는 Lua 5.3 기반을 사용하며, 변수는 선언 시 유형을 명시하지 않습니다. 변수에 할당된 값의 종류에 따라 내부적으로 유형이 결정됩니다. ## 1.1 기본 변수 유형 | 유형 | 설명 | | :--- | :--- | | `nil` | 값이 없음을 나타냅니다. 논리 연산에서는 `false`로 취급되며, 전역 변수 및 테이블 키에서 `nil` 값은 삭제됩니다. | | `boolean` | `true` 또는 `false` 값만 가집니다. 수치형(`0`, ` [original] | 루아의 변수는 내부적으로 유형이 존재하기는 하지만 변수를 생성할 때 그 유형을 명시하지는 않습니다. 변수에 들어가는 값에 따라 그 유형이 정해집니다. | 변수 유형 | 설명 | | --- | --- | | nil | 값이 없음을 뜻합니다. 논리 연산에서 nil은 거짓(false)이고 전역 변수 및 테이블 키에서의 nil은 버려집니다. | | boolean | true와 false 값만 갖습니다. 0, 1의 수치로 변환되지 않습니다. | | number | 64비트 실수입니다. | | integer | 64비트 정수입니다. | [chunk_id] | Guides:822:1

[task] | knowledge_list [title] | 점수 만들기 [category] | Guides [rephrased] | 제시된 문서에 포함된 코드 스니펫와 메서드 시그니처만을 기반으로 추출한 핵심 사실 목록입니다. 1. `ClearCardEntities` 메서드는 클라이언트 공간(`[client only]`)에서 실행되며, 매개변수가 없고 반환 타입이 `void`입니다. 2. `ClearCardEntities` 메서드는 `self.CardSpawnRoot.Children` 리스트를 조회하여, 리스트 내 모든 엔티티에 대해 `Destroy()` 메서드를 호출하여 파괴합니다. 3. `SelectCardCard` 메서드는 클라이언트 공간(`[client [original] | [client Only] void ClearCardEntities () { local cardEntities = self.CardSpawnRoot.Children for i = 1, #cardEntities do cardEntities[i]:Destroy() end } [client only] void SelectCardCard (Card card) { self.SelectedCard = card card:CardOn() } [client only] void [chunk_id] | Guides:823:2

[task] | diverse_qa [title] | 점수 만들기 [category] | Guides [rephrased] | 질문: `PlayerStats` 컴포넌트를 어디에 추가해야 하나요? 답변: **PlayerStats** 컴포넌트는 **DefalutPlayer**에 추가해야 합니다. 질문: `PlayerStats` 컴포넌트에서 점수를 저장하기 위해 추가하는 프로퍼티의 이름과 타입은 무엇인가요? 답변: 프로퍼티의 이름은 `Score`이며, 타입은 `number`입니다. 질문: `PlayerStats` 컴포넌트의 `Score` 프로퍼티의 초기값은 얼마로 설정되어 있나요? 답변: 초기값은 0으로 설정되어 있습니다. 질문: 점수를 증가시키는 기능을 [original] | # 점수 만들기 카드 짝 맞출 때마다 일정한 점수가 증가하게 만들어봅시다. 1. **PlayerStats** 컴포넌트를 **DefalutPlayer**에 추가합니다. **PlayerStats** 컴포넌트는 점수 증가를 담당합니다. 2. **PlayerStats** 컴포넌트에 number 타입 프로퍼티를 아래와 같이 추가합니다. ```lua Property: [None] number Score = 0 ``` 3. 초깃값이 0인 **Score** 프로퍼티에 점수가 더해질 수 있도록 `A [chunk_id] | Guides:823:0

[task] | extract_knowledge [title] | 타이머 만들기 [category] | Guides [rephrased] | # 카드 짝 맞추기 타이머 및 카드 관리 본 절에서는 `mLua` 스크립트를 이용하여 카드 짝 맞추기 게임의 남은 시간 표시, 카드 덱 생성 및 셔플링, 그리고 카드 스폰 및 선택 로직을 구현하는 방법을 다룬다. ## 개념 설명 ### 1. 타이머 업데이트 클라이언트 측 `OnUpdate` 이벤트 핸들러를 통해 매 프레임마다 실행되는 로직으로, 외부에서 관리되는 남은 시간(`_CardPairGameLogic.RemainingTime`)을 조회하여 UI 텍스트 컴포넌트에 반영한다. ### 2. 카드 덱 생성 및 셔플링 `_Da [original] | ```lua Property: [None] Entity CardSpawnRoot = /ui/CardPairGameUI/UI_Board/UI_Blocks/UI_Block_Group [None] Card SelectedCard = nil [None] Entity TimeText = /ui/CardPairGameUI/UI_Board/Background/Title/Timer_Background/UI_Time/UI_Time_Text Method: [client only] void OnUpdate (number delta) { sel [chunk_id] | Guides:821:2

[task] | extract_knowledge [title] | 메이플스토리 월드 루아 기초 [category] | Guides [rephrased] | # 테이블(table) 조작 및 참조 ## 개념 설명 mLua에서 `table`은 동적 크기의 배열과 사전(Dictionary)을 모두 지원하는 기본 자료 구조입니다. 1. **배열(Array)**: 인덱스를 정수로 사용하는 리스트 구조입니다. 요소를 추가하거나 제거할 때 `table` 함수를 활용합니다. 2. **사전(Dictionary)**: `key - value` 쌍으로 데이터를 저장하는 구조입니다. 특정 키(key)를 통해 값을 빠르게 검색하거나 수정할 때 사용합니다. 3. **참조(Reference)**: 루아 [original] | 배열에서 값을 제거할 때는 `table.remove()` 함수를 사용합니다. ```lua local array = {11, 22, 33, 44, 55} -- 1번 인덱스를 제거 table.remove(array, 1) log(array[1]) -- 22 ``` > **더 알아보기** > 스크립트 에디터에서 테이블에서 활용할 수 있는 다양한 함수들을 확인할 수 있습니다. > ## 사전(Dictionary) 사전은 **key - value** 형태의 테이블입니다. 자료 구조에서 데이터를 빠르게 검색하기 위해 주로 사용합니다. [chunk_id] | Guides:822:2

[task] | distill [title] | 점수 만들기 [category] | Guides [rephrased] | # 카드 짝 맞추기 점수 및 카드 생성 ## 프로퍼티 UI 경로와 선택된 카드 상태를 저장합니다. ```lua Property: [None] Entity CardSpawnRoot = /ui/CardPairGameUI/UI_Board/UI_Blocks/UI_Block_Group [None] Card SelectedCard = nil [None] Entity TimeText = /ui/CardPairGameUI/UI_Board/Background/Title/Timer_Background/UI_Time/UI_Time_Text [Non [original] | ```lua Property: [None] Entity CardSpawnRoot = /ui/CardPairGameUI/UI_Board/UI_Blocks/UI_Block_Group [None] Card SelectedCard = nil [None] Entity TimeText = /ui/CardPairGameUI/UI_Board/Background/Title/Timer_Background/UI_Time/UI_Time_Text [None] Entity ScoreText = /ui/CardPairGameUI/UI_Board/Backgro [chunk_id] | Guides:823:1

[task] | wikipedia [title] | 점수 만들기 [category] | Guides [rephrased] | # 카드 짝 맞추기 점수 만들기 이 섹션은 카드 짝 맞추기 미니게임에서 사용되는 클라이언트 전용 메서드들의 구현 방식을 설명합니다. 해당 메서드들은 모두 `[client only]` 실행 공간에서 동작하며, 카드 엔티티의 생성과 소멸, 선택 상태 관리, 그리고 게임 종료 조건 판정을 담당합니다. ## ClearCardEntities `ClearCardEntities` 메서드는 현재 스크린에 존재하는 모든 카드 엔티티를 제거하는 역할을 합니다. 이 메서드는 `self.CardSpawnRoot`라는 부모 객체의 자식 요소들(Chi [original] | [client Only] void ClearCardEntities () { local cardEntities = self.CardSpawnRoot.Children for i = 1, #cardEntities do cardEntities[i]:Destroy() end } [client only] void SelectCardCard (Card card) { self.SelectedCard = card card:CardOn() } [client only] void [chunk_id] | Guides:823:2

[task] | distill [title] | 어노테이션 활용하기 [category] | Guides [rephrased] | # 어노테이션 활용하기 **어노테이션**(`---@`)은 스크립트 에디터의 퀵 인포, 시그니처 헬퍼, 코드 컴플리션 등 어시스트 기능을 활성화하는 메타데이터입니다. 일반 주석(`--`)과 달리 IDE 지원에 직접적으로 기여합니다. ## 변수 타입 지정 : Type Annotation 할당문에 `---@type`을 사용하여 변수의 타입을 명시하면 에디터의 타입 추론 및 자동 완성 기능을 활용할 수 있습니다. ### 일반 타입 지정 ```lua ---@type string local testValue = "test" ---@t [original] | # 학습 과정 소개 **어노테이션**(Annotation)은 코드에 추가하여 사용하는 일종의 메타데이터입니다. 스크립트에 `--` 기호를 사용한 주석(Comment)은 스크립트 작성에 참고 역할만 하는 반면, `---@` 형태로 **어노테이션**을 작성하면 **퀵 인포**나 **시그니처 헬퍼**, **코드 컴플리션** 등 스크립트 어시스트의 도움을 받을 수 있습니다. 본 과정을 통해 메이플스토리 월드에서 제공하는 **어노테이션**의 종류와 활용 방법을 알아봅시다. > **더 알아보기** > 퀵 인포, 시그니처 헬퍼, 코드 컴플리 [chunk_id] | Guides:824:0

[task] | diverse_qa [title] | 점수 만들기 [category] | Guides [rephrased] | 질문: `ClearCardEntities` 메서드의 실행 공간은 어디인가요? 답변: 이 메서드는 `[client Only]` 또는 `[client only]`로 지정되어 있어 클라이언트에서만 실행됩니다. 질문: `ClearCardEntities` 함수 내에서 `self.CardSpawnRoot.Children`는 어떤 역할을 하나요? 답변: 카드 스폰 루트 객체의 자식 요소 목록을 가져와서, 이후 루프를 통해 각 카드를 삭제(`Destroy`)하는 대상 목록으로 사용합니다. 질문: `SelectCardCard` 함수가 수행하는 [original] | [client Only] void ClearCardEntities () { local cardEntities = self.CardSpawnRoot.Children for i = 1, #cardEntities do cardEntities[i]:Destroy() end } [client only] void SelectCardCard (Card card) { self.SelectedCard = card card:CardOn() } [client only] void [chunk_id] | Guides:823:2

[task] | knowledge_list [title] | 어노테이션 활용하기 [category] | Guides [rephrased] | ```lua -- 아래는 문서에서 추출한 핵심 사실 목록입니다. local facts = { "어노테이션(Annotation)은 코드에 추가하는 일종의 메타데이터로, `--` 주석과 달리 `---@` 형태로 작성하면 퀵 인포, 시그니처 헬퍼, 코드 컴플리션 등 스크립트 어시스트 기능을 활성화합니다.", "Type Annotation은 할당문에서 사용되며, `---@type TYPE` 문법을 통해 변수의 타입을 명시적으로 지정하여 스크립트 에디터의 도움을 받을 수 있습니다.", "반환 타입을 추론할 수 없는 Lu [original] | # 학습 과정 소개 **어노테이션**(Annotation)은 코드에 추가하여 사용하는 일종의 메타데이터입니다. 스크립트에 `--` 기호를 사용한 주석(Comment)은 스크립트 작성에 참고 역할만 하는 반면, `---@` 형태로 **어노테이션**을 작성하면 **퀵 인포**나 **시그니처 헬퍼**, **코드 컴플리션** 등 스크립트 어시스트의 도움을 받을 수 있습니다. 본 과정을 통해 메이플스토리 월드에서 제공하는 **어노테이션**의 종류와 활용 방법을 알아봅시다. > **더 알아보기** > 퀵 인포, 시그니처 헬퍼, 코드 컴플리 [chunk_id] | Guides:824:0

← → 방향키로 페이지 이동 · 숫자 입력 후 Enter로 점프