← 목록

mLua · Nemotron SDG 질문-응답 (SFT)

총 21,567개 · 페이지 444/719
🔀 랜덤
불러오는 중…

[task] | single_turn [pass] | ⏳ 미판정 [title] | 월드 숍 서비스 활용하기 [question] | userEntity가 유효하지 않을 때 log_error를 출력하고 false를 반환하는 코드가 필요한 구체적인 이유는 무엇인가요? [answer] | `userEntity`가 유효하지 않을 때 `log_error`를 출력하고 `false`를 반환하는 구체적인 이유는 상품 지급의 무결성을 보장하기 위함입니다. `ProcessPurchase` 콜백은 상품 구매가 성공적으로 완료되었을 때 서버가 상품을 실제로 지급하는 로직을 실행하는 함수입니다. 이 함수의 반환값(`true`/`false`)은 구매 트랜잭션의 최종 처리 상태를 나타냅니다. 1. **상품 지급 실패 방지**: `userEntity`가 유효하지 않다는 것은 해당 사용자 엔티티를 서버에서 찾을 수 없거나 접근할 수 없 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **MyShopLogic**에 포션 상품 구매에 성공하는 경우 포션 100개를 얻을 수 있도록 아래와 같이 입력합니다. `WorldShopService:SetProcessPurchaseCallback`을 활용해 상품 구매가 발생했을 때 상품을 지급합니다. 상품을 지급이 성공하면 true를, 실패하면 false를 반환해야 합니다. ```lua Method: [server only] void OnBeginPlay() { _WorldShopService:SetProcessPurchaseCallback(self.ProcessPu

[task] | code [pass] | ⏳ 미판정 [title] | 상품 관리하기 [question] | _SharedDataService 또는 로컬 저장소 API 를 사용하여 유저가 구매한 상품 목록을 관리하고, 월드에서 조회 가능한 상태(판매 대기, 판매 중, 판매 종료)의 상품만 필터링하여 리스트 형태로 표시하는 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 `_SharedDataService` 또는 로컬 저장소 API에 대한 설명이 포함되어 있지 않습니다. 또한, 월드에서 상품 목록을 조회하고 필터링하는 데 사용할 수 있는 특정 mLua 서비스(예: ShopService 등)나 API 메서드 명세도 문서에 없습니다. 따라서 제공된 문서 근거만으로 유저의 구매 내역을 저장하거나, 상품 목록을 조회 및 필터링하는 실제 작동 가능한 mLua 스크립트를 작성하는 것은 불가능합니다. 참고 문서에서 확인 가능한 정보는 다음과 같습니다: 1. **상품 상태별 조회 가능 여 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 월드 숍 뷰어의 활용 방법과 상품 상태별 기능 제한에 대해 알아봅시다. # World Shop Viewer 메이커에서 상품을 등록하고, 관리할 수 있는 창입니다. 등록한 상품 종류에 따라 각 폴더에 자동으로 분류됩니다. 주요 콘텍스트 메뉴는 아래와 같습니다. | 이름 | 설명 | | --- | --- | | Copy Item ID | 등록한 상품의 ID를 복사합니다. | | Copy Item Thumbnail RUID | 등록한 상품의 섬네일 RUID를 복사합니다. | | Create New Item

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 배지 서비스 활용하기 [question] | `HandleTriggerEnterEvent` 핸들러에서 트리거에 진입한 엔티티가 `SendBadgeInfo` 컴포넌트를 가진 경우에만 배지를 지급하도록 판별하는 조건문 코드만 출력하세요. [answer] | ```lua if TriggerBodyEntity.SendBadgeInfo then self:GetBadge(TriggerBodyEntity.SendBadgeInfo.BadgeInfo) end ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 특정 장소를 지나가는 플레이어에게 배지를 지급해봅시다. 1. 플레이어 캐릭터가 배지를 획득할 장소 역할을 할 오브젝트를 골라 월드에 배치합니다. 2. 오브젝트에 **TriggerComponent**를 추가합니다. 3. Workspace - MyDesk에 새로운 **SendBadgeInfo 컴포넌트**를 생성하고, 배지를 획득하는 장소 오브젝트에 추가합니다. 4. 스크립트 에디터를 열어 **SendBadgeInfo 컴포넌트**에 배지 ID를 확인하기 위한 프로퍼티를 추가합니다. ```lua Property:

[task] | two_turn [pass] | ⏳ 미판정 [title] | 배지 관리하기 [question] | Badge Viewer의 주요 콘텍스트 메뉴와 배지 등록 관리 기능에 대해 알려주세요. [answer] | Badge Viewer는 메이커에서 배지를 등록하고 관리할 수 있는 창입니다. 등록한 배지는 배지 등급에 따라 각각의 폴더에 자동으로 분류되며, 등록한 배지에 마우스를 올리면 배지 정보를 확인할 수 있습니다. 주요 콘텍스트 메뉴와 기능은 다음과 같습니다. | 메뉴 이름 | 설명 | | :--- | :--- | | Copy Badge ID | 등록한 배지의 ID를 복사합니다. | | Copy Badge Thumbnail RUID | 등록한 배지의 섬네일 RUID를 복사합니다. | | Create New Badge | 새로운 배지를 [followup] | 획득 대기 상태의 배지를 월드에서 노출하지 않고 검색 결과에서도 숨기려면 어떤 상태 변경과 메뉴를 사용해야 하나요? [followup_answer] | 획득 대기 상태의 배지를 월드에서 노출하지 않고 검색 결과에서도 숨기려면, 해당 배지를 **미출시** 상태로 변경해야 합니다. 문서에는 "전체 배지를 검색할 때 획득 대기 상태인 배지를 노출하지 않으려면, 해당 배지를 미출시 상태로 변경하여 조회되지 않도록 할 수 있습니다"라고 명시되어 있습니다. 미출시 상태가 되면 다음과 같은 효과가 적용됩니다. * **월드에서 정보 조회:** 불가 * **월드에서 배지 노출:** 노출 안 됨 * **공식 홈페이지 배지 노출:** 노출 안 됨 배지 상태를 변경하려면 Badge Vi [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 배지 뷰어와 활용 방법, 배지 상태별 기능 제한에 대해 알아봅시다. # Badge Viewer 메이커에서 배지를 등록하고, 관리할 수 있는 창입니다. 등록한 배지는 배지 등급에 따라 각각의 폴더에 자동으로 분류됩니다. 주요 콘텍스트 메뉴는 아래와 같습니다. | 메뉴 이름 | 설명 | | ----- | --- | | Copy Badge ID | 등록한 배지의 ID를 복사합니다. | | Copy Badge Thumbnail RUID | 등록한 배지의 섬네일 RUID를 복사합니다. | | Create New

[task] | code [pass] | ⏳ 미판정 [title] | 배지 관리하기 [question] | 배지 상태가 '획득 가능'인 배지 목록을 조회하여 월드에 노출하는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 배지 상태별 기능 제한(미출시, 획득 대기, 획득 가능 등)과 배지 조회가 가능한 상태에 대한 설명만 포함되어 있습니다. 그러나 **mLua 스크립트에서 배지 목록을 조회하거나 특정 상태(예: '획득 가능')의 배지를 필터링하여 가져오는 API, 메서드, 이벤트 핸들러, 또는 컴포넌트가 무엇인지에 대한 구체적인 기술적 정보가 문서에 없습니다.** 문서에는 "배지 서비스 활용하기"라는 별도 가이드가 존재한다고만 언급되어 있을 뿐, 해당 서비스의 실제 코드 사용법(`_BadgeService` 또는 유사한 서비스 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 배지 뷰어와 활용 방법, 배지 상태별 기능 제한에 대해 알아봅시다. # Badge Viewer 메이커에서 배지를 등록하고, 관리할 수 있는 창입니다. 등록한 배지는 배지 등급에 따라 각각의 폴더에 자동으로 분류됩니다. 주요 콘텍스트 메뉴는 아래와 같습니다. | 메뉴 이름 | 설명 | | ----- | --- | | Copy Badge ID | 등록한 배지의 ID를 복사합니다. | | Copy Badge Thumbnail RUID | 등록한 배지의 섬네일 RUID를 복사합니다. | | Create New

[task] | code [pass] | ⏳ 미판정 [title] | 상품 관리하기 [question] | _ProductService 를 사용하여 월드 내 특정 좌표에 상품 판매 부스 엔티티를 생성하고, 유저가 부스에 터치할 경우 해당 상품의 상태가 '판매 중'인지 확인하여 구매 팝업을 띄우거나 '구매 불가' 메시지를 출력하는 인터랙션 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 `_ProductService` API, 상품 상태 조회 메서드, 또는 구매 팝업을 띄우는 특정 함수에 대한 정보가 포함되어 있지 않습니다. 문서에는 World Shop Viewer(메이커 내 관리 창)의 사용법과 상품 상태별 기능 제한 표, 그리고 메이커와 출시된 월드 간의 차이점만 설명하고 있으며, 스크립트 내에서 상품을 생성하거나 상태를 확인하는 구체적인 mLua API는 언급되어 있지 않습니다. 따라서 요청하신 `_ProductService`를 활용한 상품 판매 부스 생성 및 인터랙션 스크립트는 문서에 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 월드 숍 뷰어의 활용 방법과 상품 상태별 기능 제한에 대해 알아봅시다. # World Shop Viewer 메이커에서 상품을 등록하고, 관리할 수 있는 창입니다. 등록한 상품 종류에 따라 각 폴더에 자동으로 분류됩니다. 주요 콘텍스트 메뉴는 아래와 같습니다. | 이름 | 설명 | | --- | --- | | Copy Item ID | 등록한 상품의 ID를 복사합니다. | | Copy Item Thumbnail RUID | 등록한 상품의 섬네일 RUID를 복사합니다. | | Create New Item

[task] | two_turn [pass] | ⏳ 미판정 [title] | 배지 서비스 활용하기 [question] | BadgeService 를 활용하여 특정 오브젝트에 닿았을 때 배지를 획득하는 로직은 어떻게 구현하나요? [answer] | 제공된 참고 문서에는 `BadgeService`를 활용하여 특정 오브젝트에 닿았을 때 배지를 획득하는 **구체적인 mLua 코드 예제나 API 사용법(메서드 이름, 이벤트 핸들러 등)이 포함되어 있지 않습니다.** 문서에는 다음과 같은 정보만 언급되어 있습니다: 1. 배지를 웹에서 등록하고, `BadgeService`를 활용해 특정 오브젝트에 닿았을 때 배지를 획득하게 만들 수 있다는 개요 설명. 2. 배지를 획득한 유저에게는 획득 알림창이 8초 동안 나타난다는 동작 설명. 3. 제공된 코드 예제는 모두 **아이템 드롭(Item [followup] | 배지 획득 알림창이 8초 동안 표시되는 동안 여러 배지를 연속으로 획득하면 알림창은 어떤 순서로 나타나나요? [followup_answer] | 여러 배지를 연속으로 획득한 경우, 알림창은 **획득한 순서대로** 나타납니다. [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 배지를 웹에서 등록하고, `BadgeService`를 활용해 특정 오브젝트에 닿았을 때 배지를 획득하게 만들어 봅시다. 출시하지 않은 월드에서는 배지를 출시하더라도, 실제로 획득할 수 없음을 유념하세요. # BadgeService 등록한 배지는 배지 서비스를 통해 활용할 수 있습니다. 배지를 획득한 유저에게는 획득 알림창이 8초 동안 나타나며 배지의 정보가 보입니다. 만약 여러 배지를 연속으로 획득한 경우 알림창은 획득한 순서대로 나타납니다. # 활용 예시 다른 등급의 배지 3개를 등록하고, 특정 장소에

[task] | code [pass] | ⏳ 미판정 [title] | 배지 관리하기 [question] | 특정 배지 ID의 획득 여부를 확인하여 획득 대기 상태인 경우 획득 불가 처리하는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 배지 상태별 기능 제한(미출시, 획득 대기, 획득 가능, 획득 불가, 제재 중)에 대한 설명과, 메이커와 출시된 월드에서의 획득/조회 차이만 설명되어 있습니다. **mLua 스크립트에서 특정 배지 ID의 획득 여부나 상태를 확인하는 API(예: `IsBadgeAcquired`, `GetBadgeState` 등)나, 배지 상태를 변경하는 API에 대한 정보가 문서에 포함되어 있지 않습니다.** 따라서 문서에 근거하여 "획득 대기 상태인지 확인하고 획득 불가 처리하는" 로직을 구현하는 구체적인 mLua 코드(서 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 배지 뷰어와 활용 방법, 배지 상태별 기능 제한에 대해 알아봅시다. # Badge Viewer 메이커에서 배지를 등록하고, 관리할 수 있는 창입니다. 등록한 배지는 배지 등급에 따라 각각의 폴더에 자동으로 분류됩니다. 주요 콘텍스트 메뉴는 아래와 같습니다. | 메뉴 이름 | 설명 | | ----- | --- | | Copy Badge ID | 등록한 배지의 ID를 복사합니다. | | Copy Badge Thumbnail RUID | 등록한 배지의 섬네일 RUID를 복사합니다. | | Create New

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 배지 서비스 활용하기 [question] | 버튼 클릭 시 배지 확인창의 Enable 상태와 버튼 텍스트가 어떻게 변경되는지 설명하되, 3문장 이내로 작성하세요. [answer] | 버튼 클릭 시 BadgeLayer 엔티티의 Enable 상태가 true이면 false로 설정하고 버튼 텍스트를 "배지 보기"로 바꿉니다. Enable 상태가 false이면 true로 설정하고 텍스트를 "닫기"로 변경합니다. 이를 통해 배지 확인창의 표시 여부와 버튼 라벨이 토글됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 배지 획득 확인창을 여는 버튼을 만들고, 버튼을 누르면 '배지보기'에서 '닫기'로 바뀌게 만들어봅시다. 1. **UI 에디터 - DefaultGroup - BadgeOpenBtn** 버튼을 배치합니다. 2. 프로퍼티 에디터에서 TextComponent를 추가하고, **Text**에 **배지 보기**를 입력합니다. 3. 새로운 **BadgeOpenBtn 컴포넌트**를 생성하고, **BadgeOpenBtn**에 추가합니다. 4. 버튼을 클릭할 때 발생하는 ButtonClickEvent를 받아서 BadgeLayer 엔티티의 E

[task] | single_turn [pass] | ⏳ 미판정 [title] | 월드 숍 서비스 활용하기 [question] | purchaseInfo.ProductId 값을 확인하여 특정 상품을 구별하는 방식에서, ID가 일치하지 않는 경우 어떻게 처리해야 하는지 궁금합니다. [answer] | 제공된 문서의 코드 예제를 분석하면, `purchaseInfo.ProductId` 값이 확인된 특정 상품 ID("ItemID를 입력하세요", "PassID를 입력하세요")와 일치하지 않는 경우를 명시적으로 처리하는 `else` 블록이나 `elseif` 구문이 없습니다. 문서에 제시된 로직에서는 `if` 조건문으로 특정 상품에 대한 지급(`GetPotion`, `PassCheck`)만 수행하고, 조건에 해당하지 않는 경우 추가적인 처리(로그 기록, 반환값 변경 등)를 하지 않은 채 함수의 마지막 `return true`에 도달하여 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **MyShopLogic**에 포션 상품 구매에 성공하는 경우 포션 100개를 얻을 수 있도록 아래와 같이 입력합니다. `WorldShopService:SetProcessPurchaseCallback`을 활용해 상품 구매가 발생했을 때 상품을 지급합니다. 상품을 지급이 성공하면 true를, 실패하면 false를 반환해야 합니다. ```lua Method: [server only] void OnBeginPlay() { _WorldShopService:SetProcessPurchaseCallback(self.ProcessPu

[task] | single_turn [pass] | ⏳ 미판정 [title] | 배지 서비스 활용하기 [question] | 특정 오브젝트에 닿았을 때 배지를 획득하도록 하려면 어떤 서비스와 어떤 조건을 조합해야 하나요? [answer] | 특정 오브젝트에 닿았을 때 배지를 획득하려면 **`BadgeService`** 와 **터치 이벤트(Touch Event)** 를 조합해야 합니다. 문서에 명시된 구체적인 `BadgeService` 메서드 이름(예: `GiveBadge`, `CheckBadge` 등)이나 터치 이벤트 핸들러의 정확한 시그니처는 제공된 참고 문서에 포함되어 있지 않습니다. 제공된 문서는 `BadgeService`의 존재와 배지 획득 시 8초 동안 알림창이 표시되는 동작, 그리고 웹에서 배지를 사전에 등록해야 한다는 전제 조건만 설명하고 있을 뿐, 실제 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 배지를 웹에서 등록하고, `BadgeService`를 활용해 특정 오브젝트에 닿았을 때 배지를 획득하게 만들어 봅시다. 출시하지 않은 월드에서는 배지를 출시하더라도, 실제로 획득할 수 없음을 유념하세요. # BadgeService 등록한 배지는 배지 서비스를 통해 활용할 수 있습니다. 배지를 획득한 유저에게는 획득 알림창이 8초 동안 나타나며 배지의 정보가 보입니다. 만약 여러 배지를 연속으로 획득한 경우 알림창은 획득한 순서대로 나타납니다. # 활용 예시 다른 등급의 배지 3개를 등록하고, 특정 장소에

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 배지 서비스 활용하기 [question] | 배지 확인창 UI를 구성할 때 BadgeSlot_01 하위에 배치해야 하는 요소와 배지 이미지 RUID를 적용하는 컴포넌트 이름을 표로 정리해서 출력하세요. [answer] | | 구분 | 내용 | | :--- | :--- | | **배치 위치** | `BadgeSlot_01` 하위에 다른 UI 엔티티를 넣어두어야 합니다. | | **이미지 RUID 적용 컴포넌트** | `SpriteGUIRendererComponent` | | **적용 프로퍼티** | `ImageRUID` | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 배지 획득 확인창을 여는 버튼을 만들고, 버튼을 누르면 '배지보기'에서 '닫기'로 바뀌게 만들어봅시다. 1. **UI 에디터 - DefaultGroup - BadgeOpenBtn** 버튼을 배치합니다. 2. 프로퍼티 에디터에서 TextComponent를 추가하고, **Text**에 **배지 보기**를 입력합니다. 3. 새로운 **BadgeOpenBtn 컴포넌트**를 생성하고, **BadgeOpenBtn**에 추가합니다. 4. 버튼을 클릭할 때 발생하는 ButtonClickEvent를 받아서 BadgeLayer 엔티티의 E

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 배지 서비스 활용하기 [question] | `BadgeService`를 통해 특정 오브젝트에 닿았을 때 배지를 획득하는 로직을 구현하는 스크립트 예시를 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Property: [None] string BadgeId = "forest_village_badge" Method: [server only] void OnBeginPlay() { -- 배지 서비스 객체를 초기화하거나 필요한 준비 작업 수행 -- (참고 문서에 명시된 초기화 API가 없으므로 생략 가능) } Event Handler: [self] HandleTouchEvent(TouchEvent event) { -- 특정 오브젝트와 접촉이 발생했을 때 트리거 -- event.OtherEnt [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 배지를 웹에서 등록하고, `BadgeService`를 활용해 특정 오브젝트에 닿았을 때 배지를 획득하게 만들어 봅시다. 출시하지 않은 월드에서는 배지를 출시하더라도, 실제로 획득할 수 없음을 유념하세요. # BadgeService 등록한 배지는 배지 서비스를 통해 활용할 수 있습니다. 배지를 획득한 유저에게는 획득 알림창이 8초 동안 나타나며 배지의 정보가 보입니다. 만약 여러 배지를 연속으로 획득한 경우 알림창은 획득한 순서대로 나타납니다. # 활용 예시 다른 등급의 배지 3개를 등록하고, 특정 장소에

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 배지 서비스 활용하기 [question] | 문서에 명시된 _BadgeService의 비동기 및 동기 메서드 이름을 한 줄로 나열하세요. [answer] | _BadgeService:GetBadgeInfoAsync, _BadgeService:UserHasBadgeAndWait [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 새로운 **BadgeSlot 컴포넌트**를 생성하고 **BadgeSlot_01**에 추가합니다. 2. 획득한 배지의 이름, 소유 정보, 설명을 가져올 수 있도록 프로퍼티를 추가합니다. ```lua Property: [None] string BadgeId = "" -- 조회할 배지 ID [None] TextComponent BadgeTitle = nil -- 배지 이름 [None] TextComponent Hasbadge = nil -- 배지 소유 정보 [Non

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 배지 서비스 활용하기 [question] | GetBadgeInfoAsync() 콜백에서 badgeInfo가 nil이 아닐 때 TextComponent에 설정되는 두 가지 텍스트 속성의 값을 코드 주석으로만 설명하세요. [answer] | ```lua self.BadgeTitle.Text = badgeInfo.Name -- 배지의 이름 self.BadgeDesc.Text = badgeInfo.Description -- 배지의 설명 ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 새로운 **BadgeSlot 컴포넌트**를 생성하고 **BadgeSlot_01**에 추가합니다. 2. 획득한 배지의 이름, 소유 정보, 설명을 가져올 수 있도록 프로퍼티를 추가합니다. ```lua Property: [None] string BadgeId = "" -- 조회할 배지 ID [None] TextComponent BadgeTitle = nil -- 배지 이름 [None] TextComponent Hasbadge = nil -- 배지 소유 정보 [Non

[task] | two_turn [pass] | ⏳ 미판정 [title] | 배지 관리하기 [question] | 메이커와 출시된 월드에서의 배지 획득 및 조회 환경 차이점을 비교해 주세요. [answer] | 메이커와 출시된 월드에서는 배지 획득 및 조회 환경이 다음과 같이 다릅니다. **1. 배지 획득 정보 관리** * **메이커:** 테스트 플레이를 시작할 때는 항상 배지를 보유하고 있지 않은 상태로 초기화됩니다. 테스트 플레이를 종료하면 테스트 중에 획득한 배지 정보는 모두 제거됩니다. * **출시된 월드:** 한 번 획득한 배지의 정보는 변경할 수 없습니다. **2. 배지 조회 가능 상태** * **메이커:** `미출시`, `획득 대기`, `획득 가능`, `획득 불가` 상태의 배지를 모두 조회할 수 있습니다. * [followup] | 테스트 플레이 중 획득한 배지 정보가 실제 월드 획득 정보와 어떻게 다르고, 테스트 플레이 종료 시 어떤 처리가 일어나나요? [followup_answer] | 테스트 플레이 중 획득한 배지 정보와 실제 월드에서의 처리 방식은 다음과 같이 다릅니다. **1. 획득 정보의 영속성 차이** * **테스트 플레이 (메이커):** 테스트 플레이를 시작할 때 항상 배지를 보유하고 있지 않은 상태로 초기화됩니다. 따라서 테스트 중에 획득한 배지는 임시 데이터로 취급됩니다. * **실제 월드 (출시된 월드):** 한 번 획득한 배지의 정보는 변경할 수 없습니다. 즉, 획득 정보는 영구적으로 유지되며 재초기화되지 않습니다. **2. 테스트 플레이 종료 시 처리** * 테스트 플레이를 종료하 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 배지 뷰어와 활용 방법, 배지 상태별 기능 제한에 대해 알아봅시다. # Badge Viewer 메이커에서 배지를 등록하고, 관리할 수 있는 창입니다. 등록한 배지는 배지 등급에 따라 각각의 폴더에 자동으로 분류됩니다. 주요 콘텍스트 메뉴는 아래와 같습니다. | 메뉴 이름 | 설명 | | ----- | --- | | Copy Badge ID | 등록한 배지의 ID를 복사합니다. | | Copy Badge Thumbnail RUID | 등록한 배지의 섬네일 RUID를 복사합니다. | | Create New

[task] | two_turn [pass] | ⏳ 미판정 [title] | 월드 숍 서비스 활용하기 [question] | `ItemSlot` 컴포넌트에서 `WorldShopService:PromptPurchase()`를 호출하여 구매창을 여는 과정은 어떻게 진행되나요? [answer] | `ItemSlot` 컴포넌트에서 `WorldShopService:PromptPurchase()`를 호출하여 구매창을 여는 과정은 다음과 같이 진행됩니다. 1. **프로퍼티 설정**: `ItemSlot` 컴포넌트에 `[None]` 범위의 `string ItemID` 프로퍼티를 추가합니다. 이 값에 World Shop Viewer에서 복사한 상품 ID를 입력해야 합니다. 2. **버튼 연결**: `OnBeginPlay()` 생명주기 메서드에서 `self.Entity:GetChildByName("PurchaseBtn")`을 통해 자식 [followup] | 여러 개의 상품을 동시에 구매하거나, 특정 조건(예: 포션이 0개일 때)에서만 구매 버튼을 활성화하는 로직을 `OnBeginPlay` 또는 이벤트 핸들러에 어떻게 구현해야 하나요? [followup_answer] | 제공된 참고 문서에는 여러 개의 상품을 동시에 구매하는 로직이나, 포션 개수 등 특정 조건에 따라 구매 버튼을 활성화/비활성화하는 로직에 대한 설명이나 API가 포함되어 있지 않습니다. 문서에는 `ItemSlot` 컴포넌트를 통해 개별 상품 ID를 설정하고 `WorldShopService:PromptPurchase()`를 호출하여 구매창을 여는 방법과, `ShopOpenEvent`를 수신하여 `WorldShopService:GetProductAndWait()`로 상품 이름 등 기본 정보를 UI에 갱신하는 방법만 안내하고 있습니다. [scores] | [judge_reason] | [source_doc] | 상품 구매에 성공했을 때 포션 개수와 이용권 보유 여부를 확인할 수 있는 ui를 만들어봅시다. 1. **UI 에디터 - DefaultGroup - MyPotionInfo** 이미지 엔티티를 배치합니다. 2. 하위에 이미지와 텍스트 엔티티를 배치하고, 아래의 그림처럼 이름을 변경합니다. #### 상품 정보를 구매창에 불러오기 1. 새로운 **ItemSlot** 스크립트 컴포넌트를 생성하고 **Item, Pass UI엔티티**에 추가합니다. 2. **ItemSlot** 컴포넌트 스크립트 에디터 창을 열고, 프로퍼티를 추가합니다.

[task] | two_turn [pass] | ⏳ 미판정 [title] | 월드 숍 서비스 활용하기 [question] | 아이템 구매 시 즉시 포션 100개 증가, 이용권 구매 후 공격 시 포션 15개 증가하는 활용 예시에서, 구매 성공 이벤트를 수신하여 인벤토리나 상태 변수를 변경하는 mLua 코드 구조를 작성해 주세요. [answer] | 제공된 참고 문서에는 `WorldShopService`를 사용하여 상품을 구매할 수 있다는 설명과, 구매 성공 시 상품을 지급받아야 한다는 원칙만 명시되어 있습니다. 그러나 문서에는 **구매 성공 이벤트를 수신하는 구체적인 이벤트 핸들러 이름(예: `HandlePurchaseSuccessEvent` 등)이나 `WorldShopService`의 특정 메서드(예: `Purchase`, `OnPurchaseComplete` 등)에 대한 API 정의가 포함되어 있지 않습니다.** 따라서 제공된 문서의 정보만으로는 구매 성공 이벤트를 수 [followup] | 무료 가격으로 설정된 상품에서도 실제 구매 처리가 정상적으로 완료되는지 확인하는 테스트 방법과, `WorldShopService`에서 상품 ID를 매개변수로 받아 처리하는 함수 예시를 코드와 함께 제시해 주세요. [followup_answer] | 제공된 참고 문서에는 `WorldShopService`를 활용해 상품을 구매할 수 있다는 설명과, 구매 성공 시 상품을 지급받아야 한다는 원칙만 명시되어 있습니다. 그러나 문서에는 다음 사항에 대한 구체적인 정보가 포함되어 있지 않습니다: 1. 무료 상품 구매 처리의 정상 여부를 확인하는 구체적인 테스트 방법이나 절차. 2. `WorldShopService`에서 상품 ID를 매개변수로 받아 처리하는 특정 함수 이름(예: `Purchase(itemId)`, `BuyItem(itemId)` 등)이나 메서드 시그니처. mLua 스크립 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 `WorldShopService`를 활용해 웹에서 등록한 아이템, 이용권을 구매할 수 있게 만들어봅시다. 출시하지 않은 월드에서는 상품을 출시하더라도, 실제로 판매할 수 없음을 유념하세요. # WorldShopService 등록한 상품을 월드에서 활용할 때는 `WorldShopService`를 활용해야 합니다. 구매 성공한 유저는 크리에이터가 제공한 상품을 지급 받아야 합니다. # 활용 예시 아이템과 이용권을 등록합니다. 아이템을 구매하면 즉시 포션 수를 100으로 증가시키고, 이용권을 구매한 뒤 공격을

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 배지 서비스 활용하기 [question] | `HandleButtonClickEvent`에서 `_EntityService:GetEntityByPath`로 엔티티를 가져와 상태를 토글하는 로직을 코드만 출력하고, 설명은 주석으로만 작성하세요. [answer] | ```lua Event Handler: [self] HandleButtonClickEvent(ButtonClickEvent event) { -- 버튼 클릭 시 배지 확인창(BadgeLayer)의 표시 여부를 토글합니다. -- 엔티티 경로를 통해 BadgeLayer 엔티티를 가져옵니다. local BadgeLayerPanel = _EntityService:GetEntityByPath("/ui/BadgeLayer") -- BadgeLayer가 비활성화 상태인 경우 활성화하고 버튼 텍스트를 "닫기"로 변경합 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 배지 획득 확인창을 여는 버튼을 만들고, 버튼을 누르면 '배지보기'에서 '닫기'로 바뀌게 만들어봅시다. 1. **UI 에디터 - DefaultGroup - BadgeOpenBtn** 버튼을 배치합니다. 2. 프로퍼티 에디터에서 TextComponent를 추가하고, **Text**에 **배지 보기**를 입력합니다. 3. 새로운 **BadgeOpenBtn 컴포넌트**를 생성하고, **BadgeOpenBtn**에 추가합니다. 4. 버튼을 클릭할 때 발생하는 ButtonClickEvent를 받아서 BadgeLayer 엔티티의 E

[task] | code [pass] | ⏳ 미판정 [title] | 배지 관리하기 [question] | 테스트 플레이 환경인지 출시된 월드 환경인지 구분하여 배지 획득 정보 처리 방식을 다르게 적용하는 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 "테스트 플레이 환경인지 출시된 월드 환경인지"를 구별하는 mLua API, 프로퍼티, 또는 이벤트 핸들러가 **존재하지 않습니다.** 문서에는 두 환경의 **차이점** (테스트 플레이 종료 시 획득 정보 제거, 출시 월드에서는 변경 불가)과 **배지 상태별 기능 제한**에 대한 설명만 있을 뿐, 스크립트에서 현재 실행 환경을 감지하거나 분기 처리하는 구체적인 메서드나 서비스(`_XxxService`)가 명시되어 있지 않습니다. 따라서 요청하신 "환경 구별" 로직을 포함한 스크립트는 문서 근거 없이 작성할 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 배지 뷰어와 활용 방법, 배지 상태별 기능 제한에 대해 알아봅시다. # Badge Viewer 메이커에서 배지를 등록하고, 관리할 수 있는 창입니다. 등록한 배지는 배지 등급에 따라 각각의 폴더에 자동으로 분류됩니다. 주요 콘텍스트 메뉴는 아래와 같습니다. | 메뉴 이름 | 설명 | | ----- | --- | | Copy Badge ID | 등록한 배지의 ID를 복사합니다. | | Copy Badge Thumbnail RUID | 등록한 배지의 섬네일 RUID를 복사합니다. | | Create New

[task] | code [pass] | ⏳ 미판정 [title] | 배지 서비스 활용하기 [question] | BadgeOpenBtn 컴포넌트에서 ButtonClickEvent를 수신하여 _EntityService로 "/ui/BadgeLayer" 엔티티를 조회하고, 해당 엔티티의 Enable 상태를 토글하면서 self.Entity.TextComponent.Text 값을 "닫기"와 "배지 보기"로 변경하는 스크립트를 작성해줘. [answer] | BadgeOpenBtn 컴포넌트에 `ButtonClickEvent`를 처리하는 이벤트 핸들러를 추가하고, `_EntityService`를 통해 `/ui/BadgeLayer` 엔티티의 `Enable` 상태를 확인하여 토글하며, 버튼 텍스트를 "닫기"와 "배지 보기"로 변경하는 스크립트는 다음과 같습니다. ```lua Event Handler: [self] HandleButtonClickEvent(ButtonClickEvent event) { --------------- Native Event Sender Info ------ [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 배지 획득 확인창을 여는 버튼을 만들고, 버튼을 누르면 '배지보기'에서 '닫기'로 바뀌게 만들어봅시다. 1. **UI 에디터 - DefaultGroup - BadgeOpenBtn** 버튼을 배치합니다. 2. 프로퍼티 에디터에서 TextComponent를 추가하고, **Text**에 **배지 보기**를 입력합니다. 3. 새로운 **BadgeOpenBtn 컴포넌트**를 생성하고, **BadgeOpenBtn**에 추가합니다. 4. 버튼을 클릭할 때 발생하는 ButtonClickEvent를 받아서 BadgeLayer 엔티티의 E

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 배지 서비스 활용하기 [question] | 배지 ID를 복사하는 과정과 스크립트에서 이벤트 연결 시 참조하는 엔티티 경로를 표로 정리하세요. [answer] | 배지 ID를 복사하는 과정과 스크립트에서 이벤트 연결 시 참조하는 엔티티 경로를 정리하면 다음과 같습니다. | 구분 | 내용 | | :--- | :--- | | **배지 ID 복사 과정** | 1. **Badge Viewer**를 엽니다.<br>2. 대상 배지(예: **숲 마을에 도착**)를 선택합니다.<br>3. 콘텍스트 메뉴를 열어 **Copy Badge ID**를 선택합니다.<br>4. 복사된 ID를 **BadgeSlot_01** 컴포넌트의 `BadgeId` 프로퍼티에 붙여넣습니다. | | **이벤트 연결 시 엔티티 경로** [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 새로운 **BadgeSlot 컴포넌트**를 생성하고 **BadgeSlot_01**에 추가합니다. 2. 획득한 배지의 이름, 소유 정보, 설명을 가져올 수 있도록 프로퍼티를 추가합니다. ```lua Property: [None] string BadgeId = "" -- 조회할 배지 ID [None] TextComponent BadgeTitle = nil -- 배지 이름 [None] TextComponent Hasbadge = nil -- 배지 소유 정보 [Non

[task] | code [pass] | ⏳ 미판정 [title] | 월드 숍 서비스 활용하기 [question] | `UserService`의 `GetUserEntityByUserId`로 조회한 엔티티가 유효하지 않을 경우 `EntityService`의 `IsValid`를 확인하고 `log_error`로 `PurchaseId`, `UserId`, `ProductId`를 출력한 뒤 false를 반환하는 로직이 포함된 구매 처리 스크립트를 작성해줘. [answer] | 요청하신 로직을 포함하여 월드 숍 상품 구매 처리 스크립트는 다음과 같습니다. ```lua Method: [server only] void OnBeginPlay() { _WorldShopService:SetProcessPurchaseCallback(self.ProcessPurchase) } [server only] boolean ProcessPurchase(any purchaseInfo) { local userEntity = _UserService:GetUserEntityByUserId(purchaseInfo.Us [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **MyShopLogic**에 포션 상품 구매에 성공하는 경우 포션 100개를 얻을 수 있도록 아래와 같이 입력합니다. `WorldShopService:SetProcessPurchaseCallback`을 활용해 상품 구매가 발생했을 때 상품을 지급합니다. 상품을 지급이 성공하면 true를, 실패하면 false를 반환해야 합니다. ```lua Method: [server only] void OnBeginPlay() { _WorldShopService:SetProcessPurchaseCallback(self.ProcessPu

[task] | code [pass] | ⏳ 미판정 [title] | 배지 서비스 활용하기 [question] | UserService 와 BadgeService 를 활용하여 특정 유저가 스폰 지점에 터치 이벤트로 닿았을 때 '숲 마을에 도착' 배지를 지급하는 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 `BadgeService`의 구체적인 메서드(예: 배지를 지급하는 함수)나 `TouchEvent` 핸들러에 대한 설명이 포함되어 있지 않습니다. 문서에는 `UserService`의 이벤트 핸들러(`HandleUserEnterEvent`, `HandleUserLeaveEvent`, `HandleUserDisconnectEvent`) 예제만 제공되며, 배지 지급 로직의 실제 코드 구현 방식은 생략되어 있습니다. 따라서 문서에 근거하여 `TouchEvent`와 `BadgeService`를 결합한 정확한 코드를 작성 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 배지를 웹에서 등록하고, `BadgeService`를 활용해 특정 오브젝트에 닿았을 때 배지를 획득하게 만들어 봅시다. 출시하지 않은 월드에서는 배지를 출시하더라도, 실제로 획득할 수 없음을 유념하세요. # BadgeService 등록한 배지는 배지 서비스를 통해 활용할 수 있습니다. 배지를 획득한 유저에게는 획득 알림창이 8초 동안 나타나며 배지의 정보가 보입니다. 만약 여러 배지를 연속으로 획득한 경우 알림창은 획득한 순서대로 나타납니다. # 활용 예시 다른 등급의 배지 3개를 등록하고, 특정 장소에

[task] | code [pass] | ⏳ 미판정 [title] | 월드 숍 서비스 활용하기 [question] | `WorldShopService`의 `SetProcessPurchaseCallback`을 등록하고, `purchaseInfo.ProductId`가 "potion_100"일 때 `userEntity.PlayerReward:GetPotion(100)`을 호출하여 성공 시 true, 실패 시 false를 반환하는 서버 전용 스크립트를 작성해줘. [answer] | 요청하신 조건에 맞춰 `WorldShopService`의 구매 처리 콜백을 등록하고, 상품 ID가 "potion_100"일 때 포션을 지급하는 서버 전용 스크립트입니다. ```lua Method: [server only] void OnBeginPlay() { _WorldShopService:SetProcessPurchaseCallback(self.ProcessPurchase) } [server only] boolean ProcessPurchase(any purchaseInfo) { local userEntity = [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **MyShopLogic**에 포션 상품 구매에 성공하는 경우 포션 100개를 얻을 수 있도록 아래와 같이 입력합니다. `WorldShopService:SetProcessPurchaseCallback`을 활용해 상품 구매가 발생했을 때 상품을 지급합니다. 상품을 지급이 성공하면 true를, 실패하면 false를 반환해야 합니다. ```lua Method: [server only] void OnBeginPlay() { _WorldShopService:SetProcessPurchaseCallback(self.ProcessPu

[task] | code [pass] | ⏳ 미판정 [title] | 월드 숍 서비스 활용하기 [question] | `OnBeginPlay()`에서 `PurchaseBtn`과 `ItemName` 엔티티를 참조하고, `ShopOpenEvent` 핸들러에서 `WorldShopService:GetProductAndWait(self.ItemID)`의 반환값 `SearchResult.Name`을 `ItemName.Text`에 설정하는 `ItemSlot` 스크립트를 작성해줘. [answer] | 요청하신 `ItemSlot` 스크립트 컴포넌트는 `OnBeginPlay()`에서 구매 버튼과 아이템 이름 텍스트 엔티티를 참조하고, `ShopOpenEvent`가 발생했을 때 `WorldShopService:GetProductAndWait()`를 호출하여 반환된 상품 정보의 이름을 UI에 반영하도록 구성됩니다. ```lua Property: [None] string ItemID = "" [None] Entity PurchaseBtn = nil Method: [client only] void OnBeginPlay() { s [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 상품 구매에 성공했을 때 포션 개수와 이용권 보유 여부를 확인할 수 있는 ui를 만들어봅시다. 1. **UI 에디터 - DefaultGroup - MyPotionInfo** 이미지 엔티티를 배치합니다. 2. 하위에 이미지와 텍스트 엔티티를 배치하고, 아래의 그림처럼 이름을 변경합니다. #### 상품 정보를 구매창에 불러오기 1. 새로운 **ItemSlot** 스크립트 컴포넌트를 생성하고 **Item, Pass UI엔티티**에 추가합니다. 2. **ItemSlot** 컴포넌트 스크립트 에디터 창을 열고, 프로퍼티를 추가합니다.

[task] | code [pass] | ⏳ 미판정 [title] | 월드 숍 서비스 활용하기 [question] | `purchaseInfo.ProductId`가 "pass_standard"인 경우 `userEntity.PlayerReward:PassCheck()`를 호출하고, 다른 상품 ID인 경우 아무 동작 없이 true를 반환하는 상품 지급 분기 스크립트를 작성해줘. [answer] | `WorldShopService`의 상품 구매 처리 콜백(`SetProcessPurchaseCallback`)을 등록하고, `purchaseInfo.ProductId`에 따라 분기하는 서버 전용 스크립트입니다. ```lua Method: [server only] void OnBeginPlay() { _WorldShopService:SetProcessPurchaseCallback(self.ProcessPurchase) } [server only] boolean ProcessPurchase(any purchaseInfo) { [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **MyShopLogic**에 포션 상품 구매에 성공하는 경우 포션 100개를 얻을 수 있도록 아래와 같이 입력합니다. `WorldShopService:SetProcessPurchaseCallback`을 활용해 상품 구매가 발생했을 때 상품을 지급합니다. 상품을 지급이 성공하면 true를, 실패하면 false를 반환해야 합니다. ```lua Method: [server only] void OnBeginPlay() { _WorldShopService:SetProcessPurchaseCallback(self.ProcessPu

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 확률 정보 공개 [question] | 해설서 미준수 시 적용될 수 있는 제재 사항을 1문장 이내로 요약해서 출력하세요. [answer] | 해설서의 내용을 따르지 않을 경우 최대 월드 이용 제한이 적용될 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 확률 정보 공개란? 메이플스토리 월드의 모든 크리에이터는 창작한 아이템 내 확률형 아이템을 제공하는 경우 확률 정보 공개 가이드에 따라 아이템 사용 전 사용자에게 고지해야 할 의무가 있습니다. * 메이플스토리 월드의 확률 정보 공개 가이드는 ‘확률형 아이템 확률 정보공개 관련 해설서’의 내용을 따릅니다. 해당 해설서의 내용을 따르지 않을 경우 최대 월드 이용 제한이 적용될 수 있습니다. # 확률 정보 공개 대상 및 방법 아래 항목에 해당할 경우 확률형 아이템 정보 공개 대상이 될 수 있으며, 자세한 확률 정보 공개 대상 및

[task] | single_turn [pass] | ⏳ 미판정 [title] | 월드 숍 서비스 활용하기 [question] | Potion 프로퍼티에 [Sync]를 붙이고 [None]으로 선언한 TextComponent를 연결했는데, 구매 후 UI에 숫자가 안 올라오는 원인이 무엇일까요? [answer] | Potion 프로퍼티의 값은 서버에서 변경되어도 클라이언트 UI에 자동으로 반영되지 않습니다. `[Sync]` 프로퍼티의 값이 서버에서 변경되면, 클라이언트에서는 `OnSyncProperty` 메서드가 호출되며 이 안에서 UI를 직접 업데이트해야 합니다. 참고 문서의 3번 단계를 보면, `GetPoint` 메서드에서 `self.Potion` 값을 변경하고, `[client only]`로 선언된 `OnSyncProperty` 메서드에서 `name`이 `"Potion"`인지 확인한 후 `self.PotionValue.Text`에 값을 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 상품이 구매한 유저에게 반영될 수 있도록 만들어 봅시다. 1. 새로운 **PlayerReward** 컴포넌트를 생성하고, **DefaultPlayer**에 추가합니다. 2. 아래와 같이 프로퍼티를 추가합니다. ```lua Property: [None] TextComponent PotionValue = /ui/DefaultGroup/MyPotionInfo/PotionValue [Sync] number Potion= 0 [None] TextCompone

[task] | two_turn [pass] | ⏳ 미판정 [title] | 월드 숍 서비스 활용하기 [question] | `WorldShopService`를 활용해 웹에서 등록한 상품 구매 및 지급 기능을 구현하는 기본 원리와, 출시 전 상태에서의 판매 제한 사항을 설명해 주세요. [answer] | `WorldShopService`를 사용하여 웹에서 미리 등록해 둔 상품(아이템, 이용권)을 게임 내에서 구매하고, 구매 성공 시 유저에게 상품을 지급하는 기능의 기본 원리와 출시 전 판매 제한 사항은 다음과 같습니다. ### 1. 기본 원리 `WorldShopService`는 웹에서 등록한 상품을 월드 내에서 활용하기 위한 핵심 서비스입니다. 상품 구매 및 지급을 구현할 때의 핵심 원리는 다음과 같습니다. * **구매 처리**: 유저가 상품을 구매하면 `WorldShopService`를 통해 구매 요청이 처리됩니다. * [followup] | `WorldShopService`를 통해 구매 성공 후 상품을 지급하는 로직을 mLua로 작성하려면 어떤 서비스 메서드나 이벤트를 사용해야 하는지 구체적으로 알려 주세요. [followup_answer] | 제공된 참고 문서에는 `WorldShopService`를 통해 구매 성공 후 상품을 지급하는 구체적인 mLua 코드, 서비스 메서드 이름, 또는 이벤트 핸들러 명칭이 포함되어 있지 않습니다. 문서에는 "구매 성공한 유저는 크리에이터가 제공한 상품을 지급 받아야 합니다"라는 원칙만 명시되어 있을 뿐, 이를 구현하기 위해 특정 서비스 메서드(예: `PurchaseItem`, `GrantReward` 등)나 이벤트를 호출하는 구체적인 API 명세나 코드 예제가 제공되지 않았습니다. 따라서 해당 로직을 작성하는 데 사용할 수 있는 구체적 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 `WorldShopService`를 활용해 웹에서 등록한 아이템, 이용권을 구매할 수 있게 만들어봅시다. 출시하지 않은 월드에서는 상품을 출시하더라도, 실제로 판매할 수 없음을 유념하세요. # WorldShopService 등록한 상품을 월드에서 활용할 때는 `WorldShopService`를 활용해야 합니다. 구매 성공한 유저는 크리에이터가 제공한 상품을 지급 받아야 합니다. # 활용 예시 아이템과 이용권을 등록합니다. 아이템을 구매하면 즉시 포션 수를 100으로 증가시키고, 이용권을 구매한 뒤 공격을

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