← 목록

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

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

[task] | knowledge_list [title] | 아이템 생성 및 삭제 [category] | Guides [rephrased] | 1. **Preset List**에서 임의의 엔티티를 배치하여 아이템 삭제 테스트용 트리거 대상 객체를 생성합니다. 2. 배치한 엔티티에 **ItemDelete**라는 이름의 스크립트 컴포넌트를 추가하여 아이템 삭제 로직을 처리하는 스크립트 단위를 연결합니다. 3. **ItemDelete** 스크립트 컴포넌트에서 **TriggerEnterEvent** 이벤트 핸들러를 추가하여 트리거 영역 진입 시 동작할 함수를 등록합니다. 4. `HandleTriggerEnterEvent` 함수는 `[self]` 실행 공간 속성으로 선언되어 해당 [original] | **Preset List**에서 임의의 엔티티를 배치합니다. 그리고 **ItemDelete**라는 이름의 스크립트 컴포넌트를 추가합니다. **ItemDelete** 스크립트를 열고, **TriggerEnterEvent**를 추가합니다. 그리고 아래와 같이 내용을 작성합니다. ```lua [self] HandleTriggerEnterEvent(TriggerEnterEvent event) { --Parameters local TriggerBodyEntity = event.TriggerBodyEntity [chunk_id] | Guides:66:2

[task] | knowledge_list [title] | 아이템 생성 및 삭제 [category] | Guides [rephrased] | 1. 인벤토리 UI를 추가하기 위해 상단 메뉴의 UI 에디터를 열고, **Preset List**에서 **[인벤토리]** 및 **[버튼모음]** UI를 배치합니다. 2. **Inventory** 엔티티의 **UIInventory** 컴포넌트에서 **InventoryBtnPath** 속성이 비어 있는 경우, 햄버거 메뉴의 **Reset All Properties**를 선택하여 정상적인 경로가 설정되도록 초기화해야 합니다. 3. 맵에 배치한 아이템 엔티티에 기능을 부여하기 위해 **GiftBox**라는 이름의 스크립트 컴포넌트를 생성합 [original] | 이번에는 생성된 아이템을 표시할 인벤토리 UI를 추가합니다. 상단 메뉴에 버튼을 눌러 UI 에디터를 엽니다. **Preset List**에서 **[인벤토리]**, **[버튼모음]** UI를 추가합니다. 만일 **Inventory** 엔티티의 **UIInventory** 컴포넌트에 **InventoryBtnPath**가 비어있으면, 햄버거 메뉴를 열어 **Reset All Properties**를 선택합니다. 그러면 아래와 같이 정상적인 경로가 설정됩니다. # 아이템 엔티티 배치 및 기능 추가 버튼을 눌러 UI 편집모드를 [chunk_id] | Guides:66:1

[task] | diverse_qa [title] | 아이템 생성 및 삭제 [category] | Guides [rephrased] | 질문: 문서에서 설명하는 아이템 삭제 시스템의 핵심 동작 원리는 무엇인가요? 답변: 엔티티에 TriggerComponent와 ItemDelete 스크립트 컴포넌트를 추가하고, TriggerEnterEvent가 발생했을 때 트리거 영역에 들어온 엔티티의 인벤토리 내 모든 아이템을 삭제하는 것입니다. 질문: ItemDelete 스크립트에서 이벤트 핸들러의 실행 공간은 어디인가요? 답변: [self] 실행 공간입니다. 질문: 아래 코드는 어떤 일을 수행하나요? ```lua local inventory = TriggerBodyEntit [original] | **Preset List**에서 임의의 엔티티를 배치합니다. 그리고 **ItemDelete**라는 이름의 스크립트 컴포넌트를 추가합니다. **ItemDelete** 스크립트를 열고, **TriggerEnterEvent**를 추가합니다. 그리고 아래와 같이 내용을 작성합니다. ```lua [self] HandleTriggerEnterEvent(TriggerEnterEvent event) { --Parameters local TriggerBodyEntity = event.TriggerBodyEntity [chunk_id] | Guides:66:2

[task] | extract_knowledge [title] | Data DB 저장 및 불러오기 [category] | Guides [rephrased] | # GlobalDataStorage를 이용한 데이터 저장 및 불러오기 ## 1. 개념 설명 `GlobalDataStorage`는 게임 중 변경된 데이터 값을 저장하고 불러오는 역할을 수행하는 데이터 저장소입니다. - **생성 및 식별**: `name` 매개변수를 기준으로 `GlobalDataStorage` 인스턴스가 생성되거나 조회됩니다. - **다중 인스턴스**: `name` 값이 다른 경우 서로 다른 `GlobalDataStorage`가 생성되어, 데이터의 속성이나 용도에 따라 저장소를 분리할 수 있습니다. - **실행 공간* [original] | # 학습 과정 소개 게임 중 변경된 데이터 값을 GlobalDataStorage에 저장하고 불러오는 방법에 대해 알아봅니다. # Data 생성 및 불러오기 GlobalDataStorage는 데이터의 저장과 불러오기를 할 수 있는 "보관소"라 할 수 있습니다. 우리는 데이터베이스에서 데이터를 저장하거나 불러올 일이 있을 때 이 "보관소"를 이용하면 됩니다. GlobalDataStorage는 `_DataStorageService:GetGlobalDataStorage`를 통해 생성하거나 불러오기가 가능합니다. GetGlobalDat [chunk_id] | Guides:68:0

[task] | wikipedia [title] | 아이템 생성 및 삭제 [category] | Guides [rephrased] | # 아이템 생성 및 삭제 이 가이드는 메이플스토리 월드에서 아이템을 생성하고, 이를 인벤토리 UI에 표시하며, 아이템 엔티티를 삭제하는 과정을 설명합니다. ## 인벤토리 UI 추가 생성된 아이템을 표시하기 위해 인벤토리 UI를 추가합니다. 상단 메뉴의 UI 편집기 버튼을 눌러 UI 편집기를 엽니다. **Preset List**에서 **[인벤토리]**와 **[버튼모음]** UI를 선택하여 추가합니다. **Inventory** 엔티티의 **UIInventory** 컴포넌트에서 **InventoryBtnPath** 속성이 비어 있 [original] | 이번에는 생성된 아이템을 표시할 인벤토리 UI를 추가합니다. 상단 메뉴에 버튼을 눌러 UI 에디터를 엽니다. **Preset List**에서 **[인벤토리]**, **[버튼모음]** UI를 추가합니다. 만일 **Inventory** 엔티티의 **UIInventory** 컴포넌트에 **InventoryBtnPath**가 비어있으면, 햄버거 메뉴를 열어 **Reset All Properties**를 선택합니다. 그러면 아래와 같이 정상적인 경로가 설정됩니다. # 아이템 엔티티 배치 및 기능 추가 버튼을 눌러 UI 편집모드를 [chunk_id] | Guides:66:1

[task] | diverse_qa [title] | 아이템 생성 및 삭제 [category] | Guides [rephrased] | 질문: 인벤토리 UI를 추가하기 위해 UI 에디터의 Preset List에서 어떤 UI를 선택해야 하나요? 답변: Preset List에서 [인벤토리]와 [버튼모음] UI를 추가해야 합니다. 질문: Inventory 엔티티의 UIInventory 컴포넌트에서 InventoryBtnPath가 비어 있는 경우 어떻게 수정해야 하나요? 답변: 햄버거 메뉴를 열어 Reset All Properties를 선택하면 정상적인 경로가 설정됩니다. 질문: 아이템 엔티티에 기능을 부여하기 위해 생성한 스크립트 컴포넌트의 이름은 무엇인가요? 답변: [original] | 이번에는 생성된 아이템을 표시할 인벤토리 UI를 추가합니다. 상단 메뉴에 버튼을 눌러 UI 에디터를 엽니다. **Preset List**에서 **[인벤토리]**, **[버튼모음]** UI를 추가합니다. 만일 **Inventory** 엔티티의 **UIInventory** 컴포넌트에 **InventoryBtnPath**가 비어있으면, 햄버거 메뉴를 열어 **Reset All Properties**를 선택합니다. 그러면 아래와 같이 정상적인 경로가 설정됩니다. # 아이템 엔티티 배치 및 기능 추가 버튼을 눌러 UI 편집모드를 [chunk_id] | Guides:66:1

[task] | distill [title] | Data DB 저장 및 불러오기 [category] | Guides [rephrased] | # DB Data 저장 `GlobalDataStorage`의 `SetAsync` 메서드를 사용해 데이터를 비동기로 저장합니다. ### 시그니처 ```lua void SetAsync(string key, string value, function callback) ``` ### 동작 규칙 * **Key**: 데이터를 식별하는 고유 키입니다. 프로퍼티명 또는 값의 의미를 나타내는 문자열을 권장합니다. 동일한 Key로 저장 시 기존 값은 **덮어쓰기**됩니다. * **Value**: 저장할 데이터입니다. `string` 타입으 [original] | 데이터의 저장은 GlobalDataStorage의 SetAsync를 활용해 할 수 있습니다. `SetAsync`는 매개 변수로 key와 value, 그리고 콜백 함수를 받는데, 저장할 데이터가 있으면 key와 value 매개 변수로 값을 넘겨 저장하게 됩니다. key는 매번 변경되어 저장되는 value 값을 불러오기 위한 용도로 사용됩니다. 따라서 key 값으로는 프로퍼티 명이나 혹은 저장된 value 값이 의미하는 것으로 입력해 주는 것이 좋습니다. 예를 들어 power라는 프로퍼티(또는 스탯)의 값을 저장한다면 key에는 "Po [chunk_id] | Guides:68:1

[task] | knowledge_list [title] | Data DB 저장 및 불러오기 [category] | Guides [rephrased] | 1. `_DataStorageService`의 `GetGlobalDataStorage` 메서드는 매개변수로 데이터 스토리지 이름을 받고, 해당 스토리지 객체를 반환합니다. 2. `GetAsync` 메서드는 매개변수로 키 문자열과 콜백 함수를 받아 데이터를 비동기식으로 불러오며, 함수 내부에서 값을 직접 반환하지 않습니다. 3. `GetAsync`의 콜백 함수는 매개변수로 `errorcode`, `key`, `value` 세 가지 값을 순서대로 전달받습니다. 4. `GetAsync`는 비동기 동작 특성상 데이터 수신 시점을 보장하지 [original] | `GetAsync`는 데이터를 불러오기 위한 함수로 value 값 저장 시 함께 저장된 key 값을 통해 value 값을 가져옵니다. 이때 GetAsync도 SetAsync와 마찬가지로 key 값에 해당하는 value 값을 요청하게 되는데, 요청한 value 값을 함수 내에서 직접 리턴 받는 것이 아닌 GetAsync에 등록한 콜백 함수의 매개 변수로 key 값과 함께 들어옵니다. 이유는 GetAsync 역시 비동기식으로 동작을 하기 때문에 불러오기 요청을 보냈을 때 value 값을 언제 보내줄지는 보장되지 않기 때문입니다. 따라서 [chunk_id] | Guides:68:2

[task] | knowledge_list [title] | Data DB 저장 및 불러오기 [category] | Guides [rephrased] | 제시된 문서의 내용을 바탕으로 핵심 사실을 추출하여 정리하였습니다. ```lua -- 참고: 아래는 문서에 포함된 예제 코드 구조이며, 실제 실행 코드가 아닙니다. ``` 1. 데이터 저장은 `GlobalDataStorage` 객체의 `SetAsync` 메서드를 호출하여 수행합니다. 2. `SetAsync` 메서드는 `key`, `value`, 콜백 함수(`callback`)를 매개변수로 수신하며, `value`는 문자열(`string`) 형식으로 변환하여 전달해야 합니다. 3. `key`는 저장된 데이터를 식별하고 불러오기 위 [original] | 데이터의 저장은 GlobalDataStorage의 SetAsync를 활용해 할 수 있습니다. `SetAsync`는 매개 변수로 key와 value, 그리고 콜백 함수를 받는데, 저장할 데이터가 있으면 key와 value 매개 변수로 값을 넘겨 저장하게 됩니다. key는 매번 변경되어 저장되는 value 값을 불러오기 위한 용도로 사용됩니다. 따라서 key 값으로는 프로퍼티 명이나 혹은 저장된 value 값이 의미하는 것으로 입력해 주는 것이 좋습니다. 예를 들어 power라는 프로퍼티(또는 스탯)의 값을 저장한다면 key에는 "Po [chunk_id] | Guides:68:1

[task] | distill [title] | Data DB 저장 및 불러오기 [category] | Guides [rephrased] | # DB Data 저장 및 불러오기 (GetAsync) `GetAsync`는 key 기반으로 저장된 value를 비동기로 가져오는 함수입니다. 비동기 특성상 값을 즉시 반환받지 못하므로, **콜백 함수 등록이 필수**입니다. ## API 시그니처 및 동작 규칙 - **콜백 매개변수**: `function(errorcode, key, value)` - **nil 처리**: 요청한 key에 해당하는 value가 존재하지 않으면 `value`는 `nil`로 전달됩니다. 이 경우 기본값 설정 등 방어적 코딩이 필요합니다. ## 코드 [original] | `GetAsync`는 데이터를 불러오기 위한 함수로 value 값 저장 시 함께 저장된 key 값을 통해 value 값을 가져옵니다. 이때 GetAsync도 SetAsync와 마찬가지로 key 값에 해당하는 value 값을 요청하게 되는데, 요청한 value 값을 함수 내에서 직접 리턴 받는 것이 아닌 GetAsync에 등록한 콜백 함수의 매개 변수로 key 값과 함께 들어옵니다. 이유는 GetAsync 역시 비동기식으로 동작을 하기 때문에 불러오기 요청을 보냈을 때 value 값을 언제 보내줄지는 보장되지 않기 때문입니다. 따라서 [chunk_id] | Guides:68:2

[task] | extract_knowledge [title] | 아이템 생성 및 삭제 [category] | Guides [rephrased] | # 아이템 생성 및 삭제 ## 1. 개념 설명 메이플스토리 월드에서 개별 아이템은 **DataSet** 기반의 아이템 테이블과 이를 참조하는 **ItemType** 스크립트 컴포넌트의 조합으로 정의됩니다. * **아이템 테이블 (DataSet)**: 아이템의 정적 데이터(이름, 아이콘, 스택 수, 효과량 등)를 저장하는 데이터 소스입니다. 아이템을 생성할 때 이 테이블의 데이터를 아이템 객체에 전달합니다. * **ItemType**: 아이템의 동적 동작과 프로퍼티를 정의하는 스크립트 컴포넌트입니다. `OnCreate() [original] | # 학습 과정 소개 이번 과정에서는 아이템 생성과 삭제 기능을 알아봅니다. 제작할 예제는 다음과 같습니다. * 맵에 놓인 아이템을 먹을 때마다 인벤토리에 랜덤한 아이템이 생성 * 아이템을 먹으면, 5초 뒤 아이템이 놓여있던 자리에 다시 생성 * 맵에 놓인 다른 아이템을 먹을 때마다 인벤토리에 있는 모든 아이템 삭제 # 아이템 테이블 만들기 먼저 개별 아이템을 만들어 봅시다. 개별 아이템은 아이템 테이블에서 정의할 수 있습니다. 아이템 테이블은 **DataSet**으로 만듭니다. **Workspace - MyDesk**에서 콘 [chunk_id] | Guides:66:0

