← 목록

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

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

[task] | distill [title] | 003_InGame [category] | Guides [rephrased] | ## 02_InstanceRoom 003_InGame ### Property | 동기화 | 타입 | 이름 | 설명 | | :--- | :--- | :--- | :--- | | None | Entity | `resultScreen` | 게임 결과 화면 UI | | None | Entity | `targetGageUI` | 타겟 게이지 표시 UI | | None | Entity | `targetGageBar` | 게이지 바 UI (보라색 부분) | | None | Entity | `interactionUI` | 인터렉션 가능 상태 가 [original] | | 동기화 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | None | Entity | resultScreen | 게임의 결과를 보여주는 화면 UI | | None | Entity | targetGageUI |타겟 게이지를 표시해주는 UI| | None | Entity | targetGageBar | 게이지 바 UI (보라색 부분) | | None | Entity | interactionUI | 인터렉션이 가능한 상태일 때 노출되는 가이드 UI | | None | Entity | ingameTimeT [chunk_id] | Guides:1110:2

[task] | extract_knowledge [title] | 003_InGame [category] | Guides [rephrased] | # 모바일 이모티콘 패널 제어 이벤트 ## 개념 설명 이 절은 모바일 환경에서 이모티콘 패널의 열림과 닫힘을 제어하는 `Event Handler`에 대해 설명합니다. `InstanceRoom 003_InGame` 컴포넌트에는 두 가지 버튼 클릭 이벤트가 정의되어 있으며, 모두 `client only` 실행 제어 하에 동작합니다. 1. **이모티콘 패널 열기**: 모바일 전용 UI의 특정 버튼 클릭 시 패널을 표시합니다. 2. **이모티콘 패널 닫기**: 패널 주변 영역 클릭 시 패널을 숨깁니다. ## API 사용법 이벤트 [original] | #### Event Handler | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | client only | [entity] EBtn(/ui/003_InGameGroup/Mobile_only_UI/EBtn) | ButtonClickEvent | 모바일에서 이모티콘 패널을 열어주는 버튼 클릭 이벤트입니다. | | client only| [entity] ChatAndEmoOffBtn(/ui/003_InGameGroup/ChatAndEmoOffBtn) | ButtonClickEvent [chunk_id] | Guides:1110:3

[task] | knowledge_list [title] | 2. 아이템 데이터 만들기 [category] | Guides [rephrased] | 제시된 문서에 포함된 핵심 사실은 다음과 같습니다. 1. `ItemTableDataSet` 데이터 셋은 Workspace의 MyDesk 경로에서 Create DataSet 메뉴를 선택하여 생성합니다. 2. `ItemTableDataSet`에는 `Id`, `Name`, `IconRUID`, `MaxStackCount`, `Price` 라는 5개의 열이 포함되며, 이 열들을 통해 아이템 데이터를 정의합니다. 3. `ItemInfo` 구조체(StructType)는 Workspace의 MyDesk 경로에서 Create Scripts - [original] | # ItemTableDataSet 만들기 1. **Workspace - MyDesk - Create DataSet**을 선택해 새로운 **ItemTableDataSet** 데이터 셋을 생성합니다. 2. **id, Name, IconRUID, MaxStackCount, Price** 열을 생성하고 행을 추가해 데이터를 입력합니다. | Id | Name | IconRUID | MaxStackCount | Price | | --- | --- | --- | --- | --- | | potion_red | 빨간 포션 | 323920d2 [chunk_id] | Guides:1112:0

[task] | diverse_qa [title] | 1. 인벤토리 UI 만들기 [category] | Guides [rephrased] | 질문: 인벤토리 프리셋을 사용할 때 자동으로 MyDesk에 추가되는 컴포넌트는 무엇인가요? 답변: UIInventory와 UIItemSlot 컴포넌트가 자동으로 추가됩니다. 질문: 인벤토리 프리셋을 배치할 대상은 어디인가요? 답변: Preset List의 UI - 인벤토리를 눌러 ui - DefaultGroup에 배치합니다. 질문: InventoryBtnPath 값이 비어 있으면 어떤 문제가 발생하나요? 답변: 버튼을 눌러도 인벤토리가 열리지 않습니다. 질문: InventoryBtnPath 값을 초기화하여 인벤토리 창이 열리도 [original] | # 인벤토리 추가 인벤토리 프리셋을 활용해 간단하게 인벤토리 UI를 만들 수 있습니다. 프리셋을 사용하면 UIInventory, UIItemSlot 컴포넌트가 자동으로 MyDesk에 추가됩니다. 이번 가이드에서는 두 컴포넌트를 수정해 활용합니다. 1. **Preset List - UI - 인벤토리**를 눌러 **ui - DefaultGroup**에 배치합니다. 2. **Inventory** 엔티티의 **프로퍼티 에디터 - UIInventory 컴포넌트**에 **InventoryBtnPath** 값이 비어 있으면 버튼을 눌러도 [chunk_id] | Guides:1111:0

