← 목록

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

총 8,200개 · 페이지 1/274
🔀 랜덤 처음으로
불러오는 중…

[task] | knowledge_list [title] | ParallelNode [category] | Misc [rephrased] | ParallelNode는 모든 자식 노드를 동시에 실행하는 동작을 수행합니다. ParallelNode는 CompositeNode에서 상속받아 `int32` 타입의 읽기 전용(ReadOnly) 프로퍼티 `ChildCount`를 가지며, 이는 현재 연결된 자식 노드의 개수를 나타냅니다. ParallelNode는 BTNode에서 상속받아 `boolean` 타입의 프로퍼티 `ExclusiveExecutionWhenRunning`을 가지지만, 이 프로퍼티는 비추천(Deprecated)되어 더 이상 사용하지 않습니다. ParallelNode는 [original] | 모든 자식 노드를 동시에 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **string Name** 이 [chunk_id] | Misc:456:0

[task] | extract_knowledge [title] | 스크린샷과 동적 스프라이트 [category] | Guides [rephrased] | # 스크린샷 및 동적 스프라이트 업로드 설정 ## 1. 개념 설명 메이플스토리 월드에서 특정 키 입력 시 스크린샷을 촬영하여 월드 내 특정 위치에 표시하는 기능은 엔티티 계층 구조와 자원 서비스(Resource Service)의 검증 콜백을 통해 구현됩니다. 이 기능은 두 가지 주요 엔티티로 구성됩니다. 1. **Frame**: 스크린샷을 감싸는 프레임 역할을 하는 엔티티. 정적인 스프라이트(`SpriteRendererComponent`)를 보유합니다. 2. **Canvas**: 실제 스크린샷(동적 스프라이트)이 렌더링되는 위치 [original] | 특정 키를 눌러 스크린샷을 찍은 뒤 월드의 특정 위치에 보이도록 하는 예제를 살펴봅시다. 1. **Hierarchy - Create Entity - Create Empty**를 클릭해 **EmptyEntity**를 생성합니다. **EmptyEntity**의 이름을 **Frame**으로 지정합니다. 2. **Frame** 엔티티의 프로퍼티 에디터에서 **TransformComponent, SpriteRendererComponent**를 추가합니다. 3. **Frame** 엔티티의 프로퍼티 [chunk_id] | Guides:829:1

[task] | wikipedia [title] | 어노테이션 활용하기 [category] | Guides [rephrased] | # 스크립트 어노테이션 활용하기 메이플스토리 월드의 스크립트 언어 mLua(Lua)에서는 **Param Annotation**과 **Return Annotation**이라는 주석 기반 어노테이션을 사용하여 함수의 매개 변수와 반환 값의 타입을 명시적으로 지정할 수 있습니다. 이 어노테이션들은 코드 실행 시점에 영향을 주지 않으며, 개발 환경의 스크립트 어시스트(IDE 또는 에디터 플러그인)가 정적 타입 추론을 수행하고 개발자에게 더 정확한 자동 완성 및 오류 감지 기능을 제공하도록 돕는 역할을 합니다. ## Param Annot [original] | **Param Annotation**을 사용해 대상이 되는 함수의 매개 변수 타입을 지정하여 스크립트 어시스트의 도움을 받을 수 있습니다. **Param Annotation**은 함수 정의문에 사용합니다. 아래와 같은 문법으로 **Param Annotation**을 사용합니다. ```lua ---@param param_name PARAM_TYPE ``` ##### 사용 예시 ```lua ---@param testParamA Entity local function TestFunction(testParamA) end ``` ``` [chunk_id] | Guides:824:2