[task] | extract_knowledge [title] | 아이템 생성 및 삭제 [category] | Guides [rephrased] | # 아이템 삭제 시스템 구현 ## 개념 설명 메이플스토리 월드에서 엔티티(특히 트리거 영역)에 플레이어가 진입할 때, 해당 플레이어의 인벤토리에 존재하는 모든 아이템을 일괄 삭제하는 로직을 구현할 수 있습니다. 이 과정은 `TriggerEnterEvent` 이벤트 핸들러와 `_ItemService`의 `RemoveItem` 메서드를 조합하여 수행됩니다. ## API 사용법 ### 1. `TriggerEnterEvent` 이벤트 핸들러 트리거 영역에 다른 엔티티(보통 플레이어 캐릭터)가 진입했을 때 발생하는 이벤트를 처리합니다. [original] | **Preset List**에서 임의의 엔티티를 배치합니다. 그리고 **ItemDelete**라는 이름의 스크립트 컴포넌트를 추가합니다. **ItemDelete** 스크립트를 열고, **TriggerEnterEvent**를 추가합니다. 그리고 아래와 같이 내용을 작성합니다. ```lua [self] HandleTriggerEnterEvent(TriggerEnterEvent event) { --Parameters local TriggerBodyEntity = event.TriggerBodyEntity [chunk_id] | Guides:66:2

