[task] | extract_knowledge [title] | ResourceService [category] | Services [rephrased] | # ResourceService: HandleResourceUploadEvent ## 개념 설명 `ResourceService`는 리소스 관리와 관련된 기능을 제공하는 서비스입니다. `HandleResourceUploadEvent`는 사용자가 리소스를 업로드했을 때 서버 측에서 발생하는 이벤트를 처리하는 이벤트 핸들러입니다. 이 핸들러를 통해 업로드된 리소스의 고유 식별자(RUID)와 업로드를 수행한 사용자의 ID(UserId)를 획득할 수 있습니다. ## API 사용법 이벤트 핸들러는 `[server only]` 및 `[ser [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] | WorldShopService [category] | Services [rephrased] | `WorldShopService`의 `SetProcessPurchaseCallback` 메서드는 상품 구매가 완료되었을 때 상품 지급을 수행하는 함수를 등록하는 데 사용됩니다. 상품 지급 로직은 서버 환경에서만 실행되므로, 해당 지급 함수를 등록하는 처리 역시 반드시 서버에서 수행되어야 합니다. 또한, 상품 지급 함수는 월드가 생성된 이후에도 지속적으로 유효해야 하므로, 이 함수를 포함하는 스크립트 컴포넌트는 Logic으로 작성하는 것이 권장됩니다. 다음 코드 예제는 월드 시작 시 상품 지급 콜백을 등록하고, 구매 발생 시 호출되 [original] | 구매가 발생했을 때 상품 지급을 실행할 함수와 이 함수를 `WorldShopService`에 등록하는 예제입니다. 상품 지급 함수는 월드가 생성될 때 등록되고 계속 유지되어야 하므로 Logic으로 작성하는 것을 권장합니다. 상품 지급은 서버에서 진행되므로 함수 등록도 서버에서 수행되어야 합니다. ```lua Method: [server only] void OnBeginPlay () { -- 상품 지급 콜백을 등록합니다. _WorldShopService:SetProcessPurchaseCallback(self.ProcessPur [chunk_id] | Services:645:1
[task] | extract_knowledge [title] | ResourceService [category] | Services [rephrased] | # ResourceService: 리소스 사전 로딩 및 업로드 검증 ## 1. 개념 설명 `ResourceService`는 월드 내 리소스(스프라이트, 모델 등)의 관리와 로딩을 담당하는 서비스입니다. 이 절에서는 클라이언트에서 리소스를 미리 로드하는 `PreloadAsync` 메서드의 사용법과, 리소스 업로드 성공 시 발생하는 `ResourceUploadEvent`에 대해 다룹니다. * **PreloadAsync**: 클라이언트에서 특정 리소스 ID 목록을 비동기로 로드합니다. 로드가 완료되면 전달된 콜백 함수가 실행됩니 [original] | # Events - **ResourceUploadEvent** 월드 플레이 중 생성된 리소스 업로드에 성공했을 때 ResourceService에서 발생하는 이벤트입니다. 이 이벤트는 리소스가 업로드된 월드의 모든 서버에서 발생합니다. # Examples #### PreloadAsync `PreloadAsync()` 함수를 이용하여 리소스 목록을 로드하고, 리소스 로드 중에는 로딩 화면을 보여주는 예제입니다. `ShowLoadingScreen()`,`HideLoadingScreen()` 함수 정의는 생략되었습니다. ``` [chunk_id] | Services:644:2
[task] | distill [title] | WorldShopService [category] | Services [rephrased] | **WorldShopService: SetProcessPurchaseCallback** 구매 발생 시 상품 지급을 처리하는 콜백 함수를 등록합니다. * **실행 공간:** `[server only]` (상품 지급 및 함수 등록은 서버에서만 수행) * **작성 권장:** 월드 생성 시 등록 후 유지되므로 `Logic`으로 작성 권장 **API 시그니처** ```lua void SetProcessPurchaseCallback(function callback) ``` **콜백 함수 규칙** * **파라미터:** `any [original] | 구매가 발생했을 때 상품 지급을 실행할 함수와 이 함수를 `WorldShopService`에 등록하는 예제입니다. 상품 지급 함수는 월드가 생성될 때 등록되고 계속 유지되어야 하므로 Logic으로 작성하는 것을 권장합니다. 상품 지급은 서버에서 진행되므로 함수 등록도 서버에서 수행되어야 합니다. ```lua Method: [server only] void OnBeginPlay () { -- 상품 지급 콜백을 등록합니다. _WorldShopService:SetProcessPurchaseCallback(self.ProcessPur [chunk_id] | Services:645:1
[task] | knowledge_list [title] | WorldShopService [category] | Services [rephrased] | 1. `WorldShopService`의 `SetProcessPurchaseCallback` 메서드는 상품 구매 발생 시 실행될 상품 지급 함수(콜백)를 등록하는 용도로 사용됩니다. 2. 상품 지급 함수는 월드 생성 시점에 등록되어 계속 유지되어야 하므로, 등록 로직은 `OnBeginPlay` 이벤트 핸들러 또는 초기화 로직이 포함된 컴포넌트의 `Logic`으로 작성하는 것이 권장됩니다. 3. 상품 지급 처리는 서버에서만 진행되므로, `SetProcessPurchaseCallback` 메서드를 호출하여 함수를 등록하는 작업도 반드시 [original] | 구매가 발생했을 때 상품 지급을 실행할 함수와 이 함수를 `WorldShopService`에 등록하는 예제입니다. 상품 지급 함수는 월드가 생성될 때 등록되고 계속 유지되어야 하므로 Logic으로 작성하는 것을 권장합니다. 상품 지급은 서버에서 진행되므로 함수 등록도 서버에서 수행되어야 합니다. ```lua Method: [server only] void OnBeginPlay () { -- 상품 지급 콜백을 등록합니다. _WorldShopService:SetProcessPurchaseCallback(self.ProcessPur [chunk_id] | Services:645:1
[task] | diverse_qa [title] | ResourceService [category] | Services [rephrased] | 질문: `ResourceService`를 이용하면 어떤 작업을 수행할 수 있나요? 답변: `ResourceService`를 이용하면 스크린샷을 스프라이트 리소스로 만들어 업로드하는 작업을 수행할 수 있습니다. 질문: 스프라이트 업로드를 허용하는 결정 함수를 작성할 때 권장되는 위치는 어디인가요? 답변: 월드가 생성될 때 등록되고 계속해서 유지되어야 하므로 Logic의 함수로 작성하는 것을 권장합니다. 질문: 스프라이트 업로드 허용 판단은 어디에서 진행되나요? 답변: 한 업로드 허용 판단은 서버에서 진행됩니다. 질문: 스프라이트 [original] | `ResourceService`를 이용해 스크린샷을 스프라이트 리소스로 만들어 업로드하는 예제입니다. 유저가 스크린샷을 업로드 했을 때 업로드를 허용하는 함수를 먼저 만들어야 합니다. 업로드 허용 결정 함수는 월드가 생성될 때 등록되고 계속해서 유지되어야 하므로 Logic의 함수로 작성하는 것을 권장합니다. 한 업로드 허용 판단은 서버에서 진행되므로 함수 등록도 서버에서 수행되어야 합니다. 이 예제는 업로드 허가를 받은 유저인지 확인하고 허용 여부를 결정합니다. ```lua [server only] void OnBeginPlay( [chunk_id] | Services:644:3
[task] | extract_knowledge [title] | ResourceService [category] | Services [rephrased] | # ResourceService 이벤트 관리 `ResourceService`는 리소스 관련 이벤트를 발생시키고, 특정 이벤트 발생을 감지하여 대응하는 기능을 제공합니다. 이 서비스는 `ConnectEvent`를 통해 이벤트 수신기를 등록하고, `SendEvent`를 통해 이벤트를 브로드캐스트하며, `DisconnectEvent`를 통해 등록된 수신기를 제거하는 방식으로 동작합니다. ## API 사용법 ### 이벤트 연결 (ConnectEvent) 특정 이벤트가 발생했을 때 실행될 핸들러 함수를 등록합니다. 두 가지 오버로드가 [original] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지 [chunk_id] | Services:644:1
[task] | wikipedia [title] | ResourceService [category] | Services [rephrased] | # ResourceService `ResourceService`는 스크린샷 데이터를 스프라이트 리소스로 변환하여 업로드하는 기능을 제공하는 서비스입니다. 이 서비스의 사용 시나리오와 구현 방식은 서버 측 업로드 검증, 클라이언트 측 캡처 및 업로드 요청, 그리고 업로드 완료 시 이벤트 처리로 나뉩니다. ## 업로드 검증 콜백 등록 유저가 스크린샷을 업로드할 수 있는지 여부를 결정하는 검증 함수를 사전에 등록해야 합니다. 이 검증 결정은 서버에서 수행되므로, 해당 함수는 서버에서 실행되어야 하며 월드가 생성될 때 등록되어 지속적 [original] | `ResourceService`를 이용해 스크린샷을 스프라이트 리소스로 만들어 업로드하는 예제입니다. 유저가 스크린샷을 업로드 했을 때 업로드를 허용하는 함수를 먼저 만들어야 합니다. 업로드 허용 결정 함수는 월드가 생성될 때 등록되고 계속해서 유지되어야 하므로 Logic의 함수로 작성하는 것을 권장합니다. 한 업로드 허용 판단은 서버에서 진행되므로 함수 등록도 서버에서 수행되어야 합니다. 이 예제는 업로드 허가를 받은 유저인지 확인하고 허용 여부를 결정합니다. ```lua [server only] void OnBeginPlay( [chunk_id] | Services:644:3
[task] | distill [title] | WorldShopService [category] | Services [rephrased] | # WorldShopService 유료 재화를 통한 월드 내 상품 구매 기능을 제공합니다. ## Methods - **WorldShopProduct GetProductAndWait(string productId) [Yield]** 상품 정보를 얻습니다. 스크립트 실행을 중단합니다. - **출시된 월드**: `Waiting`, `Ing`, `End` 상태 상품 조회 가능. - **제작 중인 월드**: `Register`, `Waiting`, `Ing`, `End` 상태 상품 조회 가능. - **WorldShopPro [original] | 유료 재화를 통한 월드 내 상품 구매 관련 기능을 제공합니다. # Methods - **WorldShopProduct GetProductAndWait(string productId) [Yield]** 상품의 정보를 얻습니다. 수행하는 동안 스크립트 실행을 중단합니다. 출시된 월드에서는 Waiting, Ing, End 상태의 상품의 정보를 얻을 수 있고, 제작 중인 월드에서는 Register, Waiting, Ing, End 상태의 상품의 정보를 얻을 수 있습니다. - **WorldShopProductPages GetProdu [chunk_id] | Services:645:0
[task] | distill [title] | WorldShopService [category] | Services [rephrased] | # WorldShopService **GiveCoin1000** - **시그니처**: `[server only] boolean GiveCoin1000(EntityRef userEntity)` - **동작**: 대상 엔티티의 `WalletComponent`에 1000 코인 지급. - **주의사항**: `WalletComponent`가 `nil`이면 `false` 반환. 정상 지급 시 `true` 반환. ```lua [server only] boolean GiveCoin1000(EntityRef userEntity) { lo [original] | [server only] boolean GiveCoin1000 (EntityRef userEntity) { local walletComponent = userEntity.WalletComponent if walletComponent == nil then return false end -- 유저에게 1000 코인 지급 walletComponent:AddCoin(1000) -- 상품 지급 성공 return true } ``` [chunk_id] | Services:645:3
[task] | distill [title] | WorldShopService [category] | Services [rephrased] | # WorldShopService `_WorldShopService:SetProcessPurchaseCallback(callback)` 로 상품 지급 콜백을 등록합니다. 콜백은 `WorldShopPurchaseInfo`를 인자로 받아 `boolean`을 반환해야 합니다. - **true**: 지급 성공. 구매 완료 처리. - **false**: 지급 실패. 유저가 다음에 월드에 접속할 때 재시도. `WorldShopPurchaseInfo` 주요 필드: `UserId`, `ProductId`, `PurchaseId`, `Orde [original] | 상품 지급 함수는 `WorldShopPurchaseInfo`를 매개 변수로 받고 boolean을 반환해야 합니다. `WorldShopPurchaseInfo`에는 구매한 유저, 구매한 상품과 같은 처리할 구매의 정보가 들어있습니다. 이를 이용해 상품을 지급하거나 지급하지 않을지 여부를 결정합니다. 상품 지급이 정상적으로 진행되어 구매를 완료시키려면 true를 리턴합니다. 만약 상품을 지급할 수 없다고 판단되어 정상적인 구매 과정을 수행할 수 없다면 false를 리턴합니다. false를 리턴한 구매의 경우, 구매를 수행한 유저가 다음에 [chunk_id] | Services:645:2
[task] | diverse_qa [title] | WorldShopService [category] | Services [rephrased] | 질문: `WorldShopService`의 상품 지급 함수는 언제 등록되어야 하며, 어떤 로직으로 작성하는 것이 권장되는가? 답변: 상품 지급 함수는 월드가 생성될 때 등록되고 계속 유지되어야 하므로 Logic으로 작성하는 것을 권장합니다. 질문: 상품 지급 처리는 어디서 진행되므로 함수 등록도 어디서 수행되어야 하는가? 답변: 상품 지급은 서버에서 진행되므로 함수 등록도 서버에서 수행되어야 합니다. 질문: 아래 코드는 무엇을 하는 코드인가? ```lua [server only] void OnBeginPlay () { _Wor [original] | 구매가 발생했을 때 상품 지급을 실행할 함수와 이 함수를 `WorldShopService`에 등록하는 예제입니다. 상품 지급 함수는 월드가 생성될 때 등록되고 계속 유지되어야 하므로 Logic으로 작성하는 것을 권장합니다. 상품 지급은 서버에서 진행되므로 함수 등록도 서버에서 수행되어야 합니다. ```lua Method: [server only] void OnBeginPlay () { -- 상품 지급 콜백을 등록합니다. _WorldShopService:SetProcessPurchaseCallback(self.ProcessPur [chunk_id] | Services:645:1
[task] | wikipedia [title] | WorldShopService [category] | Services [rephrased] | `WorldShopService` 컴포넌트에는 서버 전용(`[server only]`)으로 실행되는 `GiveCoin1000` 메서드가 포함되어 있습니다. 이 메서드는 지정된 엔티티에게 1,000 코인을 지급하는 기능을 수행하며, 인수로 `EntityRef` 타입의 `userEntity`를 받아 처리 대상 유저를 식별합니다. 메서드 내부에서는 먼저 `userEntity`의 `WalletComponent`에 접근하여 지갑 컴포넌트를 가져옵니다. 만약 해당 엔티티에 지갑 컴포넌트가 존재하지 않아 `nil` 값이 반환되는 경우, 메서드 [original] | [server only] boolean GiveCoin1000 (EntityRef userEntity) { local walletComponent = userEntity.WalletComponent if walletComponent == nil then return false end -- 유저에게 1000 코인 지급 walletComponent:AddCoin(1000) -- 상품 지급 성공 return true } ``` [chunk_id] | Services:645:3
[task] | diverse_qa [title] | WorldShopService [category] | Services [rephrased] | 질문: WorldShopService는 어떤 기능을 제공하는 서비스인가요? 답변: WorldShopService는 유료 재화를 통한 월드 내 상품 구매 관련 기능을 제공하는 서비스입니다. 질문: GetProductAndWait 메서드는 어떤 특성을 가지고 있나요? 답변: GetProductAndWait 메서드는 상품의 정보를 얻으며, 수행하는 동안 스크립트 실행을 중단하는 [Yield] 특성을 가지고 있습니다. 질문: 출시된 월드에서 GetProductAndWait로 정보를 얻을 수 있는 상품 상태는 무엇인가요? 답변: 출시된 [original] | 유료 재화를 통한 월드 내 상품 구매 관련 기능을 제공합니다. # Methods - **WorldShopProduct GetProductAndWait(string productId) [Yield]** 상품의 정보를 얻습니다. 수행하는 동안 스크립트 실행을 중단합니다. 출시된 월드에서는 Waiting, Ing, End 상태의 상품의 정보를 얻을 수 있고, 제작 중인 월드에서는 Register, Waiting, Ing, End 상태의 상품의 정보를 얻을 수 있습니다. - **WorldShopProductPages GetProdu [chunk_id] | Services:645:0
[task] | knowledge_list [title] | WorldShopService [category] | Services [rephrased] | 제시된 원문에 포함된 정보만을 기반으로 WorldShopService의 핵심 사실을 추출하여 목록으로 정리합니다. 1. `GiveCoin1000` 메서드는 서버에서만 실행되는 `[server only]` 제약이 적용된 함수입니다. 2. `GiveCoin1000` 메서드는 `EntityRef` 타입의 `userEntity` 매개변수를 하나만 받습니다. 3. `GiveCoin1000` 메서드의 반환 타입은 `boolean`입니다. 4. 메서드 내부에서는 `userEntity`의 `WalletComponent` 프로퍼티에 직접 접근하여 [original] | [server only] boolean GiveCoin1000 (EntityRef userEntity) { local walletComponent = userEntity.WalletComponent if walletComponent == nil then return false end -- 유저에게 1000 코인 지급 walletComponent:AddCoin(1000) -- 상품 지급 성공 return true } ``` [chunk_id] | Services:645:3
[task] | distill [title] | FaceActionStateChangeEvent [category] | Events [rephrased] | # FaceActionStateChangeEvent Face Action의 상태가 변경되었을 때 발생하는 이벤트입니다. ## Properties - `MapleAvatarFaceActionState ActionState`: 변경된 상태 ## Constructors - `FaceActionStateChangeEvent()`: 기본값으로 초기화 [original] | Face Action의 상태가 변경되었을 때 발생하는 이벤트입니다. # Properties - **MapleAvatarFaceActionState ActionState** 변경된 상태입니다. # Constructors - **FaceActionStateChangeEvent()** 기본값으로 FaceActionStateChangeEvent를 초기화합니다. [chunk_id] | Events:648:0
[task] | wikipedia [title] | ResourceService [category] | Services [rephrased] | # ResourceService **ResourceService**는 메이플스토리 월드 스크립트 환경에서 리소스(스프라이트, 애니메이션 클립 등)의 타입 확인, 캐시 관리, 그리고 비동기 로드를 담당하는 서비스입니다. 스크립트 컴포넌트에서 해당 서비스는 언더스코어 접두가 붙은 `_ResourceService` 변수를 통해 접근합니다. ## 리소스 타입 확인: GetTypeAndWait `GetTypeAndWait` 메서드는 특정 리소스 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] | wikipedia [title] | FaceActionStateChangeEvent [category] | Events [rephrased] | **FaceActionStateChangeEvent**는 메이플스토리 월드 스크립트 환경에서 캐릭터의 표정 액션(Face Action) 상태가 변경될 때 발생하는 이벤트 객체입니다. 이 이벤트를 통해 개발자는 캐릭터의 표정 변화 시점을 감지하고 이에 따른 로직을 처리할 수 있습니다. 이벤트 객체는 `MapleAvatarFaceActionState` 타입의 `ActionState` 속성을 포함하며, 이는 이벤트 발생 시점의 변경된 표정 상태를 나타냅니다. 또한, `FaceActionStateChangeEvent()` 생성자를 제공하 [original] | Face Action의 상태가 변경되었을 때 발생하는 이벤트입니다. # Properties - **MapleAvatarFaceActionState ActionState** 변경된 상태입니다. # Constructors - **FaceActionStateChangeEvent()** 기본값으로 FaceActionStateChangeEvent를 초기화합니다. [chunk_id] | Events:648:0
[task] | knowledge_list [title] | WorldShopService [category] | Services [rephrased] | WorldShopService는 유료 재화를 사용하여 월드 내 상품을 구매하는 기능을 제공합니다. `WorldShopService:GetProductAndWait(string productId)`는 [Yield] 속성을 가지며, 매개변수 `productId`를 받아 `WorldShopProduct` 타입의 상품 정보를 반환하고 실행 중 스크립트 실행을 중단하며, 출시된 월드에서는 Waiting, Ing, End 상태의 상품만, 제작 중인 월드에서는 Register, Waiting, Ing, End 상태의 상품 정보를 조회할 수 있 [original] | 유료 재화를 통한 월드 내 상품 구매 관련 기능을 제공합니다. # Methods - **WorldShopProduct GetProductAndWait(string productId) [Yield]** 상품의 정보를 얻습니다. 수행하는 동안 스크립트 실행을 중단합니다. 출시된 월드에서는 Waiting, Ing, End 상태의 상품의 정보를 얻을 수 있고, 제작 중인 월드에서는 Register, Waiting, Ing, End 상태의 상품의 정보를 얻을 수 있습니다. - **WorldShopProductPages GetProdu [chunk_id] | Services:645:0
[task] | wikipedia [title] | WorldShopService [category] | Services [rephrased] | # WorldShopService `WorldShopService`는 월드 숍(World Shop)과 관련된 기능을 제공하는 서비스입니다. 이 서비스는 `_WorldShopService`라는 언더스코어 접두어를 사용하여 접근합니다. ## GetProductsAndWait `GetProductsAndWait()` 메서드는 지정된 조건에 해당하는 상품 목록을 검색하고 결과를 반환합니다. 이 메서드는 `WorldShopProductPages` 타입의 객체를 리턴하며, 검색 결과가 많을 경우 데이터를 페이지 단위로 분리하여 처리할 수 [original] | #### GetProductsAndWait `GetProductsAndWait()` 함수를 이용해 조건에 해당하는 상품들을 검색할 수 있습니다. 이 함수가 리턴하는 `WorldShopProductPages` 타입의 객체는 검색된 결과가 많을 경우 결과를 페이지 단위로 나눠 구할 수 있게 해줍니다. ```lua Method: void SearchOnSaleItems () { -- 상품 종류가 아이템이고, 판매 상태가 판매 중인 상품을 검색합니다. local pages = _WorldShopService:GetProductsAn [chunk_id] | Services:645:4
[task] | wikipedia [title] | WorldShopService [category] | Services [rephrased] | # WorldShopService WorldShopService는 메이플스토리 월드에서 유료 재화를 사용하여 상품을 구매하는 기능을 제공하는 서비스입니다. 이 서비스는 상품 정보 조회, 구매 창 표시, 구매 처리 콜백 설정, 그리고 이용권 보유 여부 확인 등 월드 내 상점 운영에 필요한 핵심 기능을 담당합니다. ## Methods ### GetProductAndWait `WorldShopProduct GetProductAndWait(string productId)` 상품의 상세 정보를 가져옵니다. 이 메서드는 비동기(Yiel [original] | 유료 재화를 통한 월드 내 상품 구매 관련 기능을 제공합니다. # Methods - **WorldShopProduct GetProductAndWait(string productId) [Yield]** 상품의 정보를 얻습니다. 수행하는 동안 스크립트 실행을 중단합니다. 출시된 월드에서는 Waiting, Ing, End 상태의 상품의 정보를 얻을 수 있고, 제작 중인 월드에서는 Register, Waiting, Ing, End 상태의 상품의 정보를 얻을 수 있습니다. - **WorldShopProductPages GetProdu [chunk_id] | Services:645:0
[task] | knowledge_list [title] | WorldShopService [category] | Services [rephrased] | - `WorldShopService`의 상품 지급 함수는 `WorldShopPurchaseInfo` 객체를 매개 변수로 받아 `boolean` 타입을 반환해야 합니다. - `WorldShopPurchaseInfo` 구조체에는 구매를 수행한 유저 정보, 구매한 상품 정보 등 구매 처리에 필요한 데이터가 포함되어 있습니다. - 상품 지급이 정상적으로 완료되어 구매 절차를 성공적으로 종료하려면 상품 지급 함수는 `true`를 반환해야 합니다. - 상품 지급이 불가능하여 정상적인 구매 과정을 수행할 수 없는 경우 상품 지급 함수는 `fal [original] | 상품 지급 함수는 `WorldShopPurchaseInfo`를 매개 변수로 받고 boolean을 반환해야 합니다. `WorldShopPurchaseInfo`에는 구매한 유저, 구매한 상품과 같은 처리할 구매의 정보가 들어있습니다. 이를 이용해 상품을 지급하거나 지급하지 않을지 여부를 결정합니다. 상품 지급이 정상적으로 진행되어 구매를 완료시키려면 true를 리턴합니다. 만약 상품을 지급할 수 없다고 판단되어 정상적인 구매 과정을 수행할 수 없다면 false를 리턴합니다. false를 리턴한 구매의 경우, 구매를 수행한 유저가 다음에 [chunk_id] | Services:645:2
[task] | knowledge_list [title] | FaceActionStateChangeEvent [category] | Events [rephrased] | * `FaceActionStateChangeEvent`는 Face Action의 상태가 변경되었을 때 발생하는 이벤트입니다. * `FaceActionStateChangeEvent`는 `MapleAvatarFaceActionState` 타입의 `ActionState` 프로퍼티를 가지며, 이 프로퍼티에는 변경된 상태 값이 저장됩니다. * `FaceActionStateChangeEvent`는 매개변수가 없는 기본 생성자 `FaceActionStateChangeEvent()`를 제공하여 기본값으로 객체를 초기화합니다. [original] | Face Action의 상태가 변경되었을 때 발생하는 이벤트입니다. # Properties - **MapleAvatarFaceActionState ActionState** 변경된 상태입니다. # Constructors - **FaceActionStateChangeEvent()** 기본값으로 FaceActionStateChangeEvent를 초기화합니다. [chunk_id] | Events:648:0
[task] | distill [title] | WorldShopService [category] | Services [rephrased] | ### WorldShopService: GetProductsAndWait 조건에 맞는 상품을 검색하고, 결과를 페이지 단위로 처리하기 위한 비동기 함수입니다. ```lua WorldShopProductPages GetProductsAndWait(WorldShopProductType type, WorldShopProductStatus status) ``` **리턴 값: `WorldShopProductPages`** 검색 결과가 많을 경우 페이지 단위로 나누어 접근할 수 있도록 합니다. 주요 멤버: * `GetCurrentPa [original] | #### GetProductsAndWait `GetProductsAndWait()` 함수를 이용해 조건에 해당하는 상품들을 검색할 수 있습니다. 이 함수가 리턴하는 `WorldShopProductPages` 타입의 객체는 검색된 결과가 많을 경우 결과를 페이지 단위로 나눠 구할 수 있게 해줍니다. ```lua Method: void SearchOnSaleItems () { -- 상품 종류가 아이템이고, 판매 상태가 판매 중인 상품을 검색합니다. local pages = _WorldShopService:GetProductsAn [chunk_id] | Services:645:4
[task] | diverse_qa [title] | WorldShopService [category] | Services [rephrased] | 질문: `GiveCoin1000` 메서드는 어떤 실행 공간에서 동작합니까? 답변: `GiveCoin1000` 메서드는 `[server only]` 실행 공간에서 동작합니다. 질문: `GiveCoin1000` 메서드의 반환 타입은 무엇입니까? 답변: `GiveCoin1000` 메서드의 반환 타입은 `boolean`입니다. 질문: `GiveCoin1000` 메서드는 어떤 인자를 받습니까? 답변: `GiveCoin1000` 메서드는 `EntityRef` 타입의 `userEntity` 인자를 받습니다. 질문: `GiveCoin1000 [original] | [server only] boolean GiveCoin1000 (EntityRef userEntity) { local walletComponent = userEntity.WalletComponent if walletComponent == nil then return false end -- 유저에게 1000 코인 지급 walletComponent:AddCoin(1000) -- 상품 지급 성공 return true } ``` [chunk_id] | Services:645:3
[task] | extract_knowledge [title] | WorldShopService [category] | Services [rephrased] | # WorldShopService 상품 지급 처리 ## 개념 설명 `WorldShopService`는 플레이어의 상품 구매가 완료되었을 때 실행될 상품 지급 로직을 처리하는 서비스입니다. 구매 이벤트 발생 시 서버에서 상품 지급 함수를 호출하며, 이 함수는 `purchaseInfo` 객체를 인자로 받아 구매 정보를 확인하고 지급 처리를 수행합니다. 상품 지급은 서버 환경에서만 이루어지므로, 지급 함수의 정의 및 등록 모두 서버 공간(`[server only]`)에서 수행되어야 합니다. 또한, 월드가 생성된 시점에 한 번만 등록되어 [original] | 구매가 발생했을 때 상품 지급을 실행할 함수와 이 함수를 `WorldShopService`에 등록하는 예제입니다. 상품 지급 함수는 월드가 생성될 때 등록되고 계속 유지되어야 하므로 Logic으로 작성하는 것을 권장합니다. 상품 지급은 서버에서 진행되므로 함수 등록도 서버에서 수행되어야 합니다. ```lua Method: [server only] void OnBeginPlay () { -- 상품 지급 콜백을 등록합니다. _WorldShopService:SetProcessPurchaseCallback(self.ProcessPur [chunk_id] | Services:645:1
[task] | extract_knowledge [title] | FaceActionStateChangeEvent [category] | Events [rephrased] | # FaceActionStateChangeEvent ## 개념 설명 `FaceActionStateChangeEvent`는 캐릭터의 Face Action(표정) 상태가 변경되었을 때 발생하는 이벤트 객체입니다. 이 이벤트를 통해 현재 변경된 표정 상태 정보를 조회할 수 있습니다. ## API 사용법 ### Properties | 속성명 | 타입 | 설명 | | :--- | :--- | :--- | | `ActionState` | `MapleAvatarFaceActionState` | 변경된 Face Action 상태입니다. | [original] | Face Action의 상태가 변경되었을 때 발생하는 이벤트입니다. # Properties - **MapleAvatarFaceActionState ActionState** 변경된 상태입니다. # Constructors - **FaceActionStateChangeEvent()** 기본값으로 FaceActionStateChangeEvent를 초기화합니다. [chunk_id] | Events:648:0
[task] | diverse_qa [title] | ResourceService [category] | Services [rephrased] | 질문: `_ResourceService:GetTypeAndWait` 메서드는 어떤 목적으로 사용되는가? 답변: `_ResourceService:GetTypeAndWait` 메서드는 특정 리소스 ID를 입력받아 해당 리소스의 타입을 확인하기 위해 사용된다. 질문: 다음 코드에서 `log(type)`은 어떤 값을 출력할 가능성이 높은가? ```lua local type = _ResourceService:GetTypeAndWait('f55cd1b715c14593a97caff8b147d544') log(type) ``` 답변: 문서의 주 [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] | extract_knowledge [title] | WorldShopService [category] | Services [rephrased] | # WorldShopService `WorldShopService`는 서버 사이드에서 유저의 지갑(Wallet)을 조작하여 코인 지급 등을 처리하는 서비스입니다. ## 개념 설명 이 서비스는 특정 엔티티의 `WalletComponent`에 접근하여 코인을 추가하는 기능을 제공합니다. 주로 스크립트 서버 로직 내에서 유저에게 보상을 지급할 때 사용되며, 클라이언트 사이드에서는 접근할 수 없습니다. ## API 사용법 ### `GiveCoin1000` 지정된 유저 엔티티에게 1,000 코인을 지급합니다. * **실행 공간* [original] | [server only] boolean GiveCoin1000 (EntityRef userEntity) { local walletComponent = userEntity.WalletComponent if walletComponent == nil then return false end -- 유저에게 1000 코인 지급 walletComponent:AddCoin(1000) -- 상품 지급 성공 return true } ``` [chunk_id] | Services:645:3
[task] | diverse_qa [title] | FaceActionStateChangeEvent [category] | Events [rephrased] | 질문: FaceActionStateChangeEvent는 언제 발생하는 이벤트인가요? 답변: Face Action의 상태가 변경되었을 때 발생하는 이벤트입니다. 질문: FaceActionStateChangeEvent에서 상태 변경 내용을 확인하기 위해 사용할 수 있는 프로퍼티 이름은 무엇인가요? 답변: MapleAvatarFaceActionState 타입의 ActionState 프로퍼티입니다. 질문: FaceActionStateChangeEvent의 ActionState 프로퍼티는 어떤 타입인가요? 답변: MapleAvatarF [original] | Face Action의 상태가 변경되었을 때 발생하는 이벤트입니다. # Properties - **MapleAvatarFaceActionState ActionState** 변경된 상태입니다. # Constructors - **FaceActionStateChangeEvent()** 기본값으로 FaceActionStateChangeEvent를 초기화합니다. [chunk_id] | Events:648:0