[task] | extract_knowledge [title] | 여러 개의 카드 보여주기 [category] | Guides [rephrased] | # 카드 엔티티 생성 및 스프라이트 할당 여러 개의 카드를 생성할 때, 각 카드에 고유한 이름과 특정 스프라이트 리소스를 할당하는 과정은 `_SpawnService`를 통한 엔티티 생성과 컴포넌트 속성 설정을 포함합니다. 이 과정에서는 카드 목록(`cardTable`)을 반복하며 개별 카드 엔티티를 생성하고, 해당 엔티티의 스프라이트 렌더러에 이미지 리소스 ID를 연결합니다. ## API 사용법 ### 1. 카드 엔티티 생성 및 스프라이트 할당 `_SpawnService:SpawnByModelId` 메서드를 사용하여 카드 모델 [original] | ```lua local cardCount = #cardTable for i = 1, cardCount do local spriteRUID = cardTable[i] ``` 6. `CreateCardEntities()` 함수에서 `local card = _SpawnService:SpawnByModelId(cardModelId, "Card", Vector3(0,0,0), self.CardSpawnRoot)`를 찾습니다. `"Card"` 부분을 `"Card " .. tostring(i)`로 변경하며 아 [chunk_id] | Guides:672:1
[task] | knowledge_list [title] | 여러 개의 카드 보여주기 [category] | Guides [rephrased] | 제시된 문서 내용 기반으로 추출한 핵심 사실 목록은 다음과 같습니다. 1. `CardBoard` 컴포넌트의 `CardSpawnRoot` 프로퍼티는 `[None]` 동기화 속성을 가지며, 기본값이 `/ui/CardParirGameUi/UI_Board/UI_Blocks/UI_Block_Group` 경로인 `Entity` 타입입니다. 2. `CardBoard` 컴포넌트의 `SetCards` 메서드는 `[client only]` 실행 공간에서 동작하며, 반환 타입은 `Void`입니다. 3. `SetCards` 메서드는 `_DataServ [original] | # 전체 스크립트 #### CardBoard 컴포넌트 ```lua Property: [None] Entity CardSpawnRoot = /ui/CardParirGameUi/UI_Board/UI_Blocks/UI_Block_Group Method: [client only] Void SetCards() { local deckTable = {} local cardTable = {} local deckCount = _DataService:GetRowCount("CardSet") for [chunk_id] | Guides:672:2
[task] | distill [title] | 여러 개의 카드 보여주기 [category] | Guides [rephrased] | # 카드 짝 맞추기: 여러 개의 카드 보여주기 `CardBoard` 컴포넌트는 데이터 서비스에서 카드 목록을 가져와 무작위 순서로 섞고, `CardSpawnRoot`에 카드 엔티티를 생성합니다. ## CardBoard 컴포넌트 **Property:** ```lua [None] Entity CardSpawnRoot = /ui/CardParirGameUi/UI_Board/UI_Blocks/UI_Block_Group ``` **Methods:** 1. **`SetCards()`** `[client only]` * ` [original] | # 전체 스크립트 #### CardBoard 컴포넌트 ```lua Property: [None] Entity CardSpawnRoot = /ui/CardParirGameUi/UI_Board/UI_Blocks/UI_Block_Group Method: [client only] Void SetCards() { local deckTable = {} local cardTable = {} local deckCount = _DataService:GetRowCount("CardSet") for [chunk_id] | Guides:672:2
[task] | wikipedia [title] | 카드 섞기, 선택하기 [category] | Guides [rephrased] | # 카드 짝 맞추기: 카드 섞기 및 선택 로직 이 섹션은 메이플스토리 월드의 카드 짝 맞추기 게임에서 카드의 상태 변경(켜기/끄기)과 사용자 입력에 따른 카드 선택 및 취소 선택 로직을 다룹니다. 해당 기능은 `Card` 컴포넌트와 `CardPairGameLogic` 컴포넌트로 분리되어 구현됩니다. ## Card 컴포넌트 `Card` 컴포넌트는 개별 카드의 시각적 상태와 클릭 이벤트를 처리합니다. ### 속성 (Property) * `SpriteRUID`: `[None]` 동기화 속성으로, 문자열(`string`) 타입 [original] | ```lua Property: [None] string SpriteRUID = "" Method: void CardOn () { self.Entity.SpriteGUIRendererComponent.Color = Color(81/255,81/255,81/255,1) } void CardOff () { self.Entity.SpriteGUIRendererComponent.Color = Color(255/255,255/255,255/255,1) } Event Handler: [self] HandleButtonClic [chunk_id] | Guides:671:3
[task] | distill [title] | 짝 맞추기 [category] | Guides [rephrased] | # 카드 짝 맞추기 (Pair Matching) 두 장의 카드를 선택하여 모양이 일치하면 소멸시키고, 모든 카드가 소멸 시 새 판을 생성하는 로직입니다. ## 1. Card 컴포넌트 ### 소멸 처리 카드 엔티티를 비활성화(소멸 상태)합니다. ```lua [client only] void SetDestroyed () { self.Entity.Visible = false } ``` ### 짝 확인 다른 카드(`other`)와 스프라이트 ID(`SpriteRUID`)가 같고, 엔티티가 서로 다르면 짝으로 판단합니다. [original] | # 짝 맞추기 카드의 색상을 바꿔보았으니 이번에는 두 개의 카드를 선택하고, 맞으면 사라질 수 있도록 만들어봅시다. 1. **Card 컴포넌트**에서 `SetDestroyed` 함수에 아래와 같이 작성합니다. 카드 엔티티의 Visible 프로퍼티를 false로 바꾸어 비활성화 시킵니다. 이는 파괴된 상태로 사용합니다. ```lua [client only] void SetDestroyed () { self.Entity.Visible = false } ``` 2. 짝이 [chunk_id] | Guides:673:0
[task] | knowledge_list [title] | 짝 맞추기 [category] | Guides [rephrased] | ```lua [client only] void SetDestroyed () { self.Entity.Visible = false } ``` 1. `Card` 컴포넌트의 `SetDestroyed()` 메서드는 `[client only]` 실행 공간에서 동작하며, 매개변수가 없고 반환 타입은 `void`입니다. 2. `SetDestroyed()` 메서드는 현재 엔티티의 `Visible` 프로퍼티를 `false`로 설정하여 카드를 비활성화(파괴 상태)시킵니다. 3. `Card` 컴포넌트의 `IsPairOf(Card other)` [original] | # 짝 맞추기 카드의 색상을 바꿔보았으니 이번에는 두 개의 카드를 선택하고, 맞으면 사라질 수 있도록 만들어봅시다. 1. **Card 컴포넌트**에서 `SetDestroyed` 함수에 아래와 같이 작성합니다. 카드 엔티티의 Visible 프로퍼티를 false로 바꾸어 비활성화 시킵니다. 이는 파괴된 상태로 사용합니다. ```lua [client only] void SetDestroyed () { self.Entity.Visible = false } ``` 2. 짝이 [chunk_id] | Guides:673:0
[task] | extract_knowledge [title] | 카드 섞기, 선택하기 [category] | Guides [rephrased] | # 카드 게임 로직: 셔플, 스폰 및 선택 본 절에서는 카드 짝 맞추기 게임에서 사용되는 카드 덱 생성(셔플), 카드 엔티티 스폰, 그리고 카드 선택/해제 로직을 mLua 언어로 구현하는 방법을 다룹니다. ## 1. 개념 설명 * **카드 셔플링 (Shuffling)**: 데이터 소스(`CardSet`)에서 카드 정보를 읽어온 후, 두 단계의 무작위 순서 변경을 통해 카드 배열을 섞는 과정입니다. 1. 원본 덱(`deckTable`)을 무작위로 섞습니다. 2. 섞인 덱의 절반만큼 복사하여 카드 쌍(`car [original] | ```lua Property: [None] Entity CardSpawnRoot = /ui/CardParirGameUi/UI_Board/UI_Blocks/UI_Block_Group [None] Card SelectedCard = nil Method: [client only] Void SetCards() { local deckTable = {} local cardTable = {} local deckCount = _DataService:GetRowCount("CardSet") [chunk_id] | Guides:671:2
[task] | extract_knowledge [title] | 여러 개의 카드 보여주기 [category] | Guides [rephrased] | # 여러 개의 카드 배치 및 셔플링 ## 1. 개념 설명 메이플스토리 월드에서 카드 짝 맞추기 게임을 구현할 때, 단일 카드를 렌더링하는 것을 넘어 데이터 소스에서 모든 카드 정보를 가져와 무작위로 섞고(Shuffle), 이를 기반으로 카드 엔티티를 배치해야 합니다. 이 과정은 `DataService`를 통해 정의된 데이터셋(CardSet)을 조회하고, Lua의 테이블(Array)을 활용하여 셔플 알고리즘(Fisher-Yates의 단순 변형)을 적용하는 로직으로 구성됩니다. ## 2. API 및 컴포넌트 사용법 ### 2.1 [original] | 하나의 카드를 보여주는 것에 성공했으니, 이제는 모든 카드를 켜줄 차례입니다. 아래 그림과 같이 모든 카드가 나타나게 만들어 봅시다. # 여러 개의 카드 보여주기 하나의 카드가 잘 나타나는 걸 확인했으니 이제는 모든 카드를 모든 카드를 뒤섞어 보여줄 차례입니다. 이 과정에서 다양한 함수와 이전에 완성한 **CardSet** 데이터 셋을 활용합니다. [DataService](/apiReference/Services/DataService)를 참고하세요. 1. **Card** 컴포넌트를 활용해 여러 개의 RUID 값을 가지고 올 수 [chunk_id] | Guides:672:0
[task] | wikipedia [title] | 여러 개의 카드 보여주기 [category] | Guides [rephrased] | # 카드 짝 맞추기: 여러 개의 카드 보여주기 이 섹션은 카드 짝 맞추기 게임에서 카드 묶음 데이터를 로드하고, 무작위로 섞은 후 화면에 카드 엔티티를 생성하여 표시하는 `CardBoard` 컴포넌트와 개별 카드 상태를 관리하는 `Card` 컴포넌트의 구현 방식을 설명합니다. ## CardBoard 컴포넌트 `CardBoard` 컴포넌트는 카드 묶음 데이터를 처리하고 카드 엔티티를 생성하는 로직을 담당합니다. 이 컴포넌트는 클라이언트에서만 실행되며, 두 가지 주요 메서드를 포함합니다. ### 프로퍼티 `CardSpawnRo [original] | # 전체 스크립트 #### CardBoard 컴포넌트 ```lua Property: [None] Entity CardSpawnRoot = /ui/CardParirGameUi/UI_Board/UI_Blocks/UI_Block_Group Method: [client only] Void SetCards() { local deckTable = {} local cardTable = {} local deckCount = _DataService:GetRowCount("CardSet") for [chunk_id] | Guides:672:2
[task] | distill [title] | 짝 맞추기 [category] | Guides [rephrased] | # 카드 짝 맞추기 (Card Pairing) ## 1. Card 컴포넌트 카드의 상태 관리 및 클릭 처리를 담당합니다. ### Property ```lua [None] string SpriteRUID = "" ``` ### Method - `CardOn()`: `SpriteGUIRendererComponent.Color`를 회색(`Color(81/255,81/255,81/255,1)`)으로 설정하여 카드 뒷면 또는 선택된 상태를 나타냅니다. - `CardOff()`: `SpriteGUIRendererComponent.Colo [original] | ```lua Property: [None] string SpriteRUID = "" Method: void CardOn() { self.Entity.SpriteGUIRendererComponent.Color = Color(81/255,81/255,81/255,1) } void CardOff() { self.Entity.SpriteGUIRendererComponent.Color = Color(255/255,255/255,255/255,1) } void SetDestroyed() { self.Entity.Vi [chunk_id] | Guides:673:2
[task] | diverse_qa [title] | 짝 맞추기 [category] | Guides [rephrased] | 질문: `SetCards` 메서드에서 `_DataService:GetRowCount("CardSet")` 함수를 호출하는 목적은 무엇인가요? 답변: "CardSet" 데이터 시트의 행 수를 가져와 카드 덱의 총 개수를 파악하기 위함입니다. 질문: `SetCards` 메서드 내에서 `deckTable`에 데이터를 삽입한 후 수행되는 두 번째 for 루프의 역할은 무엇인가요? 답변: `deckTable`의 순서를 무작위로 섞어 카드의 배열을 랜덤화하는 역할을 합니다. 질문: `SetCards` 메서드에서 `cardTable`에 `d [original] | ```lua Property: [None] Entity CardSpawnRoot = /ui/CardPairGameUI/UI_Board/UI_Blocks/UI_Block_Group [None] Card SelectedCard = nil Method: void SetCards () { local deckTable = {} local cardTable = {} local deckCount = _DataService:GetRowCount("CardSet") for i = 1, deckCoun [chunk_id] | Guides:673:1
[task] | diverse_qa [title] | 여러 개의 카드 보여주기 [category] | Guides [rephrased] | 질문: `CardBoard` 컴포넌트의 `SetCards` 메서드는 어떤 실행 공간에서 작동하나요? 답변: `SetCards` 메서드는 `[client only]` 실행 공간에서 작동합니다. 질문: `CardBoard` 컴포넌트에서 카드의 스프라이트 ID 목록을 저장하기 위해 어떤 데이터 소스를 사용하나요? 답변: `_DataService` 서비스를 사용하여 "CardSet" 시트의 행 수와 셀 데이터를 조회합니다. 질문: `SetCards` 함수 내에서 `deckTable` 배열을 생성할 때, `_DataService:GetC [original] | # 전체 스크립트 #### CardBoard 컴포넌트 ```lua Property: [None] Entity CardSpawnRoot = /ui/CardParirGameUi/UI_Board/UI_Blocks/UI_Block_Group Method: [client only] Void SetCards() { local deckTable = {} local cardTable = {} local deckCount = _DataService:GetRowCount("CardSet") for [chunk_id] | Guides:672:2
[task] | diverse_qa [title] | 짝 맞추기 [category] | Guides [rephrased] | 질문: `Card` 컴포넌트의 `SetDestroyed` 함수는 어떤 실행 공간에서 정의되며, 무엇을 수행하나요? 답변: `[client only]` 실행 공간에서 정의되며, 카드 엔티티의 `Visible` 프로퍼티를 `false`로 변경하여 카드를 비활성화(파괴된 상태)로 만듭니다. 질문: `Card` 컴포넌트의 `IsPairOf()` 함수가 두 카드가 짝이 된다고 판단하는 조건은 무엇인가요? 답변: 두 카드의 `SpriteRUID`가 동일하고, 두 카드의 `Entity` 객체가 서로 다른 경우입니다. 질문: `CardPair [original] | # 짝 맞추기 카드의 색상을 바꿔보았으니 이번에는 두 개의 카드를 선택하고, 맞으면 사라질 수 있도록 만들어봅시다. 1. **Card 컴포넌트**에서 `SetDestroyed` 함수에 아래와 같이 작성합니다. 카드 엔티티의 Visible 프로퍼티를 false로 바꾸어 비활성화 시킵니다. 이는 파괴된 상태로 사용합니다. ```lua [client only] void SetDestroyed () { self.Entity.Visible = false } ``` 2. 짝이 [chunk_id] | Guides:673:0
[task] | extract_knowledge [title] | 카드 섞기, 선택하기 [category] | Guides [rephrased] | # 카드 짝 맞추기: 카드 상태 관리 및 선택 로직 본 절에서는 메이플스토리 월드의 `mLua` 스크립트 언어를 사용하여 카드 게임의 기본 요소인 카드의 시각적 상태 변경(켜기/끄기)과 사용자 입력 처리(클릭 시 선택/해제) 로직을 구현하는 방법을 다룹니다. ## 1. 개념 설명 카드 짝 맞추기 게임에서 각 카드는 독립적인 컴포넌트를 가지며, 다음과 같은 두 가지 핵심 행동을 수행해야 합니다. 1. **시각적 상태 변경**: 카드가 선택되었을 때와 그렇지 않았을 때를 구분하기 위해 스프라이트의 색상(`Color`)을 변경합니다 [original] | ```lua Property: [None] string SpriteRUID = "" Method: void CardOn () { self.Entity.SpriteGUIRendererComponent.Color = Color(81/255,81/255,81/255,1) } void CardOff () { self.Entity.SpriteGUIRendererComponent.Color = Color(255/255,255/255,255/255,1) } Event Handler: [self] HandleButtonClic [chunk_id] | Guides:671:3
[task] | distill [title] | 뒤통수를 덮는 모자 [category] | Guides [rephrased] | # 뒤통수를 덮는 모자(Avatar_Cap_B) 제작 가이드 ## 사전 준비 및 권장 사양 * **필요 도구**: Adobe Photoshop * **소스 파일**: `Avatar_Cap_B.psd` (아래 링크에서 다운로드) > [Avatar_Cap_B.psd 다운로드](https://mod-file.dn.nexoncdn.co.kr/storage/Avatar_psd/version4_230221/Avatar_Cap_B.psd) * **크기 권장**: 아바타 발 기준 최대 **120x120** 픽셀 이내 ## 제 [original] | # 학습 과정 소개 뒤통수를 덮는 모자의 제작 시트를 소개합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Cap_B.psd","url":"https://mod-file.dn.nexoncdn.co.kr/sto [chunk_id] | Guides:677:0
[task] | knowledge_list [title] | 짝 맞추기 [category] | Guides [rephrased] | 제공된 문서 내용을 바탕으로 핵심 사실을 정리한 목록입니다. **주의:** 원문에 존재하는 코드 오류(예: `deckTable[i]))`의 괄호 불일치, `self.selected card`의 띄어쓰기 오류)는 문서에 명시된 대로 그대로 반영하거나, 문맥상 의도를 파악하여 API 명칭만 정확히 추출했습니다. 1. 컴포넌트에는 `[None]` 동기화 속성을 가진 `Entity` 타입의 `CardSpawnRoot` 프로퍼티가 있으며, 기본값은 `/ui/CardPairGameUI/UI_Board/UI_Blocks/UI_Block_G [original] | ```lua Property: [None] Entity CardSpawnRoot = /ui/CardPairGameUI/UI_Board/UI_Blocks/UI_Block_Group [None] Card SelectedCard = nil Method: void SetCards () { local deckTable = {} local cardTable = {} local deckCount = _DataService:GetRowCount("CardSet") for i = 1, deckCoun [chunk_id] | Guides:673:1
[task] | knowledge_list [title] | 뒤통수를 덮는 모자 [category] | Guides [rephrased] | - 아바타 모자 제작 시 Adobe Photoshop을 사용하여 `Avatar_Cap_B.psd` 파일을 열고, 아바타 발을 기준으로 최대 120x120 픽셀 범위 내에서 이미지를 제작할 것을 권장합니다. - 모자 제작 시트는 회색, 빨간색, 노란색 레이어로 구성되며, 회색 레이어는 수정이 불가능하도록 잠겨져 있고 모든 레이어의 이름 변경 또는 삭제 시 아이템 제작이 불가능해지므로 절대 변경하지 않아야 합니다. - 회색 레이어의 `data` 폴더는 아이템 데이터화용으로만 사용되며 이미지 제작에는 영향을 주지 않는 것으로, `data [original] | # 학습 과정 소개 뒤통수를 덮는 모자의 제작 시트를 소개합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Cap_B.psd","url":"https://mod-file.dn.nexoncdn.co.kr/sto [chunk_id] | Guides:677:0
[task] | wikipedia [title] | 짝 맞추기 [category] | Guides [rephrased] | # 짝 맞추기 본 가이드는 메이플스토리 월드(MapleStory Worlds)의 mLua 스크립트 언어를 사용하여 카드 게임의 '짝 맞추기' 로직을 구현하는 방법을 설명합니다. 이 단계에서는 이미 색상 변경 기능이 구현된 카드 두 개를 선택했을 때, 해당 카드가 동일한 모양을 가지고 있는지 확인하고, 동일할 경우 카드를 비활성화(파괴)시키며 점수를 획득하는 기능을 추가합니다. 또한 모든 카드가 매칭된 후 새로운 카드판이 자동으로 생성되도록 하는 로직도 포함됩니다. ## 1. 카드 파괴 및 매칭 판별 로직 구현 먼저 **Card [original] | # 짝 맞추기 카드의 색상을 바꿔보았으니 이번에는 두 개의 카드를 선택하고, 맞으면 사라질 수 있도록 만들어봅시다. 1. **Card 컴포넌트**에서 `SetDestroyed` 함수에 아래와 같이 작성합니다. 카드 엔티티의 Visible 프로퍼티를 false로 바꾸어 비활성화 시킵니다. 이는 파괴된 상태로 사용합니다. ```lua [client only] void SetDestroyed () { self.Entity.Visible = false } ``` 2. 짝이 [chunk_id] | Guides:673:0
[task] | diverse_qa [title] | 뒤통수를 덮는 모자 [category] | Guides [rephrased] | 질문: 뒤통수를 덮는 모자를 제작할 때 권장되는 최대 해상도 크기는 얼마이며, 기준은 무엇인가요? 답변: 아바타 발을 기준으로 최대 120x120 픽셀 안에서 제작하는 것이 권장됩니다. 질문: 모자 제작 시트에서 노란색 레이어의 역할은 무엇인가요? 답변: 노란색 레이어는 크리에이터가 실제 아이템(모자)을 그릴 수 있는 곳입니다. 질문: 빨간색 레이어인 `data:vslot:CpH1H4`의 기능은 무엇인가요? 답변: 머리카락과 모자가 겹칠 경우 보이는 우선순위를 결정하는 역할을 합니다. 질문: `data:use_zmap_pres [original] | # 학습 과정 소개 뒤통수를 덮는 모자의 제작 시트를 소개합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Cap_B.psd","url":"https://mod-file.dn.nexoncdn.co.kr/sto [chunk_id] | Guides:677:0
[task] | diverse_qa [title] | 짝 맞추기 [category] | Guides [rephrased] | 질문: `Card` 스크립트의 `SpriteRUID` 속성은 어떤 타입이며 기본값은 무엇인가요? 답변: `SpriteRUID` 속성은 `string` 타입이며 기본값은 빈 문자열 `""` 입니다. 질문: `CardOn` 메서드는 카드의 색상을 어떻게 변경하나요? 답변: `CardOn` 메서드는 `self.Entity.SpriteGUIRendererComponent.Color` 를 `Color(81/255, 81/255, 81/255, 1)` 로 설정하여 카드를 어둡게(선택된 상태처럼) 변경합니다. 질문: `CardOff` 메서드 [original] | ```lua Property: [None] string SpriteRUID = "" Method: void CardOn() { self.Entity.SpriteGUIRendererComponent.Color = Color(81/255,81/255,81/255,1) } void CardOff() { self.Entity.SpriteGUIRendererComponent.Color = Color(255/255,255/255,255/255,1) } void SetDestroyed() { self.Entity.Vi [chunk_id] | Guides:673:2
[task] | extract_knowledge [title] | 여러 개의 카드 보여주기 [category] | Guides [rephrased] | # 카드 짝 맞추기: 여러 개의 카드 보여주기 ## 1. 개념 설명 이 절에서는 데이터베이스에 저장된 카드 이미지 정보(`SpriteRUID`)를 읽어와 랜덤 순서로 정렬하고, 이를 기반으로 UI 영역에 카드 엔티티를 생성하는 과정을 다룹니다. 주요 컴포넌트는 다음과 같습니다. * **CardBoard**: 카드 묶음의 데이터 처리(랜덤 셔플) 및 카드 엔티티 스폰을 담당하는 클라이언트 전용 컴포넌트입니다. * **Card**: 개별 카드 엔티티에 부착되며, 해당 카드에 표시될 이미지 리소스 ID(`SpriteRUID` [original] | # 전체 스크립트 #### CardBoard 컴포넌트 ```lua Property: [None] Entity CardSpawnRoot = /ui/CardParirGameUi/UI_Board/UI_Blocks/UI_Block_Group Method: [client only] Void SetCards() { local deckTable = {} local cardTable = {} local deckCount = _DataService:GetRowCount("CardSet") for [chunk_id] | Guides:672:2
[task] | wikipedia [title] | 뒤통수를 덮는 모자 [category] | Guides [rephrased] | # 뒤통수를 덮는 모자 (Avatar_Cap_B) 제작 가이드 본 문서는 메이플스토리 월드에서 '뒤통수를 덮는 모자'라는 유형의 아바타 아이템을 제작하기 위한 시트 구조와 작업 방법을 설명합니다. 본 가이드를 시작하기 전에는 [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고하여 아바타 시스템의 기초를 숙지하는 것이 권장됩니다. ## 사전 준비 아이템 시트의 편집을 위해 Adobe Photoshop 소프트웨어가 필수적으로 요구됩니다. 해당 프로그램에 [original] | # 학습 과정 소개 뒤통수를 덮는 모자의 제작 시트를 소개합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Cap_B.psd","url":"https://mod-file.dn.nexoncdn.co.kr/sto [chunk_id] | Guides:677:0
[task] | distill [title] | 액세서리 [category] | Guides [rephrased] | # 모자 액세서리 제작 가이드 아바타 기본 개념을 숙지한 후, Adobe Photoshop에서 제공되는 PSD 파일을 엽니다. * **파일**: `Avatar_Cap_C1.psd` (헤어 앞), `Avatar_Cap_C2.psd` (헤어 뒤) * **크기 권장**: 발 기준 최대 120x120px ## 레이어 구성 및 규칙 | 색상 | 용도 | 주요 레이어/폴더 | | :--- | :--- | :--- | | **회색** | 데이터/가이드 (잠김, 수정 불가) | `data` 폴더, `guide_*` 샘플 | | **노 [original] | # 학습 과정 소개 액세서리 제작 시트를 소개합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Cap_C1.psd","url":"https://mod-file.dn.nexoncdn.co.kr/storage/A [chunk_id] | Guides:678:0
[task] | distill [title] | 짝 맞추기 [category] | Guides [rephrased] | **카드 짝 맞추기 (Card Pairing) 구현 가이드** **1. 프로퍼티** * `CardSpawnRoot`: 카드가 생성될 UI 루트 엔티티 경로. * `SelectedCard`: 현재 선택된 카드 엔티티 (기본값 `nil`). **2. 주요 메서드** * **`SetCards()`**: 카드 덱 생성 및 배치 로직. 1. `_DataService:GetRowCount("CardSet")`으로 카드 종류 수(`deckCount`) 조회. 2. `_DataService:GetCell("Car [original] | ```lua Property: [None] Entity CardSpawnRoot = /ui/CardPairGameUI/UI_Board/UI_Blocks/UI_Block_Group [None] Card SelectedCard = nil Method: void SetCards () { local deckTable = {} local cardTable = {} local deckCount = _DataService:GetRowCount("CardSet") for i = 1, deckCoun [chunk_id] | Guides:673:1
[task] | extract_knowledge [title] | 짝 맞추기 [category] | Guides [rephrased] | # 카드 짝 맞추기 로직 구현 ## 1. 개념 설명 카드 짝 맞추기 게임의 핵심 로직은 선택된 두 카드를 비교하여 동일한 이미지(`SpriteRUID`)를 가지는지 확인하는 것입니다. 두 카드가 동일한 경우, 해당 카드들은 게임 보드에서 제거(비활성화)되어야 하며, 모든 카드가 제거되면 새로운 카드판으로 초기화되어야 합니다. 이 과정은 `Card` 컴포넌트에서 개별 카드의 상태 관리(파괴, 짝 확인)를 담당하고, `CardBoard` 컴포넌트에서 카드판 전체의 상태(비어있음 확인, 카드 초기화)를 관리하며, `CardPairG [original] | # 짝 맞추기 카드의 색상을 바꿔보았으니 이번에는 두 개의 카드를 선택하고, 맞으면 사라질 수 있도록 만들어봅시다. 1. **Card 컴포넌트**에서 `SetDestroyed` 함수에 아래와 같이 작성합니다. 카드 엔티티의 Visible 프로퍼티를 false로 바꾸어 비활성화 시킵니다. 이는 파괴된 상태로 사용합니다. ```lua [client only] void SetDestroyed () { self.Entity.Visible = false } ``` 2. 짝이 [chunk_id] | Guides:673:0
[task] | knowledge_list [title] | 액세서리 [category] | Guides [rephrased] | 제시된 문서에는 mLua 스크립트 코드, API 함수, 매개변수, 반환 타입, 또는 서버/클라이언트 실행 공간 제약에 대한 기술적 정보가 포함되어 있지 않습니다. 해당 문서는 Adobe Photoshop을 활용한 아바타 모자 아이템의 시각적 제작 가이드(레이어 구조, 파일명, 권장 크기)만을 다루고 있습니다. 따라서 요청하신 "API 이름·매개변수·반환 타입·동기화/서버·클라이언트 제약"을 명시하는 조건을 충족할 수 있는 mLua 기술적 사실은 원문에 존재하지 않습니다. 원문에 명시된 **비-스크립트(시각적 제작) 관련 핵심 사 [original] | # 학습 과정 소개 액세서리 제작 시트를 소개합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Cap_C1.psd","url":"https://mod-file.dn.nexoncdn.co.kr/storage/A [chunk_id] | Guides:678:0
[task] | diverse_qa [title] | 액세서리 [category] | Guides [rephrased] | 질문: 모자 아이템 제작을 위해 사전에 설치해야 하는 소프트웨어는 무엇인가요? 답변: Adobe Photoshop이 필요합니다. 질문: 모자 아이템 제작 시 권장되는 최대 해상도 범위는 무엇이며 기준점은 어디인가요? 답변: 아바타 발을 기준으로 최대 120x120 안에서 제작을 권장합니다. 질문: 모자 제작 시트에서 노란색 레이어의 역할은 무엇인가요? 답변: 크리에이터가 실제 아이템을 그릴 수 있는 곳입니다. 질문: 모자 제작 시트에서 빨간색 레이어는 어떤 역할을 하나요? 답변: 모자와 헤어의 우선순위를 결정하는 역할을 합니다 [original] | # 학습 과정 소개 액세서리 제작 시트를 소개합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Cap_C1.psd","url":"https://mod-file.dn.nexoncdn.co.kr/storage/A [chunk_id] | Guides:678:0
[task] | knowledge_list [title] | 짝 맞추기 [category] | Guides [rephrased] | 제공된 문서 내의 정보만 바탕으로 추출한 핵심 사실 목록입니다. **Card 컴포넌트 관련** 1. `Card` 컴포넌트의 `SpriteRUID` 프로퍼티는 `[None]` 동기화 속성을 가지며 기본값이 빈 문자열(`""`)인 `string` 타입입니다. 2. `Card` 컴포넌트의 `CardOn` 메서드는 실행 공간 제약이 없으며, `self.Entity.SpriteGUIRendererComponent.Color`를 `Color(81/255,81/255,81/255,1)`로 설정합니다. 3. `Card` 컴포넌트의 `CardOf [original] | ```lua Property: [None] string SpriteRUID = "" Method: void CardOn() { self.Entity.SpriteGUIRendererComponent.Color = Color(81/255,81/255,81/255,1) } void CardOff() { self.Entity.SpriteGUIRendererComponent.Color = Color(255/255,255/255,255/255,1) } void SetDestroyed() { self.Entity.Vi [chunk_id] | Guides:673:2
[task] | distill [title] | 가발 [category] | Guides [rephrased] | # 모자(가발) 제작 가이드 ## 사전 준비 * **필수 도구**: Adobe Photoshop * **소스 파일**: `Avatar_Cap_D.psd` 제공 * **크기 권장**: 아바타 발 기준 최대 **120x120** 픽셀 ## 시트 구조 및 규칙 레이어는 용도별 색상으로 구분됩니다. **모든 레이어 이름 변경/삭제는 금지**하며, 수정 시 아이템 제작이 불가합니다. | 레이어 색상 | 용도 | 상태 | | :--- | :--- | :--- | | **회색** | 데이터화 및 가이드용 | 잠김 (수정 불필요) [original] | # 학습 과정 소개 가발 제작 시트를 소개합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Cap_D.psd","url":"https://mod-file.dn.nexoncdn.co.kr/storage/Avat [chunk_id] | Guides:679:0
[task] | diverse_qa [title] | 가발 [category] | Guides [rephrased] | 질문: 가발 제작을 위해 반드시 설치해야 하는 소프트웨어는 무엇인가요? 답변: Adobe Photoshop입니다. 질문: 모자 제작 시 권장되는 최대 해상도 범위는 어떻게 되나요? 답변: 아바타 발을 기준으로 최대 120x120 안에서 제작을 권장합니다. 질문: 모자 제작 시트는 어떤 색상의 레이어로 구분되어 있나요? 답변: 회색, 빨간색, 노란색 레이어로 구분되어 있습니다. 질문: 회색 레이어는 어떤 상태이며, 작업 중에 수정이 필요한가요? 답변: 회색 레이어는 모두 잠겨있고, 작업 중에 수정은 필요하지 않습니다. 질문: [original] | # 학습 과정 소개 가발 제작 시트를 소개합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Cap_D.psd","url":"https://mod-file.dn.nexoncdn.co.kr/storage/Avat [chunk_id] | Guides:679:0