← 목록

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

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

[task] | single_turn [pass] | ⏳ 미판정 [title] | EntryService [question] | 모델을 스폰하기 전에 GetModelIdByName을 호출해야 하는 이유는 무엇인가요? [answer] | `_EntryService:GetModelIdByName`을 호출하는 이유는 스폰 서비스(`_SpawnService`)가 모델 이름을 직접 인식하지 않고, 모델에 고유하게 부여된 **ID (Identifier)** 를 요구하기 때문입니다. 에디터에서 모델을 선택하거나 참조할 때는 사람이 이해하기 쉬운 이름(예: `"NewModel"`)을 사용하지만, 게임 런타임에서 엔티티를 실제로 생성할 때는 시스템 내부에서 관리되는 문자열 형태의 ID가 필요합니다. 따라서 `_EntryService:GetModelIdByName("모델_이름" [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 엔트리 관련 기능을 제공합니다. # Methods - **string GetDataSetIdByName(string name)** DataSet 이름으로 DataSet Id를 찾아 반환합니다. - **string GetMaterialIdByName(string name)** Material 이름으로 Material Id를 찾아 반환합니다. - **string GetModelIdByName(string name)** Model 이름으로 Modle Id를 찾아 반환합니다. ##### inherited from Servi

[task] | code [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | MaplePreferencesLogic 컴포넌트의 JumpSound 프로퍼티 값이 비어있는지 확인하고, 비어있으면 기본값으로 설정하는 스크립트를 작성해줘 [answer] | MaplePreferencesLogic 컴포넌트의 `JumpSound` 프로퍼티 값이 비어있는지 확인하고, 비어있으면 기본값으로 설정하는 스크립트는 다음과 같습니다. 참고로, 제공된 문서에는 `JumpSound`에 대한 '기본값'이 무엇인지 명시되어 있지 않습니다. 따라서 예시 코드에서는 임의의 기본값 (예: "DefaultJumpSound" 또는 특정 사운드 ID)을 사용해야 합니다. 실제 적용 시에는 원하는 사운드 ID 문자열로 대체해야 합니다. ```lua Method: [client only] void OnBeginPla [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 메이플스토리의 설정 값이나 변수 값을 프로퍼티로 제공합니다. # Properties - **string DeathSound [Sync]** 죽을 때 재생되는 소리입니다. - **string JumpSound [Sync]** 점프할 때 재생되는 소리입니다. - **string WeaponBowSound [Sync]** Bow 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생되는 소리입니다. - **string WeaponCaneSound [Sync]** Cane 타입의 사운드 이펙트와 연결된 무기로 근접 공

[task] | single_turn [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | _MaplePreferencesLogic 을 통해 플레이어의 점프와 사망 시 음원을 변경하려면 어떤 프로퍼티 값을 설정해야 하나요? [answer] | `_MaplePreferencesLogic` 을 통해 플레이어의 점프와 사망 시 음원을 변경하려면 각각 `JumpSound` 와 `DeathSound` 프로퍼티에 음원 ID 문자열을 할당해야 합니다. 다음과 같이 클라이언트 전용(`[client only]`) 메서드에서 설정할 수 있습니다. ```lua Method: [client only] void OnBeginPlay() { -- 플레이어의 점프와 사망 시 음원 변경 _MaplePreferencesLogic.JumpSound = "000000" _MaplePreferen [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ##### inherited from Logic: - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 엔티티에 이름표 붙이기 [question] | 고양이 이름표 연습 예시의 FontColor, FontSize, Name, NameTagRUID, OffsetY 값을 5줄의 코드 블록으로만 출력하세요. [answer] | ```lua FontColor: f5e38b FontSize: 1 Name: 길을 잃은 고양이 NameTagRUID: ac88638649c3479bbb754e4b34bb3eac OffsetY: 0 ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 사물을 구분하는 효과적인 방법은 이름을 붙이는 것입니다. 이름표를 이용해 오브젝트와 NPC를 구분하거나, 유저를 구분할 수 있습니다. NameTagComponent 사용 방법과 활용 예시를 소개합니다. # 이름표 붙이기 엔티티를 선택하고 **NameTagComponent**를 추가합니다. 프로퍼티 값을 변경해 원하는 이름표를 만듭니다. NameTagComponent 프로퍼티 구성은 다음과 같습니다. | 이름 | 설명 | | --- | --- | | FontColor | 글씨 색상을 변경합니다. 색상 변

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 엔티티에 이름표 붙이기 [question] | NameTagComponent를 추가하는 과정과 OffsetY 값의 의미(0, 음수, 양수)를 3문장 이내로 요약하세요. [answer] | 엔티티를 선택한 후 NameTagComponent를 추가하고 프로퍼티 값을 변경하여 이름표를 설정합니다. OffsetY는 이름표의 위치를 Y축 기준으로 결정하며, 0이면 원점에 위치합니다. 음수를 입력하면 아래로, 양수를 입력하면 위로 이름표가 배치됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 사물을 구분하는 효과적인 방법은 이름을 붙이는 것입니다. 이름표를 이용해 오브젝트와 NPC를 구분하거나, 유저를 구분할 수 있습니다. NameTagComponent 사용 방법과 활용 예시를 소개합니다. # 이름표 붙이기 엔티티를 선택하고 **NameTagComponent**를 추가합니다. 프로퍼티 값을 변경해 원하는 이름표를 만듭니다. NameTagComponent 프로퍼티 구성은 다음과 같습니다. | 이름 | 설명 | | --- | --- | | FontColor | 글씨 색상을 변경합니다. 색상 변

[task] | single_turn [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | InstanceKey 프로퍼티는 읽기 전용이라서 직접 설정해서 인스턴스 룸을 생성하는 게 아니라, 어디서 발급받아서 사용해야 하나요? [answer] | 제공된 참고 문서에는 `InstanceKey` 프로퍼티가 읽기 전용(ReadOnly)임을 명시하고 있을 뿐, **어디서 발급받아 사용해야 하는지**에 대한 설명이나 관련 API, 생성 절차가 포함되어 있지 않습니다. 따라서 주어진 문서 정보만으로는 `InstanceKey`의 발급 소스를 알 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 인스턴스 룸 관련 기능을 제공합니다. # Properties - **string InstanceKey [ReadOnly]** 인스턴스 룸 식별자입니다. # Methods - **int32 GetUserCount()** 인스턴스 룸에 속한 유저 수를 반환합니다. - **boolean IsValid()** 인스턴스 룸이 유효한지 여부를 반환합니다. - **boolean MoveUser(string userId, string mapName = nil) [Yield]** userId에 해당하는 유저를 이 인스턴스 룸으

[task] | single_turn [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | _MaplePreferencesLogic 을 통해 특정 무기의 소리만 제거하고 나머지는 유지하려면 WeaponSwordKSound 같은 프로퍼티를 빈 문자열("")으로 설정해야 하는 이유가 무엇입니까? [answer] | `_MaplePreferencesLogic`의 무기별 사운드 프로퍼티(예: `WeaponSwordKSound`)를 빈 문자열(`""`)로 설정하면, 해당 무기의 공격 효과음이 재생되지 않도록 합니다. 참고 문서의 예제에서 "모든 무기의 공격 효과음을 제거한다"는 주석 아래 각 무기 사운드 프로퍼티를 `""`으로赋值하는 코드가 제시되어 있습니다. 이는 특정 무기(예: `WeaponSwordKSound`)만 `""`으로 설정하면 그 무기 특유의 효과음만 비활성화되고, 빈 문자열로 설정하지 않은 다른 무기들의 사운드는 기존 설정값(기본 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ##### inherited from Logic: - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이

[task] | code [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | InstanceRoom 컴포넌트의 InstanceKey 프로퍼티와 IsValid, GetUserCount 메서드를 사용하세요 [answer] | `InstanceRoom` 컴포넌트는 `InstanceKey` 프로퍼티와 `IsValid`, `GetUserCount` 메서드를 제공하여 인스턴스 룸의 상태와 사용자 수를 관리합니다. `InstanceKey`는 읽기 전용으로 인스턴스 룸의 고유 식별자를 저장하며, `IsValid`는 현재 인스턴스 룸이 유효한지 여부를 확인하고, `GetUserCount`는 해당 인스턴스 룸에 속한 유저의 총 수를 반환합니다. 아래는 이 기능들을 사용하는 mLua 스크립트 예제입니다. ```lua Property: [None] string Roo [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 인스턴스 룸 관련 기능을 제공합니다. # Properties - **string InstanceKey [ReadOnly]** 인스턴스 룸 식별자입니다. # Methods - **int32 GetUserCount()** 인스턴스 룸에 속한 유저 수를 반환합니다. - **boolean IsValid()** 인스턴스 룸이 유효한지 여부를 반환합니다. - **boolean MoveUser(string userId, string mapName = nil) [Yield]** userId에 해당하는 유저를 이 인스턴스 룸으

[task] | single_turn [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | MaplePreferencesLogic의 프로퍼티들은 모두 Sync 속성이 붙어 있는데, 이 값들을 클라이언트에서 직접 수정해도 서버에 반영되나요? [answer] | 아니요, `MaplePreferencesLogic`의 프로퍼티들은 모두 `[Sync]` 속성을 가지고 있지만, 이 값들을 클라이언트에서 직접 수정한다고 해서 자동으로 서버에 반영되지 않습니다. 참고 문서의 실제 mLua 예제를 보면, 플레이어의 점프 소리(`JumpSound`)나 죽음 소리(`DeathSound`)를 변경하거나 무기 소리를 비활성화하는 코드 블록이 `[client only]` 실행 공간에 배치되어 있습니다. ```lua Method: [client only] void OnBeginPlay() { -- Chang [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 메이플스토리의 설정 값이나 변수 값을 프로퍼티로 제공합니다. # Properties - **string DeathSound [Sync]** 죽을 때 재생되는 소리입니다. - **string JumpSound [Sync]** 점프할 때 재생되는 소리입니다. - **string WeaponBowSound [Sync]** Bow 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생되는 소리입니다. - **string WeaponCaneSound [Sync]** Cane 타입의 사운드 이펙트와 연결된 무기로 근접 공

[task] | two_turn [pass] | ⏳ 미판정 [title] | 엔티티에 이름표 붙이기 [question] | NameTagComponent로 엔티티에 이름표를 붙이는 기본 방법과 프로퍼티 구성은 무엇인가요? [answer] | NameTagComponent를 사용해 엔티티에 이름표를 붙이려면, 대상 엔티티를 선택한 뒤 **NameTagComponent**를 추가하고 해당 컴포넌트의 프로퍼티 값을 설정하면 됩니다. NameTagComponent의 주요 프로퍼티 구성은 다음과 같습니다: * **FontColor**: 이름표 글씨 색상을 변경합니다. * **FontSize**: 이름과 이름표의 크기를 변경합니다. 초깃값은 1이며, 숫자가 커질수록 이름표가 커집니다. * **Name**: 이름표에 표시할 이름을 변경합니다. 초깃값은 Null입니다. [followup] | FontSize와 OffsetY 값을 변경할 때 이름표의 크기 및 위치가 어떻게 변하는지 구체적으로 설명해 주세요. [followup_answer] | NameTagComponent의 `FontSize`와 `OffsetY` 값을 변경할 때 이름표의 크기와 위치는 다음과 같이 변화합니다. **1. FontSize (크기 변경)** * 이름과 이름표의 크기를 조절합니다. * 초깃값은 **1**입니다. * 값을 **키울수록** 이름표의 크기가 **커집니다**. **2. OffsetY (위치 변경)** * 이름표의 위치를 Y 축 기준으로 조절합니다. * 원점 값은 **0**이며, 이 값일 때 이름표는 원점에 위치합니다. * **음수**를 입력하면 이름표가 **아래 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 사물을 구분하는 효과적인 방법은 이름을 붙이는 것입니다. 이름표를 이용해 오브젝트와 NPC를 구분하거나, 유저를 구분할 수 있습니다. NameTagComponent 사용 방법과 활용 예시를 소개합니다. # 이름표 붙이기 엔티티를 선택하고 **NameTagComponent**를 추가합니다. 프로퍼티 값을 변경해 원하는 이름표를 만듭니다. NameTagComponent 프로퍼티 구성은 다음과 같습니다. | 이름 | 설명 | | --- | --- | | FontColor | 글씨 색상을 변경합니다. 색상 변

[task] | two_turn [pass] | ⏳ 미판정 [title] | MaterialService [question] | _MaterialService:ChangeMaterialProperty 메서드의 역할과 매개변수 구조에 대해 설명해 주세요. [answer] | `_MaterialService:ChangeMaterialProperty`는 특정 머티리얼의 프로퍼티 값을 변경하기 위한 메서드입니다. 이 메서드는 클라이언트에서만 실행되며(`[ClientOnly]`), 시각적 효과나 셰이더 파라미터를 실시간으로 조정하는 데 사용됩니다. ### 매개변수 구조 1. **`entryId` (string)**: - 변경할 머티리얼을 식별하는 ID입니다. - 보통 `_EntryService:GetMaterialIdByName("머티리얼 이름")`과 같은 방법으로 머티리얼 이름을 사용해 ID를 [followup] | [ClientOnly] 제한이 적용되는 이유와, changeProperty 딕셔너리에 어떤 타입의 값들을 넣을 수 있는지 구체적인 예외 상황을 알려주세요. [followup_answer] | 제공된 참고 문서에 기반하여 질문에 답합니다. ### 1. `[ClientOnly]` 제한이 적용되는 이유 `_MaterialService:ChangeMaterialProperty` 메서드에 `[ClientOnly]` 제한이 적용되는 이유는 **머티리얼 프로퍼티 변경이 클라이언트(플레이어 화면)에서만 시각적으로 반영되는 렌더링 관련 작업**이기 때문입니다. * **서버에서는 머티리얼 프로퍼티를 렌더링하지 않습니다:** 서버는 게임 로직(위치, 충돌, 상태 등)만 처리하며, 그래픽 셰이더 파라미터나 시각적 효과는 클라이언트의 [scores] | [judge_reason] | [source_doc] | 머티리얼 프로퍼티를 제어하는 기능을 제공합니다. # Methods - **void ChangeMaterialProperty(string entryId, Dictionary<string, any> changeProperty) [ClientOnly]** entryId에 해당하는 머티리얼의 프로퍼티를 변경합니다. changeProperty의 key는 프로퍼티 이름, value는 프로퍼티 값입니다. ##### inherited from Service: - **EventHandlerBase ConnectEvent(string ke

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 엔티티에 이름표 붙이기 [question] | NameTagComponent의 프로퍼티 5개(이름, 설명)를 표로 정리해서 출력하세요. [answer] | | 이름 | 설명 | | --- | --- | | FontColor | 글씨 색상을 변경합니다. 색상 변경은 스프라이트 색상 조정을 참고하세요. | | FontSize | 이름과 이름표 크기를 변경합니다. 초깃값은 1이며, 숫자가 커질수록 이름표 크기가 커집니다. | | Name | 이름표의 이름을 변경합니다. 초깃값은 Null이며, 원하는 이름으로 변경할 수 있습니다. | | NameTagRUID | 다양한 이름표 스프라이트를 이용할 수 있습니다. | | OffsetY | 이름표 위치를 정합니다. 원점 값은 0, 기준 축은 Y 축 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 사물을 구분하는 효과적인 방법은 이름을 붙이는 것입니다. 이름표를 이용해 오브젝트와 NPC를 구분하거나, 유저를 구분할 수 있습니다. NameTagComponent 사용 방법과 활용 예시를 소개합니다. # 이름표 붙이기 엔티티를 선택하고 **NameTagComponent**를 추가합니다. 프로퍼티 값을 변경해 원하는 이름표를 만듭니다. NameTagComponent 프로퍼티 구성은 다음과 같습니다. | 이름 | 설명 | | --- | --- | | FontColor | 글씨 색상을 변경합니다. 색상 변

[task] | two_turn [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | MaplePreferencesLogic 컴포넌트에서 제공하는 사운드 설정 프로퍼티들은 어떤 종류가 있으며 각각 어떤 상황에 재생되는지? [answer] | `MaplePreferencesLogic` 컴포넌트는 플레이어의 사운드 효과를 제어하기 위해 다양한 사운드 프로퍼티를 제공합니다. 모든 프로퍼티는 `string` 타입이며 `[Sync]` 속성을 가지고 있습니다. 제공되는 사운드 프로퍼티와 각각의 재생 상황은 다음과 같습니다. **기본 효과음** * `DeathSound`: 죽을 때 재생되는 소리입니다. * `JumpSound`: 점프할 때 재생되는 소리입니다. **무기별 근접 공격 효과음** 각 무기의 타입에 따라 근접 공격 시 재생되는 소리를 설정합니다. * ` [followup] | WeaponSwordKSound와 WeaponSwordLSound가 각각 어떤 무기 유형에 대응하는지 구체적으로 설명해 주세요. [followup_answer] | `WeaponSwordKSound`와 `WeaponSwordLSound`는 각각 다음과 같은 무기 유형에 대응합니다. * **WeaponSwordKSound**: **SwordK** 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생됩니다. 이 타입에 해당하는 구체적 무기 유형은 **카타나**입니다. * **WeaponSwordLSound**: **SwordL** 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생됩니다. 이 타입에 해당하는 구체적 무기 유형은 **양손검**입니다. [scores] | [judge_reason] | [source_doc] | 메이플스토리의 설정 값이나 변수 값을 프로퍼티로 제공합니다. # Properties - **string DeathSound [Sync]** 죽을 때 재생되는 소리입니다. - **string JumpSound [Sync]** 점프할 때 재생되는 소리입니다. - **string WeaponBowSound [Sync]** Bow 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생되는 소리입니다. - **string WeaponCaneSound [Sync]** Cane 타입의 사운드 이펙트와 연결된 무기로 근접 공

[task] | single_turn [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | GetUserCount()로 유저 수를 확인한 후, 해당 유저를 특정 맵으로 이동시킬 때 mapName 파라미터를 생략하면 어떻게 되나요? [answer] | `MoveUser` 메서드의 `mapName` 파라미터는 선택 사항(`nil` 기본값)입니다. `mapName`을 생략하면(또는 `nil`을 전달하면) 해당 유저는 인스턴스 룸으로 이동하지만, 특정 맵 이름이 지정되지 않은 상태로 이동하게 됩니다. 참고 문서에는 `mapName`이 생략되었을 때의 구체적인 동작(예: 현재 맵 유지, 기본 맵 이동 등)에 대한 설명은 제공되지 않습니다. 다만, 시그니처 상 `mapName = nil`이 기본값으로 명시되어 있어, 생략 시 `nil` 값이 전달된다고 이해할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 인스턴스 룸 관련 기능을 제공합니다. # Properties - **string InstanceKey [ReadOnly]** 인스턴스 룸 식별자입니다. # Methods - **int32 GetUserCount()** 인스턴스 룸에 속한 유저 수를 반환합니다. - **boolean IsValid()** 인스턴스 룸이 유효한지 여부를 반환합니다. - **boolean MoveUser(string userId, string mapName = nil) [Yield]** userId에 해당하는 유저를 이 인스턴스 룸으

[task] | single_turn [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | 모든 무기의 공격 효과음을 제거하기 위해 OnBeginPlay 안에서 처리할 때, 왜 [client only] 실행 공간이 필요합니까? [answer] | `_MaplePreferencesLogic`의 음원 관련 프로퍼티(예: `WeaponBowSound`, `WeaponSwordBSound` 등)는 플레이어의 클라이언트에서 들리는 사운드 설정을 제어하는 값입니다. 서버에서는 사운드 재생이 이루어지지 않으므로, 이러한 사운드 설정 변경은 클라이언트 환경에서만 의미를 가집니다. 따라서 모든 무기의 공격 효과음을 제거하기 위해 해당 프로퍼티를 빈 문자열(`""`)로 설정하는 코드는 반드시 클라이언트에서 실행되어야 하므로 `[client only]` 실행 공간이 필요합니다. ```lua [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ##### inherited from Logic: - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이

[task] | single_turn [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | MoveUsers로 여러 유저를 동시에 이동시킬 때, 리스트에 없는 ID나 이미 다른 인스턴스에 속한 ID가 포함되면 어떻게 처리되나요? [answer] | 제공된 문서에는 `MoveUsers` 메서드가 리스트에 없는 ID나 다른 인스턴스에 속한 ID를 포함했을 때의 구체적인 처리 방식(예: 오류 발생, 무시, 부분 이동 등)에 대한 설명이 없습니다. 문서에서 확인할 수 있는 정보는 다음과 같습니다: - `MoveUsers(table<string> userIds, string mapName = nil)` 메서드는 `userIds`에 해당하는 유저들을 인스턴스 룸으로 이동시킵니다. - 이 메서드는 `[Yield]` 속성을 가지고 있어, 수행하는 동안 스크립트 실행이 중단됩니다. 따라서 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 인스턴스 룸 관련 기능을 제공합니다. # Properties - **string InstanceKey [ReadOnly]** 인스턴스 룸 식별자입니다. # Methods - **int32 GetUserCount()** 인스턴스 룸에 속한 유저 수를 반환합니다. - **boolean IsValid()** 인스턴스 룸이 유효한지 여부를 반환합니다. - **boolean MoveUser(string userId, string mapName = nil) [Yield]** userId에 해당하는 유저를 이 인스턴스 룸으

[task] | code [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | 여러 유저를 한 번에 이동시키는 스크립트를 작성해줘 [answer] | 인스턴스 룸에 여러 유저를 한 번에 이동시키려면 `MoveUsers` 메서드를 사용합니다. 이 메서드는 이동할 유저의 ID 목록을 `table<string>` 형태로 전달하며, 선택적으로 이동할 맵 이름을 지정할 수 있습니다. `MoveUsers`는 Yield 메서드이므로, 호출 시 스크립트 실행이 잠시 중단됩니다. ```lua Property: [None] string InstanceKey = "my_instance_key" Method: [server only] void MoveAllUsersToInstanceRoom() [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 인스턴스 룸 관련 기능을 제공합니다. # Properties - **string InstanceKey [ReadOnly]** 인스턴스 룸 식별자입니다. # Methods - **int32 GetUserCount()** 인스턴스 룸에 속한 유저 수를 반환합니다. - **boolean IsValid()** 인스턴스 룸이 유효한지 여부를 반환합니다. - **boolean MoveUser(string userId, string mapName = nil) [Yield]** userId에 해당하는 유저를 이 인스턴스 룸으

[task] | code [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | 특정 유저를 지정된 맵으로 이동시키는 스크립트를 작성해줘 [answer] | mLua에서 특정 유저를 지정된 맵으로 이동시키는 기능은 `InstanceRoom` API의 `MoveUser` 메서드를 사용합니다. 이 메서드는 해당 유저를 **이 인스턴스 룸으로** 이동시키므로, 대상 맵은 인스턴스 룸이 생성될 때 지정된 맵입니다. `MoveUser`는 `[Yield]` 속성이 있어 호출 시 스크립트 실행이 잠시 중단됩니다. 아래는 특정 유저 ID를 받아 해당 유저를 현재 인스턴스 룸으로 이동시키는 스크립트 예시입니다. ```lua Property: [None] string TargetUserId = "US [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 인스턴스 룸 관련 기능을 제공합니다. # Properties - **string InstanceKey [ReadOnly]** 인스턴스 룸 식별자입니다. # Methods - **int32 GetUserCount()** 인스턴스 룸에 속한 유저 수를 반환합니다. - **boolean IsValid()** 인스턴스 룸이 유효한지 여부를 반환합니다. - **boolean MoveUser(string userId, string mapName = nil) [Yield]** userId에 해당하는 유저를 이 인스턴스 룸으

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티에 이름표 붙이기 [question] | NameTagComponent의 Name 프로퍼티 초깃값이 Null인 상태에서 값을 설정하지 않으면 게임 내에서 어떻게 표시되나요? [answer] | NameTagComponent의 Name 프로퍼티 초깃값은 Null이며, 값을 설정하지 않으면 이름표에 표시되는 이름이 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 사물을 구분하는 효과적인 방법은 이름을 붙이는 것입니다. 이름표를 이용해 오브젝트와 NPC를 구분하거나, 유저를 구분할 수 있습니다. NameTagComponent 사용 방법과 활용 예시를 소개합니다. # 이름표 붙이기 엔티티를 선택하고 **NameTagComponent**를 추가합니다. 프로퍼티 값을 변경해 원하는 이름표를 만듭니다. NameTagComponent 프로퍼티 구성은 다음과 같습니다. | 이름 | 설명 | | --- | --- | | FontColor | 글씨 색상을 변경합니다. 색상 변

[task] | code [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | _MaplePreferencesLogic 의 SendEvent 메서드를 사용하여 OnBeginPlay 시 지정된 이벤트 객체를 발생시키고, ConnectEvent 를 통해 해당 이벤트를 수신하여 수신 시 IsServer() 가 true 인 경우에만 로그를 기록하는 스크립트를 작성해줘 [answer] | `MaplePreferencesLogic` 문서에는 `SendEvent`와 `ConnectEvent` 메서드가 존재하지만, 구체적으로 어떤 `EventType` 또는 이벤트 객체를 전달해야 하는지, 그리고 어떤 이벤트 키(`key`)나 타입(`eventType`)를 사용해야 하는지에 대한 정보는 포함되어 있지 않습니다. 따라서 문서에 명시되지 않은 구체적인 이벤트 객체나 키 이름을 지어내어 코드를 작성할 수 없습니다. `SendEvent`에는 `EventType sendEvent` 매개변수가, `ConnectEvent`에는 `st [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ##### inherited from Logic: - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티에 이름표 붙이기 [question] | NameTagComponent의 OffsetY 값이 0일 때 이름표가 정확히 어떤 위치에 고정되나요? [answer] | `NameTagComponent`의 `OffsetY` 값이 0일 때, 이름표는 엔티티의 **원점**에 위치합니다. `OffsetY`는 이름표의 Y 축 기준 위치를 결정하는 프로퍼티로, 0을 입력하면 이름표가 엔티티의 기본 원점 위치에 고정됩니다. 양수 값은 원점보다 위로, 음수 값은 원점보다 아래로 이름표가 이동합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 사물을 구분하는 효과적인 방법은 이름을 붙이는 것입니다. 이름표를 이용해 오브젝트와 NPC를 구분하거나, 유저를 구분할 수 있습니다. NameTagComponent 사용 방법과 활용 예시를 소개합니다. # 이름표 붙이기 엔티티를 선택하고 **NameTagComponent**를 추가합니다. 프로퍼티 값을 변경해 원하는 이름표를 만듭니다. NameTagComponent 프로퍼티 구성은 다음과 같습니다. | 이름 | 설명 | | --- | --- | | FontColor | 글씨 색상을 변경합니다. 색상 변

[task] | code [pass] | ⏳ 미판정 [title] | 액션을 예약하고 실행하는 TimerService [question] | _**TimerService**의 `SetTimer()` 메서드를 사용하여 3초 후 `DropItem` 메서드를 실행하는 콜백을 등록하고, 즉시 `_EntityService:Destroy()`로 몬스터를 삭제하는 `OnMonsterDestroy` 메서드를 포함하는 스크립트를 작성해줘 [answer] | `_TimerService:SetTimer()` 메서드를 사용하여 3초 후 `DropItem` 메서드가 실행되도록 콜백을 등록하고, 몬스터 엔티티를 즉시 삭제하는 `OnMonsterDestroy` 메서드가 포함된 스크립트는 다음과 같습니다. ```lua Method: [server only] void OnMonsterDestroy(Entity monsterEntity) { local monsterInfo = monsterEntity.MonsterInfo local dropItemArr = monsterInfo.dro [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 몬스터가 등장하고 몇 초 뒤 공격을 시작하거나, 몬스터가 죽고 1초 뒤 아이템을 떨어뜨리는 것과 같은 어떤 일(액션)이 일어나는 타이밍을 제어해야 할 때가 있습니다. TimerService를 활용해 쉽고 효율적으로 액션이 일어나는 타이밍을 제어할 수 있습니다. TimerService가 제공하는 기능과 활용법을 알아보겠습니다. # TimerService 소개 **TimerService**는 원하는 순간에 어떤 액션을 실행하도록 예약하는 편의 기능을 제공합니다. Timer Service를 사용하지 않고 몬스터가

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티에 이름표 붙이기 [question] | NameTagComponent에서 FontColor 값을 변경할 때 참고해야 할 다른 스프라이트 색상 조정 가이드는 무엇인가요? [answer] | 참고 문서에는 NameTagComponent의 `FontColor` 프로퍼티에 대해 "색상 변경은 **스프라이트 색상 조정**을 참고하세요"라고 언급되어 있습니다. 하지만 제공된 참고 문서에는 '스프라이트 색상 조정' 가이드의 구체적인 내용, 해당 가이드의 위치, 또는 구체적인 API 및 사용법이 포함되어 있지 않습니다. 따라서 문서에 근거하여 스프라이트 색상 조정 가이드의 세부 내용을 설명해 드릴 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 사물을 구분하는 효과적인 방법은 이름을 붙이는 것입니다. 이름표를 이용해 오브젝트와 NPC를 구분하거나, 유저를 구분할 수 있습니다. NameTagComponent 사용 방법과 활용 예시를 소개합니다. # 이름표 붙이기 엔티티를 선택하고 **NameTagComponent**를 추가합니다. 프로퍼티 값을 변경해 원하는 이름표를 만듭니다. NameTagComponent 프로퍼티 구성은 다음과 같습니다. | 이름 | 설명 | | --- | --- | | FontColor | 글씨 색상을 변경합니다. 색상 변

[task] | single_turn [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | MoveUser 메서드가 Yield 특성 때문에 실행이 중단된다고 하는데, 이 중에 다른 스크립트 로직이나 콜백이 처리될 수 있나요? [answer] | 네, `MoveUser`와 `MoveUsers` 메서드는 `[Yield]` 특성을 가지며, 이 메서드 호출 시점에 현재 스크립트의 실행이 중단됩니다. 이 중단 기간 동안 다른 스크립트 로직이나 이벤트 핸들러(콜백)가 처리될 수 있습니다. 이는 mLua의 코루틴(Coroutine) 기반 비동기 처리 방식과 동일합니다. `Yield` 메서드를 호출하면 해당 스크립트는 일시 정지 상태가 되며, 엔진은 다른 프레임의 업데이트나 다른 이벤트(예: 유저 입장/퇴장, 터치 이벤트 등)를 처리합니다. 메서드가 완료되면 원래 중단된 지점부터 실행 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 인스턴스 룸 관련 기능을 제공합니다. # Properties - **string InstanceKey [ReadOnly]** 인스턴스 룸 식별자입니다. # Methods - **int32 GetUserCount()** 인스턴스 룸에 속한 유저 수를 반환합니다. - **boolean IsValid()** 인스턴스 룸이 유효한지 여부를 반환합니다. - **boolean MoveUser(string userId, string mapName = nil) [Yield]** userId에 해당하는 유저를 이 인스턴스 룸으

[task] | single_turn [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | IsValid()가 false를 반환할 때를 미리 파악해서 예외 처리를 하고 싶은데, 인스턴스 룸이 무효해지는 일반적인 조건이 있나요? [answer] | 제공된 문서에는 `IsValid()` 메서드가 "인스턴스 룸이 유효한지 여부를 반환한다"고만 설명되어 있으며, 인스턴스 룸이 무효(`false`)가 되는 구체적인 조건이나 원인에 대한 설명은 포함되어 있지 않습니다. 따라서 문서 내에서 확인할 수 있는 정보만으로는 `IsValid()`가 `false`를 반환하는 일반적인 조건을 미리 파악하거나, 그 조건에 기반한 예외 처리 로직을 설계하는 것이 불가능합니다. 코드를 작성할 때는 `IsValid()`의 반환 값을 확인하여 유효하지 않을 경우를 방어적으로 처리하는 방식으로 구현해야 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 인스턴스 룸 관련 기능을 제공합니다. # Properties - **string InstanceKey [ReadOnly]** 인스턴스 룸 식별자입니다. # Methods - **int32 GetUserCount()** 인스턴스 룸에 속한 유저 수를 반환합니다. - **boolean IsValid()** 인스턴스 룸이 유효한지 여부를 반환합니다. - **boolean MoveUser(string userId, string mapName = nil) [Yield]** userId에 해당하는 유저를 이 인스턴스 룸으

[task] | code [pass] | ⏳ 미판정 [title] | RigidbodyClimbableAttachStartEvent [question] | `RigidbodyClimbableAttachStartEvent`가 발생하면 `event.AttachedEntity`를 파라미터로 받아 자식 `SpriteRendererComponent`의 `SortingLayer`를 변경하는 `ChangedChildSortingLayer` 메서드를 정의하고, 이벤트 핸들러에서 해당 메서드를 호출하도록 구현한 스크립트를 작성해줘 [answer] | `RigidbodyClimbableAttachStartEvent` 이벤트가 발생하면 `event.AttachedEntity`에서 사다리나 로프 엔티티의 `SortingLayer` 값을 가져와, 플레이어 엔티티의 자식 `SpriteRendererComponent`들의 `SortingLayer`를 동일하게 변경하는 스크립트입니다. ```lua Method: [server] void ChangedChildSortingLayer (Entity attachedEntity) { for i, j in ipairs(self.Entity:Get [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Avatar가 사다리, 로프를 타기 전에 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * RigidbodyComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity AttachedEntity** Avatar가 탈 사다리, 로프 엔티티입니다.

[task] | code [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | InstanceRoom 컴포넌트의 MoveUser 메서드를 사용하세요 [answer] | InstanceRoom 컴포넌트의 `MoveUser` 메서드는 특정 유저를 인스턴스 룸으로 이동시키는 역할을 합니다. 이 메서드는 **[Yield]** 속성을 가지므로, 호출 시 스크립트 실행이 잠시 중단됩니다. ### 메서드 시그니처 `boolean MoveUser(string userId, string mapName = nil)` - **인수**: - `userId` (string): 이동시킬 유저의 ID - `mapName` (string, 선택): 특정 맵으로 이동시킬 경우 지정. 생략 시 기본 동작을 따름 - * [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 인스턴스 룸 관련 기능을 제공합니다. # Properties - **string InstanceKey [ReadOnly]** 인스턴스 룸 식별자입니다. # Methods - **int32 GetUserCount()** 인스턴스 룸에 속한 유저 수를 반환합니다. - **boolean IsValid()** 인스턴스 룸이 유효한지 여부를 반환합니다. - **boolean MoveUser(string userId, string mapName = nil) [Yield]** userId에 해당하는 유저를 이 인스턴스 룸으

[task] | code [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | InstanceRoom 컴포넌트의 MoveUsers 메서드를 사용하세요 [answer] | `InstanceRoom` 컴포넌트의 `MoveUsers` 메서드는 특정 테이블에 포함된 사용자 ID 목록을 해당 인스턴스 룸으로 이동시키는 역할을 합니다. 이 메서드는 `[Yield]` 속성을 가지므로 실행 중 스크립트가 일시 정지됩니다. 아래는 `InstanceRoom` 컴포넌트를 가진 엔티티에서 `MoveUsers` 메서드를 호출하는 mLua 스크립트 예제입니다. ```lua Property: [None] InstanceRoom MyInstanceRoom = nil Method: [server only] void OnBe [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 인스턴스 룸 관련 기능을 제공합니다. # Properties - **string InstanceKey [ReadOnly]** 인스턴스 룸 식별자입니다. # Methods - **int32 GetUserCount()** 인스턴스 룸에 속한 유저 수를 반환합니다. - **boolean IsValid()** 인스턴스 룸이 유효한지 여부를 반환합니다. - **boolean MoveUser(string userId, string mapName = nil) [Yield]** userId에 해당하는 유저를 이 인스턴스 룸으

[task] | single_turn [pass] | ⏳ 미판정 [title] | MaterialService [question] | ChangeMaterialProperty의 changeProperty 인자로 전달하는 Dictionary에서 value의 타입이 any인 경우, 특정 프로퍼티에 잘못된 타입의 값을 넣으면 어떤 현상이 일어나나요? [answer] | 제공된 문서에는 `ChangeMaterialProperty` 메서드의 `changeProperty` 인자로 잘못된 타입의 값을 전달했을 때 발생하는 구체적인 현상(예: 오류 발생, 무시, 디폴트 값으로 대체 등)에 대한 설명이 없습니다. 문서에는 단순히 `changeProperty`의 key가 프로퍼티 이름이고 value가 프로퍼티 값이라고만 정의되어 있으며, 타입 검증 실패 시 동작 방식에 대한 정보는 포함되어 있지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 머티리얼 프로퍼티를 제어하는 기능을 제공합니다. # Methods - **void ChangeMaterialProperty(string entryId, Dictionary<string, any> changeProperty) [ClientOnly]** entryId에 해당하는 머티리얼의 프로퍼티를 변경합니다. changeProperty의 key는 프로퍼티 이름, value는 프로퍼티 값입니다. ##### inherited from Service: - **EventHandlerBase ConnectEvent(string ke

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 액션을 예약하고 실행하는 TimerService [question] | TimerService를 활용한 OnMonsterDestroy 메서드에서 dropItem 로컬 함수가 정의된 후 _EntityService:Destroy 호출보다 먼저 _TimerService:SetTimer가 호출되는 이유를 2문장 이내로 설명하세요. [answer] | 몬스터 엔티티가 즉시 파괴되면 self를 참조하는 dropItem 콜백 함수가 정상적으로 실행되지 않기 때문입니다. 따라서 엔티티가 소멸하기 전에 타이머가 예약되어야 3초 후 아이템 드롭이 보장됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 몬스터가 등장하고 몇 초 뒤 공격을 시작하거나, 몬스터가 죽고 1초 뒤 아이템을 떨어뜨리는 것과 같은 어떤 일(액션)이 일어나는 타이밍을 제어해야 할 때가 있습니다. TimerService를 활용해 쉽고 효율적으로 액션이 일어나는 타이밍을 제어할 수 있습니다. TimerService가 제공하는 기능과 활용법을 알아보겠습니다. # TimerService 소개 **TimerService**는 원하는 순간에 어떤 액션을 실행하도록 예약하는 편의 기능을 제공합니다. Timer Service를 사용하지 않고 몬스터가

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