[task] | code [pass] | ⏳ 미판정 [title] | AvatarGUIRendererComponent [question] | InputService 의 HandleKeyDownEvent 를 통해 F1 키를 누르면 EmotionalType.Vomit 을 5초간, F2 키를 누르면 EmotionalType.Glitter 를 5초간 재생하는 AvatarGUIRendererComponent 스크립트를 작성해줘 [answer] | 요청하신 F1, F2 키 입력에 따라 `AvatarGUIRendererComponent`의 감정 이펙트를 재생하는 mLua 스크립트입니다. ```lua Method: [client only] void PlayEmotionByFKey (number keyNumber) { if keyNumber == 1 then self.Entity.AvatarGUIRendererComponent:PlayEmotion(EmotionalType.Vomit, 5) elseif keyNumber == 2 then self.Entity.Avata [followup] | [followup_answer] | [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] | code [pass] | ⏳ 미판정 [title] | AvatarGUIRendererComponent [question] | InputService 의 HandleKeyDownEvent 를 통해 F3 키를 누르면 EmotionalType.Hum 을 5초간, F4 키를 누르면 EmotionalType.Love 를 5초간 재생하는 AvatarGUIRendererComponent 스크립트를 작성해줘 [answer] | F3 키를 누르면 `EmotionalType.Hum` 감정을, F4 키를 누르면 `EmotionalType.Love` 감정을 5초간 재생하는 스크립트입니다. ```lua Method: [client only] void ChangeEmotion(number emotionNumber) { if emotionNumber == 3 then self.Entity.AvatarGUIRendererComponent:PlayEmotion(EmotionalType.Hum, 5) elseif emotionNumber == 4 then se [followup] | [followup_answer] | [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] | code [pass] | ⏳ 미판정 [title] | AvatarGUIRendererComponent [question] | InputService 의 HandleKeyDownEvent 를 통해 F5 키를 누르면 EmotionalType.Shine 을 5초간 재생하는 AvatarGUIRendererComponent 스크립트를 작성해줘 [answer] | 사용자가 요청한 기능은 F5 키를 눌렀을 때 `AvatarGUIRendererComponent`의 `PlayEmotion` 메서드를 호출하여 `EmotionalType.Shine` 감정을 5초 동안 재생하는 것입니다. `InputService`의 `HandleKeyDownEvent` 이벤트 핸들러를 통해 키 입력을 감지하고, 감지된 키가 `KeyboardKey.F5`인지 확인한 후 해당 컴포넌트를 제어하는 로직을 구현했습니다. ```lua Method: [client only] void PlayShineEmotion() { [followup] | [followup_answer] | [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] | code [pass] | ⏳ 미판정 [title] | UITransformAxis [question] | UI의 가로 축과 세로 축을 각각 0과 1의 값으로 변환하여 로그에 출력하는 스크립트를 작성해줘 [answer] | `UITransformAxis`는 UI 시스템에서 축을 설정할 때 사용하는 열거형(Enums)으로, `Horizontal`은 0, `Vertical`은 1의 값을 가집니다. 요청하신 대로 가로 축과 세로 축의 값(0과 1)을 `UITransformAxis` 타입으로 변환하여 로그에 출력하는 스크립트는 다음과 같습니다. ```lua Method: [client only] void OnBeginPlay() { -- 0을 UITransformAxis 타입으로 변환 (Horizontal) local horizontalAx [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] | instruction_following [pass] | ⏳ 미판정 [title] | RigidbodyClimbableDetachEndEvent [question] | RigidbodyClimbableDetachEndEvent의 생성자(Constructor) 시그니처와 설명을 코드 블록으로만 출력하세요. [answer] | ```lua RigidbodyClimbableDetachEndEvent() ``` [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"> # Constructors - **RigidbodyClimbableDetachEndEvent()** 기본값으로 Rigi
[task] | instruction_following [pass] | ⏳ 미판정 [title] | RigidbodyClimbableDetachEndEvent [question] | RigidbodyClimbableDetachEndEvent가 발생하는 공간(Space)은 무엇이며, 이를 생성하는 API는 무엇인지 한 문장으로 답하세요. [answer] | RigidbodyClimbableDetachEndEvent는 Client 공간에서 발생하며, 이를 생성하는 API는 RigidbodyComponent입니다. [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"> # Constructors - **RigidbodyClimbableDetachEndEvent()** 기본값으로 Rigi
[task] | instruction_following [pass] | ⏳ 미판정 [title] | UserDisconnectEvent [question] | UserDisconnectEvent의 Properties를 이름과 타입, 설명을 포함하여 표로 정리해서 출력하세요. [answer] | | 이름 | 타입 | 설명 | | :--- | :--- | :--- | | DisconnectMapName | string | 유저의 접속이 끊겼던 맵의 이름입니다. | | ProfileCode | string | 유저의 프로필 코드입니다. | | TimeNetworkClosed | DateTime | 유저의 접속이 끊겼던 시간입니다. | | UserId | string | 유저의 고유 식별자입니다. | [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] | UserDisconnectEvent [question] | UserDisconnectEvent의 Constructors 두 가지의 인자 구성 차이를 3문장 이내로 비교해서 설명하세요. [answer] | 첫 번째 생성자는 `IUser` 객체 하나를 인자로 받아 유저 정보를 초기화합니다. 두 번째 생성자는 `disconnectMapName`, `timeNetworkClosed`, `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] | code [pass] | ⏳ 미판정 [title] | Warning Level [question] | LWA-3008(AlreadyExist)과 LWA-3048(DuplicateComponent) 오류를 방지하기 위해 _EntityService:GetEntityByPath()로 엔티티 존재 여부를 확인하고, 존재하지 않을 때만 _SpawnService:SpawnByModelId()를 호출하여 스폰하는 안전 스폰 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 `_EntityService:GetEntityByPath()`나 `_SpawnService:SpawnByModelId()`의 구체적인 반환값(예: 실패 시 `nil` 반환 여부)에 대한 설명이 없습니다. 따라서 "존재하지 않을 때만" 스폰하는 로직을 작성할 때, `GetEntityByPath`가 엔티티를 찾지 못하면 `nil`을 반환한다고 가정하여 작성하는 것이 표준적인 mLua 패턴입니다. 다만, **LWA-3008(AlreadyExist)**과 **LWA-3048(DuplicateComponent)** 오 [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] | code [pass] | ⏳ 미판정 [title] | UITransformAxis [question] | UITransformAxis CastFrom 메서드를 이용해 숫자 0과 문자열 "Vertical"을 UITransformAxis 타입으로 변환하는 스크립트를 작성해줘 [answer] | `UITransformAxis`의 정적 메서드 `CastFrom`은 숫자 또는 문자열 인수를 받아 해당 열거형 값으로 변환합니다. * 숫자 `0`은 `Horizontal`로 변환됩니다. * 문자열 `"Vertical"`은 `Vertical`로 변환됩니다. 요청하신 변환 로직을 포함하는 스크립트는 다음과 같습니다. ```lua Method: [client only] void OnBeginPlay() { -- 숫자 0을 UITransformAxis로 변환 (결과: Horizontal) local axisFro [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] | two_turn [pass] | ⏳ 미판정 [title] | AvatarGUIRendererComponent [question] | self.Entity.AvatarGUIRendererComponent:PlayEmotion을 통해 감정을 5초간 재생하는 코드의 동작 방식은 어떻게 되나요? [answer] | `self.Entity.AvatarGUIRendererComponent:PlayEmotion` 메서드는 아바타의 GUI 렌더러에 감정을 표시하는 기능을 수행합니다. 이 메서드는 두 개의 인자를 받으며, 첫 번째 인자는 `EmotionalType` enum 타입으로 표시할 감정의 종류를 지정하고, 두 번째 인자는 `number` 타입으로 해당 감정이 표시되는 지속 시간(초 단위)을 지정합니다. 따라서 5초간 감정을 재생하려면 두 번째 인자로 `5`를 전달하면 됩니다. 아래 예제는 F1 키를 눌렀을 때 `EmotionalType.Vo [followup] | 감정 재생 시간인 매개변수 5를 변수로 관리하거나, 특정 감정이 재생 중일 때 다른 키 입력을 무시하는 예외 처리 로직을 추가하려면 어떻게 작성해야 하나요? [followup_answer] | 참고 문서에는 `PlayEmotion` 메서드의 매개변수(감정 타입, 지속 시간)와 F1~F5 키 입력 처리 로직만 제공되며, 감정 재생 중 상태 추적, 입력 무시 로직, 또는 관련 API(예: 감정 종료 이벤트, 재생 상태 조회 메서드 등)에 대한 정보가 포함되어 있지 않습니다. 따라서 "특정 감정이 재생 중일 때 다른 키 입력을 무시하는 예외 처리"를 위한 API나 이벤트 핸들러는 문서에 존재하지 않아 작성할 수 없습니다. 다만, **감정 재생 시간을 변수로 관리**하는 부분은 문서에 있는 `PlayEmotion` 메서드 시 [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] | UITransformAxis [question] | UITransformAxis 열거형에서 Horizontal과 Vertical 값을 어떻게 구분해서 사용하나요? [answer] | `UITransformAxis`는 UI 시스템에서 변형(스케일, 위치 등)을 적용할 때 기준이 될 축을 지정하기 위해 사용됩니다. 두 값은 다음과 같이 구분하여 사용하며, 각각의 값은 정수 기반으로 정의되어 있습니다. ### 1. 값 구분 * **`Horizontal`**: 값이 **0**입니다. 가로 축을 지정할 때 사용합니다. * **`Vertical`**: 값이 **1**입니다. 세로 축을 지정할 때 사용합니다. ### 2. 사용 방법 `UITransformAxis`의 정수 값(0 또는 1)을 직접 사용하거나, 열거 [followup] | 특정 UI 컴포넌트에서 가로 방향 이동만 허용하려면 UITransformAxis.Horizontal을 어떤 코드 구조로 적용해야 하나요? [followup_answer] | 제공된 참고 문서에는 `UITransformAxis` 열거형의 멤버(`Horizontal`, `Vertical`)와 타입 변환 메서드(`CastFrom`)만 정의되어 있으며, **UI 컴포넌트의 이동 제한, 축 잠금, 또는 특정 축만 허용하도록 설정하는 구체적인 API나 프로퍼티(예: `SetAxisLock`, `EnableAxis` 등)는 포함되어 있지 않습니다.** 따라서 `UITransformAxis.Horizontal`을 사용하여 "가로 방향 이동만 허용"하는 기능을 구현하는 구체적인 코드 구조나 API 호출 방법은 문서에 [scores] | [judge_reason] | [source_doc] | UI 시스템에서 축을 설정할 때 사용합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | Horizontal | 0 | 가로 축입니다. | | Vertical | 1 | 세로 축입니다. | # Methods - **UITransformAxis CastFrom(number value) [Static]** 숫자를 해당 타입으로 변환합니다. - **UITransformAxis CastFrom(string value) [Static]** 문자열을 해당 타입으로 변환합니다.
[task] | two_turn [pass] | ⏳ 미판정 [title] | Error Level [question] | LEA-1101과 LEA-1103의 차이점이 무엇이며, mLua에서 콜론(:)과 도트(.) 사용 규칙이 타입 체크 오류와 어떻게 연결되는지 설명해 주세요. [answer] | **LEA-1101 (UnavailableMethodCall)과 LEA-1103 (ParameterTypeMismatch)의 차이점** 두 오류는 모두 함수 호출 시 발생하지만, 발생하는 단계와 원인이 다릅니다. 1. **LEA-1101 (UnavailableMethodCall)** * **원인:** 콜론(`:`) 사용이 권장되는 함수(메서드)를 도트(`.`)로 호출할 때 발생합니다. * **특징:** 함수의 정의 방식과 호출 방식이 일치하지 않는 **구문/호출 규칙 위반**입니다. mLua에서 메서드는 [followup] | self:MyMethod() 호출 시 LEA-1101(UnavailableMethodCall)이 발생하는 대신, 매개 변수 타입이 다르면 LEA-1103(ParameterTypeMismatch)가 발생하는 실제 스크립트 컴포넌트 코드 예시를 보여주세요. [followup_answer] | `self:MyMethod()` 호출 시 콜론(`:`)을 올바르게 사용했으므로 LEA-1101(UnavailableMethodCall)은 발생하지 않습니다. 이때 매개 변수 타입이 함수 정의와 일치하지 않으면 LEA-1103(ParameterTypeMismatch)이 발생합니다. 아래 예제는 `number` 타입을 인수로 받아야 하는 `SetSpeed` 메서드를 정의하고, 이를 호출할 때 `string` 타입을 전달하여 LEA-1103 오류를 유발하는 코드입니다. ```lua Property: [None] number Curre [scores] | [judge_reason] | [source_doc] | | ID | 이름 | 설명 | |---|---|---| | LEA-1001 | ExpectedSymbol | 코드를 구성하는데 필요한 심볼을 작성하지 않았습니다. | | LEA-1002 | NoReturnStatement | 반환 값이 필요한 함수에 반환 값을 작성하지 않았습니다. | | LEA-1003 | NeedPairKeyword | 코드를 구성에 필요한 쌍이 맞지 않습니다. | | LEA-1004 | DuplicateLabel | 라벨을 중복 정의했습니다. | | LEA-1005 | UnexpectedSymbol | 예상하지
[task] | instruction_following [pass] | ⏳ 미판정 [title] | UserDisconnectEvent [question] | UserDisconnectEvent를 처리하는 Event Handler 코드를 작성하되, 설명은 주석으로만 달고 코드만 출력하세요. [answer] | ```lua Event Handler: [service: UserService] HandleUserDisconnectEvent(UserDisconnectEvent event) { -- Parameters local DisconnectMapName = event.DisconnectMapName local TimeNetworkClosed = event.TimeNetworkClosed local UserId = event.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 DisconnectMapName** 유저의 접속이 끊겼던 맵의 이름입니다. - **str
[task] | instruction_following [pass] | ⏳ 미판정 [title] | RigidbodyClimbableAttachStartEvent [question] | RigidbodyClimbableAttachStartEvent의 AttachedEntity 프로퍼티가 가리키는 엔티티의 정의만 1문장으로 설명하세요. [answer] | `AttachedEntity`는 Avatar가 타기 시작하는 사다리나 로프 엔티티를 가리킵니다. [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] | instruction_following [pass] | ⏳ 미판정 [title] | RigidbodyClimbableDetachEndEvent [question] | RigidbodyClimbableDetachEndEvent의 정의와 발생 조건을 2줄 이내의 표로 정리하세요. [answer] | | 항목 | 내용 | | :--- | :--- | | **정의** | Avatar가 사다리, 로프에서 떨어진 후에 발생하는 이벤트 | | **발생 조건** | `RigidbodyComponent` (Client 공간)에 의해 발생 | [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"> # Constructors - **RigidbodyClimbableDetachEndEvent()** 기본값으로 Rigi
[task] | code [pass] | ⏳ 미판정 [title] | UITransformAxis [question] | UITransformAxis CastFrom 메서드를 통해 "Horizontal"과 "Vertical" 문자열을 변환하여 두 값이 서로 다른지 비교하는 스크립트를 작성해줘 [answer] | `UITransformAxis`의 정적 메서드 `CastFrom(string value)`를 사용하면 `"Horizontal"`과 `"Vertical"` 문자열을 각각 해당 열거형 값으로 변환할 수 있습니다. 변환된 두 값이 서로 다른지 비교하는 스크립트는 다음과 같습니다. ```lua Method: [server only] void OnBeginPlay() { local axis1 = UITransformAxis.CastFrom("Horizontal") local axis2 = UITransformAxis.Cast [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] | instruction_following [pass] | ⏳ 미판정 [title] | RigidbodyClimbableAttachStartEvent [question] | 문서에 명시된 API 발생 공간(Space)과 이벤트 발생 시점(Avatar가 사다리, 로프를 타기 전)을 2행의 표로 정리하세요. [answer] | | 항목 | 내용 | | :--- | :--- | | API 발생 공간(Space) | Client | | 이벤트 발생 시점 | Avatar가 사다리, 로프를 타기 전 | [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] | instruction_following [pass] | ⏳ 미판정 [title] | UserReconnectEvent [question] | UserReconnectEvent의 Properties 4개를 이름과 타입만 포함하여 표로 정리하세요. [answer] | | 이름 | 타입 | | :--- | :--- | | ProfileCode | string | | ReconnectMapName | string | | TimeNetworkClosed | DateTime | | UserId | string | [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] | RigidbodyClimbableDetachEndEvent [question] | RigidbodyClimbableDetachEndEvent는 서버에서도 발생하나요, 클라이언트에서만 발생하나요? [answer] | RigidbodyClimbableDetachEndEvent는 **클라이언트(Client)** 공간에서만 발생하는 이벤트입니다. 이 이벤트는 `RigidbodyComponent`에 의해 트리거되며, 해당 컴포넌트는 클라이언트에서 동작합니다. 따라서 서버에서 이 이벤트를 처리하는 Event Handler를 작성할 경우, 이벤트가 수신되지 않습니다. [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"> # Constructors - **RigidbodyClimbableDetachEndEvent()** 기본값으로 Rigi
[task] | instruction_following [pass] | ⏳ 미판정 [title] | UserReconnectEvent [question] | UserReconnectEvent가 발생하는 서비스 공간과 이벤트 명칭을 3문장 이내로 요약하세요. [answer] | UserReconnectEvent는 UserService에서 발생하는 서버 공간 이벤트입니다. 해당 이벤트의 명칭은 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] | RigidbodyClimbableDetachEndEvent [question] | 이벤트 객체를 생성할 때 특별한 인자를 전달해야 하는 경우가 있나요? [answer] | 제공된 문서에 따르면, `RigidbodyClimbableDetachEndEvent`의 생성자(Constructor)는 특별한 인자를 전달할 필요가 없습니다. 문서에 명시된 생성자는 다음과 같이 인자 없이 기본값으로 초기화하도록 정의되어 있습니다. ```lua RigidbodyClimbableDetachEndEvent() ``` 따라서 이 이벤트 객체를 생성할 때 인자를 전달하는 경우는 없습니다. [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"> # Constructors - **RigidbodyClimbableDetachEndEvent()** 기본값으로 Rigi
[task] | instruction_following [pass] | ⏳ 미판정 [title] | UserReconnectEvent [question] | UserReconnectEvent를 생성하는 Constructor 2개의 시그니처를 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua -- 1. IUser 객체를 인수로 받아 UserReconnectEvent를 초기화합니다. UserReconnectEvent(IUser user) -- 2. 재접속 맵 이름, 접속이 끊긴 시간, 유저 ID, 프로필 코드를 인수로 받아 UserReconnectEvent를 초기화합니다. -- 모든 인수는 선택적이며(nil) 기본값이 nil입니다. UserReconnectEvent(string reconnectMapName = nil, DateTime timeNetworkClosed = nil, string userI [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] | code [pass] | ⏳ 미판정 [title] | AvatarGUIRendererComponent [question] | InputService 의 HandleKeyDownEvent 를 통해 F1부터 F5 키를 각각 눌러 EmotionalType.Vomit, EmotionalType.Glitter, EmotionalType.Hum, EmotionalType.Love, EmotionalType.Shine 을 5초씩 순서대로 재생하는 AvatarGUIRendererComponent 스크립트를 작성해줘 [answer] | F1부터 F5 키를 누르면 각각 지정된 감정 이모티콘을 5초간 재생하는 스크립트입니다. ```lua Method: [client only] void PlayEmotionByIndex (number index) { if index == 1 then self.Entity.AvatarGUIRendererComponent:PlayEmotion(EmotionalType.Vomit, 5) elseif index == 2 then self.Entity.AvatarGUIRendererComponent: [followup] | [followup_answer] | [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] | instruction_following [pass] | ⏳ 미판정 [title] | RigidbodyClimbableAttachStartEvent [question] | 문서 예제 코드에서 HandleRigidbodyClimbableAttachStartEvent 핸들러 내부의 로직만 추출하여 주석으로만 설명한 lua 코드 블록으로 출력하세요. [answer] | ```lua -- 1. 이벤트에서 AttachedEntity 프로퍼티를 꺼내서 로컬 변수 AttachedEntity 에 대입합니다. -- AttachedEntity 는 Avatar가 탑승하기 시작하는 사다리 또는 로프 엔티티입니다. local AttachedEntity = event.AttachedEntity -- 2. AttachedEntity 를 인자로 받아 self:ChangeChildSortingLayer() 메서드를 호출합니다. -- 이 메서드는 현재 엔티티(self.Entity)의 자식 중 SpriteRend [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] | RigidbodyClimbableDetachEndEvent [question] | RigidbodyClimbableDetachEndEvent는 어떤 상황에서 발생하며, 어떤 컴포넌트에서 트리거되는 이벤트인가요? [answer] | `RigidbodyClimbableDetachEndEvent`는 아바타가 사다리나 로프에서 떨어지는(분리되는) 시점에 발생하는 이벤트입니다. 이 이벤트는 **RigidbodyComponent**에서 트리거되며, 실행 공간(Space)은 **Client**입니다. ```lua Event Handler: [self] HandleRigidbodyClimbableDetachEndEventEvent (RigidbodyClimbableDetachEndEvent event) { --------------- Native Event Se [followup] | [client only] 공간에서 HandleRigidbodyClimbableDetachEndEvent 핸들러를 정의할 때, 이벤트 객체에서 접근할 수 있는 구체적인 프로퍼티나 메서드가 있는지, 없다면 Avatar의 상태(예: TransformComponent 위치)를 직접 확인하여 후속 로직(예: 착지 효과음 재생)을 구현하는 코드 예시를 보여주세요. [followup_answer] | 제공된 참고 문서에는 `RigidbodyClimbableDetachEndEvent` 객체에서 접근할 수 있는 구체적인 프로퍼티나 메서드에 대한 정보가 포함되어 있지 않습니다. 문서에는 단순히 기본값으로 이벤트를 초기화하는 생성자(`RigidbodyClimbableDetachEndEvent()`)만 명시되어 있습니다. 따라서 이벤트 핸들러 내부에서 `event` 객체를 통해 추가 정보를 가져오는 것은 불가능하며, 질문하신 대로 `TransformComponent`의 위치 등을 직접 확인하여 후속 로직을 구현해야 합니다. 참고로 문 [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"> # Constructors - **RigidbodyClimbableDetachEndEvent()** 기본값으로 Rigi
[task] | single_turn [pass] | ⏳ 미판정 [title] | RigidbodyMovementOptionType [question] | RigidbodyMovementOptionType을 숫자 0이나 1로 직접 입력하면 안 되고, 왜 CastFrom 메서드를 사용해야 하는 건가요? [answer] | `RigidbodyMovementOptionType`은 `RelativeX`(값: 0)와 `Absolute`(값: 1)라는 두 가지 멤버로 구성된 열거형(Enumeration) 타입입니다. 스크립트에서 이 타입의 변수나 매개변수를 사용할 때, 숫자 `0`이나 `1`을 직접 대입하는 대신 `RigidbodyMovementOptionType` 타입의 상수를 명시적으로 사용해야 하는 이유는 타입 안전성(Type Safety)과 가독성 때문입니다. 숫자를 직접 사용하면 어떤 값을 의미하는지(예: 0이 RelativeX인지, 1이 Abso [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 풋홀드 위의 RigidbodyComponent에게 적용할 옵션을 설정합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | RelativeX | 0 | x축 관성은 적용하고, y축 관성은 적용하지 않습니다. 플레이어가 발판의 이동 방향과 반대로 움직이면 속도가 감속하고, 같은 방향으로 움직이면 가속합니다. | | Absolute | 1 | 플레이어가 어느 방향으로 움직여도 속도가 동일합니다. | # Methods - **RigidbodyMovementOptionType CastFrom(number
[task] | single_turn [pass] | ⏳ 미판정 [title] | RigidbodyClimbableDetachEndEvent [question] | RigidbodyClimbableDetachEndEvent 핸들러를 만들 때 어떤 서비스 태그를 붙여야 하나요? [answer] | `RigidbodyClimbableDetachEndEvent`는 `RigidbodyComponent`에 의해 발생하며, 해당 컴포넌트의 실행 공간이 **Client**입니다. 따라서 이 이벤트를 핸들러로 받을 때 붙여야 할 서비스 태그는 **`[self]`**입니다. `RigidbodyComponent`가 아바타(Entity) 자체에 부착된 컴포넌트이므로, 외부 서비스(`_UserService`, `_InputService` 등)가 아니라 엔티티 자체의 이벤트를 수신하는 `[self]` 태그를 사용합니다. ```lua Even [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"> # Constructors - **RigidbodyClimbableDetachEndEvent()** 기본값으로 Rigi
[task] | single_turn [pass] | ⏳ 미판정 [title] | RigidbodyClimbableAttachStartEvent [question] | RigidbodyClimbableAttachStartEvent를 직접 생성할 때 인자값을 생략하면 어떻게 초기화되나요? [answer] | `RigidbodyClimbableAttachStartEvent`를 직접 생성할 때 인자값을 생략하면, 생성자에서 정의된 기본값에 따라 `AttachedEntity` 프로퍼티가 `nil`로 초기화됩니다. 생성자의 정의는 다음과 같습니다: `RigidbodyClimbableAttachStartEvent(Entity attachedEntity = nil)` 따라서 `local event = RigidbodyClimbableAttachStartEvent()` 와 같이 인자 없이 생성하면, `event.AttachedEntity`는 ` [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] | instruction_following [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | `IsClient()`와 `IsServer()` 메서드의 반환 타입 및 기능 차이를 2문장 이내로 설명해서 [answer] | 두 메서드는 모두 `boolean` 타입을 반환합니다. `IsClient()`는 현재 실행 환경이 클라이언트인지 여부를, `IsServer()`는 서버인지 여부를 확인하는 기능 차이를 가집니다. [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)** 이벤트를 연결합니다. 이 서비스에서 타입이