[task] | knowledge_list [title] | 3. 인벤토리 데이터 저장 및 불러오기 [category] | Guides [rephrased] | * `ItemStack`은 `integer` 타입의 `SlotIndex`, `string` 타입의 `ItemId`, `integer` 타입의 `Count` 프로퍼티를 가지며, `ToTable()` 메서드를 통해 해당 프로퍼티들을 키로 하는 `table`을 반환하고, `FromTable(table data)` 메서드를 통해 전달된 `table`의 `SlotIndex`, `ItemId`, `Count` 값을 각각 자기 자신의 프로퍼티에 대입하여 초기화하는 기능으로 구성된 StructType입니다. * `SimpleInventor [original] | DataStorage에서 불러온 데이터로 인벤토리를 초기화할 수 있도록 컴포넌트를 만들어 봅시다. SimpleInventory 컴포넌트, SimpleInventoryInitializedEvent, ItemStack을 활용해 인벤토리 데이터를 저장하고, 불러올 수 있도록 만들어봅시다. # ItemStack 만들기 1. **Workspace - MyDesk - Create Scripts - Create StructType**을 눌러 **ItemStack**을 생성합니다. 2. **SlotIndex, ItemId, Count** [chunk_id] | Guides:1113:0

[task] | wikipedia [title] | 003_InGame [category] | Guides [rephrased] | # 02_InstanceRoom 003_InGame 본 섹션은 슈피겔만 게임 리메이크 프로젝트에서 인게임(인게임) 상태를 관리하는 `02_InstanceRoom 003_InGame` 컴포넌트의 구조와 동작을 설명합니다. 해당 컴포넌트는 게임 진행 중 필요한 다양한 사용자 인터페이스(UI) 엔티티를 참조하고, 클라이언트 측에서 UI 요소를 갱신하는 메서드들을 제공합니다. ## 속성 (Properties) 컴포넌트는 게임 화면에 표시할 다양한 UI 엔티티를 참조하는 `Entity` 타입의 속성들과, 맵 정보를 저장하는 `SyncT [original] | | 동기화 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | None | Entity | resultScreen | 게임의 결과를 보여주는 화면 UI | | None | Entity | targetGageUI |타겟 게이지를 표시해주는 UI| | None | Entity | targetGageBar | 게이지 바 UI (보라색 부분) | | None | Entity | interactionUI | 인터렉션이 가능한 상태일 때 노출되는 가이드 UI | | None | Entity | ingameTimeT [chunk_id] | Guides:1110:2

[task] | distill [title] | 3. 인벤토리 데이터 저장 및 불러오기 [category] | Guides [rephrased] | # 인벤토리 데이터 저장 및 불러오기 `DataStorage`에서 데이터를 불러와 인벤토리를 초기화하기 위해 `SimpleInventory` 컴포넌트, `SimpleInventoryInitializedEvent`, `ItemStack`을 정의합니다. ## 1. ItemStack (StructType) 인벤토리 슬롯 데이터를 표현하는 구조체입니다. **Property:** ```lua integer SlotIndex = 0 string ItemId = "" integer Count = 0 ``` **Method:** ```l [original] | DataStorage에서 불러온 데이터로 인벤토리를 초기화할 수 있도록 컴포넌트를 만들어 봅시다. SimpleInventory 컴포넌트, SimpleInventoryInitializedEvent, ItemStack을 활용해 인벤토리 데이터를 저장하고, 불러올 수 있도록 만들어봅시다. # ItemStack 만들기 1. **Workspace - MyDesk - Create Scripts - Create StructType**을 눌러 **ItemStack**을 생성합니다. 2. **SlotIndex, ItemId, Count** [chunk_id] | Guides:1113:0

