[task] | single_turn [pass] | ⏳ 미판정 [title] | RigidbodyClimbableAttachStartEvent [question] | HandleRigidbodyClimbableAttachStartEvent 핸들러에서 이벤트 인자로 전달되는 AttachedEntity는 어떤 타입의 데이터를 포함하나요? [answer] | `RigidbodyClimbableAttachStartEvent` 이벤트 핸들러에서 `event.AttachedEntity`는 **`Entity`** 타입입니다. 이 `AttachedEntity`는 아바타가 타기 시작하는 사다리나 로프를 나타내는 엔티티입니다. 참고 문서의 예제 코드에서 `AttachedEntity`는 `Entity` 타입의 변수로 선언되어 있으며, 해당 엔티티의 컴포넌트(예: `ClimbableSpriteRendererComponent`)에 직접 접근하는 방식으로 사용되고 있습니다. ```lua Event Ha [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] | single_turn [pass] | ⏳ 미판정 [title] | UserDisconnectEvent [question] | UserDisconnectEvent의 DisconnectMapName 속성 값이 한글 맵 이름이 아닌 영문 경로 형태로 나오는 이유는 무엇인가요? [answer] | 참고 문서에 `UserDisconnectEvent`의 `DisconnectMapName` 속성이 영문 경로 형태로 출력되는 이유에 대한 설명은 포함되어 있지 않습니다. 문서에는 해당 속성이 "유저의 접속이 끊겼던 맵의 이름"이라고만 정의되어 있을 뿐, 구체적인 데이터 형식이나 한글/영문 표기 방식에 대한 정보는 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저의 네트워크 접속이 불안정하여 끊겼을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string DisconnectMapName** 유저의 접속이 끊겼던 맵의 이름입니다. - **str
[task] | instruction_following [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | `MaplePreferencesLogic`의 이벤트 연결 및 해제 메서드 시그니처와 반환 타입을 표로 정리해서 [answer] | `MaplePreferencesLogic`에서 사용할 수 있는 이벤트 연결 및 해제 메서드의 시그니처와 반환 타입은 다음과 같습니다. | 메서드 시그니처 | 설명 | 반환 타입 | | :--- | :--- | :--- | | `ConnectEvent(string key, IScriptFunction eventHandler)` | 이벤트 키(key)를 기반으로 이벤트를 연결합니다. | `EventHandlerBase` | | `ConnectEvent(Type eventType, IScriptFunction eventHandler)` [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] | UITransformAxis [question] | UITransformAxis CastFrom 메서드를 사용하여 100이라는 숫자를 변환 시도하여 결과가 어떻게 되는지 확인하는 스크립트를 작성해줘 [answer] | `UITransformAxis`의 `CastFrom(number value)` 메서드는 숫자 값을 해당 Enum 타입으로 변환하는 정적(Static) 함수입니다. 참고 문서에 따르면 `UITransformAxis`의 멤버 값은 다음과 같습니다. * `Horizontal`: 0 * `Vertical`: 1 따라서 **100**이라는 숫자를 `UITransformAxis`로 변환(`CastFrom`)하게 되면, 해당 숫자에 매핑되는 Enum 값이 존재하지 않기 때문에 유효하지 않은 값이 반환되거나 에러가 발생할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | UI 시스템에서 축을 설정할 때 사용합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | Horizontal | 0 | 가로 축입니다. | | Vertical | 1 | 세로 축입니다. | # Methods - **UITransformAxis CastFrom(number value) [Static]** 숫자를 해당 타입으로 변환합니다. - **UITransformAxis CastFrom(string value) [Static]** 문자열을 해당 타입으로 변환합니다.
[task] | single_turn [pass] | ⏳ 미판정 [title] | UserDisconnectEvent [question] | UserDisconnectEvent의 UserId와 ProfileCode 중 어느 값을 기준으로 재접속 유저를 매칭하는 것이 안정적인지 설명해 주세요. [answer] | 참고 문서에 제공된 정보만으로 UserDisconnectEvent의 UserId와 ProfileCode 중 어느 값을 기준으로 재접속 유저를 매칭하는 것이 안정적인지 판단할 수 있는 근거가 없습니다. 문서에는 두 프로퍼티의 정의만 있으며, 재접속 매칭 로직이나 안정성에 대한 설명은 포함되어 있지 않습니다. 따라서 해당 질문에 대한 답변은 드릴 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저의 네트워크 접속이 불안정하여 끊겼을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string DisconnectMapName** 유저의 접속이 끊겼던 맵의 이름입니다. - **str
[task] | single_turn [pass] | ⏳ 미판정 [title] | RigidbodyClimbableAttachStartEvent [question] | 사다리나 로프에 붙는 순간 자식 오브젝트의 레이어를 변경하려면 어떤 컴포넌트의 프로퍼티를 참조해야 하나요? [answer] | 사다리나 로프에 붙는 순간(`RigidbodyClimbableAttachStartEvent` 발생 시) 자식 오브젝트의 레이어를 변경하려면, **`ClimbableSpriteRendererComponent`** 컴포넌트의 **`SortingLayer`** 프로퍼티를 참조해야 합니다. 구체적으로는 이벤트에서 전달되는 `AttachedEntity`(사다리/로프 엔티티)의 `ClimbableSpriteRendererComponent.SortingLayer` 값을 가져와서, 플레이어 엔티티의 자식 오브젝트들 중 `SpriteRendere [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] | single_turn [pass] | ⏳ 미판정 [title] | RigidbodyClimbableAttachStartEvent [question] | RigidbodyClimbableAttachStartEvent 이벤트가 발생하는 실행 공간이 클라이언트인지 서버인지 어떻게 구별할 수 있나요? [answer] | `RigidbodyClimbableAttachStartEvent` 이벤트는 **클라이언트(Client)** 에서 발생합니다. 이 이벤트는 `RigidbodyComponent` API에 의해 트리거되며, 문서에 명시된 것처럼 Client 공간에서만 동작합니다. 따라서 이 이벤트를 처리하는 Event Handler를 작성할 때 `[server]` 또는 `[server only]` 태그를 사용하는 것은 적절하지 않으며, 클라이언트에서 실행되는 로직으로 처리해야 합니다. 참고로, 해당 이벤트를 수신하여 자식 오브젝트의 레이어를 변경하는 [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] | Warning Level [question] | LWA-3017(OutOfRange)와 LWA-4001(EntityComponentPropertyValueTypeMismatch) 경고를 피하기 위해 _UserService 서비스의 이벤트 핸들러에서 유저 속성 값을 0부터 100 사이의 정수로 검증한 후 TransformComponent.Position에 Vector3 타입으로 안전하게 할당하는 유저 위치 동기화 스크립트를 작성해줘 [answer] | 제공된 문서와 예제 코드에는 `_UserService` 이벤트 핸들러에서 유저의 "속성 값(0~100 정수)"을 직접 검증하는 API나 프로퍼티가 정의되어 있지 않습니다. 또한, `TransformComponent.Position`은 `Vector3` 타입이며, 0~100 범위의 단일 정수 값과 직접적인 연관성이나 자동 변환 로직에 대한 설명이 문서에 없습니다. 따라서 요청하신 "0~100 정수 검증"과 "Vector3 위치 동기화"를 하나의 로직으로 연결하는 구체적인 API는 존재하지 않습니다. 대신, 문서에 명시된 `_User [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | | ID | 이름 | 설명 | |---|---|---| | LWA-1106 | NotRecommendedAssignment | 권장하지 않는 할당문을 작성했습니다. | | LWA-1109 | IntroduceGlobalVariable | 글로벌 변수를 선언했습니다. | | LWA-1110 | DeprecatedAPIUsed | 더는 사용하지 않는 API를 사용했습니다. 다른 API 사용을 권장합니다. | | LWA-1111 | UnbalancedAssignment | 할당문의 왼쪽과 오른쪽의 길이가 다릅니다. | | LWA-1112
[task] | single_turn [pass] | ⏳ 미판정 [title] | RigidbodyClimbableAttachStartEvent [question] | 이 이벤트 핸들러 내부에서 self:ChangeChildSortingLayer(AttachedEntity)처럼 자기 메서드를 호출할 때 주의해야 할 점이 있나요? [answer] | 제공된 문서에서 `HandleRigidbodyClimbableAttachStartEvent` 이벤트 핸들러 내부에서 자기 메서드를 호출할 때의 구체적인 주의사항(예: 실행 공간 제한, 동기화 문제, 특정 컴포넌트 존재 확인 등)에 대한 설명은 포함되어 있지 않습니다. 문서에 포함된 예제 코드는 다음과 같이 작성되어 있으며, 이는 `self:ChangeChildSortingLayer(AttachedEntity)` 호출이 가능함을 보여줄 뿐, 그 과정에서 특별히 주의해야 할 사항에 대한 가이드라인은 제공하지 않습니다. ```lua [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] | two_turn [pass] | ⏳ 미판정 [title] | RigidbodyClimbableAttachStartEvent [question] | RigidbodyClimbableAttachStartEvent는 어떤 상황에서 발생하며, 이벤트 객체를 통해 어떤 정보에 접근할 수 있나요? [answer] | `RigidbodyClimbableAttachStartEvent`는 Avatar(플레이어)가 사다리나 로프에 올라타기 **직전**에 발생하는 이벤트입니다. 이 이벤트는 `RigidbodyComponent`에 의해 트리거되며, 이벤트 발생 공간은 **Client**입니다. 이 이벤트 핸들러를 통해 이벤트 객체(`event`)에서 접근할 수 있는 정보는 다음과 같습니다: * **`AttachedEntity`** (타입: `Entity`) * Avatar가 탈 사다리 또는 로프의 엔티티입니다. 아래는 `Rigidbod [followup] | 이벤트에서 제공하는 AttachedEntity 프로퍼티의 타입과, 이 엔티티를 통해 사다리나 로프의 어떤 컴포넌트(예: ClimbableSpriteRendererComponent) 값을 읽어올 수 있는지 구체적으로 알려주세요. [followup_answer] | `RigidbodyClimbableAttachStartEvent`에서 제공하는 `AttachedEntity` 프로퍼티의 타입은 **`Entity`**입니다. 이 `AttachedEntity`를 통해 사다리나 로프의 **`ClimbableSpriteRendererComponent`**에 접근하여 값을 읽어올 수 있습니다. 참고 문서의 예제 코드에서는 구체적으로 `attachedEntity.ClimbableSpriteRendererComponent.SortingLayer` 프로퍼티를 읽어와서 사용하고 있습니다. 즉, `Attache [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] | instruction_following [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | IsValid()의 반환값에 따라 다른 로그 메시지를 출력하는 mLua 코드만 주석 설명과 함께 출력해서 [answer] | ```lua Method: [server only] void CheckInstanceRoomStatus() { -- 인스턴스 룸이 유효한지 확인 if self.Entity.InstanceRoomComponent:IsValid() then log("인스턴스 룸은 유효합니다.") else log("인스턴스 룸은 유효하지 않습니다.") end } ``` [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] | instruction_following [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | InstanceKey, GetUserCount, IsValid 프로퍼티와 메서드의 반환 타입을 각각 표로 정리해서 [answer] | 제공된 문서에 따르면 `InstanceKey`는 프로퍼티이며, `GetUserCount`와 `IsValid`는 메서드입니다. 각 항목의 반환 타입은 다음과 같습니다. | 항목 이름 | 종류 | 반환 타입 | | :--- | :--- | :--- | | `InstanceKey` | 프로퍼티 | `string` | | `GetUserCount` | 메서드 | `int32` | | `IsValid` | 메서드 | `boolean` | [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] | two_turn [pass] | ⏳ 미판정 [title] | AvatarGUIRendererComponent [question] | HandleKeyDownEvent에서 KeyboardKey.F1~F5를 판별하여 감정을 재생하는 로직의 작동 원리는 무엇인가요? [answer] | F1~F5 키 입력을 감지하여 아바타의 감정 이펙트를 재생하는 로직은 `InputService`의 키 입력 이벤트와 `AvatarGUIRendererComponent`의 감정 재생 메서드를 연결하는 방식으로 작동합니다. 작동 원리는 다음과 같습니다. 1. **키 입력 감지 (`HandleKeyDownEvent`)**: * `InputService`가 클라이언트에서 키가 눌리는 이벤트를 발생시킵니다. * `HandleKeyDownEvent` 핸들러가 `KeyDownEvent` 객체를 받아 `event.key [followup] | 만약 F6 키를 눌러서 새로운 감정(예: EmotionalType.Shine)을 재생하도록 확장하고 싶다면 이벤트 핸들러와 메서드를 어떻게 수정해야 하나요? [followup_answer] | F6 키를 눌러 `EmotionalType.Shine`을 재생하도록 확장하려면 `HandleKeyDownEvent` 이벤트 핸들러에 F6 키 판별 로직을 추가하고, `ChangeEmotion` 메서드에서 해당 감정 번호에 대응하는 `PlayEmotion` 호출을 추가해야 합니다. 기존 코드에서 `EmotionalType.Shine`은 이미 감정 번호 5에 매핑되어 있으므로, F6를 누를 때도 동일한 `EmotionalType.Shine`을 재생하려면 F6가 감지될 때 감정 번호 5를 전달하도록 하거나, 새로운 감정 번호(예: 6) [scores] | [judge_reason] | [source_doc] | F1부터 F5 키를 눌러 감정 표현을 변경합니다. ```lua Method: [client only] void ChangeEmotion (number emotionNumber) { if emotionNumber == 1 then self.Entity.AvatarGUIRendererComponent:PlayEmotion(EmotionalType.Vomit, 5) elseif emotionNumber == 2 then self.Entity.AvatarGUIRendererComponent:PlayEmotion(Em
[task] | two_turn [pass] | ⏳ 미판정 [title] | RigidbodyMovementOptionType [question] | 풋홀드 위의 `RigidbodyComponent`에 `RigidbodyMovementOptionType` 옵션을 설정하는 구체적인 API 호출 방법과 프로퍼티 구조가 궁금합니다. [answer] | 참고 문서에는 `RigidbodyMovementOptionType`의 구성 요소(`RelativeX`, `Absolute`)와 변환 메서드(`CastFrom`)만 정의되어 있습니다. `RigidbodyComponent`에 이 옵션을 실제로 적용하는 구체적인 API 메서드(예: `SetMovementOption` 등)나 해당 옵션을 저장하는 프로퍼티 구조에 대한 정보는 제공된 문서에 포함되어 있지 않습니다. 따라서 `RigidbodyComponent`에서 이 옵션을 설정하는 정확한 코드 작성은 문서 근거로 불가능합니다. 다만, 문 [followup] | `RigidbodyComponent`의 해당 옵션 프로퍼티에 `RigidbodyMovementOptionType.Absolute` 값을 할당하는 mLua 코드 예제를 작성해 주세요. [followup_answer] | 제공된 참고 문서에는 `RigidbodyMovementOptionType` Enum의 정의와 `CastFrom` 메서드만 포함되어 있으며, `RigidbodyComponent`에 이 옵션을 적용하는 프로퍼티 이름이나 메서드(예: `SetMovementOption` 등)에 대한 정보는 없습니다. 따라서 `RigidbodyComponent`의 구체적인 프로퍼티 또는 메서드를 지어내어 코드를 작성할 수 없습니다. 문서에 `RigidbodyComponent`에서 `RigidbodyMovementOptionType`을 설정하는 API가 명 [scores] | [judge_reason] | [source_doc] | 풋홀드 위의 RigidbodyComponent에게 적용할 옵션을 설정합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | RelativeX | 0 | x축 관성은 적용하고, y축 관성은 적용하지 않습니다. 플레이어가 발판의 이동 방향과 반대로 움직이면 속도가 감속하고, 같은 방향으로 움직이면 가속합니다. | | Absolute | 1 | 플레이어가 어느 방향으로 움직여도 속도가 동일합니다. | # Methods - **RigidbodyMovementOptionType CastFrom(number
[task] | instruction_following [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | 문서의 예제 코드에서 설정된 무기 음원 속성 목록을 단계별 번호 목록으로 나열해서 [answer] | 참고 문서의 예제 코드에 포함된 무기 음원 속성은 다음과 같습니다. 1. `_MaplePreferencesLogic.WeaponBowSound` 2. `_MaplePreferencesLogic.WeaponCaneSound` 3. `_MaplePreferencesLogic.WeaponCannonSound` 4. `_MaplePreferencesLogic.WeaponCrossBowSound` 5. `_MaplePreferencesLogic.WeaponDualBowSound` 6. `_MaplePreferencesLogic.Weapon [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] | EntryService [question] | EntryService에서 Model 이름으로 Id를 조회하고 SpawnService로 엔티티를 생성하는 코드를 주석 설명 없이 출력하세요. [answer] | ```lua local modelId = _EntryService:GetModelIdByName("NewModel") if modelId ~= nil then _SpawnService:SpawnByModelId(modelId, "NewEntity", Vector3.zero, self.Entity) end ``` [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] | single_turn [pass] | ⏳ 미판정 [title] | AutomaticLayerOption [question] | RigidbodyComponent의 AutomaticLayerOption을 All로 설정했는데, 특정 지형 위에 올라갔을 때 정렬 순서가 안 바뀌는 이유는 무엇인가요? [answer] | RigidbodyComponent의 `AutomaticLayerOption`을 `All`(2)로 설정했음에도 특정 지형 위에서 정렬 순서(SortingLayer)가 변경되지 않는 가장 큰 이유는, **밟고 있는 대상(Foothold)이 `ClimbableSpriteRendererComponent`를 가지지 않았거나, 해당 컴포넌트의 `SortingLayer`가 기본값(또는 동일한 값)으로 설정되어 있기 때문**입니다. `AutomaticLayerOption.All`의 동작 원리는 다음과 같습니다: 1. Entity가 밟고 있는 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | RigidbodyComponent와 ClimbableSpriteRendererComponent의 SortingLayer와의 관계를 나타냅니다. # Members | 이름 | 값 | 설명 | |---|---|---| | None | 0 | Entity가 foothold, 사다리, 로프의 SortingLayer에 따라 변경되지 않습니다. | | Climbable | 1 | Entity가 사다리, 로프를 타면 해당 SortingLayer와 동일하게 변경됩니다. | | All | 2 | Entity가 밟고 있는 foothold, 타고
[task] | single_turn [pass] | ⏳ 미판정 [title] | UserDisconnectEvent [question] | UserDisconnectEvent를 수신할 때 UserService의 어떤 메서드를 통해 이벤트를 구독해야 하는지 알려주세요. [answer] | 제공된 문서에는 `UserDisconnectEvent`를 수신하기 위해 `UserService`의 특정 메서드를 명시적으로 호출하여 이벤트를 구독해야 한다는 내용이 포함되어 있지 않습니다. 문서에 따르면, `UserDisconnectEvent`는 `UserService`가 서버에서 발생시키는 이벤트이며, 이를 처리하기 위한 방법은 **Event Handler** 블록을 작성하는 것입니다. `UserService`의 특정 구독 메서드를 호출하는 코드나 설명은 문서에 존재하지 않습니다. 따라서, 문서에 기반할 때 `UserDisco [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저의 네트워크 접속이 불안정하여 끊겼을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string DisconnectMapName** 유저의 접속이 끊겼던 맵의 이름입니다. - **str
[task] | two_turn [pass] | ⏳ 미판정 [title] | AvatarGUIRendererComponent [question] | F1~F5 키로 아바타 감정 표현을 변경하는 스크립트 구조와 InputService 이벤트 처리 방식은 어떻게 되나요? [answer] | F1부터 F5 키를 눌러 아바타의 감정 표현을 변경하는 스크립트는 `InputService`의 키보드 입력 이벤트를 수신하고, 해당 키에 따라 `AvatarGUIRendererComponent`의 감정 재생 메서드를 호출하는 구조로 이루어져 있습니다. ### 스크립트 구조 1. **입력 이벤트 처리 (`Event Handler`)**: * `[client only]` 및 `[service: InputService]` 속성을 가진 `HandleKeyDownEvent` 핸들러를 사용합니다. * 이벤트 객체 ` [followup] | ChangeEmotion 메서드에서 각 숫자에 대응하는 EmotionalType 값을 수정하거나 추가 감정을 넣고 싶다면 코드에서 어떤 부분을 변경해야 하나요? [followup_answer] | `ChangeEmotion` 메서드에서 감정 유형을 수정하거나 추가하려면, 메서드 본문 내의 `if-elseif` 조건문 블록을 수정해야 합니다. 구체적으로 `self.Entity.AvatarGUIRendererComponent:PlayEmotion` 호출 시 전달되는 첫 번째 인자(`EmotionalType` 값)와 두 번째 인자(지속 시간)를 변경하면 됩니다. 기존 문서에 명시된 `EmotionalType` 값(`Vomit`, `Glitter`, `Hum`, `Love`, `Shine`) 외에 다른 감정 유형이 존재하는지 여부 [scores] | [judge_reason] | [source_doc] | F1부터 F5 키를 눌러 감정 표현을 변경합니다. ```lua Method: [client only] void ChangeEmotion (number emotionNumber) { if emotionNumber == 1 then self.Entity.AvatarGUIRendererComponent:PlayEmotion(EmotionalType.Vomit, 5) elseif emotionNumber == 2 then self.Entity.AvatarGUIRendererComponent:PlayEmotion(Em
[task] | single_turn [pass] | ⏳ 미판정 [title] | UserReconnectEvent [question] | UserReconnectEvent의 TimeNetworkClosed 프로퍼티에 어떤 형식의 값이 저장되는지 궁금합니다. [answer] | `UserReconnectEvent`의 `TimeNetworkClosed` 프로퍼티에는 **`DateTime`** 형식의 값이 저장됩니다. 이 값은 유저의 네트워크 접속이 끊겼던 시간을 나타내며, 이벤트 핸들러에서 이를 로그로 출력하거나 다른 로직에 활용할 수 있습니다. `DateTime` 타입은 문자열로 변환하여 사용할 때 `tostring()` 함수를 함께 사용합니다. ```lua Event Handler: [service: UserService] HandleUserReconnectEvent(UserReconnectEvent [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저가 재접속되었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string ProfileCode** 유저의 프로필 코드입니다. - **string ReconnectMapName**
[task] | single_turn [pass] | ⏳ 미판정 [title] | UserReconnectEvent [question] | UserReconnectEvent가 발생하는 시점에서 기존에 생성된 유저 엔티티와 새로 생성된 엔티티의 UserId는 동일한 값으로 유지되나요? [answer] | 제공된 참고 문서에는 `UserReconnectEvent`의 프로퍼티(특히 `UserId`의 정의)와 이벤트 발생 조건, 그리고 예제 코드만 포함되어 있습니다. 문서 내에서 `UserId`에 대해 설명한 부분은 **"유저의 고유 식별자입니다"** 라는 문장뿐입니다. 재접속 시 기존 엔티티와 새로 생성된 엔티티의 `UserId`가 동일하게 유지되는지, 혹은 변경되는지에 대한 명시적인 기술이나 로직 설명은 문서에 포함되어 있지 않습니다. 따라서 주어진 참고 문서만을 근거로 할 때, 재접속 시 `UserId`의 동일성 유지 여부를 확 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저가 재접속되었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string ProfileCode** 유저의 프로필 코드입니다. - **string ReconnectMapName**
[task] | single_turn [pass] | ⏳ 미판정 [title] | UserReconnectEvent [question] | 이벤트 생성자에서 profileCode 인자를 생략하고 호출하면 프로퍼티에 어떤 기본값이 설정되나요? [answer] | 참고 문서에 `UserReconnectEvent` 생성자의 `profileCode` 인자가 생략되었을 때 프로퍼티에 설정되는 구체적인 기본값은 명시되어 있지 않습니다. 문서에는 생성자 시그니처가 `UserReconnectEvent(string reconnectMapName = nil, DateTime timeNetworkClosed = nil, string userId = nil, string profileCode = nil)`로 나와 있어, 생략 시 `nil`이 전달됨을 암시하지만, `ProfileCode` 프로퍼티가 실제로 ` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저가 재접속되었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string ProfileCode** 유저의 프로필 코드입니다. - **string ReconnectMapName**
[task] | two_turn [pass] | ⏳ 미판정 [title] | EntryService [question] | _EntryService의 GetModelIdByName 메서드가 반환하는 값의 타입은 무엇이며, 이름이 존재하지 않을 경우 어떤 값이 반환되는지 알려주세요. [answer] | `_EntryService:GetModelIdByName(string name)` 메서드는 **`string`** 타입의 값을 반환합니다. 문서에 따르면, 이름으로 Model Id를 찾아 반환한다고 명시되어 있습니다. 다만, 요청하신 이름의 Model이 존재하지 않을 경우 **어떤 값(nil 등)이 반환되는지에 대한 구체적인 설명은 제공된 문서에 없습니다.** 예제 코드에서는 반환값이 `nil`인지 확인하는 로직(`if modelId ~= nil then`)이 사용되고 있으므로, 존재하지 않을 경우 `nil`이 반환될 가능성이 [followup] | 반환 값이 nil일 때 if 조건문으로 검사하여 SpawnService를 호출하는 구체적인 코드 예시를 작성해 주세요. [followup_answer] | ```lua local modelId = _EntryService:GetModelIdByName("NewModel") if modelId ~= nil then _SpawnService:SpawnByModelId(modelId , "NewEntity" , Vector3.zero , self.Entity) end ``` [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] | single_turn [pass] | ⏳ 미판정 [title] | UserDisconnectEvent [question] | 이벤트 발생 시점의 TimeNetworkClosed 값과 현재 서버 시간을 비교하여 접속 끊김 여부를 판단할 때 주의해야 할 시차 문제는 없나요? [answer] | 제공된 참고 문서에는 `UserDisconnectEvent`의 `TimeNetworkClosed` 프로퍼티가 "유저의 접속이 끊겼던 시간"임을 명시하고 있고, `DateTime` 타입임을 알려줍니다. 하지만 **서버 현재 시간을 가져오는 API**나, `TimeNetworkClosed` 값이 클라이언트 시간인지 서버 시간인지, 그리고 두 시간 사이의 시차(네트워크 지연 등)에 대한 설명이나 비교를 위한 특정 메서드는 문서에 포함되어 있지 않습니다. 따라서, `TimeNetworkClosed`와 "현재 서버 시간"을 직접 비교하기 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저의 네트워크 접속이 불안정하여 끊겼을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string DisconnectMapName** 유저의 접속이 끊겼던 맵의 이름입니다. - **str
[task] | instruction_following [pass] | ⏳ 미판정 [title] | EntryService [question] | EntryService의 GetDataSetIdByName 메서드를 사용하는 예시 코드를 3문장 이내의 설명과 함께 제시하세요. [answer] | `GetDataSetIdByName` 메서드는 특정 이름의 DataSet을 찾아 해당 ID를 반환합니다. 반환된 ID가 `nil`이 아닌지 확인 후, 해당 DataSet을 사용하는 로직을 실행하면 됩니다. ```lua Method: [server only] void OnBeginPlay() { local dataSetId = _EntryService:GetDataSetIdByName("MyDataSet") if dataSetId ~= nil then log("Found DataSet ID: " .. d [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] | instruction_following [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | DeathSound, JumpSound, WeaponBowSound 프로퍼티 3개의 이름과 각 프로퍼티의 설명을 그대로 인용하여, 이름과 설명을 구분하는 세미콜론(;)으로 연결된 한 줄 형식으로 출력하세요. [answer] | DeathSound: 죽을 때 재생되는 소리입니다.; JumpSound: 점프할 때 재생되는 소리입니다.; WeaponBowSound: Bow 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생되는 소리입니다. [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] | UserReconnectEvent [question] | UserService가 서버에서만 작동하기 때문에 UserReconnectEvent 핸들러 내에서는 클라이언트 UI를 직접 업데이트할 수 없는 이유가 무엇인가요? [answer] | UserService는 서버 공간(Server)에서 작동하며, `UserReconnectEvent`도 서버에서 발생합니다. mLua는 서버와 클라이언트 간의 코드 실행 환경을 분리하고 있어, 서버에서 실행되는 이벤트 핸들러 내부에서는 클라이언트 전용 UI 컴포넌트나 리소스에 직접 접근하거나 조작할 수 없습니다. 따라서 `HandleUserReconnectEvent`와 같은 서버 사이드 핸들러에서는 클라이언트 UI를 직접 업데이트하는 것이 불가능하며, 클라이언트 UI를 변경해야 하는 경우 서버에서 클라이언트로 메시지를 전달하거나(예 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저가 재접속되었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string ProfileCode** 유저의 프로필 코드입니다. - **string ReconnectMapName**
[task] | single_turn [pass] | ⏳ 미판정 [title] | UserDisconnectEvent [question] | 이 이벤트 핸들러에서 유저가 접속 중이던 맵의 엔티티를 정리하려면 DisconnectMapName만으로 해당 맵 엔티티를 찾을 수 있나요? [answer] | 아니, `DisconnectMapName`만으로 해당 맵의 엔티티를 직접적으로 찾을 수 있는 API가 참고 문서에 없습니다. `UserDisconnectEvent`의 `DisconnectMapName` 프로퍼티는 단순히 유저의 접속이 끊겼던 **맵의 이름(string)**을 반환할 뿐입니다. 이 문자열을 가지고 맵에 존재하는 특정 엔티티(예: NPC, 아이템 등)를 조회하거나 정리하는 함수(`GetEntityByPath` 등)가 문서에 명시되어 있지 않습니다. 참고 문서에 포함된 `_EntityService:GetEntityBy [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저의 네트워크 접속이 불안정하여 끊겼을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string DisconnectMapName** 유저의 접속이 끊겼던 맵의 이름입니다. - **str
[task] | instruction_following [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | MaplePreferencesLogic의 무기에 따른 사운드 프로퍼티 5개를 선택하여, 프로퍼티 이름과 대응하는 무기 유형을 2열 표로 정리하세요. [answer] | MaplePreferencesLogic의 무기 사운드 프로퍼티 5개와 대응하는 무기 유형은 다음과 같습니다. | 프로퍼티 이름 | 무기 유형 | | :--- | :--- | | WeaponBowSound | Bow | | WeaponSwordLSound | SwordL (양손검) | | WeaponSwordKSound | SwordK (카타나) | | WeaponSwordSSound | SwordS (단검) | | WeaponGunSound | Gun | [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] | WeaponSwordBSound와 WeaponSwordSSound는 각각 어떤 유형의 무기에 해당하나요? [answer] | `WeaponSwordBSound`는 **Sword B** 타입의 사운드 이펙트와 연결된 무기로, **한손검**이 이 타입에 해당합니다. `WeaponSwordSSound`는 **SwordS** 타입의 사운드 이펙트와 연결된 무기로, **단검**이 이 타입에 해당합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 메이플스토리의 설정 값이나 변수 값을 프로퍼티로 제공합니다. # Properties - **string DeathSound [Sync]** 죽을 때 재생되는 소리입니다. - **string JumpSound [Sync]** 점프할 때 재생되는 소리입니다. - **string WeaponBowSound [Sync]** Bow 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생되는 소리입니다. - **string WeaponCaneSound [Sync]** Cane 타입의 사운드 이펙트와 연결된 무기로 근접 공