[task] | distill [title] | 데이터 편집 [category] | Guides [rephrased] | # 데이터셋 데이터 편집 데이터셋은 스크립트를 통해 데이터를 추가·수정·조회하는 데 사용됩니다. ## 데이터셋 생성 1. **Workspace - MyDesk** > **Create DataSet** 클릭 2. 생성된 데이터셋 더블클릭하여 에디터 열기 ## 데이터 에디터 핵심 기능 - **컬럼 셀**: 열 이름(컬럼 명) 정의. 스크립트에서 데이터 참조 시 컬럼 명 사용. - **셀**: 데이터 값 입력. **모든 값은 문자열(string)로 저장됨**. - **행/열 관리**: 추가, 삽입, 삭제 핸들러 제공. - **외부 [original] | # 학습 과정 소개 데이터 셋을 이용해 데이터를 추가하거나 수정할 수 있습니다. 이번 가이드에서는 데이터의 생성 및 편집 방법, 스크립트로 데이터를 불러오는 방법에 대해 알아봅니다. # 데이터 셋 생성 및 데이터 에디터 열기 1. **Workspace - MyDesk**의 콘텍스트 메뉴에서 **Create DataSet**을 클릭합니다. 2. 생성된 데이터를 더블클릭하여 데이터 에디터를 엽니다. # 데이터 에디터 | 번호 | 설명 | | --- | --- | | | **컬럼 셀** 각 열의 데이터명, 즉 컬럼 명을 정의합 [chunk_id] | Guides:69:0