[task] | distill [title] | 2. 아이템 데이터 만들기 [category] | Guides [rephrased] | # ItemTableDataSet 만들기 **Workspace - MyDesk - Create DataSet**에서 `ItemTableDataSet`을 생성합니다. 다음 필드를 포함하는 행을 추가합니다: `id`, `Name`, `IconRUID`, `MaxStackCount`, `Price`. | Id | Name | IconRUID | MaxStackCount | Price | | --- | --- | --- | --- | --- | | potion_red | 빨간 포션 | 323920d2805d4ec1aa85eca9e3e1 [original] | # ItemTableDataSet 만들기 1. **Workspace - MyDesk - Create DataSet**을 선택해 새로운 **ItemTableDataSet** 데이터 셋을 생성합니다. 2. **id, Name, IconRUID, MaxStackCount, Price** 열을 생성하고 행을 추가해 데이터를 입력합니다. | Id | Name | IconRUID | MaxStackCount | Price | | --- | --- | --- | --- | --- | | potion_red | 빨간 포션 | 323920d2 [chunk_id] | Guides:1112:0

[task] | distill [title] | 2. 아이템 데이터 만들기 [category] | Guides [rephrased] | # 아이템 데이터 만들기 `Data` 로직을 생성하여 `ItemTableDataSet` 데이터를 로드하고 인벤토리 아이템 정보를 초기화합니다. ### 1. 프로퍼티 아이템 데이터 저장소와 개수를 정의합니다. ```lua Property: [None] table ItemTable = {} [None] integer ItemTableRowCount = 0 ``` ### 2. 데이터 로드 (`OnBeginPlay`) `_DataService`를 통해 테이블 데이터를 조회하여 `ItemInfo` 객체를 생성하고 `ItemTable` [original] | 1. **Workspace - MyDesk - Create Scripts - Create Logic**을 선택해 새로운 `Data` 로직을 생성합니다. 2. **ItemTable, ItemTableRowCount** 프로퍼티를 추가합니다. ```lua Property: [None] table ItemTable = {} [None] integer ItemTableRowCount = 0 ``` 3. **OnBeginPlay()** 함수를 추가하고, `ItemTableDataSet`의 [chunk_id] | Guides:1112:1

[task] | extract_knowledge [title] | 1. 인벤토리 UI 만들기 [category] | Guides [rephrased] | # 인벤토리 UI 및 버튼 모음 구성 ## 개념 설명 메이플스토리 월드의 `UIInventory`와 `UIItemSlot` 컴포넌트는 인벤토리 시스템을 구현하기 위한 핵심 요소입니다. 이 컴포넌트들은 개별적으로 생성하는 대신, 시스템이 제공하는 '인벤토리 프리셋'을 통해 자동으로 엔티티에 배치됩니다. 또한, 인벤토리 및 상점 UI의 표시/숨김을 제어하는 인터페이스를 위해 '버튼 모음' 프리셋이 사용됩니다. ## API 사용법 * **UIInventory 컴포넌트**: 인벤토리 창을 제어하는 컴포넌트입니다. * ** [original] | # 인벤토리 추가 인벤토리 프리셋을 활용해 간단하게 인벤토리 UI를 만들 수 있습니다. 프리셋을 사용하면 UIInventory, UIItemSlot 컴포넌트가 자동으로 MyDesk에 추가됩니다. 이번 가이드에서는 두 컴포넌트를 수정해 활용합니다. 1. **Preset List - UI - 인벤토리**를 눌러 **ui - DefaultGroup**에 배치합니다. 2. **Inventory** 엔티티의 **프로퍼티 에디터 - UIInventory 컴포넌트**에 **InventoryBtnPath** 값이 비어 있으면 버튼을 눌러도 [chunk_id] | Guides:1111:0