[task] | diverse_qa [title] | 특정 월드 인스턴스로 워프하기 [category] | Guides [rephrased] | 질문: `WorldInstanceService`와 `TeleportService`를 함께 사용하면 어떤 기능이 가능합니까? 답변: 현재 월드 인스턴스 Id와 생성된 다른 월드 인스턴스들의 상태를 알 수 있으며, 플레이어를 특정 월드 인스턴스로 워프시킬 수 있습니다. 질문: `WorldInstanceId`는 언제 발급되는 값입니까? 답변: 월드 인스턴스가 생성될 때 발급되는 고유한 값입니다. 질문: 월드 인스턴스 30개가 생성되면 몇 개의 `WorldInstanceId`가 생성됩니까? 답변: 30개의 `WorldInstanceId [original] | # 학습 과정 소개 `WorldInstanceService`를 활용해 현재 월드 인스턴스Id와 생성된 다른 월드 인스턴스들의 상태를 알 수 있습니다. 또한 `TeleportService`를 활용해 플레이어를 특정 월드 인스턴스로 워프시킬 수 있습니다. ##### 참고 가이드 [월드 인스턴스](/docs/?postId=984) [월드 인스턴스 통신](d/ocs/?postId=999) [월드 워프하기](/docs/?postId=743) ##### 참고 APIReference [TeleportService](/apiReference? [chunk_id] | Guides:1122:0

[task] | distill [title] | OrderInLayerChangedEvent [category] | Events [rephrased] | # OrderInLayerChangedEvent Server, Client 양쪽에서 발생하는 이벤트입니다. ## 대상 컴포넌트 * `WebViewComponent` * `YoutubePlayerGUIComponent` * `YoutubePlayerWorldComponent` [original] | t="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * WebViewComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * YoutubePlayerGUIComponent <img src="https://img.shields. [chunk_id] | Events:409:2

[task] | wikipedia [title] | LocalizationService [category] | Services [rephrased] | # LocalizationService **LocalizationService**는 메이플스토리 월드(mLua) 스크립트에서 텍스트 번역 및 다국어 처리와 관련된 기능을 제공하는 서비스입니다. 이 서비스는 클라이언트에서만 접근할 수 있는 메서드들을 통해 번역된 텍스트를 조회하고, 형식화된 문자열을 생성하는 역할을 수행합니다. ## 속성 (Properties) LocalizationService에는 다음과 같은 읽기 전용(ReadOnly) 속성이 정의되어 있습니다. * **CurrentLocaleId** (`string`, [original] | 텍스트 번역 관련 기능을 제공합니다. # Properties - **string CurrentLocaleId [ReadOnly]** 클라이언트의 현재 언어 코드입니다. 출시 월드에서는 '월드 언어' 메뉴에서 선택한 언어이며, 메이커에서는 '테스트 플레이 언어' 옵션에서 설정한 언어입니다. - **Translator LocalTranslator [ReadOnly]** CurrentLocaleId에 해당하는 Translator 객체입니다. # Methods - **string GetText(string key) [Clie [chunk_id] | Services:307:0

[task] | diverse_qa [title] | TweenLogic [category] | Logics [rephrased] | 질문: `Tweener RotateTo(Entity entity, float angle, float duration, EaseType type)` 메서드는 어떤 기능을 수행합니까? 답변: 주어진 entity를 angle만큼 반시계 방향으로 회전시키는 Tweener를 생성하고 재생합니다. 질문: `Tweener ScaleTo(Entity entity, Vector2 targetScale, float duration, EaseType type)` 메서드는 어떤 기능을 수행합니까? 답변: 주어진 entity를 targetScale만큼 [original] | ffset을 축으로 angle만큼 반시계 방향으로 회전시키는 Tweener를 생성하고 재생합니다. - **Tweener RotateTo(Entity entity, float angle, float duration, EaseType type)** entity를 angle만큼 반시계 방향으로 회전시키는 Tweener를 생성하고 재생합니다. - **Tweener ScaleTo(Entity entity, Vector2 targetScale, float duration, EaseType type)** entity를 targetScal [chunk_id] | Logics:700:1

[task] | extract_knowledge [title] | 텔레포트 [category] | Guides [rephrased] | # 이동 텔레포트 (Teleport) ## 개념 설명 mLua 스크립트를 통해 캐릭터 또는 엔티티를 다른 맵의 특정 위치로 즉시 이동시키는 기능입니다. 이 기능은 `_TeleportService` 서비스의 `TeleportToEntityPath` 메서드를 사용하여 구현합니다. 해당 메서드는 이동 대상 엔티티와 목적지 엔티티의 경로를 인수로 받아 텔레포트를 수행합니다. ## API 사용법 텔레포트 기능 구현을 위해 다음과 같은 요소들을 사용합니다. 1. **`_TeleportService`**: 텔레포트 관련 기능을 제공하는 [original] | 스크립트를 통해 텔레포트 기능을 만듭니다. 새 스크립트 컴포넌트를 만든 뒤 캐릭터에 추가합니다. 1. **Workspace - MyDesk** 콘텍스트 메뉴에서 **Create Scripts - Create Component**를 클릭해 새 컴포넌트를 추가합니다. 2. 컴포넌트 이름을 **Teleport**로 설정합니다. 3. **Workspace - DefaultPlayer**에 **Teleport** 컴포넌트를 추가합니다. 이제 본격적으로 스크립트를 작성해 봅시다. [chunk_id] | Guides:59:1

[task] | wikipedia [title] | 텔레포트 [category] | Guides [rephrased] | # 이동 텔레포트 이동 텔레포트는 스크립트를 사용하여 엔티티를 다른 위치나 맵으로 즉시 이동시키는 기능입니다. 본 가이드에서는 서버 측 로직을 통해 캐릭터가 3초 간격으로 미리 정의된 목적지 맵으로 순환 이동하도록 설정하는 방법을 다룹니다. ## 컴포넌트 생성 및 설정 텔레포트 기능을 구현하기 위해 먼저 새 스크립트 컴포넌트를 생성하고 대상 캐릭터에 추가해야 합니다. 1. **Workspace - MyDesk** 영역에서 마우스 우클릭으로 콘텍스트 메뉴를 열고, **Create Scripts - Create Component [original] | 스크립트를 통해 텔레포트 기능을 만듭니다. 새 스크립트 컴포넌트를 만든 뒤 캐릭터에 추가합니다. 1. **Workspace - MyDesk** 콘텍스트 메뉴에서 **Create Scripts - Create Component**를 클릭해 새 컴포넌트를 추가합니다. 2. 컴포넌트 이름을 **Teleport**로 설정합니다. 3. **Workspace - DefaultPlayer**에 **Teleport** 컴포넌트를 추가합니다. 이제 본격적으로 스크립트를 작성해 봅시다. [chunk_id] | Guides:59:1

[task] | diverse_qa [title] | Entity [category] | Misc [rephrased] | 질문: mLua 스크립트에서 Entity는 무엇을 의미합니까? 답변: Entity는 MSW(MapleStory Worlds) 내에서 존재하는 객체입니다. 질문: Entity의 자식 리스트를 저장하는 속성의 이름과 타입은 무엇입니까? 답변: 속성 이름은 Children이며, 타입은 ReadOnlyList<Entity>입니다. 질문: Entity가 속한 맵의 이름만 얻고자 할 때 사용할 수 있는 읽기 전용 속성은 무엇입니까? 답변: CurrentMapName 속성을 사용합니다. 질문: Entity가 활성화되어 있는지 여부를 나타내 [original] | MSW 내에서 존재하는 객체입니다. # Properties - **ReadOnlyList<Entity> Children [ReadOnly]** 엔티티의 자식 리스트입니다. - **Entity CurrentMap** 엔티티가 속한 맵입니다. - **string CurrentMapName [ReadOnly]** 엔티티가 속한 맵의 이름입니다. - **Entity CurrentWorld** 엔티티가 속한 월드 Entity입니다. - **boolean Enable** 엔티티가 활성화되어 있는지 여부입니다. - **bo [chunk_id] | Misc:320:0

[task] | knowledge_list [title] | AttachedSpotTypeOverlayLightInfo [category] | Misc [rephrased] | 제시된 문서에 포함된 핵심 사실은 다음과 같습니다. 1. `AttachedSpotTypeOverlayLightInfo`는 엔티티의 자식으로 스폰되는 Spot 타입 광원의 정보를 담는 구조체입니다. 2. `Color Color` 프로퍼티는 광원의 색상을 지정합니다. 3. `float FalloffIntensity` 프로퍼티는 광원이 사라지는 곡선의 부드러움을 조절하며, 값이 클수록 경계선이 흐릿하고, 작을수록 날카롭습니다. 4. `float InnerRadius` 프로퍼티는 Spot 타입 광원에서 최대 밝기를 갖는 내부 영역의 반경 [original] | 엔티티의 자식으로 스폰될 Spot 타입의 광원 정보입니다. # Properties - **Color Color** 광원의 색상입니다. - **float FalloffIntensity** 광원이 사라지는 곡선의 부드러움을 조절합니다. 값이 클수록 광원의 경계선이 흐릿하고 부드러워 보입니다. 값이 작을수록 광원의 경계선이 날카롭고 또렷하게 보입니다. - **float InnerRadius** 광원이 Spot 타입일 때 최대 밝기를 갖는 내부 광원 영역의 반경입니다. OuterRadius보다 큰 값을 가질 수 없습니다. - [chunk_id] | Misc:1360:0

[task] | distill [title] | RigidbodyComponent [category] | Components [rephrased] | # RigidbodyComponent Methods 엔티티의 물리 동작(힘, 위치, 점프, 지형 상호작용)을 제어하는 메서드 목록입니다. ## 힘 (Force) - **`void AddForce(Vector2 forcePower)`** 현재 힘에 `forcePower`를 누적합니다. 엔티티는 합성 힘 방향으로 가·감속합니다. - **`void SetForce(Vector2 forcePower)`** 현재 힘을 `forcePower`로 초기화합니다. 엔티티는 설정된 힘 방향으로 가·감속합니다. - **`void SetFo [original] | # Methods - **void AddForce(Vector2 forcePower)** 엔티티에 가해지는 힘을 더합니다. 엔티티는 기존 힘에 추가로 더해진 힘의 방향으로 가·감속 운동을 하게 됩니다. - **void AttachTo(string entityId, Vector3 offset)** 이 엔티티를 entityId에 해당하는 엔티티에게 붙힙니다. 이로서 이 엔티티는 물리 동작을 하지 않고 붙혀진 엔티티의 이동에 종속되게 됩니다. - **void Detach()** RigidbodyComponent:AttachT [chunk_id] | Components:378:2

