[task] | diverse_qa [title] | WorldShopProductPages [category] | Misc [rephrased] | 질문: WorldShopProductPages 컴포넌트는 어떤 목적으로 사용됩니까? 답변: WorldShopService에서 검색한 상품 목록을 페이지 단위로 조회하기 위해 사용됩니다. 질문: WorldShopProductPages에 포함된 IsLastPage 속성은 어떤 타입이며 어떤 역할을 합니까? 답변: IsLastPage 속성은 boolean 타입이며, 현재 페이지가 검색 결과의 마지막 페이지인지 확인하는 역할을 합니다. 질문: GetCurrentPageDatas() 메서드는 어떤 타입의 데이터를 반환합니까? 답변: Ge [original] | WorldShopService에서 검색한 상품 목록을 페이지 단위로 조회합니다. # Properties - **boolean IsLastPage** 현재 페이지가 검색 결과의 마지막 페이지인지 확인합니다. # Methods - **table<WorldShopProduct> GetCurrentPageDatas()** 검색 결과 중 현재 페이지의 상품 정보 목록을 구합니다. 한 페이지에는 최대 25개의 검색 결과가 포함됩니다. - **void MoveToNextPageAndWait() [Yield]** 검색 결과의 다 [chunk_id] | Misc:642:0
[task] | distill [title] | ResourceService [category] | Services [rephrased] | ### ResourceService **이벤트 연결** - `EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)` - `EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)` 지정된 `key`(문자열) 또는 `eventType`(타입)의 이벤트 발생 시 `eventHandler`에 `event` 매개변수를 전달해 통지합니다. **이벤트 해제** - `boolean Di [original] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지 [chunk_id] | Services:644:1
[task] | extract_knowledge [title] | WorldShopProduct [category] | Misc [rephrased] | # WorldShopProduct `WorldShopService`를 통해 조회한 상품 정보를 나타내는 구조체입니다. ## 개념 설명 `WorldShopProduct`는 월드샵(WorldShop)에 등록된 개별 상품의 메타데이터를 포함합니다. 이 객체는 상품의 기본 식별 정보(이름, ID), 가격, 상태, 종류, 이미지 리소스 위치, 그리고 선택적으로 설정된 판매 기간 정보를 제공합니다. ## API 사용법 `WorldShopProduct`는 읽기 전용 속성(Properties)으로 구성되어 있습니다. | 속성 이름 | [original] | WorldShopService를 통해 얻은 상품의 정보입니다. # Properties - **string Description** 상품의 설명입니다. - **DateTime EndSalesPeriod** 판매 종료 일시입니다. HasSalesPeriod가 true일 때만 유효한 값을 가집니다. - **boolean HasSalesPeriod** 판매 기간이 설정되어 있는지 확인합니다. - **string Id** 상품의 식별자입니다. - **string Name** 상품의 이름입니다. - **int32 Pric [chunk_id] | Misc:641:0
[task] | diverse_qa [title] | WorldShopProduct [category] | Misc [rephrased] | 질문: WorldShopProduct 구조체는 어떤 서비스를 통해 얻어지는 정보인가요? 답변: WorldShopProduct는 WorldShopService를 통해 얻은 상품의 정보입니다. 질문: 상품의 설명을 나타내는 Property의 이름과 타입은 무엇인가요? 답변: 상품의 설명을 나타내는 Property는 Description이며, 타입은 string입니다. 질문: HasSalesPeriod가 true일 때만 유효한 값을 가지는 Property는 무엇인가요? 답변: HasSalesPeriod가 true일 때만 유효한 값을 [original] | WorldShopService를 통해 얻은 상품의 정보입니다. # Properties - **string Description** 상품의 설명입니다. - **DateTime EndSalesPeriod** 판매 종료 일시입니다. HasSalesPeriod가 true일 때만 유효한 값을 가집니다. - **boolean HasSalesPeriod** 판매 기간이 설정되어 있는지 확인합니다. - **string Id** 상품의 식별자입니다. - **string Name** 상품의 이름입니다. - **int32 Pric [chunk_id] | Misc:641:0
[task] | diverse_qa [title] | UserDataSet [category] | Misc [rephrased] | 질문: UserDataSet 컴포넌트의 정의는 무엇인가요? 답변: UserDataSet은 유저가 제작한 데이터 테이블입니다. 질문: UserDataSet의 Columns 프로퍼티의 타입과 속성은 무엇인가요? 답변: Columns 프로퍼티의 타입은 ReadOnlyList<string>이며, [ReadOnly]와 [HideFromInspector] 속성을 가지고 있습니다. 질문: UserDataSet의 ServerOnly 프로퍼티가 true로 설정되어 있을 때 데이터 테이블은 어디서 사용될 수 있나요? 답변: ServerOnly 프 [original] | 유저가 제작한 데이터 테이블입니다. # Properties - **ReadOnlyList<string> Columns [ReadOnly] [HideFromInspector]** 데이터 테이블의 각 열의 내용을 담고 있는 리스트입니다. - **string Id [ReadOnly] [HideFromInspector]** 데이터 테이블의 Id입니다. - **string Name [ReadOnly] [HideFromInspector]** 데이터 테이블의 이름입니다. - **boolean ServerOnly [ReadOnly] [chunk_id] | Misc:639:0
[task] | extract_knowledge [title] | EntityRef [category] | Misc [rephrased] | # EntityRef `EntityRef`는 엔티티(Entity)를 참조하기 위한 컴포넌트 또는 데이터 구조입니다. 엔티티의 `Id`만 저장해 두었다가 실제 접근이 필요한 시점에 엔티티 객체를 조회하는 방식으로 동작합니다. 이는 엔티티가 삭제되거나 이동된 경우에도 참조가 깨지지 않도록 하기 위한 지연 평가(Lazy Evaluation) 패턴을 따릅니다. ## 1. 개념 설명 일반적으로 엔티티 객체를 직접 참조하면 엔티티가 사라졌을 때 유효하지 않은 참조(Invalid Reference)를 사용할 위험이 있습니다. `Entity [original] | 엔티티를 참조합니다. 엔티티의 Id를 갖고 있다가 실제로 접근이 필요할 때 엔티티를 찾습니다. # Properties - **string EntityId [ReadOnly]** 참조하고 있는 Entity의 Id입니다. - **string EntityPath [Deprecated] [ReadOnly]** 더는 사용하지 않는 프로퍼티입니다. # Constructors - **EntityRef(Entity entity)** 지정한 entity를 참조하는 EntityRef를 초기화합니다. - **EntityRef(stri [chunk_id] | Misc:635:0
[task] | extract_knowledge [title] | RectTileInfo [category] | Misc [rephrased] | # RectTileInfo ## 개념 설명 `RectTileInfo`는 타일셋(Tileset)에 정의된 개별 타일의 정보를 담고 있는 구조입니다. 이 구조를 통해 특정 타일의 식별자, 물리 특성(충돌 여부), 이름, 그리고 렌더링에 사용되는 스프라이트 리소스 정보를 조회할 수 있습니다. ## API 사용법 `RectTileInfo`는 읽기 전용(ReadOnly) 속성만 제공합니다. 타일셋에서 타일 정보를 가져온 후 해당 인스턴스의 프로퍼티에 접근하여 값을 읽습니다. ### Properties | 프로퍼티 | 타입 | 설명 | [original] | 타일셋에 정의된 각 타일의 정보를 나타냅니다. # Properties - **int32 Index [ReadOnly]** 자동으로 부여되는 타일셋의 인덱스 번호입니다. 1부터 시작합니다. - **boolean IsCollidable [ReadOnly]** 충돌 여부입니다. true일 경우 플레이어는 타일 위를 지나갈 수 없습니다. - **string Name [ReadOnly]** 타일의 이름입니다. - **string SpriteRUID [ReadOnly]** 스프라이트의 RUID입니다. [chunk_id] | Misc:640:0
[task] | diverse_qa [title] | WorldShopPurchaseInfo [category] | Misc [rephrased] | 질문: WorldShopPurchaseInfo는 어떤 서비스에서 사용되는 자료 구조인가요? 답변: WorldShopPurchaseInfo는 WorldShopService에서 사용하는 상품의 구매 정보입니다. 질문: 무료 상품을 구매할 때 OrderNumber 프로퍼티의 값은 어떻게 지정되나요? 답변: 무료 상품 구매 시 OrderNumber는 0으로 지정됩니다. 질문: 구매한 상품의 고유 식별자를 나타내는 프로퍼티의 이름과 타입은 무엇인가요? 답변: 구매한 상품의 Id를 나타내는 프로퍼티는 ProductId이며, 타입은 stri [original] | WorldShopService에서 사용하는 상품의 구매 정보입니다. # Properties - **integer OrderNumber** 주문번호입니다. 무료 상품 구매 시 0으로 지정됩니다. - **string ProductId** 구매한 상품의 Id입니다. - **string PurchaseId** 처리할 구매 Id입니다. - **string UserId** 상품을 구매한 유저 Id입니다. # Methods - **WorldShopPurchaseInfo Clone()** 복사본을 생성합니다. [chunk_id] | Misc:643:0
[task] | knowledge_list [title] | ResourceService [category] | Services [rephrased] | 1. `ResourceService`의 `ConnectEvent(string key, IScriptFunction eventHandler)` 메서드는 이름이 `key`인 이벤트가 발생하도록 핸들러를 연결하며, 이벤트 발생 시 `event` 매개변수를 전달받은 핸들러로 통지하고 `EventHandlerBase`를 반환합니다. 2. `ResourceService`의 `ConnectEvent(Type eventType, IScriptFunction eventHandler)` 메서드는 타입이 `eventType`인 이벤트가 발생하도록 핸들 [original] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지 [chunk_id] | Services:644:1
[task] | extract_knowledge [title] | UserDataSet [category] | Misc [rephrased] | # UserDataSet ## 개념 설명 `UserDataSet`은 사용자가 직접 정의한 데이터 테이블을 다루기 위한 컴포넌트입니다. 이 컴포넌트는 행(Row)과 열(Column) 구조를 가진 데이터를 저장하며, 특정 조건에 맞는 행을 검색하거나 특정 위치의 셀 값을 조회하는 기능을 제공합니다. `ServerOnly` 속성을 통해 데이터 접근 범위를 서버 전용으로 제한할 수도 있습니다. ## API 사용법 ### Properties - **`Columns`** (`ReadOnlyList<string> [ReadOnly] [Hi [original] | 유저가 제작한 데이터 테이블입니다. # Properties - **ReadOnlyList<string> Columns [ReadOnly] [HideFromInspector]** 데이터 테이블의 각 열의 내용을 담고 있는 리스트입니다. - **string Id [ReadOnly] [HideFromInspector]** 데이터 테이블의 Id입니다. - **string Name [ReadOnly] [HideFromInspector]** 데이터 테이블의 이름입니다. - **boolean ServerOnly [ReadOnly] [chunk_id] | Misc:639:0
[task] | knowledge_list [title] | ResourceService [category] | Services [rephrased] | **[Services] ResourceService** 문서의 핵심 사실은 다음과 같습니다. 1. `ResourceUploadEvent`는 월드 플레이 중 생성된 리소스의 업로드가 성공했을 때 `ResourceService`에서 발생하는 이벤트입니다. 2. `ResourceUploadEvent`는 해당 리소스가 업로드된 월드의 모든 서버에서 발생합니다. 3. `PreloadAsync()` 함수는 `client only` 실행 공간에서 사용 가능하며, 리소스 목록을 비동기적으로 로드합니다. 4. `PreloadAsync()` 함수는 [original] | # Events - **ResourceUploadEvent** 월드 플레이 중 생성된 리소스 업로드에 성공했을 때 ResourceService에서 발생하는 이벤트입니다. 이 이벤트는 리소스가 업로드된 월드의 모든 서버에서 발생합니다. # Examples #### PreloadAsync `PreloadAsync()` 함수를 이용하여 리소스 목록을 로드하고, 리소스 로드 중에는 로딩 화면을 보여주는 예제입니다. `ShowLoadingScreen()`,`HideLoadingScreen()` 함수 정의는 생략되었습니다. ``` [chunk_id] | Services:644:2
[task] | extract_knowledge [title] | WorldShopPurchaseInfo [category] | Misc [rephrased] | # WorldShopPurchaseInfo `WorldShopService`에서 상품 구매 처리 시 전달되는 정보를 담고 있는 구조체입니다. 이 객체는 주문 번호, 상품 식별자, 구매 처리 식별자, 그리고 구매자 정보를 포함하여 서버 측 로직에서 구매 완료를 검증하거나 처리하는 데 사용됩니다. ## 속성 (Properties) | 속성 이름 | 타입 | 설명 | | :--- | :--- | :--- | | `OrderNumber` | `integer` | 주문 번호입니다. 무료 상품을 구매하는 경우 `0`으로 지정됩니다. | [original] | WorldShopService에서 사용하는 상품의 구매 정보입니다. # Properties - **integer OrderNumber** 주문번호입니다. 무료 상품 구매 시 0으로 지정됩니다. - **string ProductId** 구매한 상품의 Id입니다. - **string PurchaseId** 처리할 구매 Id입니다. - **string UserId** 상품을 구매한 유저 Id입니다. # Methods - **WorldShopPurchaseInfo Clone()** 복사본을 생성합니다. [chunk_id] | Misc:643:0
[task] | distill [title] | ResourceService [category] | Services [rephrased] | # ResourceService ## Events * **ResourceUploadEvent**: 월드 플레이 중 생성된 리소스 업로드 성공 시 발생. 해당 월드의 모든 서버에서 트리거됩니다. ## Examples ### PreloadAsync 리소스 목록을 비동기 로드하고, 완료 시 로딩 화면을 제어하는 예시입니다. (`ShowLoadingScreen()`, `HideLoadingScreen()` 정의는 생략) ```lua Method: [client only] void ResourceLoadWithLoadingScre [original] | # Events - **ResourceUploadEvent** 월드 플레이 중 생성된 리소스 업로드에 성공했을 때 ResourceService에서 발생하는 이벤트입니다. 이 이벤트는 리소스가 업로드된 월드의 모든 서버에서 발생합니다. # Examples #### PreloadAsync `PreloadAsync()` 함수를 이용하여 리소스 목록을 로드하고, 리소스 로드 중에는 로딩 화면을 보여주는 예제입니다. `ShowLoadingScreen()`,`HideLoadingScreen()` 함수 정의는 생략되었습니다. ``` [chunk_id] | Services:644:2
[task] | distill [title] | ResourceService [category] | Services [rephrased] | # ResourceService 리소스 로드, 캐시 관리, 업로드 기능을 제공하는 서비스입니다. ## Methods - **void ClearCaches()** 모든 리소스 캐시를 제거합니다. 메모리 해제를 위해 `UnloadUnusedResources()` 호출 전 필수입니다. - **ResourceType GetTypeAndWait(string RUID) [Yield]** 지정된 RUID의 리소스 타입을 반환합니다. - **AnimationClip LoadAnimationClipAndWait(string RUID [original] | 리소스와 관련된 기능을 제공하는 서비스입니다. # Methods - **void ClearCaches()** 불러온 모든 리소스를 캐시에서 제거합니다. 리소스를 메모리에서 해제하려면 ClearCaches() 함수로 캐시를 먼저 제거한 후 UnloadUnusedResources() 함수를 사용합니다. - **ResourceType GetTypeAndWait(string RUID) [Yield]** RUID의 리소스 타입을 반환합니다. - **AnimationClip LoadAnimationClipAndWait(string [chunk_id] | Services:644:0
[task] | wikipedia [title] | ResourceService [category] | Services [rephrased] | # ResourceService **ResourceService**는 이벤트 기반 통신을 위한 서비스로, 특정 이벤트의 발생을 감지하거나 이벤트를 전송하는 기능을 제공합니다. ## 이벤트 연결 이벤트 연결은 `ConnectEvent` 메서드를 통해 수행되며, 이벤트 식별 방식에 따라 두 가지重载(오버로드)가 존재합니다. 첫째, 문자열 키 기반 연결입니다. `ConnectEvent(string key, IScriptFunction eventHandler)` 메서드는 주어진 `string` 타입의 `key`와 일치하는 이름의 이 [original] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지 [chunk_id] | Services:644:1
[task] | distill [title] | ResourceService [category] | Services [rephrased] | # [Services] ResourceService ### HandleResourceUploadEvent - **실행 공간**: `[server only]` - **발생 시점**: 리소스 업로드 성공 시 서버에서 발생. - **파라미터**: - `event.RUID`: 업로드된 리소스 ID - `event.UserId`: 업로드한 사용자 ID ```lua Event Handler: [server only] [service: ResourceService] HandleResourceUploadEvent { local RU [original] | ```lua Event Handler: [server only] [service: ResourceService] HandleResourceUploadEvent { -- Parameters local RUID = event.RUID local UserId = event.UserId -------------------------------------------------------- -- 리소스 업로드에 성공했을 때 서버에서 발생하는 이벤트입니다. local userEntity = _UserService:GetUse [chunk_id] | Services:644:4
[task] | diverse_qa [title] | ResourceService [category] | Services [rephrased] | 질문: ResourceService에서 문자열 key를 사용하여 이벤트를 연결하는 메서드의 이름은 무엇인가요? 답변: ConnectEvent(string key, IScriptFunction eventHandler)입니다. 질문: ConnectEvent 메서드를 통해 이벤트를 연결하면, 이벤트 발생 시 핸들러는 어떤 매개 변수를 전달받나요? 답변: 핸들러는 event 매개 변수를 전달받습니다. 질문: ResourceService에서 특정 Type 타입의 이벤트를 연결할 때 사용하는 메서드 시그니처는 무엇인가요? 답변: Conne [original] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지 [chunk_id] | Services:644:1
[task] | extract_knowledge [title] | CollisionSimulator [category] | Misc [rephrased] | # CollisionSimulator: 충돌 시뮬레이션 및 충돌 감지 ## 1. 개념 설명 `CollisionSimulator` 컴포넌트는 2D 환경에서 충돌 그룹(Collision Group)을 기준으로 다양한 기하학적 충돌 감지 쿼리를 수행하는 데 사용됩니다. 주요 기능은 다음과 같습니다. 1. **Overlap (겹침) 감지**: 특정 점(Point)이나 선(Line)이 충돌 그룹의 영역과 겹치는지 확인합니다. * `OverlapPoint`: 지정한 좌표가 충돌 객체 내부에 있는지를 확인합니다. * [original] | oupName, Vector2 point1, Vector2 point2)** 입력한 선과 겹치는 모든 컴포넌트를 찾아 반환합니다. - **int32 OverlapLineAllFast(string collisionGroupName, Vector2 point1, Vector2 point2, table outputList)** 입력한 선과 겹치는 모든 컴포넌트를 찾고, 그 결과를 outputList에 삽입합니다. 결과의 개수를 반환합니다. - **Component OverlapPoint(CollisionGroup collision [chunk_id] | Misc:631:1
[task] | knowledge_list [title] | ResourceService [category] | Services [rephrased] | 1. `HandleResourceUploadEvent`는 `ResourceService` 서비스에서 리소스 업로드 성공 시 서버에서 발생하는 이벤트 핸들러입니다. 2. `HandleResourceUploadEvent`는 `[server only]` 실행 공간 제약이 적용되어 서버에서만 실행됩니다. 3. 이벤트 객체 `event`로부터 `RUID`와 `UserId` 매개변수를 추출할 수 있습니다. 4. `_UserService:GetUserEntityByUserId(UserId)` 메서드를 호출하여 해당 `UserId`에 해당하는 사 [original] | ```lua Event Handler: [server only] [service: ResourceService] HandleResourceUploadEvent { -- Parameters local RUID = event.RUID local UserId = event.UserId -------------------------------------------------------- -- 리소스 업로드에 성공했을 때 서버에서 발생하는 이벤트입니다. local userEntity = _UserService:GetUse [chunk_id] | Services:644:4
[task] | knowledge_list [title] | ResourceService [category] | Services [rephrased] | ```lua -- 핵심 사실 목록 ``` 1. `ResourceService`는 리소스와 관련된 기능을 제공하는 서비스입니다. 2. `void ClearCaches()`는 모든 리소스를 캐시에서 제거하며, 메모리에서 리소스를 해제하려면 이 함수 호출 후 `UnloadUnusedResources()`를 사용해야 합니다. 3. `ResourceType GetTypeAndWait(string RUID)`는 Yield 함수로, 매개변수 `RUID`의 리소스 타입을 반환합니다. 4. `AnimationClip LoadAnimationCli [original] | 리소스와 관련된 기능을 제공하는 서비스입니다. # Methods - **void ClearCaches()** 불러온 모든 리소스를 캐시에서 제거합니다. 리소스를 메모리에서 해제하려면 ClearCaches() 함수로 캐시를 먼저 제거한 후 UnloadUnusedResources() 함수를 사용합니다. - **ResourceType GetTypeAndWait(string RUID) [Yield]** RUID의 리소스 타입을 반환합니다. - **AnimationClip LoadAnimationClipAndWait(string [chunk_id] | Services:644:0
[task] | distill [title] | ResourceService [category] | Services [rephrased] | # [Services] ResourceService 스크린샷을 스프라이트 리소스로 업로드하는 `ResourceService` 사용 가이드입니다. ### 1. 업로드 허용 검증 (서버) 업로드 허용 판단은 **서버**에서 이루어지며, 월드 생성 시점에 콜백을 등록해야 합니다. 지속적 유지가 필요하므로 Logic 컴포넌트의 함수로 작성 권장. ```lua [server only] void OnBeginPlay() { _ResourceService:SetSpriteUploadValidationCallback(self.Vali [original] | `ResourceService`를 이용해 스크린샷을 스프라이트 리소스로 만들어 업로드하는 예제입니다. 유저가 스크린샷을 업로드 했을 때 업로드를 허용하는 함수를 먼저 만들어야 합니다. 업로드 허용 결정 함수는 월드가 생성될 때 등록되고 계속해서 유지되어야 하므로 Logic의 함수로 작성하는 것을 권장합니다. 한 업로드 허용 판단은 서버에서 진행되므로 함수 등록도 서버에서 수행되어야 합니다. 이 예제는 업로드 허가를 받은 유저인지 확인하고 허용 여부를 결정합니다. ```lua [server only] void OnBeginPlay( [chunk_id] | Services:644:3
[task] | wikipedia [title] | ResourceService [category] | Services [rephrased] | **리소스 서비스(ResourceService)** 리소스 서비스(ResourceService)는 메이플스토리 월드(MapleStory Worlds) 스크립트 환경에서 리소스 관리와 관련된 기능을 제공하는 시스템 컴포넌트입니다. 이 서비스는 주로 서버 측에서만 동작하며, 특정 이벤트 발생 시 스크립트 로직을 실행하도록 설계되어 있습니다. 문서에 명시된 핵심 기능 중 하나는 `HandleResourceUploadEvent` 이벤트 핸들러입니다. 이 핸들러는 `server only` 실행 공간에서 작동하며, 사용자가 리소스를 업로드 [original] | ```lua Event Handler: [server only] [service: ResourceService] HandleResourceUploadEvent { -- Parameters local RUID = event.RUID local UserId = event.UserId -------------------------------------------------------- -- 리소스 업로드에 성공했을 때 서버에서 발생하는 이벤트입니다. local userEntity = _UserService:GetUse [chunk_id] | Services:644:4
[task] | wikipedia [title] | ResourceService [category] | Services [rephrased] | # ResourceService 이벤트 및 사용 예제 ResourceService는 메이플스토리 월드 스크립트 환경에서 리소스 관리와 관련된 서비스를 제공합니다. 이 서비스는 주로 리소스 사전 로딩 및 업로드 검증 기능을 포함하며, 관련 이벤트와 메서드를 통해 개발자에게 특정 작업을 수행할 수 있는 기회를 제공합니다. ## 이벤트 ### ResourceUploadEvent `ResourceUploadEvent`는 월드 플레이 중 생성된 리소스의 업로드가 성공적으로 완료되었을 때 발생하는 이벤트입니다. 이 이벤트는 특정 클라이 [original] | # Events - **ResourceUploadEvent** 월드 플레이 중 생성된 리소스 업로드에 성공했을 때 ResourceService에서 발생하는 이벤트입니다. 이 이벤트는 리소스가 업로드된 월드의 모든 서버에서 발생합니다. # Examples #### PreloadAsync `PreloadAsync()` 함수를 이용하여 리소스 목록을 로드하고, 리소스 로드 중에는 로딩 화면을 보여주는 예제입니다. `ShowLoadingScreen()`,`HideLoadingScreen()` 함수 정의는 생략되었습니다. ``` [chunk_id] | Services:644:2
[task] | diverse_qa [title] | ResourceService [category] | Services [rephrased] | 질문: `ResourceUploadEvent`는 어떤 시점에 발생하나요? 답변: 월드 플레이 중 생성된 리소스 업로드에 성공했을 때 발생합니다. 질문: `ResourceUploadEvent`는 어떤 범위에서 발생하나요? 답변: 리소스가 업로드된 월드의 모든 서버에서 발생합니다. 질문: `PreloadAsync()` 함수의 주요 목적은 무엇인가요? 답변: 리소스 목록을 로드하는 것입니다. 질문: 예제 코드에서 `ShowLoadingScreen()`과 `HideLoadingScreen()` 함수의 역할은 무엇인가요? 답변: 리소스 [original] | # Events - **ResourceUploadEvent** 월드 플레이 중 생성된 리소스 업로드에 성공했을 때 ResourceService에서 발생하는 이벤트입니다. 이 이벤트는 리소스가 업로드된 월드의 모든 서버에서 발생합니다. # Examples #### PreloadAsync `PreloadAsync()` 함수를 이용하여 리소스 목록을 로드하고, 리소스 로드 중에는 로딩 화면을 보여주는 예제입니다. `ShowLoadingScreen()`,`HideLoadingScreen()` 함수 정의는 생략되었습니다. ``` [chunk_id] | Services:644:2
[task] | wikipedia [title] | ResourceService [category] | Services [rephrased] | # ResourceService `ResourceService`는 게임 내 리소스 관리와 관련된 기능을 제공하는 서비스입니다. 이 서비스는 리소스의 로딩, 캐싱, 메모리 해제, 그리고 클라이언트 기반 스프라이트 업로드 및 검증 기능을 포함합니다. ## 리소스 캐시 관리 리소스는 메모리에서 효율적으로 관리되기 위해 캐시 메커니즘을 사용합니다. `ClearCaches()` 메서드를 호출하면 현재까지 불러온 모든 리소스를 캐시에서 제거할 수 있습니다. 특정 리소스만 캐시에서 제거하려면 `RemoveCaches(List<string> [original] | 리소스와 관련된 기능을 제공하는 서비스입니다. # Methods - **void ClearCaches()** 불러온 모든 리소스를 캐시에서 제거합니다. 리소스를 메모리에서 해제하려면 ClearCaches() 함수로 캐시를 먼저 제거한 후 UnloadUnusedResources() 함수를 사용합니다. - **ResourceType GetTypeAndWait(string RUID) [Yield]** RUID의 리소스 타입을 반환합니다. - **AnimationClip LoadAnimationClipAndWait(string [chunk_id] | Services:644:0
[task] | knowledge_list [title] | ResourceService [category] | Services [rephrased] | 제공된 문서 원문에 포함된 정보만 기반으로 `ResourceService`의 핵심 사실을 정리하면 다음과 같습니다. 1. `_ResourceService:GetTypeAndWait(string ruid)` 메서드는 리소스 ID를 매개변수로 받아 해당 리소스의 타입을 반환하며, `OnBeginPlay`와 같은 메서드 내에서 호출되어 `log`로 출력할 수 있습니다. 2. `_ResourceService:RemoveCaches(table ruids)` 메서드는 `[client only]` 제약 조건 하에 동작하며, 지정된 리소스 ID [original] | #### GetTypeAndWait 리소스 타입을 확인하는 예제입니다. ```lua Method: void OnBeginPlay() { -- sprite local type = _ResourceService:GetTypeAndWait('f55cd1b715c14593a97caff8b147d544') log(type) -- animationclip local type2 = _ResourceService:GetTypeAndWait('235ede11f6a24ecb85f6271833d06ba0') log(type2) } [chunk_id] | Services:644:5
[task] | diverse_qa [title] | ResourceService [category] | Services [rephrased] | 질문: ResourceService는 어떤 기능을 제공하는 서비스인가요? 답변: 리소스와 관련된 기능을 제공하는 서비스입니다. 질문: `ClearCaches()` 메서드의 역할은 무엇인가요? 답변: 불러온 모든 리소스를 캐시에서 제거합니다. 질문: 리소스를 메모리에서 완전히 해제하기 위해 수행해야 하는 순서와 사용하는 함수는 무엇인가요? 답변: 먼저 `ClearCaches()` 함수로 캐시를 제거한 후, `UnloadUnusedResources()` 함수를 사용해야 합니다. 질문: `GetTypeAndWait(string RU [original] | 리소스와 관련된 기능을 제공하는 서비스입니다. # Methods - **void ClearCaches()** 불러온 모든 리소스를 캐시에서 제거합니다. 리소스를 메모리에서 해제하려면 ClearCaches() 함수로 캐시를 먼저 제거한 후 UnloadUnusedResources() 함수를 사용합니다. - **ResourceType GetTypeAndWait(string RUID) [Yield]** RUID의 리소스 타입을 반환합니다. - **AnimationClip LoadAnimationClipAndWait(string [chunk_id] | Services:644:0
[task] | distill [title] | ResourceService [category] | Services [rephrased] | # ResourceService ### GetTypeAndWait 리소스 ID에 해당하는 타입을 반환합니다. ```lua Method: void OnBeginPlay() { local type = _ResourceService:GetTypeAndWait('f55cd1b715c14593a97caff8b147d544') log(type) } ``` ### RemoveCaches 지정한 리소스 ID 목록을 캐시에서 해제합니다. ```lua Method: [client only] void UpgradeSkill(str [original] | #### GetTypeAndWait 리소스 타입을 확인하는 예제입니다. ```lua Method: void OnBeginPlay() { -- sprite local type = _ResourceService:GetTypeAndWait('f55cd1b715c14593a97caff8b147d544') log(type) -- animationclip local type2 = _ResourceService:GetTypeAndWait('235ede11f6a24ecb85f6271833d06ba0') log(type2) } [chunk_id] | Services:644:5
[task] | diverse_qa [title] | ResourceService [category] | Services [rephrased] | 질문: `HandleResourceUploadEvent` 이벤트 핸들러의 실행 공간은 어디인가요? 답변: `HandleResourceUploadEvent`는 `[server only]`로 지정되어 있어 서버에서만 실행됩니다. 질문: `HandleResourceUploadEvent`가 수신하는 이벤트의 서비스 이름은 무엇인가요? 답변: 해당 이벤트는 `ResourceService`에서 발생하며, 핸들러 정의부에 `[service: ResourceService]`라고 명시되어 있습니다. 질문: `HandleResourceUpload [original] | ```lua Event Handler: [server only] [service: ResourceService] HandleResourceUploadEvent { -- Parameters local RUID = event.RUID local UserId = event.UserId -------------------------------------------------------- -- 리소스 업로드에 성공했을 때 서버에서 발생하는 이벤트입니다. local userEntity = _UserService:GetUse [chunk_id] | Services:644:4
[task] | knowledge_list [title] | ResourceService [category] | Services [rephrased] | 1. `ResourceService`는 스크린샷을 스프라이트 리소스로 변환하고 업로드하는 기능을 제공합니다. 2. 스프라이트 업로드를 허용하는 판단 함수는 월드 생성 시점에 등록되어 지속적으로 유지되어야 하므로, `Logic` 컴포넌트의 함수로 작성하는 것이 권장됩니다. 3. 스프라이트 업로드 허용 판단은 서버에서 진행되므로, 해당 콜백 등록 함수는 `[server only]` 실행 공간으로 작성되어야 합니다. 4. `_ResourceService:SetSpriteUploadValidationCallback(callback)` 메서 [original] | `ResourceService`를 이용해 스크린샷을 스프라이트 리소스로 만들어 업로드하는 예제입니다. 유저가 스크린샷을 업로드 했을 때 업로드를 허용하는 함수를 먼저 만들어야 합니다. 업로드 허용 결정 함수는 월드가 생성될 때 등록되고 계속해서 유지되어야 하므로 Logic의 함수로 작성하는 것을 권장합니다. 한 업로드 허용 판단은 서버에서 진행되므로 함수 등록도 서버에서 수행되어야 합니다. 이 예제는 업로드 허가를 받은 유저인지 확인하고 허용 여부를 결정합니다. ```lua [server only] void OnBeginPlay( [chunk_id] | Services:644:3