[task] | diverse_qa [title] | 003_InGame [category] | Guides [rephrased] | 질문: `resultScreen` 프로퍼티의 타입과 동기화 상태는 무엇이며, 어떤 용도로 사용됩니까? 답변: `resultScreen`은 `Entity` 타입이며 동기화 상태는 `None`입니다. 이 프로퍼티는 게임의 결과를 보여주는 화면 UI를 참조하기 위해 사용됩니다. 질문: `targetGageBar` 프로퍼티가 담당하는 UI 요소는 무엇입니까? 답변: `targetGageBar`는 게이지 바 UI 중 보라색 부분을 표시하는 데 사용됩니다. 질문: `interactionUI`가 노출되는 조건은 무엇입니까? 답변: `inte [original] | | 동기화 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | None | Entity | resultScreen | 게임의 결과를 보여주는 화면 UI | | None | Entity | targetGageUI |타겟 게이지를 표시해주는 UI| | None | Entity | targetGageBar | 게이지 바 UI (보라색 부분) | | None | Entity | interactionUI | 인터렉션이 가능한 상태일 때 노출되는 가이드 UI | | None | Entity | ingameTimeT [chunk_id] | Guides:1110:2

[task] | knowledge_list [title] | 2. 아이템 데이터 만들기 [category] | Guides [rephrased] | 1. `Workspace - MyDesk - Create Scripts - Create Logic` 경로를 통해 `Data` 로직 컴포넌트를 생성하여 아이템 데이터 관리를 위한 기반을 마련한다. 2. `ItemTable` 프로퍼티는 `[None]` 동기화 속성을 가진 `table` 타입으로 초기값이 빈 테이블 `{}` 이며, 아이템 ID를 키로 하는 아이템 정보 저장소로 사용된다. 3. `ItemTableRowCount` 프로퍼티는 `[None]` 동기화 속성을 가진 `integer` 타입으로 초기값이 `0` 이며, 전체 아이템 개 [original] | 1. **Workspace - MyDesk - Create Scripts - Create Logic**을 선택해 새로운 `Data` 로직을 생성합니다. 2. **ItemTable, ItemTableRowCount** 프로퍼티를 추가합니다. ```lua Property: [None] table ItemTable = {} [None] integer ItemTableRowCount = 0 ``` 3. **OnBeginPlay()** 함수를 추가하고, `ItemTableDataSet`의 [chunk_id] | Guides:1112:1

[task] | wikipedia [title] | 3. 인벤토리 데이터 저장 및 불러오기 [category] | Guides [rephrased] | # 인벤토리 데이터 저장 및 불러오기 본 섹션에서는 `DataStorage`에서 불러온 데이터를 기반으로 인벤토리를 초기화하는 과정을 설명합니다. 이를 위해 `SimpleInventory` 컴포넌트, `SimpleInventoryInitializedEvent` 이벤트, 그리고 `ItemStack` 구조체 타입을 활용하여 인벤토리 데이터의 저장과 복원 로직을 구현합니다. ## ItemStack 구조체 생성 `ItemStack`은 인벤토리의 개별 슬롯에 저장되는 아이템 정보를 나타내는 구조체(StructType)입니다. 1. [original] | DataStorage에서 불러온 데이터로 인벤토리를 초기화할 수 있도록 컴포넌트를 만들어 봅시다. SimpleInventory 컴포넌트, SimpleInventoryInitializedEvent, ItemStack을 활용해 인벤토리 데이터를 저장하고, 불러올 수 있도록 만들어봅시다. # ItemStack 만들기 1. **Workspace - MyDesk - Create Scripts - Create StructType**을 눌러 **ItemStack**을 생성합니다. 2. **SlotIndex, ItemId, Count** [chunk_id] | Guides:1113:0

[task] | diverse_qa [title] | 2. 아이템 데이터 만들기 [category] | Guides [rephrased] | 질문: ItemTableDataSet을 생성하기 위해 Workspace에서 어떤 경로를 따라야 하나요? 답변: Workspace - MyDesk - Create DataSet 경로를 선택해야 합니다. 질문: ItemTableDataSet에 포함해야 하는 필수 열(Cols)의 이름은 무엇인가요? 답변: id, Name, IconRUID, MaxStackCount, Price 열을 생성해야 합니다. 질문: 빨간 포션(potion_red)의 최대 적재 수량(MaxStackCount)은 얼마인가요? 답변: 5입니다. 질문: 화살(ar [original] | # ItemTableDataSet 만들기 1. **Workspace - MyDesk - Create DataSet**을 선택해 새로운 **ItemTableDataSet** 데이터 셋을 생성합니다. 2. **id, Name, IconRUID, MaxStackCount, Price** 열을 생성하고 행을 추가해 데이터를 입력합니다. | Id | Name | IconRUID | MaxStackCount | Price | | --- | --- | --- | --- | --- | | potion_red | 빨간 포션 | 323920d2 [chunk_id] | Guides:1112:0

[task] | wikipedia [title] | 2. 아이템 데이터 만들기 [category] | Guides [rephrased] | # 아이템 데이터 만들기 메이플스토리 월드에서 상점과 인벤토리 시스템을 구현하기 위해서는 먼저 아이템의 기본 속성을 정의하는 데이터 구조를 설정해야 합니다. 이 과정은 데이터셋(DataSet)을 생성하여 아이템 목록을 관리하고, 이를 스크립트에서 참조할 수 있는 구조체(StructType)를 정의하는 두 단계로 구성됩니다. ## ItemTableDataSet 생성 및 데이터 입력 우선 워크스페이스(Workspace)의 'MyDesk' 폴더에서 'Create DataSet'을 선택해 **ItemTableDataSet**이라는 이 [original] | # ItemTableDataSet 만들기 1. **Workspace - MyDesk - Create DataSet**을 선택해 새로운 **ItemTableDataSet** 데이터 셋을 생성합니다. 2. **id, Name, IconRUID, MaxStackCount, Price** 열을 생성하고 행을 추가해 데이터를 입력합니다. | Id | Name | IconRUID | MaxStackCount | Price | | --- | --- | --- | --- | --- | | potion_red | 빨간 포션 | 323920d2 [chunk_id] | Guides:1112:0

[task] | diverse_qa [title] | 3. 인벤토리 데이터 저장 및 불러오기 [category] | Guides [rephrased] | 질문: 문서에서 인벤토리 데이터를 저장하고 불러오기 위해 어떤 세 가지 주체(컴포넌트/이벤트/구조체)를 활용하나요? 답변: SimpleInventory 컴포넌트, SimpleInventoryInitializedEvent, ItemStack을 활용합니다. 질문: ItemStack을 생성할 때 Workspace에서 어떤 경로와 버튼을 눌러야 하나요? 답변: Workspace - MyDesk - Create Scripts - Create StructType 경로를 따라 Create StructType 버튼을 눌러 생성합니다. 질문: [original] | DataStorage에서 불러온 데이터로 인벤토리를 초기화할 수 있도록 컴포넌트를 만들어 봅시다. SimpleInventory 컴포넌트, SimpleInventoryInitializedEvent, ItemStack을 활용해 인벤토리 데이터를 저장하고, 불러올 수 있도록 만들어봅시다. # ItemStack 만들기 1. **Workspace - MyDesk - Create Scripts - Create StructType**을 눌러 **ItemStack**을 생성합니다. 2. **SlotIndex, ItemId, Count** [chunk_id] | Guides:1113:0

[task] | diverse_qa [title] | 2. 아이템 데이터 만들기 [category] | Guides [rephrased] | 질문: 아이템 데이터를 저장하기 위해 생성해야 하는 로직의 이름과 생성 경로는 무엇인가요? 답변: Workspace - MyDesk - Create Scripts - Create Logic 경로를 선택해 `Data` 로직을 생성합니다. 질문: 아이템 테이블과 행 수를 관리하기 위해 추가해야 하는 프로퍼티의 이름과 타입은 무엇인가요? 답변: `ItemTable`은 `table` 타입, `ItemTableRowCount`는 `integer` 타입의 프로퍼티를 추가합니다. 질문: 아래 코드에서 `_DataService` 서비스는 어떤 [original] | 1. **Workspace - MyDesk - Create Scripts - Create Logic**을 선택해 새로운 `Data` 로직을 생성합니다. 2. **ItemTable, ItemTableRowCount** 프로퍼티를 추가합니다. ```lua Property: [None] table ItemTable = {} [None] integer ItemTableRowCount = 0 ``` 3. **OnBeginPlay()** 함수를 추가하고, `ItemTableDataSet`의 [chunk_id] | Guides:1112:1

[task] | knowledge_list [title] | 3. 인벤토리 데이터 저장 및 불러오기 [category] | Guides [rephrased] | 1. `SimpleInventory` 컴포넌트는 **Workspace - MyDesk - Create Scripts - Create Component** 경로에서 생성되며, **DefaultPlayer** 엔티티에 추가되어 사용해야 합니다. 2. `SimpleInventory` 컴포넌트에는 `[None]` 동기화 속성인 `integer Meso = 10000`과 `[None]` 동기화 속성인 `table ItemStacks = {}` 프로퍼티가 선언되어야 합니다. 3. `OnBeginPlay()` 메서드는 `[server only] [original] | 1. **Workspace - MyDesk - Create Scripts - Create Component**에서 새로운 `SimpleInventory` 컴포넌트를 생성합니다. `SimpleInventory` 컴포넌트를 **DefaultPlayer**에 추가합니다. 2. **Meso, ItemStacks** 프로퍼티를 추가합니다. ```lua Property: [None] integer Meso = 10000 [None] table ItemStacks = {} ``` 3 [chunk_id] | Guides:1113:1