[task] | diverse_qa [title] | 다양한 선 그리기 [category] | Guides [rephrased] | 질문: 머티리얼의 어떤 셰이더를 활용하여 선을 그릴 수 있나요? 답변: SpritePattern 셰이더를 활용하여 선을 그릴 수 있습니다. 질문: LineRendererComponent에 활용할 수 있는 스프라이트 리소스의 종류는 무엇인가요? 답변: 유저 리소스와 복제한 MSW 리소스를 사용할 수 있습니다. 질문: 새로운 Material을 생성하기 위해 워크스페이스에서 어떤 경로를 따라가야 하나요? 답변: Workspace - MyDesk - Create Material 경로를 선택해 새로운 Material을 만듭니다. 질문: [original] | 머티리얼의 SpritePattern 셰이더를 활용해 선을 그릴 수 있습니다. 머티리얼 활용 방법은 [머티리얼 활용하기](docs/?postId=828)를 참고하세요. LineRendererComponent에 활용하는 스프라이트로는 유저 리소스와 복제한 MSW 리소스를 사용할 수 있습니다. MSW 리소스 복제 방법은 [리소스 관리](docs/?postId=690)를 참고하세요. 1. **Workspace - MyDesk - Create Material**을 선택해 새로운 Material을 만듭니다. 2. 생성한 머티리얼의 프로퍼티 [chunk_id] | Guides:749:1