[task] | wikipedia [title] | Data DB 저장 및 불러오기 [category] | Guides [rephrased] | # DB Data DB 저장 및 불러오기 `GetAsync` 함수는 데이터베이스에서 데이터를 조회하는 데 사용됩니다. 이 함수는 이전에 `SetAsync` 등을 통해 저장된 key 값에 해당하는 value 값을 가져오는 역할을 합니다. `GetAsync`는 비동기(Asynchronous) 방식으로 동작합니다. 비동기 처리의 특성상 조회 요청을 보낸 시점과 실제 데이터가 반환되는 시점 사이에 시간이 걸리며, 데이터가 언제 도착할지는 보장되지 않습니다. 따라서 함수 호출 시점에 value 값을 직접 반환받기보다는, 조회가 완료되었을 [original] | `GetAsync`는 데이터를 불러오기 위한 함수로 value 값 저장 시 함께 저장된 key 값을 통해 value 값을 가져옵니다. 이때 GetAsync도 SetAsync와 마찬가지로 key 값에 해당하는 value 값을 요청하게 되는데, 요청한 value 값을 함수 내에서 직접 리턴 받는 것이 아닌 GetAsync에 등록한 콜백 함수의 매개 변수로 key 값과 함께 들어옵니다. 이유는 GetAsync 역시 비동기식으로 동작을 하기 때문에 불러오기 요청을 보냈을 때 value 값을 언제 보내줄지는 보장되지 않기 때문입니다. 따라서 [chunk_id] | Guides:68:2

[task] | wikipedia [title] | Data DB 저장 및 불러오기 [category] | Guides [rephrased] | **DB Data DB 저장 및 불러오기** mLua 스크립트에서 데이터의 영속적 저장은 `GlobalDataStorage` 객체의 `SetAsync` 메서드를 통해 수행됩니다. `SetAsync`는 매개변수로 키(key), 값(value), 그리고 콜백 함수를 받으며, 저장 대상 데이터가 존재할 경우 해당 키와 값으로 전달하여 저장 요청을 처리합니다. 키(key)는 특정 저장된 값(value)을 식별하고 불러오기 위한 고유 식별자로 사용됩니다. 따라서 키 값으로는 해당 프로퍼티의 이름이거나, 저장된 값이 의미하는 내용을 명확히 [original] | 데이터의 저장은 GlobalDataStorage의 SetAsync를 활용해 할 수 있습니다. `SetAsync`는 매개 변수로 key와 value, 그리고 콜백 함수를 받는데, 저장할 데이터가 있으면 key와 value 매개 변수로 값을 넘겨 저장하게 됩니다. key는 매번 변경되어 저장되는 value 값을 불러오기 위한 용도로 사용됩니다. 따라서 key 값으로는 프로퍼티 명이나 혹은 저장된 value 값이 의미하는 것으로 입력해 주는 것이 좋습니다. 예를 들어 power라는 프로퍼티(또는 스탯)의 값을 저장한다면 key에는 "Po [chunk_id] | Guides:68:1