[task] | extract_knowledge [title] | 003_InGame [category] | Guides [rephrased] | # InstanceRoom 003_InGame 컴포넌트 ## 1. 개념 설명 `InstanceRoom 003_InGame` 컴포넌트는 슈피겔만 게임 리메이크 프로젝트의 인게임 화면에서 사용되는 사용자 인터페이스(UI) 엔티티 참조와 미니맵 관련 데이터 테이블을 관리하는 역할을 합니다. 이 컴포넌트는 클라이언트 측에서 실행되는 메서드들을 통해 결과 화면, 남은 시간, 타겟 게이지, 팀 정보, 이모티콘, 미니맵 등 다양한 UI 요소를 갱신합니다. ## 2. API 사용법 ### Property (속성) 다음 표는 `Instan [original] | | 동기화 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | None | Entity | resultScreen | 게임의 결과를 보여주는 화면 UI | | None | Entity | targetGageUI |타겟 게이지를 표시해주는 UI| | None | Entity | targetGageBar | 게이지 바 UI (보라색 부분) | | None | Entity | interactionUI | 인터렉션이 가능한 상태일 때 노출되는 가이드 UI | | None | Entity | ingameTimeT [chunk_id] | Guides:1110:2

[task] | extract_knowledge [title] | 2. 아이템 데이터 만들기 [category] | Guides [rephrased] | # 아이템 데이터 구조 정의 및 테이블 데이터셋 구성 본 절에서는 메이플스토리 월드에서 아이템 정보를 관리하기 위한 `ItemTableDataSet`과 `ItemInfo` 구조체의 생성 절차와 프로퍼티 구성을 설명한다. ## 1. 개념 설명 아이템 시스템의 데이터 계층은 두 가지 주요 객체로 구성된다. 1. **ItemTableDataSet**: 아이템의 기본 속성(식별자, 이름, 아이콘, 최대 스택 수, 가격 등)을 행과 열 구조로 저장하는 데이터 테이블이다. 2. **ItemInfo**: 데이터셋에서 조회된 정보를 스크립트 [original] | # ItemTableDataSet 만들기 1. **Workspace - MyDesk - Create DataSet**을 선택해 새로운 **ItemTableDataSet** 데이터 셋을 생성합니다. 2. **id, Name, IconRUID, MaxStackCount, Price** 열을 생성하고 행을 추가해 데이터를 입력합니다. | Id | Name | IconRUID | MaxStackCount | Price | | --- | --- | --- | --- | --- | | potion_red | 빨간 포션 | 323920d2 [chunk_id] | Guides:1112:0