[task] | wikipedia [title] | 스프라이트 색상을 픽셀 단위로 설정하기 [category] | Guides [rephrased] | ## 스프라이트/애니메이션 스프라이트 색상을 픽셀 단위로 설정하기 `GetPixels` 함수는 스프라이트 전체의 픽셀 값을 배열 형태로 반환하는 API입니다. 이를 통해 스프라이트의 개별 픽셀 색상 정보를 프로그램적으로 조회할 수 있습니다. 다음 코드 예제는 `GetPixels` 함수의 사용법을 보여줍니다. 먼저 버튼 객체를 생성하고, 해당 버튼에 `ButtonClickEvent` 이벤트 핸들러를 연결하여 버튼이 눌렸을 때 `GetPixelsTest` 함수가 실행되도록 설정합니다. ```lua [client only] void [original] | `GetPixels` 함수를 활용하면 스프라이트 전체의 픽셀 값을 모두 받아올 수 있습니다. 예시 코드는 아래와 같습니다. 버튼을 만들고, 함수를 추가한 다음 버튼에 **ButtonClickEvent**를 연결하는 것은 위의 예제와 동일합니다. ```lua [client only] void GetPixelsTest() { -- GetPixels을 사용해 SetPixelTest 전체의 픽셀 값을 받아옵니다. local getPixels = self.Entity.PixelRendererComponent:GetPixels [chunk_id] | Guides:693:7

[task] | diverse_qa [title] | MapleAvatarFaceActionState [category] | Enums [rephrased] | 질문: `MapleAvatarFaceActionState` 열거형은 어떤 상태를 표현합니까? 답변: 주기적으로 아바타의 눈이 깜빡임 상태를 표현합니다. 질문: `MapleAvatarFaceActionState` 열거형에서 `Invalid` 값의 숫자 값은 얼마이며, 그 용도는 무엇입니까? 답변: 숫자 값은 0이며, 기본값으로 사용되나 실제에는 사용하지 않습니다. 질문: `MapleAvatarFaceActionState` 열거형에서 `Blink` 값의 숫자 값은 얼마입니까? 답변: `Blink` 값의 숫자 값은 2입니다. 질문: [original] | 주기적으로 아바타의 눈이 깜빡임 상태를 표현합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | Invalid | 0 | 기본값입니다. 사용하지 않습니다. | | Default | 1 | 아바타의 기본 얼굴을 출력합니다. | | Blink | 2 | 아바타의 깜빡이는 얼굴을 출력합니다. | # Methods - **MapleAvatarFaceActionState CastFrom(number value) [Static]** 숫자를 해당 타입으로 변환합니다. - **MapleAvatarFaceA [chunk_id] | Enums:879:0

