← 목록

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

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

[task] | single_turn [pass] | ⏳ 미판정 [title] | AutomaticLayerOption [question] | Entity가 밟고 있는 foothold의 SortingLayer를 따라 정렬 순서가 변하려면 AutomaticLayerOption을 어떻게 설정해야 하나요? [answer] | Entity가 밟고 있는 foothold, 그리고 타고 있는 사다리나 로프의 SortingLayer를 모두 따라 정렬 순서가 변하려면 `AutomaticLayerOption.All` 값을 사용해야 합니다. 참고로 `Climbable`은 사다리·로프에만 적용되고, `None`은 SortingLayer 변경을 완전히 무시합니다. `RigidbodyComponent` 또는 `ClimbableSpriteRendererComponent`에 해당 옵션을 설정하는 예시는 다음과 같습니다. ```lua Method: [server only] [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] | AvatarGUIRendererComponent [question] | InputService의 KeyDownEvent에서 event.key 값이 KeyboardKey.F1과 같은지 비교하는 코드가 서버 스크립트에서 에러를 유발하는 원인은 무엇인가요? [answer] | InputService의 `HandleKeyDownEvent`는 `[client only]` 실행 공간에서만 동작합니다. 입력(키보드) 이벤트는 클라이언트(플레이어 기기)에서 발생하기 때문에, 서버 스크립트에서는 `InputService`를 통해 키 입력을 수신할 수 없습니다. 따라서 서버 스크립트에 `HandleKeyDownEvent`를 작성하거나, `KeyboardKey.F1`과 같은 클라이언트 전용 입력 API를 서버 쪽에서 참조하면 해당 이벤트 핸들러가 서버에서 실행되지 않거나, `KeyboardKey` 상수 및 `Inpu [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] | two_turn [pass] | ⏳ 미판정 [title] | Error Level [question] | LEA-2001에서 LEA-2009까지의 런타임 오류 중, 산술 연산과 비교 연산이 불가능한 타입으로 시도할 때 발생하는 오류를 방지하기 위한 타입 확인 로직은 어떻게 작성하나요? [answer] | LEA-2001(`AttemptToPerformArithmetic`)과 LEA-2004(`AttemptToCompare`) 오류는 각각 숫자가 아닌 타입에 산술 연산(`+`, `-`, `*`, `/` 등)을 수행하거나, 비교할 수 없는 타입끼리 비교 연산(`<`, `>`, `<=`, `>=` 등)을 수행할 때 발생합니다. 이를 방지하기 위해서는 연산 전 `type()` 함수를 사용하여 변수의 타입이 `number`인지 확인하는 로직을 작성해야 합니다. 다음은 산술 연산과 비교 연산 전에 타입 확인을 수행하는 mLua 스크립트 예시 [followup] | number 타입이 아닌 값이 전달될 수 있는 함수에서 LEA-2001(AttemptToPerformArithmetic)을 방지하기 위해, type() 함수를 활용한 가드 코드(guard clause) 예시를 작성해 주세요. [followup_answer] | `number` 타입이 아닌 값이 전달될 수 있는 함수에서 산술 연산 오류(LEA-2001)를 방지하기 위해, 함수 진입 지점에서 `type()` 함수를 사용하여 가드 클레이즈(Guard Clause)를 작성할 수 있습니다. 가드 클레이즈는 조건이 만족되지 않으면 즉시 함수를 종료(`return`)하여 이후의 위험한 연산이 실행되지 않도록 하는 패턴입니다. 다음은 mLua 스크립트 형식에 맞춘 예시입니다. ```lua Property: [None] number BaseValue = 100 Method: [server only] [scores] | [judge_reason] | [source_doc] | | ID | 이름 | 설명 | |---|---|---| | LEA-1001 | ExpectedSymbol | 코드를 구성하는데 필요한 심볼을 작성하지 않았습니다. | | LEA-1002 | NoReturnStatement | 반환 값이 필요한 함수에 반환 값을 작성하지 않았습니다. | | LEA-1003 | NeedPairKeyword | 코드를 구성에 필요한 쌍이 맞지 않습니다. | | LEA-1004 | DuplicateLabel | 라벨을 중복 정의했습니다. | | LEA-1005 | UnexpectedSymbol | 예상하지

[task] | single_turn [pass] | ⏳ 미판정 [title] | AvatarGUIRendererComponent [question] | ChangeMaterial 메서드를 통해 머티리얼을 교체한 후에도 화면에 변화가 보이지 않을 때 확인해야 할 Sync 속성이나 활성화 상태는 무엇인가요? [answer] | `ChangeMaterial` 호출 후 화면에 변화가 보이지 않는다면, 주로 **`Enable`** 상태와 **`MaterialId`** 프로퍼티의 동기화([Sync]) 특성을 확인해야 합니다. 1. **`Enable` 프로퍼티 확인** * `AvatarGUIRendererComponent`는 `Component`를 상속받아 **`Enable`** 프로퍼티를 가집니다. * 이 값이 `false`인 경우 컴포넌트가 비활성화되어 머티리얼 변경이 적용되지 않을 수 있습니다. * 또한 계층 구조상의 활성 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 아바타 형태의 엔티티를 UI에 렌더링합니다. # Properties - **Color Color** 아바타 전체 색을 지정한 색상 값으로 변경합니다. - **boolean FlipX** X축을 기준으로 반전 여부를 결정합니다. - **boolean FlipY** Y축을 기준으로 반전 여부를 결정합니다. - **string MaterialId [Sync]** 렌더러에 적용할 머티리얼 Id를 지정합니다. - **float PlayRate** 아바타 애니메이션 재생 속도를 지정할 수 있습니다. 0 이상의 값을 지원하

[task] | code [pass] | ⏳ 미판정 [title] | Error Level [question] | LEA-3040 오류 발생 시 현재 맵 경계를 벗어나면 _TimerService:SetTimerOnce 로 5초 후 다시 맵 중앙으로 이동시키는 스크립트를 작성해줘 [answer] | LEA-3040 (OutOfCurrentMap) 오류는 엔티티가 현재 맵의 경계를 벗어날 때 발생합니다. 제공된 참고 문서에는 해당 오류 코드의 정의만 포함되어 있고, 맵 경계 이탈 이벤트를 직접 캡처하는 API나 맵 중앙 좌표를 가져오는 API는 명시되어 있지 않습니다. 따라서 요청하신 "5초 후 다시 맵 중앙으로 이동" 기능을 구현하려면, 맵 중앙 좌표는 개발자가 직접 설정해야 하며, 경계 이탈 감지는 `OnUpdate` 주기적으로 위치를 확인하거나, 해당 맵의 특정 이벤트 핸들러가 존재한다고 가정해야 합니다. 참고 문서에 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 을 사용했습니다. | | LEA-2010 | ForLimitNeedNumber | For문의 Limit 구문에 잘못된 타입을 사용했습니다. | | LEA-2011 | AttemptToCall | 함수 호출이 불가능한 타입에 함수 호출을 시도했습니다. | | LEA-3001 | NotSupported | 지원하지 않는 기능을 사용했습니다. | | LEA-3002 | InvalidOperation | 함수 호출이 객체의 현재 상태에 유효하지 않습니다. | | LEA-3003 | OutOfRange | 값의 허용 범위를 벗어났습니다. |

[task] | single_turn [pass] | ⏳ 미판정 [title] | RigidbodyMovementOptionType [question] | RelativeX와 Absolute 옵션 중 어떤 것을 선택해야 플레이어가 발판을 밟고 움직일 때 발판의 속도와 자연스럽게 합쳐지는 효과를 줄 수 있나요? [answer] | `RelativeX` 옵션을 선택해야 합니다. `RelativeX`는 x축 관성을 적용하고 y축 관성은 적용하지 않는 방식으로, 플레이어가 발판의 이동 방향과 반대로 움직일 경우 속도가 감속하고, 같은 방향으로 움직일 경우 가속됩니다. 이 특성이 발판의 속도와 자연스럽게 합쳐지는 효과를 만들어 줍니다. 반면 `Absolute` 옵션은 플레이어가 어떤 방향으로 움직이든 속도가 동일하게 유지되므로, 발판의 이동 속도와 합쳐지는 효과는 나타나지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 풋홀드 위의 RigidbodyComponent에게 적용할 옵션을 설정합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | RelativeX | 0 | x축 관성은 적용하고, y축 관성은 적용하지 않습니다. 플레이어가 발판의 이동 방향과 반대로 움직이면 속도가 감속하고, 같은 방향으로 움직이면 가속합니다. | | Absolute | 1 | 플레이어가 어느 방향으로 움직여도 속도가 동일합니다. | # Methods - **RigidbodyMovementOptionType CastFrom(number

[task] | two_turn [pass] | ⏳ 미판정 [title] | UITransformAxis [question] | UITransformAxis CastFrom 메서드를 사용해서 숫자 0과 1을 각각 어떤 값으로 변환할 수 있나요? [answer] | `UITransformAxis.CastFrom(number value)` 메서드는 숫자 값을 `UITransformAxis` 열거형 값으로 변환합니다. * 숫자 **0**을 전달하면 **Horizontal** (가로 축)로 변환됩니다. * 숫자 **1**을 전달하면 **Vertical** (세로 축)으로 변환됩니다. 이를 활용한 mLua 코드 예시는 다음과 같습니다. ```lua Method: [client only] void OnBeginPlay() { -- 숫자 0은 Horizontal(0), 숫자 1은 Ve [followup] | CastFrom(string value)에서 "Horizontal" 문자열을 전달하면 어떤 결과가 반환되며, 잘못된 문자열을 넣었을 때의 예외 처리는 어떻게 되나요? [followup_answer] | `UITransformAxis.CastFrom(string value)` 메서드에 `"Horizontal"` 문자열을 전달하면 **Horizontal** 값이 반환됩니다. 다만, 참고 문서에는 잘못된 문자열을 입력했을 때의 예외 처리 방식이나 반환 값에 대한 설명이 포함되어 있지 않습니다. [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] | AutomaticLayerOption [question] | ClimbableSpriteRendererComponent에서 AutomaticLayerOption의 None과 Climbable은 어떤 상황에서의 동작이 다른가요? [answer] | `ClimbableSpriteRendererComponent`의 `AutomaticLayerOption`에서 `None`과 `Climbable`은 Entity가 사다리나 로프와 상호작용할 때 SortingLayer가 어떻게 처리되는지에 따라 동작이 다릅니다. * **None (값: 0)** Entity가 foothold(밟는 지점), 사다리, 로프의 SortingLayer에 따라 변경되지 않습니다. 즉, Entity가 사다리나 로프를 타더라도 원래 설정된 SortingLayer를 유지하며, 사다리나 로프의 레이어 정보와 [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] | code [pass] | ⏳ 미판정 [title] | RigidbodyMovementOptionType [question] | RigidbodyMovementOptionType의 CastFrom 메서드를 사용하여 문자열 "RelativeX"와 "Absolute"를 각각 enum 값으로 변환하여 출력하는 스크립트를 작성해줘 [answer] | `RigidbodyMovementOptionType`의 정적 메서드인 `CastFrom(string value)`를 사용하여 문자열을 enum 값으로 변환하고, `log` 함수로 결과를 출력하는 스크립트입니다. ```lua Method: [server] void OnBeginPlay() { local opt1 = RigidbodyMovementOptionType.CastFrom("RelativeX") local opt2 = RigidbodyMovementOptionType.CastFrom("Absolute") [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] | DestroyMapleCostumeEvent [question] | CostumeManagerComponent를 삭제할 때 DestroyMapleCostumeEvent가 서버에서 발생하나요, 클라이언트에서 발생하나요? [answer] | DestroyMapleCostumeEvent는 클라이언트(Client)에서 발생합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | CostumeManagerComponent가 삭제될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * CostumeManagerComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Constructors - **DestroyMapleCostumeEvent()** 기본값으로 D

[task] | single_turn [pass] | ⏳ 미판정 [title] | RigidbodyMovementOptionType [question] | RigidbodyComponent에 발판 이동 옵션을 설정할 때 y축 관성을 무시하고 싶다면 어떤 멤버 값을 지정해야 하나요? [answer] | y축 관성을 무시하고 x축 관성만 적용하려면 `RigidbodyMovementOptionType.RelativeX` 멤버를 지정해야 합니다. 이 옵션은 x축 관성은 적용하고 y축 관성은 적용하지 않으며, 플레이어가 발판의 이동 방향과 반대로 움직이면 속도가 감속하고 같은 방향으로 움직이면 가속하는 동작을 수행합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 풋홀드 위의 RigidbodyComponent에게 적용할 옵션을 설정합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | RelativeX | 0 | x축 관성은 적용하고, y축 관성은 적용하지 않습니다. 플레이어가 발판의 이동 방향과 반대로 움직이면 속도가 감속하고, 같은 방향으로 움직이면 가속합니다. | | Absolute | 1 | 플레이어가 어느 방향으로 움직여도 속도가 동일합니다. | # Methods - **RigidbodyMovementOptionType CastFrom(number

[task] | two_turn [pass] | ⏳ 미판정 [title] | DestroyMapleCostumeEvent [question] | CostumeManagerComponent가 삭제될 때 발생하는 DestroyMapleCostumeEvent의 발생 조건과 특징이 궁금합니다. [answer] | `DestroyMapleCostumeEvent`는 `CostumeManagerComponent`가 삭제되는 시점에 발생하는 이벤트입니다. 이 이벤트는 클라이언트 공간(Client)에서 트리거되며, 특정 API 호출에 의해 발생합니다. 주요 특징은 다음과 같습니다: 1. **발생 원인**: `CostumeManagerComponent`의 삭제. 2. **실행 공간**: Client. 3. **생성자**: 기본값으로 초기화되는 `DestroyMapleCostumeEvent()` 생성자를 제공합니다. 참고 문서에 명시된 구체적인 이벤 [followup] | DestroyMapleCostumeEvent는 Client 공간에서 발생한다고 하는데, Server에서 이 이벤트를 직접 수신할 수 없다면 Client에서 Server로 정보 전달을 위해 어떤 방식으로 스크립트를 작성해야 할까요? [followup_answer] | 제공된 참고 문서에는 `DestroyMapleCostumeEvent`가 Client 공간에서 발생한다는 사실과 생성자 정보만 포함되어 있으며, Client와 Server 간 통신을 위한 API(예: RPC, Remote Event, Network Service 등)나 메서드에 대한 설명은 포함되어 있지 않습니다. 따라서 제공된 문서를 근거로 Client에서 Server로 정보를 전달하기 위한 구체적인 mLua 스크립트 작성 방식을 설명할 수 없습니다. [scores] | [judge_reason] | [source_doc] | CostumeManagerComponent가 삭제될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * CostumeManagerComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Constructors - **DestroyMapleCostumeEvent()** 기본값으로 D

[task] | single_turn [pass] | ⏳ 미판정 [title] | RigidbodyMovementOptionType [question] | 문자열 "RelativeX"를 RigidbodyMovementOptionType 타입으로 변환하려면 어떤 정적 메서드를 호출해야 하나요? [answer] | 문자열을 `RigidbodyMovementOptionType` 타입으로 변환하려면 정적 메서드 `RigidbodyMovementOptionType.CastFrom(string value)`를 호출해야 합니다. 예를 들어, 문자열 "RelativeX"를 변환하는 코드는 다음과 같습니다. ```lua local optionType = RigidbodyMovementOptionType.CastFrom("RelativeX") ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 풋홀드 위의 RigidbodyComponent에게 적용할 옵션을 설정합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | RelativeX | 0 | x축 관성은 적용하고, y축 관성은 적용하지 않습니다. 플레이어가 발판의 이동 방향과 반대로 움직이면 속도가 감속하고, 같은 방향으로 움직이면 가속합니다. | | Absolute | 1 | 플레이어가 어느 방향으로 움직여도 속도가 동일합니다. | # Methods - **RigidbodyMovementOptionType CastFrom(number

[task] | code [pass] | ⏳ 미판정 [title] | RigidbodyMovementOptionType [question] | RigidbodyMovementOptionType의 CastFrom 메서드를 사용하여 숫자 0과 1을 각각 enum 값으로 변환하여 출력하는 스크립트를 작성해줘 [answer] | `RigidbodyMovementOptionType`의 `CastFrom` 정적 메서드를 사용하면 숫자나 문자열을 해당 enum 타입으로 변환할 수 있습니다. 값 `0`은 `RelativeX`, 값 `1`은 `Absolute`에 해당합니다. 변환된 값을 출력하는 mLua 스크립트입니다. ```lua Method: [server only] void OnBeginPlay() { -- 숫자 0을 RigidbodyMovementOptionType으로 변환 (RelativeX) local opt0 = RigidbodyMov [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] | RigidbodyMovementOptionType [question] | 발판이 왼쪽으로 이동하는데, Absolute 옵션을 적용한 경우 플레이어가 오른쪽으로 뛰면 속도가 어떻게 변하나요? [answer] | Absolute 옵션을 적용한 경우, 발판이 왼쪽으로 이동하더라도 플레이어가 오른쪽으로 뛰면 속도가 동일하게 유지됩니다. RigidbodyMovementOptionType의 Absolute 값(1)은 "플레이어가 어느 방향으로 움직여도 속도가 동일합니다"라고 정의되어 있기 때문입니다. 이는 발판의 이동 방향과 플레이어의 이동 방향이 반대이거나 같거나 상관없이 플레이어의 이동 속도에 영향을 주지 않는다는 의미입니다. 반대로 RelativeX 옵션(0)을 적용했다면, 발판의 이동 방향과 반대 방향으로 움직일 때 감속되고 같은 방향으 [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] | DestroyMapleCostumeEvent [question] | DestroyMapleCostumeEvent를 직접 생성해서 다른 컴포넌트에 전달할 수 있나요? [answer] | 아니요, `DestroyMapleCostumeEvent`를 직접 생성해서 다른 컴포넌트에 전달할 수 없습니다. 해당 이벤트는 `CostumeManagerComponent`가 삭제될 때 자동으로 발생하는 이벤트이며, `CostumeManagerComponent`에 의해 발생됩니다. 따라서 개발자가 수동으로 이벤트를 생성하거나 전달하는 것이 아니라, 해당 컴포넌트의 생명주기(삭제)에 따라 시스템이 이벤트를 처리하도록 설계되어 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | CostumeManagerComponent가 삭제될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * CostumeManagerComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Constructors - **DestroyMapleCostumeEvent()** 기본값으로 D

[task] | two_turn [pass] | ⏳ 미판정 [title] | Error Level [question] | LEA-3006(ArgumentNil)과 LEA-3007(ArgumentNilOrEmpty) 오류가 발생하는 함수 호출 예시를 구분해서 설명해 주세요. [answer] | LEA-3006(ArgumentNil)과 LEA-3007(ArgumentNilOrEmpty) 오류는 함수 호출 시 전달되는 인수의 상태에 따라 발생합니다. 두 오류의 발생 조건과 예시를 구분하여 설명해 드립니다. ### 1. LEA-3006 (ArgumentNil) **발생 조건:** 함수 인수가 `nil`일 때 발생합니다. * **핵심:** 값 자체가 존재하지 않거나, `nil`로 설정된 경우. * **예시 시나리오:** 특정 엔티티를 조회했을 때 해당 엔티티가 존재하지 않아 `nil`이 반환되었고, 이를 그대로 다른 함 [followup] | `_UserService` 서비스 메서드 호출 시 `UserId` 인수가 nil이거나 빈 문자열일 때 각각 어떤 로그 메시지가 출력되는지 mLua 코드 예제로 보여주세요. [followup_answer] | 참고 문서에 `_UserService` 서비스의 구체적인 메서드 목록과 각 메서드가 `UserId` 인수를 어떻게 검증하는지에 대한 정보가 포함되어 있지 않습니다. 따라서 `_UserService`의 특정 메서드 호출 시 LEA-3006 또는 LEA-3007 중 어느 오류가 발생하는지 단정 짓거나 실제 API를 사용해 코드 예시를 작성하는 것은 불가능합니다. 다만, 참고 문서에 정의된 오류 코드와 mLua의 일반적인 서비스 호출 패턴을 바탕으로, **문서상 정의된 오류 발생 조건**을 설명드리면 다음과 같습니다. ### 오류 코 [scores] | [judge_reason] | [source_doc] | 을 사용했습니다. | | LEA-2010 | ForLimitNeedNumber | For문의 Limit 구문에 잘못된 타입을 사용했습니다. | | LEA-2011 | AttemptToCall | 함수 호출이 불가능한 타입에 함수 호출을 시도했습니다. | | LEA-3001 | NotSupported | 지원하지 않는 기능을 사용했습니다. | | LEA-3002 | InvalidOperation | 함수 호출이 객체의 현재 상태에 유효하지 않습니다. | | LEA-3003 | OutOfRange | 값의 허용 범위를 벗어났습니다. |

[task] | single_turn [pass] | ⏳ 미판정 [title] | DestroyMapleCostumeEvent [question] | DestroyMapleCostumeEvent는 CostumeManagerComponent가 삭제될 때만 발생하며, 의상 변경 시에는 발생하지 않나요? [answer] | 네, 맞습니다. `DestroyMapleCostumeEvent`는 `CostumeManagerComponent`가 **삭제될 때**만 발생하는 이벤트입니다. 참고 문서에 명시된 바와 같이, 이 이벤트는 의상이 변경되는 시점이 아니라 해당 컴포넌트 자체가 제거되는 상황(예: 엔티티 소멸 등)에서만 트리거됩니다. 따라서 의상 아이템을 교체하거나 변경하는 동작에서는 이 이벤트가 발생하지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | CostumeManagerComponent가 삭제될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * CostumeManagerComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Constructors - **DestroyMapleCostumeEvent()** 기본값으로 D

[task] | single_turn [pass] | ⏳ 미판정 [title] | DestroyMapleCostumeEvent [question] | DestroyMapleCostumeEvent의 기본 생성자를 호출할 때 특정 인자를 지정할 수 있나요? [answer] | 아니요, `DestroyMapleCostumeEvent`의 기본 생성자 `DestroyMapleCostumeEvent()`는 인자를 받지 않습니다. 문서에 명시된 생성자 서명은 다음과 같으며, 괄호 안에 아무런 파라미터도 없습니다. * **DestroyMapleCostumeEvent()**: 기본값으로 DestroyMapleCostumeEvent를 초기화합니다. 따라서 특정 인자를 지정하여 호출할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | CostumeManagerComponent가 삭제될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * CostumeManagerComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Constructors - **DestroyMapleCostumeEvent()** 기본값으로 D

[task] | code [pass] | ⏳ 미판정 [title] | RigidbodyMovementOptionType [question] | _RigidbodyComponent의 MovementOption을 Absolute로 설정하여 방향과 무관하게 일정한 속도를 유지하도록 하는 스크립트를 작성해줘 [answer] | `RigidbodyComponent`의 `MovementOption`을 `RigidbodyMovementOptionType.Absolute`로 설정하면, 플레이어가 이동하는 방향과 무관하게 속도가 동일하게 유지됩니다. 아래 스크립트는 `OnBeginPlay` 생명주기 메서드에서 `RigidbodyComponent`의 `MovementOption`을 `Absolute`로 설정하는 예시입니다. ```lua Property: [None] RigidbodyComponent RigidbodyComponent = nil Method: [ [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] | AvatarGUIRendererComponent [question] | GetAvatarRootEntity() 메서드가 ClientOnly로 지정된 이유는 무엇이며, 서버 측 스크립트에서 이 메서드를 호출하면 어떤 문제가 발생할 수 있나요? [answer] | `GetAvatarRootEntity()` 메서드가 `[ClientOnly]`로 지정된 이유는, 이 메서드가 반환하는 `AvatarRoot` 엔티티가 클라이언트 화면에 아바타를 시각적으로 렌더링하기 위해 생성되는 UI 계층 구조의 일부이기 때문입니다. 메이플스토리 월드의 아바타 렌더링 방식은 서버와 클라이언트 간의 실행 환경을 엄격하게 분리합니다. 1. **서버**: 게임 로직(위치, 상태, 데이터 동기화)만 처리하며, 시각적인 UI 요소나 아바타의 세부 파츠(Body, Face 등)를 구성하는 엔티티 트리를 생성하지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 아바타 형태의 엔티티를 UI에 렌더링합니다. # Properties - **Color Color** 아바타 전체 색을 지정한 색상 값으로 변경합니다. - **boolean FlipX** X축을 기준으로 반전 여부를 결정합니다. - **boolean FlipY** Y축을 기준으로 반전 여부를 결정합니다. - **string MaterialId [Sync]** 렌더러에 적용할 머티리얼 Id를 지정합니다. - **float PlayRate** 아바타 애니메이션 재생 속도를 지정할 수 있습니다. 0 이상의 값을 지원하

[task] | code [pass] | ⏳ 미판정 [title] | AvatarGUIRendererComponent [question] | 아바타 GUI 렌더러의 색상과 플립 상태를 초기화하고, 터치 입력 시 감정 표현을 재생하는 스크립트를 작성해줘. [answer] | 아바타 GUI 렌더러 컴포넌트(`AvatarGUIRendererComponent`)를 이용해 색상과 플립 상태를 초기화하고, 터치 입력을 감지하여 감정 표현을 재생하는 스크립트입니다. 참고 문서에 따르면 `AvatarGUIRendererComponent`는 `Color`, `FlipX`, `FlipY` 프로퍼티와 `PlayEmotion` 메서드를 제공합니다. 또한, 터치 입력을 받기 위해서는 `RaycastTarget` 프로퍼티가 `true`로 설정되어야 하며, 해당 컴포넌트가 부착된 엔티티의 `HandleTouchEvent` 이 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 아바타 형태의 엔티티를 UI에 렌더링합니다. # Properties - **Color Color** 아바타 전체 색을 지정한 색상 값으로 변경합니다. - **boolean FlipX** X축을 기준으로 반전 여부를 결정합니다. - **boolean FlipY** Y축을 기준으로 반전 여부를 결정합니다. - **string MaterialId [Sync]** 렌더러에 적용할 머티리얼 Id를 지정합니다. - **float PlayRate** 아바타 애니메이션 재생 속도를 지정할 수 있습니다. 0 이상의 값을 지원하

[task] | code [pass] | ⏳ 미판정 [title] | AutomaticLayerOption [question] | RigidbodyComponent의 AutomaticLayerOption을 None으로 설정하여 Entity의 SortingLayer가 foothold, 사다리, 로프의 상태와 무관하게 고정되도록 하는 스크립트를 작성해줘 [answer] | `RigidbodyComponent`의 `AutomaticLayerOption` 프로퍼티를 `None`으로 설정하면, 해당 Entity는 foothold(발판), 사다리, 로프를 타거나 밟는 것과 무관하게 `SortingLayer`가 자동으로 변경되지 않고 고정된 상태를 유지합니다. 요청하신 설정을 수행하는 스크립트는 다음과 같습니다. ```lua Method: [server only] void OnBeginPlay() { -- RigidbodyComponent의 AutomaticLayerOption을 None으로 설정 [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] | code [pass] | ⏳ 미판정 [title] | RigidbodyMovementOptionType [question] | _RigidbodyComponent의 MovementOption을 RelativeX로 설정하여 발판의 이동 방향에 따라 플레이어의 가속과 감속을 구현하는 스크립트를 작성해줘 [answer] | `RigidbodyComponent`의 `MovementOption` 프로퍼티를 `RigidbodyMovementOptionType.RelativeX`로 설정하면, 발판(Rigidbody)의 이동 방향에 따라 플레이어의 속도가 자동 조절됩니다. 같은 방향으로 움직이면 가속하고, 반대 방향으로 움직이면 감속하는 효과를 얻을 수 있습니다. 아래 스크립트는 `OnBeginPlay` 시점에 `RigidbodyComponent`의 `MovementOption`을 `RelativeX`로 설정하는 예제입니다. ```lua Property: [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 풋홀드 위의 RigidbodyComponent에게 적용할 옵션을 설정합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | RelativeX | 0 | x축 관성은 적용하고, y축 관성은 적용하지 않습니다. 플레이어가 발판의 이동 방향과 반대로 움직이면 속도가 감속하고, 같은 방향으로 움직이면 가속합니다. | | Absolute | 1 | 플레이어가 어느 방향으로 움직여도 속도가 동일합니다. | # Methods - **RigidbodyMovementOptionType CastFrom(number

[task] | code [pass] | ⏳ 미판정 [title] | Warning Level [question] | LWA-3055(NotInitialized) 및 LWA-3057(InvalidOperation) 상태를 피하기 위해 OnBeginPlay()에서 _TimerService:SetTimerOnce()를 통해 초기화 완료 여부를 확인한 후, OnUpdate()에서 해당 플래그가 true일 때만 _EntityService:GetEntityByPath()로 대상 엔티티를 조회하고 조작하는 상태 관리 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 `LWA-3055 (NotInitialized)` 와 `LWA-3057 (InvalidOperation)` 의 정의만 존재하며, 이를 방지하기 위한 구체적인 `mLua` API (예: 초기화 완료 확인을 위한 특정 서비스 메서드, 엔티티 존재 여부 확인 메서드 등) 는 문서에 명시되어 있지 않습니다. 따라서 요청하신 "초기화 완료 여부를 확인하는" 구체적인 API 호출은 문서 근거가 없어 작성할 수 없습니다. 대신, **`OnBeginPlay()` 에서 타이머를 설정하여 지연을 두고, `OnUpdate()` [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] | AutomaticLayerOption [question] | RigidbodyComponent의 AutomaticLayerOption을 All로 설정하여 Entity가 밟는 foothold와 사다리, 로프의 SortingLayer를 자동으로 따르게 하는 스크립트를 작성해줘 [answer] | `RigidbodyComponent`의 `AutomaticLayerOption`은 컴포넌트의 프로퍼티입니다. 따라서 스크립트 내에서 `self.Entity.RigidbodyComponent.AutomaticLayerOption`에 `AutomaticLayerOption.All` 값을 할당하여 설정할 수 있습니다. 요구사항에 따라 Entity가 밟고 있는 foothold, 타고 있는 사다리, 로프의 SortingLayer를 자동으로 따르도록 `All` 옵션을 적용하는 스크립트는 다음과 같습니다. ```lua Property: [N [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] | DestroyMapleCostumeEvent [question] | DestroyMapleCostumeEvent를 처리하기 위해 어떤 Event Handler 선언 형식을 사용해야 하나요? [answer] | `DestroyMapleCostumeEvent`는 `CostumeManagerComponent`가 삭제될 때 발생하는 이벤트입니다. 이 이벤트는 **Client** 공간에서 발생합니다. 따라서 해당 이벤트를 처리하기 위한 Event Handler 선언 형식은 다음과 같습니다. 1. **수신자(Sender)**: 이벤트가 발생하는 컴포넌트가 `CostumeManagerComponent`이므로, 해당 컴포넌트가 붙어 있는 엔티티(주로 자기 자신)를 수신자로 지정합니다. 따라서 `[self]`를 사용합니다. 2. **함수명**: [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | CostumeManagerComponent가 삭제될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * CostumeManagerComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Constructors - **DestroyMapleCostumeEvent()** 기본값으로 D

[task] | code [pass] | ⏳ 미판정 [title] | AutomaticLayerOption [question] | RigidbodyComponent의 AutomaticLayerOption을 Climbable로 설정하여 Entity가 사다리나 로프를 타는 경우에만 SortingLayer를 변경하도록 하는 스크립트를 작성해줘 [answer] | `RigidbodyComponent`의 `AutomaticLayerOption` 프로퍼티를 `Climbable`로 설정하면, Entity가 사다리(Climbable)나 로프를 타는 경우에만 해당 사다리/로프의 `SortingLayer`를 따라 자동으로 변경됩니다. `None`이면 변경되지 않고, `All`이면 밟고 있는 foothold까지 포함해 모두 따라갑니다. 아래 스크립트는 `RigidbodyComponent`에 `AutomaticLayerOption`을 `Climbable`로 초기화하는 예시입니다. ```lua Metho [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] | code [pass] | ⏳ 미판정 [title] | AutomaticLayerOption [question] | RigidbodyComponent의 AutomaticLayerOption을 숫자 2를 사용하여 AutomaticLayerOption.CastFrom(2)로 변환하여 All 옵션을 적용하는 스크립트를 작성해줘 [answer] | `AutomaticLayerOption`은 `RigidbodyComponent`와 `ClimbableSpriteRendererComponent`의 `SortingLayer` 관계를 정의하는 열거형입니다. 값 `2`는 `All`을 의미하며, Entity가 밟고 있는 foothold, 타고 있는 사다리 또는 로프의 `SortingLayer`를 따라 변경됩니다. 참고 문서에 제공된 API에 따르면, 숫자를 `AutomaticLayerOption` 타입으로 변환하려면 정적 메서드 `AutomaticLayerOption.CastFrom(n [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] | two_turn [pass] | ⏳ 미판정 [title] | UserDisconnectEvent [question] | UserDisconnectEvent 이벤트 핸들러를 등록하려면 어떤 서비스와 프로퍼티를 확인해야 하나? [answer] | UserDisconnectEvent 이벤트 핸들러를 등록하려면 **UserService** 서비스를 사용해야 합니다. 이벤트 핸들러에서 확인해야 할 프로퍼티는 다음과 같습니다. * **DisconnectMapName** (string): 유저의 접속이 끊겼던 맵의 이름입니다. * **ProfileCode** (string): 유저의 프로필 코드입니다. * **TimeNetworkClosed** (DateTime): 유저의 접속이 끊겼던 시간입니다. * **UserId** (string): 유저의 고유 식별자입니다. [followup] | UserDisconnectEvent 핸들러에서 DisconnectMapName과 UserId를 로그로 출력하는 [server only] 코드 예시를 보여줘 [followup_answer] | UserDisconnectEvent는 UserService에 의해 Server 공간에서 발생하는 이벤트입니다. 따라서 이벤트 핸들러에 `[server only]` 속성을 추가하고, `event.DisconnectMapName`과 `event.UserId`를 로그로 출력하는 코드는 다음과 같습니다. ```lua Event Handler: [server only] [service: UserService] HandleUserDisconnectEvent(UserDisconnectEvent event) { local Disconne [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

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