[task] | extract_knowledge [title] | 002_Intro [category] | Guides [rephrased] | # 인트로 맵 시스템 (IntroManager & IntroUI) 본 절에서는 슈피겔만 게임 리메이크 프로젝트의 인트로 맵에서 플레이어 준비 상태 관리, 스폰 처리, 그리고 UI 렌더링을 담당하는 `IntroManager`와 `IntroUI` 컴포넌트의 구조와 API를 설명합니다. ## 1. IntroManager 인트로 맵의 핵심 로직을 처리하는 서버 중심 컴포넌트입니다. 플레이어의 준비 상태(`Ready`, `Idle`)를 추적하고, 제한 시간 내 준비가 완료되면 인게임 맵으로의 이동을 제어합니다. ### 1.1 속성 ( [original] | # IntroManager 인트로 맵의 시스템을 관리하는 컴포넌트입니다. #### Property | 동기화 | Type | 이름 | 설명 | | --- | --- | --- | --- | | None | Component | ingameInfo | common의 InGameInfo 컴포넌트를 가진 변수입니다. | | None | SyncTable<string, string> | playerIntroReadyState | 인트로 맵에서 플레이어의 준비 상태를 확인합니다. key는 플레이어Id, value는 플레이어의 상태를 R [chunk_id] | Guides:1109:0

[task] | wikipedia [title] | 2. 아이템 데이터 만들기 [category] | Guides [rephrased] | **아이템 데이터 만들기** 상점 및 인벤토리 시스템의 아이템 정보를 관리하기 위한 데이터 로직을 생성하고, 외부 데이터셋에서 아이템 정보를 로드하는 과정을 설명합니다. **1. 로직 생성** Workspace의 `MyDesk` 항목에서 `Create Scripts` 메뉴를 열고 `Create Logic`을 선택하여 새로운 `Data` 로직을 생성합니다. **2. 프로퍼티 정의** 생성한 로직에 아이템 정보를 저장할 테이블과 아이템 개수를 추적할 정수형 프로퍼티를 추가합니다. `ItemTable`은 아이템 ID를 키로 하는 테 [original] | 1. **Workspace - MyDesk - Create Scripts - Create Logic**을 선택해 새로운 `Data` 로직을 생성합니다. 2. **ItemTable, ItemTableRowCount** 프로퍼티를 추가합니다. ```lua Property: [None] table ItemTable = {} [None] integer ItemTableRowCount = 0 ``` 3. **OnBeginPlay()** 함수를 추가하고, `ItemTableDataSet`의 [chunk_id] | Guides:1112:1