[task] | knowledge_list [title] | TeleportService [category] | Services [rephrased] | ```lua -- 문서에 명시된 핵심 사실 목록 -- 각 항목은 독립적으로 이해되는 완결된 문장입니다. 1. `_TeleportService:TeleportToEntity(entity, targetEntity)`는 첫 번째 매개변수로 지정된 엔티티를 두 번째 매개변수로 지정된 엔티티의 현재 위치로 텔레포트시키는 메서드입니다. 2. `_TeleportService:TeleportToMapPosition(entity, position, mapName)`는 첫 번째 매개변수로 지정된 엔티티를 두 번째 매개변수로 지정된 `Vector3` [original] | # Examples 주변 몬스터를 한 곳에 몰아넣어 공격하는 스킬을 만드는 예시입니다. `LeftShift` 키를 입력하면 미리 설정해 둔 Tag를 이용해 몬스터를 찾고, 찾은 몬스터들을 내 캐릭터가 있는 위치로 모읍니다. 그리고 내 캐릭터는 그보다 높은 위치로 올라가 몬스터를 덮칩니다. ```lua Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { -- Parameters local key = event.key ----- [chunk_id] | Services:315:4

[task] | distill [title] | PrismaticJoint [category] | Misc [rephrased] | # [Misc] PrismaticJoint 두 Entity가 특정 축을 따라 상대 이동하도록 제한하는 Joint입니다. `PrismaticJointComponent`의 `Joints` 배열에 추가하여 사용합니다. ## Properties | Property | Type | 설명 | | :--- | :--- | :--- | | **CollideConnected** | `boolean` | 연결된 두 Entity의 충돌 여부 | | **LocalAnchorA** | `Vector2` | `JointComponent` 보유 Enti [original] | 두 Entity가 특정 축을 따라서만 상대적 이동하도록 합니다. PrismaticJointComponent의 Joints에 추가해 사용합니다. # Properties - **boolean CollideConnected** Joint로 연결된 두 Entity가 서로 충돌할지 여부를 설정합니다. - **Vector2 LocalAnchorA** JointComponent를 가진 Entity의 Anchor를 설정합니다. Entity 기준 상대 좌표를 사용합니다. - **Vector2 LocalAnchorB** Joint로 연 [chunk_id] | Misc:800:0

[task] | knowledge_list [title] | 유저 엔티티를 찾아주는 UserService [category] | Guides [rephrased] | 1. `UserService`는 월드에 유저가 들어오거나 나갈 때 유저 입장/퇴장 이벤트를 발생시키는 서비스입니다. 2. `UserService`의 이벤트를 처리하기 위해 스크립트 컴포넌트에 `[service: UserService]` 태그를 가진 이벤트 핸들러를 추가해야 합니다. 3. `HandleUserEnterEvent(UserEnterEvent event)` 이벤트 핸들러는 유저가 월드에 입장했을 때 트리거되며, 매개변수 `event`를 통해 입장한 유저의 `UserId`를 접근할 수 있습니다. 4. `HandleUserLe [original] | # 학습 과정 소개 `UserService`를 통해 상황별로 **UserEntity**를 받는 방법을 알아봅니다. 간단한 스크립트 예제를 통해 `UserService`가 제공하는 기능을 알아보겠습니다. # 들어가기에 앞서 다음 가이드를 먼저 학습하면 본 과정을 이해하는 데 많은 도움이 됩니다. [서버와 클라이언트](/docs?postId=207) [실행 제어](/docs?postId=210) [Event System](/docs?postId=73) [Entity Event System](/docs?postId=176) # 예 [chunk_id] | Guides:60:0

[task] | diverse_qa [title] | ParticleService [category] | Services [rephrased] | 질문: 이 예제 스크립트는 어떤 기능을 구현하고 있는가요? 답변: 플레이어의 더블 점프 및 스킬 이펙트 효과를 파티클로 구현하는 기능을 제공합니다. 질문: `HandleKeyDownEvent` 이벤트 핸들러에서 `KeyboardKey.Space` 또는 `KeyboardKey.LeftAlt` 키를 눌렀을 때, 어떤 조건이 충족되어야만 파티클 효과가 생성되나요? 답변: `self.Entity.RigidbodyComponent:IsOnGround()`가 `false`일 때, 즉 지면에 있지 않을 때 파티클 효과가 생성됩니다. 질문: [original] | # Examples 플레이어의 더블 점프 및 스킬 이펙트 효과를 파티클로 구현하는 예제입니다. ```lua Property : [None] number ParticleSerial = 0 Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { -- Parameters local key = event.key -------------------------------------------------------- if key == Ke [chunk_id] | Services:806:2

[task] | wikipedia [title] | 배지 서비스 활용하기 [category] | Guides [rephrased] | # 아이템 배지 서비스 활용하기 이 가이드에서는 메이플스토리 월드(MapleStory Worlds)에서 `BadgeSlot` 컴포넌트를 사용하여 아이템 배지(Item Badge)의 정보를 조회하고, 플레이어가 해당 배지를 소유하고 있는지 여부를 UI에 표시하는 방법을 설명합니다. 이 과정은 `BadgeSlot_01` 엔티티를 기반으로 진행되며, `TextComponent`를 통해 배지 이름, 소유 상태, 설명을 출력합니다. ## 1. BadgeSlot 컴포넌트 생성 및 프로퍼티 설정 먼저 새로운 **BadgeSlot 컴포넌트* [original] | 1. 새로운 **BadgeSlot 컴포넌트**를 생성하고 **BadgeSlot_01**에 추가합니다. 2. 획득한 배지의 이름, 소유 정보, 설명을 가져올 수 있도록 프로퍼티를 추가합니다. ```lua Property: [None] string BadgeId = "" -- 조회할 배지 ID [None] TextComponent BadgeTitle = nil -- 배지 이름 [None] TextComponent Hasbadge = nil -- 배지 소유 정보 [Non [chunk_id] | Guides:664:3

[task] | wikipedia [title] | 9. 상점 로직 만들기Ⅱ [category] | Guides [rephrased] | ## 상점 로직 만들기 Ⅱ 본 가이드는 메이플스토리 월드 스크립트 언어 mLua를 사용하여 상점 UI에서 선택한 아이템의 정보를 표시하고, 구매할 개수를 입력받아 확인 버튼 클릭 시 구매를 진행하는 로직을 구현하는 방법을 설명합니다. ### 1. `UIBuyPopup` 컴포넌트 생성 및 추가 먼저 `UIBuyPopup` 컴포넌트를 생성하고, 해당 컴포넌트를 BuyPopup UI 엔티티에 추가합니다. ### 2. 프로퍼티 추가 아이템 식별자를 저장하기 위해 `string` 타입의 프로퍼티 `ItemId`를 추가합니다. `` [original] | 상점 UI에서 선택한 아이템의 정보를 표시합니다. 구매할 개수를 입력할 수 있습니다. 확인 버튼을 누르면 구매를 진행합니다. 1. `UIBuyPopup` 컴포넌트를 생성하고, BuyPopup UI엔티티에 추가합니다. 1. 새로운 프로퍼티를 추가합니다. ```lua Property: [None] string ItemId = "" ``` 2. `OnBeginPlay` 함수를 추가합니다. 닫기 버튼을 눌러 UI를 닫을 수 있도록 작성합니다. ```lua [client only] [chunk_id] | Guides:1117:3

[task] | extract_knowledge [title] | 파티클 활용하기 [category] | Guides [rephrased] | # 버튼 클릭 시 UI 파티클 재생하기 ## 개념 설명 메이플스토리 월드에서 UI 요소(예: 버튼)에 상호작용 피드백을 제공하기 위해 파티클 효과를 활용합니다. `UIBasicParticleComponent`는 UI 위젯에 파티클을 생성하고 제어하는 컴포넌트입니다. 기본적으로 월드 진입 시 자동 재생되거나 루프 재생되는 특성이 있으므로, 사용자 입력(클릭)에 반응하도록 `Loop` 및 `PlayOnEnable` 속성을 조정해야 합니다. `UIButton` 엔티티와 `UIParticle` 엔티티를 연결하는 전용 스크립트 컴포넌트를 [original] | 1. **UIParticle**에 **UIBasicParticleComponent**를 추가합니다. 2. ParticleType을 **CircleBust**로 선택하고, 원하는 파티클 크기, 속도 등을 조절합니다. 3. **UIBasicParticleComponent**의 **Loop**를 **false**로 설정해 버튼을 눌렀을 때 파티클이 한 번만 재생되도록 합니다. **PlayOnEnable** 또한 **false**로 변경하여 파티클이 월드 진입하자마자 재생되지 않도록 합니다. ![[object Object]](https [chunk_id] | Guides:764:5

[task] | distill [title] | 메이플스토리 월드에서 수익 출금하기 [category] | Guides [rephrased] | # 유료화: 메이플스토리 월드 수익 출금하기 ## 출금 심사 및 지급 규칙 * **심사 주기**: 출금 신청 완료 후 **다음 월**에 적합성 심사가 진행됩니다. * **결과 확인**: 승인/거절 결과 및 사유는 메이플스토리 월드 홈페이지에서 확인 가능합니다. * **재심사**: 과거 거절 건이라도 매월 새롭게 진행되는 심사에서 적합성이 확인되면 승인될 수 있습니다. * **취소 불가**: 신청 완료 후 취소는 불가능합니다. * **수익 차감**: 출금 신청 완료 시 계정 내 보유 수익은 **즉시 차감**됩니다. [original] | 출금 신청이 완료되면 신청 다음월에 메이플스토리 월드의 지급에 대한 적합성 심사 과정이 진행됩니다. 심사 결과에 따라 지급 승인 혹은 거절 결과가 전송되며, 지급 현황 및 거절 사유는 메이플스토리 월드 홈페이지에서 확인할 수 있습니다. 출금 신청 건에 대한 검토는 매월 새롭게 진행되며, 과거 출금 신청이 거절되었더라도 출금 신청에 대한 적합성이 확인되면 승인될 수 있습니다. 신청 완료된 출금 신청은 취소가 불가능합니다. 신청 완료 전 다시 한 번 확인해주세요. #### 출금 신청 현황 확인 경로 **1. [메이플스토리 월드 [chunk_id] | Guides:970:4

[task] | distill [title] | FastColor [category] | Misc [rephrased] | # FastColor 색상 조작과 변환을 위한 구조체. 연산자(`+=`, `-=` 등)와 동일한 기능을 수행하지만 새로운 객체 생성 없이原地(in-place) 수정하여 성능이 우수합니다. ## 인스턴스 메서드 | 시그니처 | 설명 | | :--- | :--- | | `FastColor Clone()` | 복사본 생성 | | `number Grayscale()` | 그레이스케일 값 반환 | | `FastColor Lerp(FastColor b, number t)` | 선형 보간. `t`는 0~1로 클램프됨 | | `FastCol [original] | - **FastColor Clone()** 복사본을 생성합니다. - **number Grayscale()** 색상의 그레이스케일을 구합니다. - **FastColor Lerp(FastColor b, number t)** 두 색상 사이를 t로 선형 보간한 FastColor 객체를 생성해 반환합니다. t는 0부터 1 사이로 고정됩니다. - **FastColor LerpUnclamped(FastColor b, number t)** 두 색상 사이를 t로 선형 보간한 FastColor 객체를 생성해 반환합니다. - **numb [chunk_id] | Misc:1298:1

[task] | extract_knowledge [title] | 다양한 선 그리기 [category] | Guides [rephrased] | # 트레일(Trail) 효과 구현: LineRendererComponent 활용 본 절에서는 플레이어의 이동 경로에 따라 선이 그려지고 일정 시간이 경과하면 사라지는 트레일 효과를 구현하는 방법을 다룹니다. 이 효과는 `LineRendererComponent`를 사용하여 시각적 표시를 만들고, `SyncTable`을 통해 점들의 수명(life)을 관리하는 방식으로 동작합니다. ## 1. 개념 설명 트레일 효과의 핵심 로직은 다음과 같은 3단계로 구성됩니다. 1. **점 추가 (Add Point)**: 대상 객체의 위치가 이 [original] | 플레이어를 따라 다니는 모델을 만들어, 플레이어의 움직임을 따라 선이 그려지고, 사라지게 만들어봅시다. 1. Trail 모델을 생성하고, TransformComponent와 LineRendererComponent를 추가합니다. 2. 새로운 TrailDrawer 컴포넌트를 생성하고, Trail 모델에 추가합니다. ```lua [None] Vector3 PrevPos = Vector3(0,0,0) [None] number Threshold = 0.1 [None] number P [chunk_id] | Guides:749:2

[task] | diverse_qa [title] | CreatorDataStoragePages [category] | Misc [rephrased] | 질문: CreatorDataStoragePages 컴포넌트는 주로 어떤 기능을 제공하는가요? 답변: CreatorDataStorage를 조회하는 기능을 제공합니다. 질문: IsLastPage 프로퍼티의 데이터 타입과 접근 권한은 무엇인가요? 답변: IsLastPage 프로퍼티의 데이터 타입은 boolean이며, ReadOnly(읽기 전용) 접근 권한을 가집니다. 질문: IsLastPage 프로퍼티가 true를 반환할 때의 의미는 무엇인가요? 답변: IsLastPage 프로퍼티가 true를 반환할 경우, 현재 페이지가 마지막 페이 [original] | CreatorDataStorage를 조회하는 기능을 제공합니다. # Properties - **boolean IsLastPage [ReadOnly]** 현재 페이지가 마지막 페이지인지 확인합니다. # Methods - **table<CreatorDataStorage> GetCurrentPageDatas() [ServerOnly]** 현재 페이지의 CreatorDataStorage 목록을 가져옵니다. - **int32 LoadNextPageAndWait() [ServerOnly] [Yield]** 다음 페이지를 불러 [chunk_id] | Misc:1371:0

[task] | diverse_qa [title] | InventoryItemModifiedEvent [category] | Events [rephrased] | 질문: InventoryItemModifiedEvent는 어떤 상황에서 발생하는 이벤트인가요? 답변: 인벤토리의 아이템이 수정되었을 때 발생하는 이벤트입니다. 질문: InventoryItemModifiedEvent는 어떤 컴포넌트의 API에 의해 발생하나요? 답변: InventoryComponent의 API에 의해 발생합니다. 질문: InventoryItemModifiedEvent가 발생하는 실행 공간(Space)은 무엇인가요? 답변: Server, Client에서 이벤트가 발생합니다. 질문: InventoryItemModif [original] | 인벤토리의 아이템이 수정되었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * InventoryComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties ##### inherited from InventoryItemEvent: - ** [chunk_id] | Events:445:0

[task] | distill [title] | 캐릭터 초기 속성 편집 [category] | Guides [rephrased] | # 모델 프로퍼티 비활성화 및 기본 컴포넌트 관리 ## 모델 프로퍼티 비활성화 불필요한 모델 프로퍼티는 프로퍼티 에디터에서 해당 컴포넌트의 `Enable` 체크 해제 후 비활성화할 수 있습니다. * **예시**: `NameTag` 사용 불필요 시 `NameTagComponent`의 `Enable` 해제. ## DefaultPlayer 기본 컴포넌트 삭제 기본 컴포넌트를 확장한 커스텀 컴포넌트를 사용할 경우, `DefaultPlayer`의 기본 컴포넌트를 삭제해야 합니다. * **원칙**: 동일한 근본을 가진 컴포넌트가 중 [original] | # 모델 프로퍼티 비활성화하기 크리에이터의 의도에 따라 필요 없는 모델 프로퍼티를 비활성화 할 수 있습니다. 예를 들어, **NameTag**을 사용하고 싶지 않다면, 프로퍼티 에디터에서 **NameTagComponent**의 **Enable** 체크를 해제합니다. # DefaultPlayer의 기본 컴포넌트 삭제하기 기본 컴포넌트를 확장한 컴포넌트를 제작해 사용한다면, **DefaultPlayer**의 기본 컴포넌트를 삭제해야 합니다. 근본이 같은 컴포넌트가 여러 개 있으면 오동작 가능성이 커지기 때문에 기본적으로 하나의 컴 [chunk_id] | Guides:48:2

[task] | wikipedia [title] | 스크립트 라이프 사이클 [category] | Guides [rephrased] | # 스크립트 라이프 사이클 스크립트 라이프 사이클은 메이플스토리 월드에서 컴포넌트 스크립트의 함수들이 언제 호출되는지를 설명하는 개념입니다. 라이프 사이클을 이해하면 특정 함수의 실행 시점을 예측할 수 있으며, 전체 월드의 동작 흐름을 고려하여 논리적으로 스크립트를 작성하는 데 도움이 됩니다. ## 기본 이벤트 함수의 라이프 사이클 월드에 필요한 로직을 구현하기 위해서는 컴포넌트 스크립트를 생성해야 합니다. 컴포넌트 스크립트를 작성할 때는 함수가 호출되는 시점을 정확히 파악하여 의도한 대로 동작하도록 구성해야 합니다. 라이프 [original] | # 학습 과정 소개 기본 이벤트 함수의 라이프 사이클과 플레이할 때의 전체 라이프 사이클을 알아봅시다. 라이프 사이클을 이해하면 특정 함수가 언제 불리는지 예상할 수 있고, 전체 월드의 동작을 고려하며 제작할 수 있습니다. # 기본 이벤트 함수의 라이프 사이클 월드에 필요한 로직을 만들기 위해서는 컴포넌트 스크립트를 만들어야만 합니다. 필요한 컴포넌트 스크립트를 만들 때 호출되는 시점을 예상해 의도한 로직에 맞게 동작할 수 있도록 작성해야 합니다. 라이프 사이클의 개념을 익혀두면 전체 흐름을 파악할 수 있기에 스크립트를 작성 [chunk_id] | Guides:668:0

[task] | extract_knowledge [title] | AvatarAction Editor [category] | Guides [rephrased] | # AvatarAction Editor: BodyAction 등록 및 PlayRate 설정 ## 개념 설명 `AvatarStateAnimationComponent`는 아바타의 상태(State)에 따라 특정 `BodyAction`을 실행하도록 제어하는 컴포넌트입니다. 이 컴포넌트에는 `StateToAvatarBodyActionSheet`라는 데이터 구조가 존재하며, 여기서 상태 이름(Key)과 연결할 `BodyAction`을 매핑합니다. 메이플스토리 원작과 동일한 기본 움직임이 이미 기본 Key에 지정되어 있습니다. 각 기본 S [original] | 제작한 BodyAction은 AvatarStateAnimationComponent의 StateToAvatarBodyActionSheet의 **Key**에 등록해 사용해야 합니다. 기본적으로 AvatarStateAnimationComponent에는 메이플스토리 원작과 동일한 움직임을 구현한 Key들이 지정되어 있습니다. 만약 이 기존 Key에서 AvatarBodyAction을 제작한 BodyAction으로 연결할 경우 크리에이터의 예상과 다르게 동작할 수 있습니다. 기본 State와 연결된 BodyAction에 맞는 PlayRate [chunk_id] | Guides:1402:2