[task] | distill [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | **키 입력 기반 이펙트 스킬 구현** 1. `Workspace`에 `NewSkill` 컴포넌트를 생성합니다. 2. `NewSkill` 컴포넌트에 `InputService`의 `KeyDownEvent` 핸들러를 추가하고, `DefaultPlayer`에 해당 컴포넌트를 연결합니다. 3. 이벤트 핸들러 코드를 작성하여 키 입력에 따라 로그를 출력합니다. ```lua [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { local key = event.key [original] | 스킬 호출 기능에 앞서 간단하게 키 입력을 받는 기능을 먼저 만들어보겠습니다. 1. **Workspace**에서 새 컴포넌트를 추가하고, 이름으로 **NewSkill**을 입력합니다. 2. **NewSkill** 컴포넌트에 키 입력 이벤트를 처리할 핸들러를 추가합니다. **[+]** 버튼을 눌러 **KeyDownEvent**를 추가합니다. 3. **HandleKeyDownEvent**의 코드를 다음과 같이 작성해 줍니다. ```lua [service: InputService] [chunk_id] | Guides:70:1

[task] | knowledge_list [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | 제시된 문서의 내용만 바탕으로 핵심 사실을 추출하여 목록으로 정리합니다. 1. `Workspace`에서 새 컴포넌트를 생성하고 이름으로 `NewSkill`을 지정해야 합니다. 2. `NewSkill` 컴포넌트에 키 입력 이벤트를 처리하기 위해 `KeyDownEvent` 핸들러를 추가해야 합니다. 3. `HandleKeyDownEvent` 함수는 `[service: InputService]` 어트리뷰트를 가지며, 매개변수로 `KeyDownEvent` 타입의 `event`를 받습니다. 4. `KeyDownEvent` 객체에서 `eve [original] | 스킬 호출 기능에 앞서 간단하게 키 입력을 받는 기능을 먼저 만들어보겠습니다. 1. **Workspace**에서 새 컴포넌트를 추가하고, 이름으로 **NewSkill**을 입력합니다. 2. **NewSkill** 컴포넌트에 키 입력 이벤트를 처리할 핸들러를 추가합니다. **[+]** 버튼을 눌러 **KeyDownEvent**를 추가합니다. 3. **HandleKeyDownEvent**의 코드를 다음과 같이 작성해 줍니다. ```lua [service: InputService] [chunk_id] | Guides:70:1

[task] | diverse_qa [title] | Data DB 저장 및 불러오기 [category] | Guides [rephrased] | 질문: GlobalDataStorage를 활용해 데이터를 저장할 때 사용하는 메서드는 무엇인가요? 답변: GlobalDataStorage의 SetAsync 메서드를 활용하여 데이터를 저장할 수 있습니다. 질문: SetAsync 메서드는 어떤 매개 변수들을 받나요? 답변: SetAsync 메서드는 key, value, 그리고 콜백 함수를 매개 변수로 받습니다. 질문: SetAsync에서 key는 어떤 용도로 사용되며, 어떤 값을 입력하는 것이 권장되나요? 답변: key는 매번 변경되어 저장되는 value 값을 불러오기 위한 용도로 [original] | 데이터의 저장은 GlobalDataStorage의 SetAsync를 활용해 할 수 있습니다. `SetAsync`는 매개 변수로 key와 value, 그리고 콜백 함수를 받는데, 저장할 데이터가 있으면 key와 value 매개 변수로 값을 넘겨 저장하게 됩니다. key는 매번 변경되어 저장되는 value 값을 불러오기 위한 용도로 사용됩니다. 따라서 key 값으로는 프로퍼티 명이나 혹은 저장된 value 값이 의미하는 것으로 입력해 주는 것이 좋습니다. 예를 들어 power라는 프로퍼티(또는 스탯)의 값을 저장한다면 key에는 "Po [chunk_id] | Guides:68:1

[task] | knowledge_list [title] | 데이터 편집 [category] | Guides [rephrased] | - 데이터 셋 생성 및 편집은 Workspace - MyDesk 의 컨텍스트 메뉴에서 Create DataSet 을 클릭하여 시작하며, 생성된 데이터를 더블클릭하면 데이터 에디터가 열립니다. - 데이터 에디터의 컬럼 셀은 각 열의 데이터명인 컬럼 명을 정의하며, 스크립트에서 데이터를 가져올 때 이 컬럼 명을 기준으로 조회합니다. - 데이터 에디터의 일반 셀은 인풋 텍스트 필드로 구성되며, 입력한 모든 데이터 값은 문자열(string) 타입으로 저장됩니다. - 데이터 에디터의 행/열 추가 버튼은 누르면 현재 행이나 열의 끝에 새로운 [original] | # 학습 과정 소개 데이터 셋을 이용해 데이터를 추가하거나 수정할 수 있습니다. 이번 가이드에서는 데이터의 생성 및 편집 방법, 스크립트로 데이터를 불러오는 방법에 대해 알아봅니다. # 데이터 셋 생성 및 데이터 에디터 열기 1. **Workspace - MyDesk**의 콘텍스트 메뉴에서 **Create DataSet**을 클릭합니다. 2. 생성된 데이터를 더블클릭하여 데이터 에디터를 엽니다. # 데이터 에디터 | 번호 | 설명 | | --- | --- | | | **컬럼 셀** 각 열의 데이터명, 즉 컬럼 명을 정의합 [chunk_id] | Guides:69:0

[task] | diverse_qa [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | 질문: Workspace에서 이펙트 스킬 테스트를 위해 추가해야 하는 새 컴포넌트의 이름은 무엇인가요? 답변: NewSkill입니다. 질문: NewSkill 컴포넌트에 키 입력 이벤트를 처리하기 위해 추가해야 하는 이벤트 핸들러의 이름은 무엇인가요? 답변: KeyDownEvent입니다. 질문: HandleKeyDownEvent 함수 내에서 Q 키가 눌렸을 때 콘솔에 출력되는 로그 값은 무엇인가요? 답변: "Q"입니다. 질문: 다음 코드가 포함된 이벤트 핸들러는 어떤 서비스(Service)에 연결되어 있나요? ```lua [se [original] | 스킬 호출 기능에 앞서 간단하게 키 입력을 받는 기능을 먼저 만들어보겠습니다. 1. **Workspace**에서 새 컴포넌트를 추가하고, 이름으로 **NewSkill**을 입력합니다. 2. **NewSkill** 컴포넌트에 키 입력 이벤트를 처리할 핸들러를 추가합니다. **[+]** 버튼을 눌러 **KeyDownEvent**를 추가합니다. 3. **HandleKeyDownEvent**의 코드를 다음과 같이 작성해 줍니다. ```lua [service: InputService] [chunk_id] | Guides:70:1

[task] | wikipedia [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | # 키 입력 기반 이펙트 스킬 구현 가이드 이 가이드에서는 스킬 이펙트를 구현하기 전 단계로, 플레이어의 키 입력을 감지하고 특정 키가 눌렸을 때 로그를 출력하는 기능을 제작하는 방법을 다룹니다. ## 1. 컴포넌트 생성 및 이벤트 핸들러 추가 먼저 Workspace 영역에서 새 컴포넌트를 생성합니다. 생성된 컴포넌트의 이름을 **NewSkill**로 설정합니다. 다음으로, **NewSkill** 컴포넌트에서 키 입력 이벤트를 처리할 수 있도록 이벤트 핸들러를 추가합니다. 컴포넌트 에디터의 **[+]** 버튼을 클릭한 후, [original] | 스킬 호출 기능에 앞서 간단하게 키 입력을 받는 기능을 먼저 만들어보겠습니다. 1. **Workspace**에서 새 컴포넌트를 추가하고, 이름으로 **NewSkill**을 입력합니다. 2. **NewSkill** 컴포넌트에 키 입력 이벤트를 처리할 핸들러를 추가합니다. **[+]** 버튼을 눌러 **KeyDownEvent**를 추가합니다. 3. **HandleKeyDownEvent**의 코드를 다음과 같이 작성해 줍니다. ```lua [service: InputService] [chunk_id] | Guides:70:1

[task] | extract_knowledge [title] | UI 제작하기 [category] | Guides [rephrased] | # UI 컴포넌트와 기본 속성 설정 메이플스토리 월드 메이커의 UI 에디터는 `UIGroup`, `TextComponent`, `SpriteGUIRendererComponent` 등의 컴포넌트를 통해 화면 요소의 배치, 스타일, 가시성을 제어하는 시스템입니다. 이 절에서는 텍스트 박스를 생성하고 위치, 크기, 색상, 배경 이미지, 그리고 가시성(Visibility)을 설정하는 표준 절차와 API 속성을 설명합니다. ## 1. 개념 설명 UI 계층 구조는 `Hierarchy` 뷰에서 관리되며, 최상위 컨테이너는 `UIGroup` [original] | # 학습 과정 소개 메이플스토리 월드 메이커에서는 UI를 편집할 수 있는 **UI 에디터**를 제공합니다. UI 에디터를 활용해 캐릭터의 이름이나 스탯 창, 채팅 창 등을 구현할 수 있습니다. 또한 게임의 생동감을 살리는 연출도 만들 수 있습니다. UI 에디터의 기본 기능인 **이미지**와 **텍스트**를 사용해 화면 상단에 환영 메시지 UI를 만들어 봅시다. ##### 참고 가이드 * [UI 에디터](/docs?postId=120) * [기본 UI 컴포넌트](/docs?postId=744) * [UI 엔티티 제어하기](/do [chunk_id] | Guides:64:0

[task] | extract_knowledge [title] | 아이템 생성 및 삭제 [category] | Guides [rephrased] | # 아이템 생성 및 삭제 ## 개념 설명 메이플스토리 월드에서 아이템은 엔티티(Entity)를 통해 맵에 배치되며, 스크립트 컴포넌트를 통해 획득 로직을 제어할 수 있습니다. 플레이어(또는 다른 엔티티)가 아이템과 상호작용할 때, 해당 엔티티의 인벤토리(`InventoryComponent`)에 아이템을 추가하는 것이 기본적인 획득 방식입니다. 또한, 아이템이 획득된 후 일정 시간 뒤에 다시 활성화되도록 타이머를 설정하여 재사용 가능한 아이템 시스템을 구현할 수 있습니다. ## API 사용법 아이템 생성 및 삭제 로직 구현 시 주 [original] | 이번에는 생성된 아이템을 표시할 인벤토리 UI를 추가합니다. 상단 메뉴에 버튼을 눌러 UI 에디터를 엽니다. **Preset List**에서 **[인벤토리]**, **[버튼모음]** UI를 추가합니다. 만일 **Inventory** 엔티티의 **UIInventory** 컴포넌트에 **InventoryBtnPath**가 비어있으면, 햄버거 메뉴를 열어 **Reset All Properties**를 선택합니다. 그러면 아래와 같이 정상적인 경로가 설정됩니다. # 아이템 엔티티 배치 및 기능 추가 버튼을 눌러 UI 편집모드를 [chunk_id] | Guides:66:1

[task] | diverse_qa [title] | Data DB 저장 및 불러오기 [category] | Guides [rephrased] | 질문: `GetAsync` 함수의 주요 목적은 무엇인가요? 답변: `GetAsync`는 DB Data에 저장된 데이터를 불러오기 위한 함수로, 저장 시 함께 저장된 key 값을 통해 해당 key에 매핑된 value 값을 가져옵니다. 질문: `GetAsync`에서 요청한 value 값을 함수에서 직접 리턴받지 못하는 이유는 무엇인가요? 답변: `GetAsync`는 비동기식으로 동작하기 때문에 데이터를 불러오기 위한 요청을 보냈을 때 value 값을 언제 전송해 줄지가 보장되지 않기 때문입니다. 질문: `SetAsync`와 `Get [original] | `GetAsync`는 데이터를 불러오기 위한 함수로 value 값 저장 시 함께 저장된 key 값을 통해 value 값을 가져옵니다. 이때 GetAsync도 SetAsync와 마찬가지로 key 값에 해당하는 value 값을 요청하게 되는데, 요청한 value 값을 함수 내에서 직접 리턴 받는 것이 아닌 GetAsync에 등록한 콜백 함수의 매개 변수로 key 값과 함께 들어옵니다. 이유는 GetAsync 역시 비동기식으로 동작을 하기 때문에 불러오기 요청을 보냈을 때 value 값을 언제 보내줄지는 보장되지 않기 때문입니다. 따라서 [chunk_id] | Guides:68:2

[task] | diverse_qa [title] | 데이터 편집 [category] | Guides [rephrased] | 질문: 데이터셋을 생성하기 위해 Workspace - MyDesk의 콘텍스트 메뉴에서 어떤 항목을 클릭해야 하나요? 답변: **Create DataSet**을 클릭해야 합니다. 질문: 생성된 데이터를 더블클릭하면 어떤 창이 열리나요? 답변: 데이터 에디터가 열립니다. 질문: 데이터 에디터에서 '컬럼 셀'의 역할은 무엇인가요? 답변: 각 열의 데이터명, 즉 컬럼 명을 정의하며, 데이터를 가져올 때 이 컬럼 명을 통해 가져올 수 있습니다. 질문: 데이터 에디터의 셀에 입력한 데이터 값은 어떤 데이터 타입으로 저장되나요? 답변: 입 [original] | # 학습 과정 소개 데이터 셋을 이용해 데이터를 추가하거나 수정할 수 있습니다. 이번 가이드에서는 데이터의 생성 및 편집 방법, 스크립트로 데이터를 불러오는 방법에 대해 알아봅니다. # 데이터 셋 생성 및 데이터 에디터 열기 1. **Workspace - MyDesk**의 콘텍스트 메뉴에서 **Create DataSet**을 클릭합니다. 2. 생성된 데이터를 더블클릭하여 데이터 에디터를 엽니다. # 데이터 에디터 | 번호 | 설명 | | --- | --- | | | **컬럼 셀** 각 열의 데이터명, 즉 컬럼 명을 정의합 [chunk_id] | Guides:69:0

[task] | wikipedia [title] | 데이터 편집 [category] | Guides [rephrased] | # 데이터셋 데이터 편집 메이플스토리 월드(MapleStory Worlds)에서는 데이터셋(DataSet)을 활용하여 프로젝트 내 데이터를 구조화하여 추가하거나 수정할 수 있습니다. 이 가이드에서는 데이터셋의 생성 및 편집 방법, 그리고 스크립트에서 해당 데이터를 불러오는 과정을 설명합니다. ## 데이터셋 생성 및 에디터 열기 데이터셋을 생성하려면 먼저 **Workspace** 탭의 **MyDesk** 영역에서 우클릭하여 나타나는 컨텍스트 메뉴에서 **Create DataSet**을 선택합니다. 생성된 데이터셋 객체를 더블클릭 [original] | # 학습 과정 소개 데이터 셋을 이용해 데이터를 추가하거나 수정할 수 있습니다. 이번 가이드에서는 데이터의 생성 및 편집 방법, 스크립트로 데이터를 불러오는 방법에 대해 알아봅니다. # 데이터 셋 생성 및 데이터 에디터 열기 1. **Workspace - MyDesk**의 콘텍스트 메뉴에서 **Create DataSet**을 클릭합니다. 2. 생성된 데이터를 더블클릭하여 데이터 에디터를 엽니다. # 데이터 에디터 | 번호 | 설명 | | --- | --- | | | **컬럼 셀** 각 열의 데이터명, 즉 컬럼 명을 정의합 [chunk_id] | Guides:69:0

[task] | diverse_qa [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | 질문: 메이플스토리 월드에서 이펙트를 호출하기 위해 사용하는 서비스 이름은 무엇인가요? 답변: 이펙트를 호출하기 위해 메이플스토리 월드가 제공하고 있는 서비스는 **_EffectService**입니다. 질문: _EffectService에서 이펙트를 호출할 때 사용할 수 있는 함수 두 가지는 무엇인가요? 답변: _EffectService에서 이펙트 호출을 위한 함수로는 `PlayEffect`와 `PlayEffectAttached` 함수가 있습니다. 질문: `PlayEffect` 함수의 `isLoop` 매개변수에 `true`를 넣으 [original] | # 학습 과정 소개 메이플스토리 월드에서는 메이플스토리에서 사용되었던 수많은 이펙트 리소스들을 제공하고 있습니다. 그리고 우리는 이러한 이펙트들을 적절한 시점과 위치에 호출해 줌으로써 한층 더 멋진 연출을 구사할 수 있습니다. 이번 과정에서는 특정 키를 누를 때마다 스킬 이펙트가 노출되는 예제를 진행해봄으로써 스크립트를 통해 이펙트를 호출하는 방법에 대해 알아보도록 합니다. 다음 가이드를 먼저 학습하면 이번 과정을 진행하는 데 많은 도움이 될 것입니다. [스크립트 에디터 오리엔테이션](https://mod-developers. [chunk_id] | Guides:70:0

[task] | knowledge_list [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | * 메이플스토리 월드에서는 기존 메이플스토리에서 사용되었던 이펙트 리소스들을 제공하며, 이를 적절한 시점과 위치에 호출함으로써 다양한 연출을 구현할 수 있습니다. * 이펙트 제어 기능은 언더스코어 접두가 붙은 `_EffectService` 서비스를 통해 제공되며, 주요 함수로 `PlayEffect`와 `PlayEffectAttached`가 존재합니다. * `_EffectService:PlayEffect` 함수는 매개변수 `string animationClipRUID`, `Entity instigator`, `Vector3 [original] | # 학습 과정 소개 메이플스토리 월드에서는 메이플스토리에서 사용되었던 수많은 이펙트 리소스들을 제공하고 있습니다. 그리고 우리는 이러한 이펙트들을 적절한 시점과 위치에 호출해 줌으로써 한층 더 멋진 연출을 구사할 수 있습니다. 이번 과정에서는 특정 키를 누를 때마다 스킬 이펙트가 노출되는 예제를 진행해봄으로써 스크립트를 통해 이펙트를 호출하는 방법에 대해 알아보도록 합니다. 다음 가이드를 먼저 학습하면 이번 과정을 진행하는 데 많은 도움이 될 것입니다. [스크립트 에디터 오리엔테이션](https://mod-developers. [chunk_id] | Guides:70:0

[task] | extract_knowledge [title] | Data DB 저장 및 불러오기 [category] | Guides [rephrased] | # DB Data: 비동기 데이터 조회 (GetAsync) ## 1. 개념 설명 `GetAsync`는 데이터 스토리지에서 저장된 데이터를 조회하는 함수입니다. 저장 시 사용된 `key`를 인수로 전달하여 해당 `key`에 매핑된 `value`를 가져옵니다. 이 함수는 **비동기(Asynchronous)** 방식으로 동작합니다. 조회 요청을 보낸 직후 즉시 `value`를 반환받는 것이 아니라, 데이터가 준비되는 시점에 등록한 **콜백 함수(callback function)**의 매개변수를 통해 결과를 전달받습니다. 따라서 `Se [original] | `GetAsync`는 데이터를 불러오기 위한 함수로 value 값 저장 시 함께 저장된 key 값을 통해 value 값을 가져옵니다. 이때 GetAsync도 SetAsync와 마찬가지로 key 값에 해당하는 value 값을 요청하게 되는데, 요청한 value 값을 함수 내에서 직접 리턴 받는 것이 아닌 GetAsync에 등록한 콜백 함수의 매개 변수로 key 값과 함께 들어옵니다. 이유는 GetAsync 역시 비동기식으로 동작을 하기 때문에 불러오기 요청을 보냈을 때 value 값을 언제 보내줄지는 보장되지 않기 때문입니다. 따라서 [chunk_id] | Guides:68:2

[task] | distill [title] | 스킬 이펙트를 뿌려보자! [category] | Guides [rephrased] | # 이펙트 스킬 이펙트를 뿌려보자! 메이플스토리 월드의 `_EffectService`를 사용하여 이펙트 리소스를 호출하는 방법을 학습합니다. 특정 키 입력 시 스킬 이펙트가 노출되는 예제를 통해 구현 방법을 다룹니다. ## _EffectService API 이펙트 제어에 사용되는 주요 함수 두 가지의 시그니처와 동작 규칙은 다음과 같습니다. ### `PlayEffect` 고정된 세계 좌표(World Space) 기준의 특정 위치에 이펙트를 생성합니다. ```lua _EffectService:PlayEffect(string [original] | # 학습 과정 소개 메이플스토리 월드에서는 메이플스토리에서 사용되었던 수많은 이펙트 리소스들을 제공하고 있습니다. 그리고 우리는 이러한 이펙트들을 적절한 시점과 위치에 호출해 줌으로써 한층 더 멋진 연출을 구사할 수 있습니다. 이번 과정에서는 특정 키를 누를 때마다 스킬 이펙트가 노출되는 예제를 진행해봄으로써 스크립트를 통해 이펙트를 호출하는 방법에 대해 알아보도록 합니다. 다음 가이드를 먼저 학습하면 이번 과정을 진행하는 데 많은 도움이 될 것입니다. [스크립트 에디터 오리엔테이션](https://mod-developers. [chunk_id] | Guides:70:0

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