[task] | distill [title] | 3. 인벤토리 데이터 저장 및 불러오기 [category] | Guides [rephrased] | **[Guides] 응용 제작 가이드 > 상점과 인벤토리 3. 인벤토리 데이터 저장 및 불러오기** `SimpleInventory` 컴포넌트를 생성하여 `DefaultPlayer`에 적용합니다. `Meso`(integer)와 `ItemStacks`(table) 프로퍼티를 정의하며, 서버에서 `DataStorageService`와 `HttpService`를 활용해 데이터 로드 및 직렬화/역직렬화를 처리합니다. ```lua Property: [None] integer Meso = 10000 [None] table ItemStacks [original] | 1. **Workspace - MyDesk - Create Scripts - Create Component**에서 새로운 `SimpleInventory` 컴포넌트를 생성합니다. `SimpleInventory` 컴포넌트를 **DefaultPlayer**에 추가합니다. 2. **Meso, ItemStacks** 프로퍼티를 추가합니다. ```lua Property: [None] integer Meso = 10000 [None] table ItemStacks = {} ``` 3 [chunk_id] | Guides:1113:1

[task] | knowledge_list [title] | 3. 인벤토리 데이터 저장 및 불러오기 [category] | Guides [rephrased] | * 서버 전용 메서드 `SendInitializedEvent()`는 매개변수가 없으며, `SimpleInventoryInitializedEvent` 인스턴스를 생성하여 `Meso`와 `ItemStacks` 속성을 설정한 뒤 `self.Entity:SendEvent(event)`를 통해 클라이언트로 이벤트를 전송합니다. * 클라이언트 메서드 `SendInitializedEventToClient(SimpleInventoryInitializedEvent event)`는 `SimpleInventoryInitializedEvent` [original] | ```lua [server only] void SendInitializedEvent () { local event = SimpleInventoryInitializedEvent() event.Meso = self.Meso event.ItemStacks = self.ItemStacks self.Entity:SendEvent(event) } ``` 7. `SimpleInventory` 컴포넌트에서 `SendInitializedEventToCli [chunk_id] | Guides:1113:2

[task] | knowledge_list [title] | 003_InGame [category] | Guides [rephrased] | 제시된 문서([Guides] 응용 제작 가이드 > 슈피겔만 게임 리메이크 > 02_InstanceRoom 003_InGame)의 내용을 바탕으로 핵심 사실을 추출하여 정리한 목록입니다. 1. `resultScreen`은 동기화 속성이 `[None]`이고 타입이 `Entity`이며, 게임의 결과를 보여주는 화면 UI를 참조하는 프로퍼티입니다. 2. `targetGageUI`은 동기화 속성이 `[None]`이고 타입이 `Entity`이며, 타겟 게이지를 표시해주는 UI를 참조하는 프로퍼티입니다. 3. `targetGageBar`은 동 [original] | | 동기화 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | None | Entity | resultScreen | 게임의 결과를 보여주는 화면 UI | | None | Entity | targetGageUI |타겟 게이지를 표시해주는 UI| | None | Entity | targetGageBar | 게이지 바 UI (보라색 부분) | | None | Entity | interactionUI | 인터렉션이 가능한 상태일 때 노출되는 가이드 UI | | None | Entity | ingameTimeT [chunk_id] | Guides:1110:2

[task] | distill [title] | 3. 인벤토리 데이터 저장 및 불러오기 [category] | Guides [rephrased] | ### 인벤토리 데이터 직렬화 및 자동 저장 인벤토리 데이터를 `DataStorage`에 저장하기 위해 `Serialize()` 메서드를 구현하고, `OnBeginPlay()`에서 주기적 자동 저장을 설정합니다. #### 1. `Serialize()` 메서드 메소(`Meso`)와 아이템 스택(`ItemStacks`)을 테이블로 구성하여 JSON 문자열로 변환합니다. ```lua string Serialize () { local dataTable = {} local itemStacks = {} [original] | 11. 새로운 string 타입의 `Serialize()` 함수를 추가합니다. 메소와 아이템 데이터를 DataStorage에 저장할 수 있도록 아래와 같이 작성합니다. 메소와 아이템을 하나의 테이블에 담고 Json 포맷으로 변환합니다. ```lua string Serialize () { local dataTable = {} local itemStacks = {} dataTable.Meso = self.Meso [chunk_id] | Guides:1113:3

