[task] | wikipedia [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | **몬스터 사냥과 아이템 획득: 아이템 스크립트 작성하기** 몬스터 사냥 후 획득한 아이템을 플레이어가 주울 수 있도록 하기 위해서는 아이템 엔티티와 플레이어(또는 다른 엔티티) 간의 충돌을 감지하고, 해당 충돌 시점에 아이템을 인벤토리에 추가하는 로직이 필요합니다. mLua에서는 트리거(Trigger) 컴포넌트의 `HandleTriggerEnterEvent` 이벤트 핸들러를 사용하여 이 과정을 구현합니다. 아래 예제는 서버 측에서만 실행되며(`[server only]`), 아이템 엔티티와 충돌한 대상의 경량 인벤토리(`Lite [original] | ```lua [server only] [self] HandleTriggerEnterEvent(TriggerEnterEvent event) { -- Parameters local TriggerBodyEntity = event.TriggerBodyEntity -------------------------------------------------------- --아이템 엔티티와 충돌한 엔티티의 인벤토리를 받고, 인벤토리가 없으면 리턴 local [chunk_id] | Guides:947:1
[task] | diverse_qa [title] | 인벤토리 UI 스크립트 작성하기 [category] | Guides [rephrased] | 질문: `UIItemSlot` 스크립트의 `ItemIndex`와 `ItemCount` 프로퍼티의 기본값은 각각 얼마입니까? 답변: `ItemIndex`와 `ItemCount` 프로퍼티의 기본값은 모두 0입니다. 질문: `SetData` 메서드에서 아이템 아이콘 이미지를 설정하기 위해 어떤 서비스와 테이블을 참조합니까? 답변: `_DataService`의 `GetTable("UserItemDataSet")` 메서드를 사용하여 테이블을 참조하고, 해당 테이블의 `IconRUID` 셀 값을 가져와 설정합니다. 질문: `SetData` [original] | ## UIItemSlot 스크립트 ```lua Property: [None] number ItemIndex = 0 [None] number ItemCount = 0 Method: void SetData(number itemIndex, number itemCount) { -- 슬롯에 아이템 정보를 설정함 self.ItemIndex = itemIndex self.ItemCount = itemCount local imageEntity = self.Entity:GetChildByName("img_sl [chunk_id] | Guides:946:5
[task] | distill [title] | 인벤토리 UI 스크립트 작성하기 [category] | Guides [rephrased] | # 몬스터 사냥과 아이템 획득 인벤토리 UI 스크립트 작성하기 인벤토리 패널의 슬롯 생성, 버튼 연결 및 아이템 초기화 로직을 구현하는 가이드입니다. ## 1. Property 인벤토리 UI 객체와 슬롯 데이터를 관리하는 프로퍼티입니다. ```lua Property: [None] Entity itemUI = nil [None] Entity scrollView = nil [None] SyncTable<string, Entity> SlotItems [None] string inventoryBtnPath = "/ui/Default [original] | ```lua Property: [None] Entity itemUI = nil [None] Entity scrollView = nil [None] SyncTable<string, Entity> SlotItems [None] string inventoryBtnPath = "/ui/DefaultGroup/RPGButtons/btn_inventory" Method: [client only] void OnBeginPlay { self.itemUI =_EntityService:GetEntityByPath(self.Entity [chunk_id] | Guides:946:3
[task] | wikipedia [title] | 인벤토리 UI 스크립트 작성하기 [category] | Guides [rephrased] | ## UIItemSlot 스크립트 `UIItemSlot` 스크립트는 인벤토리 UI에서 개별 아이템 슬롯의 상태 관리와 상호작용을 담당하는 컴포넌트입니다. 이 스크립트는 아이템의 식별자(`ItemIndex`)와 수량(`ItemCount`)을 저장하는 두 개의 `[None]` 속성 프로퍼티를 정의합니다. 주요 기능은 `SetData`와 `SetCount` 메서드를 통해 구현됩니다. `SetData` 메서드는 주어진 `itemIndex`와 `itemCount` 인수를 받아 프로퍼티를 갱신합니다. 이후 `self.Entity`의 자식 [original] | ## UIItemSlot 스크립트 ```lua Property: [None] number ItemIndex = 0 [None] number ItemCount = 0 Method: void SetData(number itemIndex, number itemCount) { -- 슬롯에 아이템 정보를 설정함 self.ItemIndex = itemIndex self.ItemCount = itemCount local imageEntity = self.Entity:GetChildByName("img_sl [chunk_id] | Guides:946:5
[task] | knowledge_list [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | ```lua Property: [Sync] number ItemIndex = 0 ``` 1. `Item` 스크립트 컴포넌트의 `Property` 블록에는 `[Sync]` 속성이 붙은 `number` 타입의 `ItemIndex` 프로퍼티가 존재하며, 기본값은 `0`입니다. 2. `InitItem(number itemIndex)` 메서드는 `number` 타입의 매개변수 `itemIndex`를 받아서 `self.ItemIndex`에 대입합니다. 3. `InitItem(number itemIndex)` 메서드 내부에서는 `self.En [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > 1편. [몬스터를 스폰해보자](/docs?postId=204) > 2편. [몬스터 드롭 아이템과 인벤토리 UI 만들기](/docs?postId=943) > 3편. [인벤토리 스크립트 작성하기](/docs?postId=942) > 4편. [인벤토리 UI 스크립트 작성하기](/docs?postId=946) > **▶ 5편.** [**아이템 스크립트 작성하기**](/docs?postId=947) 지난 시간에 이어 이번 과정에서는 몬스터가 드롭할 아이템 관련 스 [chunk_id] | Guides:947:0
[task] | knowledge_list [title] | 인벤토리 UI 스크립트 작성하기 [category] | Guides [rephrased] | 제시된 문서에 포함된 `UIItemSlot` 스크립트의 핵심 사실은 다음과 같습니다. 1. `UIItemSlot` 스크립트는 `[None]` 동기화 속성으로 `number` 타입의 `ItemIndex`(기본값 0)와 `ItemCount`(기본값 0)를 정의하여 현재 슬롯에 배치된 아이템의 인덱스와 수량을 관리합니다. 2. `SetData(number itemIndex, number itemCount)` 메서드는 인자로 전달된 `itemIndex`와 `itemCount` 값을 각각 `self.ItemIndex`와 `self.It [original] | ## UIItemSlot 스크립트 ```lua Property: [None] number ItemIndex = 0 [None] number ItemCount = 0 Method: void SetData(number itemIndex, number itemCount) { -- 슬롯에 아이템 정보를 설정함 self.ItemIndex = itemIndex self.ItemCount = itemCount local imageEntity = self.Entity:GetChildByName("img_sl [chunk_id] | Guides:946:5
[task] | distill [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | # 몬스터 아이템 드롭 몬스터 사망 시 `UserItemDataSet`에서 무작위로 선택된 아이템을 스폰하는 처리입니다. ## 구현 방법 **Monster** 스크립트의 `Dead()` 함수에 아래 코드를 추가합니다. ```lua -- 몬스터가 UserItemDataSet에서 설정한 아이템을 무작위로 떨어뜨리게 처리 local itemCount = _DataService:GetTable("UserItemDataSet"):GetRowCount() local index = _UtilLogic:RandomIntegerRange(1 [original] | # 몬스터 아이템 드롭 몬스터가 죽을 때 아이템을 드롭하도록 처리합니다. 1. **Monster** 스크립트를 엽니다. 2. `Dead()` 함수의 기존 내용에 이어서 아래 내용을 추가합니다. 이때 **Entry ID** 부분에는 **Model_Item**의 **Entry ID**를 복사 - 붙여 넣기 해야 합니다. **Model_Item**의 콘텍스트 메뉴에서 **Copy Entry ID** 클릭 후 **Entry ID** 부분에 붙여 넣기 합니다. ```lua -- 몬스터가 UserItemDataS [chunk_id] | Guides:947:2
[task] | diverse_qa [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | 질문: 주어진 코드 블록의 실행 공간(execution space)은 무엇인가요? 답변: 코드의 실행 공간은 `[server only]`와 `[self]`입니다. 질문: `HandleTriggerEnterEvent` 함수는 어떤 타입의 이벤트를 처리하나요? 답변: `TriggerEnterEvent` 타입의 이벤트를 처리합니다. 질문: `TriggerBodyEntity` 변수는 어디에서 가져오나요? 답변: 이벤트 파라미터인 `event` 객체의 `TriggerBodyEntity` 프로퍼티에서 가져옵니다. 질문: 충돌한 엔티티의 [original] | ```lua [server only] [self] HandleTriggerEnterEvent(TriggerEnterEvent event) { -- Parameters local TriggerBodyEntity = event.TriggerBodyEntity -------------------------------------------------------- --아이템 엔티티와 충돌한 엔티티의 인벤토리를 받고, 인벤토리가 없으면 리턴 local [chunk_id] | Guides:947:1
[task] | knowledge_list [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | 제공된 문서에 포함된 핵심 사실은 다음과 같습니다. 1. 몬스터가 사망할 때 아이템을 드롭하기 위해 `Monster` 스크립트 컴포넌트의 `Dead()` 함수 내부를 수정해야 합니다. 2. 아이템 데이터의 총 행수를 조회하기 위해 `_DataService:GetTable("UserItemDataSet"):GetRowCount()` 메서드를 호출하며, 반환 타입은 `number`입니다. 3. 드롭할 아이템의 무작위 인덱스를 생성하기 위해 `_UtilLogic:RandomIntegerRange(1, itemCount)` 메서드를 호출 [original] | # 몬스터 아이템 드롭 몬스터가 죽을 때 아이템을 드롭하도록 처리합니다. 1. **Monster** 스크립트를 엽니다. 2. `Dead()` 함수의 기존 내용에 이어서 아래 내용을 추가합니다. 이때 **Entry ID** 부분에는 **Model_Item**의 **Entry ID**를 복사 - 붙여 넣기 해야 합니다. **Model_Item**의 콘텍스트 메뉴에서 **Copy Entry ID** 클릭 후 **Entry ID** 부분에 붙여 넣기 합니다. ```lua -- 몬스터가 UserItemDataS [chunk_id] | Guides:947:2
[task] | extract_knowledge [title] | 인벤토리 UI 스크립트 작성하기 [category] | Guides [rephrased] | # UIItemSlot 스크립트 작성 가이드 ## 1. 개념 설명 `UIItemSlot` 스크립트는 캐릭터가 보유한 개별 아이템을 인벤토리의 특정 슬롯에 표시하기 위한 컴포넌트입니다. 이 컴포넌트는 아이템의 종류(`ItemIndex`)와 수량(`ItemCount`)을 프로퍼티로 관리하며, UI 하위 객체인 아이콘(`img_slot`)과 텍스트(`item_count`)를 제어하여 시각적 상태를 반영합니다. 주요 동작 로직은 다음과 같습니다: * **데이터 설정**: `SetData` 메서드를 통해 아이템 인덱스와 수량을 주입 [original] | # UIItemSlot 수정 캐릭터의 아이템 보유 정보를 토대로 개별 슬롯에 아이템을 보여주기 위해 **UIItemSlot** 스크립트를 수정하겠습니다. 1. **UIItemSlot** 스크립트를 열고 기존의 프로퍼티는 모두 제거합니다. 그리고 아래와 같이 **number** 타입의 **ItemIndex**, **ItemCount** 프로퍼티를 추가합니다. ```lua Property: [None] number ItemIndex = 0 [None] number ItemCount = 0 [chunk_id] | Guides:946:2
[task] | wikipedia [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | # 몬스터 아이템 드롭 몬스터 아이템 드롭 기능은 몬스터가 사망할 때 특정 아이템을 생성하여 떨어뜨리도록 처리하는 로직입니다. 이 기능을 구현하기 위해서는 `Monster` 스크립트 컴포넌트 내의 `Dead()` 함수를 수정해야 합니다. 구현 과정은 다음과 같습니다. 먼저 `Monster` 스크립트를 열어 `Dead()` 함수의 기존 코드 뒤에 아래 코드 블록을 추가합니다. 이 과정에서 코드 내의 `"Entry ID"` 문자열 부분은 실제 아이템 모델의 식별자를 대체해야 합니다. 구체적으로, 씬 뷰에서 **Model_Item** [original] | # 몬스터 아이템 드롭 몬스터가 죽을 때 아이템을 드롭하도록 처리합니다. 1. **Monster** 스크립트를 엽니다. 2. `Dead()` 함수의 기존 내용에 이어서 아래 내용을 추가합니다. 이때 **Entry ID** 부분에는 **Model_Item**의 **Entry ID**를 복사 - 붙여 넣기 해야 합니다. **Model_Item**의 콘텍스트 메뉴에서 **Copy Entry ID** 클릭 후 **Entry ID** 부분에 붙여 넣기 합니다. ```lua -- 몬스터가 UserItemDataS [chunk_id] | Guides:947:2
[task] | diverse_qa [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | 질문: 본 가이드는 '응용 제작 가이드 > 몬스터 사냥과 아이템 획득' 시리즈 중 몇 번째 편에 해당하나요? 답변: 본 가이드는 시리즈의 5편에 해당하며, 제목은 '아이템 스크립트 작성하기'입니다. 질문: 아이템 스크립트에서 처리해야 할 핵심 내용 3가지를 서술하시오. 답변: 몬스터가 드롭할 아이템의 정보 설정, 드롭된 아이템에 캐릭터가 닿았을 때 캐릭터의 인벤토리에 아이템을 넣는 처리, 그리고 아이템이 시각적으로 자연스럽게 드롭되는 모습 연출입니다. 질문: `Model_Item`으로 이름 변경된 엔티티에 추가해야 하는 스크립트 [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > 1편. [몬스터를 스폰해보자](/docs?postId=204) > 2편. [몬스터 드롭 아이템과 인벤토리 UI 만들기](/docs?postId=943) > 3편. [인벤토리 스크립트 작성하기](/docs?postId=942) > 4편. [인벤토리 UI 스크립트 작성하기](/docs?postId=946) > **▶ 5편.** [**아이템 스크립트 작성하기**](/docs?postId=947) 지난 시간에 이어 이번 과정에서는 몬스터가 드롭할 아이템 관련 스 [chunk_id] | Guides:947:0
[task] | wikipedia [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | # 아이템 스크립트 작성하기 본 가이드는 메이플스토리 월드 응용 제작 과정의 다섯 번째 단계로, 몬스터 사냥과 아이템 획득 시나리오에서 몬스터가 드롭하는 아이템의 동작을 구현하는 방법을 다룹니다. 이 과정은 이전 단계에서 몬스터 스폰, 드롭 아이템 및 인벤토리 UI 생성, 인벤토리 스크립트 및 UI 스크립트 작성을 완료한 것을 전제로 합니다. ## 구현 목표 아이템 스크립트 컴포넌트에서는 다음 세 가지 기능을 처리합니다. 첫째, 몬스터가 드롭할 아이템의 정보를 설정합니다. 둘째, 드롭된 아이템에 플레이어가 조작하는 캐릭터가 닿 [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > 1편. [몬스터를 스폰해보자](/docs?postId=204) > 2편. [몬스터 드롭 아이템과 인벤토리 UI 만들기](/docs?postId=943) > 3편. [인벤토리 스크립트 작성하기](/docs?postId=942) > 4편. [인벤토리 UI 스크립트 작성하기](/docs?postId=946) > **▶ 5편.** [**아이템 스크립트 작성하기**](/docs?postId=947) 지난 시간에 이어 이번 과정에서는 몬스터가 드롭할 아이템 관련 스 [chunk_id] | Guides:947:0
[task] | extract_knowledge [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | # 몬스터 사냥과 아이템 획득: 아이템 스크립트 작성하기 ## 개념 설명 메이플스토리 월드에서 몬스터를 처치하거나 특정 조건을 충족했을 때 아이템을 획득하도록 구현하려면, 아이템 엔티티에 트리거(Trigger)를 설정하고 해당 트리거와 충돌하는 플레이어 엔티티를 감지해야 합니다. 감지된 엔티티의 인벤토리에 아이템을 추가하고, 획득이 완료된 아이템 엔티티는 즉시 제거해야 합니다. ## API 사용법 * **HandleTriggerEnterEvent(TriggerEnterEvent event)** * 특정 엔티티가 트 [original] | ```lua [server only] [self] HandleTriggerEnterEvent(TriggerEnterEvent event) { -- Parameters local TriggerBodyEntity = event.TriggerBodyEntity -------------------------------------------------------- --아이템 엔티티와 충돌한 엔티티의 인벤토리를 받고, 인벤토리가 없으면 리턴 local [chunk_id] | Guides:947:1
[task] | extract_knowledge [title] | 인벤토리 UI 스크립트 작성하기 [category] | Guides [rephrased] | # UIItemSlot 스크립트 작성 ## 1. 개념 설명 `UIItemSlot` 컴포넌트는 인벤토리 UI에서 개별 아이템 슬롯을 관리하기 위한 스크립트입니다. 해당 컴포넌트는 특정 슬롯에 표시될 아이템의 인덱스(`ItemIndex`)와 수량(`ItemCount`)을 저장하며, UI의 표시 상태(보여주기/숨기기)와 시각 요소(아이콘 이미지, 수량 텍스트)를 동적으로 업데이트합니다. 또한 사용자가 슬롯을 클릭했을 때 이벤트를 처리하는 로직을 포함합니다. ## 2. API 사용법 ### 2.1 속성 (Property) - `Ite [original] | ## UIItemSlot 스크립트 ```lua Property: [None] number ItemIndex = 0 [None] number ItemCount = 0 Method: void SetData(number itemIndex, number itemCount) { -- 슬롯에 아이템 정보를 설정함 self.ItemIndex = itemIndex self.ItemCount = itemCount local imageEntity = self.Entity:GetChildByName("img_sl [chunk_id] | Guides:946:5
[task] | knowledge_list [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | 제시된 문서의 내용을 바탕으로 핵심 사실을 추출하여 목록으로 정리합니다. 1. `Model_Item` 모델에 `TweenFloatingComponent` 컴포넌트를 추가해야 하며, 해당 컴포넌트의 프로퍼티는 문서에 명시된 특정 값으로 설정해야 합니다. 2. `Item` 스크립트에서 `number` 타입의 프로퍼티 `DropTweenTime`을 추가하고, 동기화 속성으로 `[Sync]`를 지정하며 기본값은 `0.8`입니다. 3. `Item` 스크립트에 `void OnBeginPlay()` 메서드를 추가하며, 실행 공간(Executi [original] | 1. **Model_Item**에 **TweenFloatingComponent**를 추가합니다. 각 프로퍼티는 아래와 같이 설정합니다. 2. **Item** 스크립트를 열고 **number** 타입의 새 프로퍼티 **DropTweenTime**을 추가합니다. ```lua Property: [Sync] number ItemIndex = 0 -- 추가 [Sync] number DropTweenTime = 0.8 ``` 3. `OnBeginP [chunk_id] | Guides:947:3
[task] | extract_knowledge [title] | 인벤토리 UI 스크립트 작성하기 [category] | Guides [rephrased] | # 인벤토리 UI 스크립트 작성: 몬스터 사냥과 아이템 획득 본 절에서는 메이플스토리 월드의 인벤토리 패널을 제어하고, 사용자 데이터 기반의 아이템 슬롯을 동적으로 생성하며, 이벤트 핸들러를 통해 아이템 수량을 동기화하는 방법을 다룹니다. ## 1. 개념 설명 인벤토리 UI 스크립트는 크게 세 가지 역할을 수행합니다. 1. **UI 초기화 및 제어**: 인벤토리 패널의 열림/닫힘을 제어하기 위한 버튼 이벤트 연결 및 기본 상태 설정. 2. **슬롯 동적 생성**: 데이터셋(`UserItemDataSet`)의 행 수만큼 아이 [original] | ```lua Property: [None] Entity itemUI = nil [None] Entity scrollView = nil [None] SyncTable<string, Entity> SlotItems [None] string inventoryBtnPath = "/ui/DefaultGroup/RPGButtons/btn_inventory" Method: [client only] void OnBeginPlay { self.itemUI =_EntityService:GetEntityByPath(self.Entity [chunk_id] | Guides:946:3
[task] | extract_knowledge [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | # 아이템 스크립트 작성 (5편) ## 1. 개념 설명 이 절에서는 몬스터가 드롭하는 아이템의 동작 로직을 구현하는 `Item` 스크립트 컴포넌트를 다룹니다. 주요 기능은 다음과 같습니다. 1. **아이템 정보 설정**: 드롭될 아이템의 고유 식별자(`ItemIndex`)와 시각적 표현(스프라이트)을 초기화합니다. 2. **인벤토리 등록**: 캐릭터가 드롭된 아이템 엔티티와 충돌(Triger)했을 때, 해당 캐릭터의 인벤토리에 아이템을 추가합니다. 3. **엔티티 수명 관리**: 아이템이 획득된 후 엔티티를 파괴하여 시각적으로 사 [original] | # 학습 과정 소개 > 본 가이드는 아래의 순서로 이어지는 과정입니다. > 1편. [몬스터를 스폰해보자](/docs?postId=204) > 2편. [몬스터 드롭 아이템과 인벤토리 UI 만들기](/docs?postId=943) > 3편. [인벤토리 스크립트 작성하기](/docs?postId=942) > 4편. [인벤토리 UI 스크립트 작성하기](/docs?postId=946) > **▶ 5편.** [**아이템 스크립트 작성하기**](/docs?postId=947) 지난 시간에 이어 이번 과정에서는 몬스터가 드롭할 아이템 관련 스 [chunk_id] | Guides:947:0
[task] | distill [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | **Model_Item**에 `TweenFloatingComponent`를 추가하고, **Item** 스크립트에 `[Sync] number DropTweenTime = 0.8` 프로퍼티를 정의합니다. `OnBeginPlay()`는 실행 공간 미지정으로 `IsClient()`에 따라 클라이언트/서버 로직을 분기합니다. ### 1. 클라이언트 연출 (`OnBeginPlayClient`) `_TweenLogic:MoveOffset`을 이용해 아이템이 `jumpHeight`(1.1)만큼 상승 후 하강하는 트윈을 실행합니다. 트윈 종료 [original] | 1. **Model_Item**에 **TweenFloatingComponent**를 추가합니다. 각 프로퍼티는 아래와 같이 설정합니다. 2. **Item** 스크립트를 열고 **number** 타입의 새 프로퍼티 **DropTweenTime**을 추가합니다. ```lua Property: [Sync] number ItemIndex = 0 -- 추가 [Sync] number DropTweenTime = 0.8 ``` 3. `OnBeginP [chunk_id] | Guides:947:3
[task] | diverse_qa [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | 질문: 몬스터가 죽을 때 아이템을 드롭하도록 처리하기 위해 어떤 스크립트의 어떤 함수에 코드를 추가해야 하나요? 답변: Monster 스크립트의 `Dead()` 함수에 코드를 추가해야 합니다. 질문: 아래 코드를 실행할 때 `_DataService:GetTable("UserItemDataSet")` 함수는 어떤 역할을 수행하나요? 답변: `UserItemDataSet` 테이블의 행 수(Row Count)를 가져와서 `itemCount` 변수에 저장하는 역할을 합니다. ```lua local itemCount = _DataServ [original] | # 몬스터 아이템 드롭 몬스터가 죽을 때 아이템을 드롭하도록 처리합니다. 1. **Monster** 스크립트를 엽니다. 2. `Dead()` 함수의 기존 내용에 이어서 아래 내용을 추가합니다. 이때 **Entry ID** 부분에는 **Model_Item**의 **Entry ID**를 복사 - 붙여 넣기 해야 합니다. **Model_Item**의 콘텍스트 메뉴에서 **Copy Entry ID** 클릭 후 **Entry ID** 부분에 붙여 넣기 합니다. ```lua -- 몬스터가 UserItemDataS [chunk_id] | Guides:947:2
[task] | knowledge_list [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | 제시된 원문에 기반하여 추출한 핵심 사실 목록은 다음과 같습니다. 1. `ItemIndex` 속성은 `[Sync]` 동기화 속성이며 기본값은 `0`인 `number` 타입입니다. 2. `DropTweenTime` 속성은 `[Sync]` 동기화 속성이며 기본값은 `0.8`인 `number` 타입입니다. 3. `InitItem` 메서드는 `number` 타입의 `itemIndex` 인자를 받으며, `self.ItemIndex`를 해당 값으로 설정하고 `self.Entity.SpriteRendererComponent`의 `SpriteR [original] | ```lua Property: [Sync] number ItemIndex = 0 [Sync] number DropTweenTime = 0.8 Method: void InitItem(number itemIndex) { self.ItemIndex = itemIndex local sprite = self.Entity.SpriteRendererComponent local itemDataSet = _DataService:GetTable("UserItemDataSet") local ruid = itemDataS [chunk_id] | Guides:947:4
[task] | extract_knowledge [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | # 몬스터 아이템 드롭 처리 ## 1. 개념 설명 몬스터가 사망할 때 특정 아이템을 생성(스폰)하여 드롭하는 로직을 구현하는 과정입니다. 이 로직은 `_DataService`를 통해 등록된 아이템 데이터셋의 행 수를 확인하고, 그 범위 내에서 무작위 인덱스를 추출한 뒤, 해당 인덱스에 맞는 아이템 엔티티를 몬스터의 현재 위치에 생성하는 방식으로 작동합니다. ## 2. API 사용법 * `_DataService:GetTable("UserItemDataSet"):GetRowCount()` * `UserItemDataS [original] | # 몬스터 아이템 드롭 몬스터가 죽을 때 아이템을 드롭하도록 처리합니다. 1. **Monster** 스크립트를 엽니다. 2. `Dead()` 함수의 기존 내용에 이어서 아래 내용을 추가합니다. 이때 **Entry ID** 부분에는 **Model_Item**의 **Entry ID**를 복사 - 붙여 넣기 해야 합니다. **Model_Item**의 콘텍스트 메뉴에서 **Copy Entry ID** 클릭 후 **Entry ID** 부분에 붙여 넣기 합니다. ```lua -- 몬스터가 UserItemDataS [chunk_id] | Guides:947:2
[task] | wikipedia [title] | 인벤토리 UI 스크립트 작성하기 [category] | Guides [rephrased] | # 몬스터 사냥과 아이템 획득 인벤토리 UI 스크립트 작성하기 본 가이드는 메이플스토리 월드(MapleStory Worlds) 환경에서 인벤토리 UI를 구현하고, 아이템 데이터를 관리하며, 사용자 상호작용을 처리하기 위한 mLua 스크립트 작성 방법을 설명한다. 해당 스크립트는 클라이언트 측에서 인벤토리 패널의 표시와 숨김을 제어하고, 데이터셋 기반으로 아이템 슬롯을 초기화하며, 서버에서 전송받은 아이템 개수 정보를 수신하여 UI에 반영하는 기능을 수행한다. ## 프로퍼티 구성 스크립트 컴포넌트는 인벤토리 UI를 구성하는 핵심 [original] | ```lua Property: [None] Entity itemUI = nil [None] Entity scrollView = nil [None] SyncTable<string, Entity> SlotItems [None] string inventoryBtnPath = "/ui/DefaultGroup/RPGButtons/btn_inventory" Method: [client only] void OnBeginPlay { self.itemUI =_EntityService:GetEntityByPath(self.Entity [chunk_id] | Guides:946:3
[task] | diverse_qa [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | 질문: `InitItem` 메서드에서 `sprite.SpriteRUID` 값은 어떤 데이터로부터 가져오나요? 답변: `_DataService:GetTable("UserItemDataSet")` 메서드로 "UserItemDataSet" 테이블을 가져온 후, `self.ItemIndex` 행의 "IconRUID" 항목 값을 가져와서 설정합니다. 질문: `OnBeginPlayClient` 함수에서 엔티티가 위로 점프하는 높이는 얼마인가요? 답변: `jumpHeight` 변수에 할당된 값인 1.1입니다. 질문: `OnBeginPlayS [original] | ```lua Property: [Sync] number ItemIndex = 0 [Sync] number DropTweenTime = 0.8 Method: void InitItem(number itemIndex) { self.ItemIndex = itemIndex local sprite = self.Entity.SpriteRendererComponent local itemDataSet = _DataService:GetTable("UserItemDataSet") local ruid = itemDataS [chunk_id] | Guides:947:4
[task] | distill [title] | 메이플스토리 월드 용어 사전 [category] | Guides [rephrased] | ### 파티클 (Particle) 눈, 비, 먼지 등 다수의 작은 입자를 표현하는 객체입니다. ### 프로파일러 (Profiler) 성능 최적화 작업을 지원하는 도구입니다. ### 프로퍼티 (Property) 컴포넌트의 세부 사항을 설정하는 요소로, 엔티티별로 서로 다른 값을 가질 수 있습니다. ### 프로필 ID (Profile ID) `#`으로 시작하며 계정별로 고유한 식별자입니다. ### 프로필 이름 (Profile Name) 변경 가능하며, 다른 유저와 중복될 수 있는 이름입니다. ### 프리셋 (Preset) ** [original] | ##### 파티클 Particle 눈이나 비, 먼지 같은 다수의 작은 입자 **참고 |** [파티클](/docs/?postId=764) ##### 프로파일러 Profiler 최적화 작업을 손쉽게 진행할 수 있도록 돕는 툴 ##### 프로퍼티 Property 각 컴포넌트의 세부 사항을 설정하는 요소 엔티티별로 다른 값을 가질 수 있음 **참고 |** [프로퍼티](/docs/?postId=205) ##### 프로필 ID Profile ID \#으로 시작하는 ID로 계정 별로 고유함 ##### 프로필 이름 Profile Name [chunk_id] | Guides:949:2
[task] | diverse_qa [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | 질문: Model_Item에 어떤 컴포넌트를 추가해야 하나요? 답변: Model_Item에 TweenFloatingComponent를 추가해야 합니다. 질문: Item 스크립트에 추가하는 DropTweenTime 프로퍼티의 기본값은 얼마인가요? 답변: DropTweenTime 프로퍼티의 기본값은 0.8입니다. 질문: DropTweenTime 프로퍼티의 동기화 속성은 무엇으로 설정되어 있나요? 답변: DropTweenTime 프로퍼티는 [Sync] 속성으로 설정되어 있습니다. 질문: OnBeginPlay() 함수의 실행 공간은 [original] | 1. **Model_Item**에 **TweenFloatingComponent**를 추가합니다. 각 프로퍼티는 아래와 같이 설정합니다. 2. **Item** 스크립트를 열고 **number** 타입의 새 프로퍼티 **DropTweenTime**을 추가합니다. ```lua Property: [Sync] number ItemIndex = 0 -- 추가 [Sync] number DropTweenTime = 0.8 ``` 3. `OnBeginP [chunk_id] | Guides:947:3
[task] | distill [title] | 아이템 스크립트 작성하기 [category] | Guides [rephrased] | # 아이템 스크립트 작성 몬스터 사냥 시 드롭 아이템의 생성, 낙하 연출, 그리고 플레이어와의 트리거 상호작용(아이템 획득)을 처리하는 컴포넌트입니다. ### 핵심 속성 * `ItemIndex` (`[Sync]`, `number`): 획득할 아이템의 인덱스. * `DropTweenTime` (`[Sync]`, `number`): 낙하 애니메이션 총 시간 (기본 0.8). ### 주요 동작 로직 1. **아이템 초기화 (`InitItem`)** * `ItemIndex`를 설정하고, `_DataService` [original] | ```lua Property: [Sync] number ItemIndex = 0 [Sync] number DropTweenTime = 0.8 Method: void InitItem(number itemIndex) { self.ItemIndex = itemIndex local sprite = self.Entity.SpriteRendererComponent local itemDataSet = _DataService:GetTable("UserItemDataSet") local ruid = itemDataS [chunk_id] | Guides:947:4
[task] | wikipedia [title] | 메이플스토리 월드 용어 사전 [category] | Guides [rephrased] | # 메이플스토리 월드 용어 사전 이 섹션은 메이플스토리 월드(MapleStory Worlds) 개발 환경에서 사용되는 주요 용어와 개념을 정의합니다. ## 파티클 (Particle) 눈, 비, 먼지 등 다수의 작은 입자로 구성된 시각 효과 요소를 지칭합니다. 파티클 시스템에 대한 상세한 설명은 [파티클](/docs/?postId=764) 문서를 참조하십시오. ## 프로파일러 (Profiler) 게임 로직 및 리소스의 최적화 작업을 효율적으로 수행할 수 있도록 지원하는 도구를 의미합니다. ## 프로퍼티 (Property) 각 [original] | ##### 파티클 Particle 눈이나 비, 먼지 같은 다수의 작은 입자 **참고 |** [파티클](/docs/?postId=764) ##### 프로파일러 Profiler 최적화 작업을 손쉽게 진행할 수 있도록 돕는 툴 ##### 프로퍼티 Property 각 컴포넌트의 세부 사항을 설정하는 요소 엔티티별로 다른 값을 가질 수 있음 **참고 |** [프로퍼티](/docs/?postId=205) ##### 프로필 ID Profile ID \#으로 시작하는 ID로 계정 별로 고유함 ##### 프로필 이름 Profile Name [chunk_id] | Guides:949:2
[task] | knowledge_list [title] | 메이플스토리 월드 용어 사전 [category] | Guides [rephrased] | 제시된 원문에 포함된 정보만을 바탕으로 핵심 사실을 추출하여 정리한 목록입니다. * **파티클(Particle)**은 눈, 비, 먼지 등 다수의 작은 입자를 표현하는 용어로, 해당 개념에 대한 상세 문서는 `postId=764` 링크를 참조해야 합니다. * **프로파일러(Profiler)**는 최적화 작업을 손쉽게 진행할 수 있도록 돕는 툴입니다. * **프로퍼티(Property)**는 각 컴포넌트의 세부 사항을 설정하는 요소이며, 엔티티별로 서로 다른 값을 가질 수 있고, 상세 문서는 `postId=205` 링크를 참 [original] | ##### 파티클 Particle 눈이나 비, 먼지 같은 다수의 작은 입자 **참고 |** [파티클](/docs/?postId=764) ##### 프로파일러 Profiler 최적화 작업을 손쉽게 진행할 수 있도록 돕는 툴 ##### 프로퍼티 Property 각 컴포넌트의 세부 사항을 설정하는 요소 엔티티별로 다른 값을 가질 수 있음 **참고 |** [프로퍼티](/docs/?postId=205) ##### 프로필 ID Profile ID \#으로 시작하는 ID로 계정 별로 고유함 ##### 프로필 이름 Profile Name [chunk_id] | Guides:949:2
[task] | distill [title] | 메이플스토리 월드 용어 사전 [category] | Guides [rephrased] | # 메이플스토리 월드 용어 사전 (ㄱ~ㅇ) ## ㄱ * **계층 구조 (Hierarchy)**: 월드 현황을 `World`, `common`, `maps`, `ui` 기준으로 계층화하여 엔티티를 관리하는 창. ## ㄴ * **네이티브 API (Native API)**: 크리에이터가 생성할 수 없는, 메이플스토리 월드 엔진 내부에 내장된 API. ## ㄷ * **데이터 에디터 (Data Editor)**: 메이커에서 데이터 셋을 편집하는 도구. * **동기화 (Synchronization)**: 서버와 클라이언트 [original] | # ㄱ ##### 계층 구조 Hierarchy 제작 중인 월드의 현황을 계층 구조로 확인할 수 있는 창 복잡하게 구성한 맵의 엔티티를 체계적으로 관리할 때 사용 **World, common, maps, ui**를 포함함 **참고 |** [Hierarchy](/docs/?postId=453) # ㄴ ##### 네이티브 API Native API 크리에이터는 생성할 수 없는 메이플스토리 월드 엔진 내의 API # ㄷ ##### 데이터 에디터 Data Editor 메이커에서 데이터 셋을 편집할 수 있는 에디터 **참고 |** [chunk_id] | Guides:949:0