[task] | distill [title] | 3. 인벤토리 데이터 저장 및 불러오기 [category] | Guides [rephrased] | **인벤토리 데이터 저장 및 불러오기 (SimpleInventory)** 서버에서 로드된 데이터를 클라이언트에 동기화하고, 플레이어 퇴장 시 데이터를 저장하는 로직입니다. ### 1. 서버 → 클라이언트 데이터 동기화 `SimpleInventory` 컴포넌트(서버)에서 `SendInitializedEvent()`를 정의하여 현재 `Meso`와 `ItemStacks`를 `SimpleInventoryInitializedEvent`로 포장해 전송합니다. ```lua [server only] void SendInitializedEv [original] | ```lua [server only] void SendInitializedEvent () { local event = SimpleInventoryInitializedEvent() event.Meso = self.Meso event.ItemStacks = self.ItemStacks self.Entity:SendEvent(event) } ``` 7. `SimpleInventory` 컴포넌트에서 `SendInitializedEventToCli [chunk_id] | Guides:1113:2

[task] | knowledge_list [title] | 3. 인벤토리 데이터 저장 및 불러오기 [category] | Guides [rephrased] | 1. `Serialize()` 메서드는 string 타입을 반환하며, 메소(`self.Meso`)와 아이템 스택(`self.ItemStacks`) 데이터를 테이블로 구성한 후 `_HttpService:JSONEncode` 메서드를 사용하여 JSON 문자열로 변환하여 반환합니다. 2. `Serialize()` 메서드 내부에서 각 아이템 스택의 데이터를 추출하기 위해 `self.ItemStacks` 테이블의 각 요소에 대해 `ToTable()` 메서드를 호출하여 스택 데이터를 테이블로 변환합니다. 3. `Serialize()` 메서드에 [original] | 11. 새로운 string 타입의 `Serialize()` 함수를 추가합니다. 메소와 아이템 데이터를 DataStorage에 저장할 수 있도록 아래와 같이 작성합니다. 메소와 아이템을 하나의 테이블에 담고 Json 포맷으로 변환합니다. ```lua string Serialize () { local dataTable = {} local itemStacks = {} dataTable.Meso = self.Meso [chunk_id] | Guides:1113:3

[task] | diverse_qa [title] | 3. 인벤토리 데이터 저장 및 불러오기 [category] | Guides [rephrased] | 질문: 제공된 문서에서 `SendInitializedEvent()` 함수의 주요 역할은 무엇인가요? 답변: 서버에서 `SimpleInventoryInitializedEvent`를 생성하고, 현재 인벤토리의 메소(`Meso`)와 아이템 스택(`ItemStacks`) 데이터를 이벤트에 담아 클라이언트로 전송하는 역할을 합니다. 질문: `SendInitializedEventToClient()` 함수에 선언된 실행 공간 태그는 무엇인가요? 답변: `[client]`입니다. 질문: `SendInitializedEventToClient() [original] | ```lua [server only] void SendInitializedEvent () { local event = SimpleInventoryInitializedEvent() event.Meso = self.Meso event.ItemStacks = self.ItemStacks self.Entity:SendEvent(event) } ``` 7. `SimpleInventory` 컴포넌트에서 `SendInitializedEventToCli [chunk_id] | Guides:1113:2

[task] | diverse_qa [title] | 3. 인벤토리 데이터 저장 및 불러오기 [category] | Guides [rephrased] | 질문: 새로운 인벤토리 컴포넌트를 생성하기 위해 어떤 이름의 컴포넌트를 만들어야 하나요? 답변: `SimpleInventory` 컴포넌트를 생성해야 합니다. 질문: `SimpleInventory` 컴포넌트를 어디에 추가해야 하나요? 답변: `DefaultPlayer`에 추가해야 합니다. 질문: 인벤토리 데이터 저장을 위해 추가하는 프로퍼티의 이름은 무엇이며, 초기값은 어떻게 설정되어 있나요? 답변: 프로퍼티 이름은 `Meso`와 `ItemStacks`이며, `Meso`의 초기값은 10000, `ItemStacks`의 초기값은 빈 [original] | 1. **Workspace - MyDesk - Create Scripts - Create Component**에서 새로운 `SimpleInventory` 컴포넌트를 생성합니다. `SimpleInventory` 컴포넌트를 **DefaultPlayer**에 추가합니다. 2. **Meso, ItemStacks** 프로퍼티를 추가합니다. ```lua Property: [None] integer Meso = 10000 [None] table ItemStacks = {} ``` 3 [chunk_id] | Guides:1113:1

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