[task] | instruction_following [pass] | ✅ 통과 [title] | Entity [question] | SetEnable과 SetVisible의 파라미터 기본값 및 reset, shouldSync 플래그의 동작 차이를 표로 정리해서 설명하세요. [answer] | `SetEnable`과 `SetVisible` 메서드의 파라미터 기본값과 플래그 동작 차이는 다음과 같습니다. | 파라미터 | 기본값 | `SetEnable` 동작 | `SetVisible` 동작 | | :--- | :--- | :--- | :--- | | **제1 인자** | 없음 (필수) | 활성화 여부 (`boolean`)를 설정합니다. | 보임 여부 (`boolean`)를 설정합니다. | | **`reset`** | `false` | `true`일 경우, 기존 활성화 여부와 설정할 값이 **같더라도** 활성화 이벤트를 다시 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 파라미터 기본값 및 플래그 동작을 정확히 표로 정리했으며, 핵심 차이 요약도 적절하다. [source_doc] | void SetEnable(boolean enable, boolean reset = false, boolean shouldSync = true)** 활성화 여부를 설정합니다. reset이 true일 경우 기존 활성화 여부와 설정할 값이 같더라도 활성화 이벤트를 처리합니다. shouldSync가 true일 경우, 활성화 여부를 동기화합니다. - **void SetVisible(boolean visible, boolean reset = false, boolean shouldSync = true)** 보임 여부를 설정합니다. re
[task] | single_turn [pass] | ❌ 탈락 [title] | AvatarBodyActionSelectorComponent [question] | AvatarBodyActionSelectorComponent에서 ActionState를 직접 변경하면 어떤 일이 발생합니까? [answer] | `AvatarBodyActionSelectorComponent`의 `ActionState` 프로퍼티를 직접 변경하면, 해당 엔티티에서 **`ActionStateChangedEvent`**가 발생합니다. 이 컴포넌트는 아바타의 몸통 액션을 선택하고 적용하는 역할을 하며, `ActionState` 값이 바뀌는 시점에 액션 상태 변경 이벤트를 트리거하여 다른 스크립트나 시스템이 이 변화를 감지할 수 있도록 합니다. 참고로, 단순히 프로퍼티를 할당하는 것 외에도 `BodyActionStateChangeEvent`를 생성하여 `SendE [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=3 complexity=None verbosity=2 [judge_reason] | 참고 문서에 없는 BodyActionStateChangeEvent와 SendEvent를 지어내어 정확도가 낮습니다. [source_doc] | 아바타의 몸통 Action을 선택해 적용시키는 컴포넌트입니다. # Properties - **MapleAvatarBodyActionState ActionState** 현재 Action 상태입니다. - **ReadOnlyDictionary<MapleAvatarBodyActionState, ReadOnlyList<MapleAvatarActionStateElement>> StateActionDic [ReadOnly] [HideFromInspector]** 상태에 대한 정보값입니다. 추후 개선될 예정입니다. ##### inhe
[task] | two_turn [pass] | ❌ 탈락 [title] | TeleportService [question] | TeleportService에서 ConnectEvent 메서드를 사용하여 특정 텔레포트 이벤트를 구독하고 핸들러에서 event 매개변수를 처리하는 기본적인 코드 구조를 어떻게 작성합니까? [answer] | TeleportService에서 `ConnectEvent` 메서드를 사용하여 이벤트를 구독하는 기본 구조는 **Event Handler** 블록을 통해 작성합니다. mLua에서는 서비스의 특정 이벤트를 구독하려면 해당 서비스가 발신하는 이벤트 타입을 가진 Event Handler를 정의하면 자동으로 연결이 이루어집니다. `ConnectEvent`를 직접 호출하는 대신, 아래 예시와 같이 `[service: TeleportService]` 속성을 붙인 Event Handler를 작성하여 이벤트가 발생했을 때 핸들러가 호출되도록 구성 [followup] | ConnectEvent의 string key 버전과 Type eventType 버전 중 어느 것을 선택해야 하며, 핸들러 내부에서 event 객체의 구체적인 속성이나 메서드 호출 예시를 보여줄 수 있습니까? [followup_answer] | 제공된 참고 문서에 따르면, `ConnectEvent` 메서드는 두 가지 오버로드를 제공하며, 선택 기준은 다음과 같습니다. 1. **`ConnectEvent(string key, IScriptFunction eventHandler)`**: 이벤트의 **타입 이름**(문자열)을 `key`로 전달하여 연결합니다. 2. **`ConnectEvent(Type eventType, IScriptFunction eventHandler)`**: 이벤트의 **타입 객체**를 `eventType`로 전달하여 연결합니다. 두 버전 모두 "이 [scores] | helpfulness=2 correctness=1 coherence=3 complexity=2 verbosity=2 [judge_reason] | 문서에 명시된 TeleportService의 ConnectEvent 메서드 사용법을 무시하고, mLua 표준 규칙에도 없는 [service: TeleportService] 어노테이션과 TeleportEvent 타입을 지어내며, 실제 API(ConnectEvent/DisconnectEvent/SendEvent)와 다른 구조를 제시하여 정확도가 낮음. [source_doc] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지
[task] | single_turn [pass] | ❌ 탈락 [title] | Entity [question] | AddComponent() 메서드는 ControlOnly 태그가 붙어 있는데, 이는 서버에서만 실행 가능한 메서드라는 의미인가요? [answer] | 아니요, `ControlOnly` 태그는 "서버에서만 실행"이라는 의미는 아닙니다. 제공된 문서와 예제 코드를 살펴보면, mLua에서 서버 전용 메서드임을 명시하는 태그는 `[server only]` 또는 `[server]`입니다. 예를 들어 `OnBeginPlay`나 `HandleHitEvent` 같은 메서드들은 `[server only]` 태그를 붙여 서버에서만 실행됨을 나타냅니다. 반면 `AddComponent(string typename)`에 붙은 `[ControlOnly]` 태그는 해당 메서드가 **컨트롤(제어) 환경* [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=2 coherence=3 complexity=2 verbosity=2 [judge_reason] | ControlOnly의 정확한 의미를 문서에 근거 없이 추측하고, OnBeginPlay에 [server only] 태그가 붙는다고 하는 등 사실과 다른 예시를 들어 정확도가 낮음. [source_doc] | - **Component AddComponent(string typename) [ControlOnly]** typename에 해당하는 컴포넌트를 추가합니다. - **Component AddComponent(Type componentType) [ControlOnly]** componentType에 해당하는 컴포넌트를 추가합니다. - **void AttachChild(Entity child)** child를 이 엔티티의 자식으로 편입시킵니다. - **boolean AttachTo(Entity parent) [ControlOn
[task] | single_turn [pass] | ✅ 통과 [title] | AvatarBodyActionSelectorComponent [question] | EnableInHierarchy 프로퍼티가 false를 반환하는 구체적인 조건은 무엇입니까? [answer] | `EnableInHierarchy` 프로퍼티가 `false`를 반환하는 구체적인 조건은 다음과 같습니다. 1. 해당 컴포넌트 자체의 `Enable` 프로퍼티가 `false`인 경우. 2. 해당 컴포넌트를 소유한 엔티티(Entity)의 `Enable` 상태가 `false`인 경우. 즉, 컴포넌트의 `Enable`은 `true`라 하더라도, 상위 엔티티가 비활성(`Enable` = `false`) 상태라면 계층 구조상 활성 상태가 아니므로 `EnableInHierarchy`는 `false`를 반환합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 EnableInHierarchy 정의와 일치하며, 조건을 명확하고 간결하게 설명했습니다. [source_doc] | 아바타의 몸통 Action을 선택해 적용시키는 컴포넌트입니다. # Properties - **MapleAvatarBodyActionState ActionState** 현재 Action 상태입니다. - **ReadOnlyDictionary<MapleAvatarBodyActionState, ReadOnlyList<MapleAvatarActionStateElement>> StateActionDic [ReadOnly] [HideFromInspector]** 상태에 대한 정보값입니다. 추후 개선될 예정입니다. ##### inhe
[task] | single_turn [pass] | ❌ 탈락 [title] | AvatarBodyActionSelectorComponent [question] | MapleAvatarBodyActionState 타입의 값은 어디서 정의되어 있으며 직접 수정이 가능한가요? [answer] | 제공된 참고 문서에는 `MapleAvatarBodyActionState` 타입의 구체적인 정의 위치(예: 특정 파일 경로나 네임스페이스)나 직접 수정 가능 여부에 대한 정보가 포함되어 있지 않습니다. 문서에는 `MapleAvatarBodyActionState`가 `AvatarBodyActionSelectorComponent`의 `ActionState` 프로퍼티 타입으로 사용되며, `BodyActionStateChangeEvent`의 `ActionState` 필드에 `MapleAvatarBodyActionState.Fly`와 같은 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 없는 'BodyActionStateChangeEvent'와 'MapleAvatarBodyActionState.Fly' 예시를 지어내어 정확도가 낮음 [source_doc] | 아바타의 몸통 Action을 선택해 적용시키는 컴포넌트입니다. # Properties - **MapleAvatarBodyActionState ActionState** 현재 Action 상태입니다. - **ReadOnlyDictionary<MapleAvatarBodyActionState, ReadOnlyList<MapleAvatarActionStateElement>> StateActionDic [ReadOnly] [HideFromInspector]** 상태에 대한 정보값입니다. 추후 개선될 예정입니다. ##### inhe
[task] | instruction_following [pass] | ✅ 통과 [title] | Entity [question] | 문서에 나열된 Pre 접두사 이벤트 6개를 선택하여, 해당 이벤트 이름과 설명을 두 줄로 압축한 표로 정리하세요. [answer] | 문서에 나열된 Pre 접두사 이벤트 6개를 선택하여 정리한 표입니다. | 이벤트 이름 | 설명 (2줄 압축) | | :--- | :--- | | `EntityPreApplyChangedPropertiesEvent` | 엔티티의 변경된 프로퍼티 값이 적용되기 직전에 발생합니다.<br>프로퍼티 적용 전 로직 처리에 적합합니다. | | `EntityPreAttachEntityEvent` | 엔티티가 다른 엔티티에 연결(Attach)되기 직전에 발생합니다.<br>부모-자식 관계 설정 전 준비 작업을 수행할 수 있습니다. | | `Enti [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 존재하는 Pre 접두사 이벤트 6개를 정확히 추출하여 요구사항에 맞춰 명확한 표로 정리했으므로 우수함 [source_doc] | # Events - **ComponentEnabledInHierarchyChangedEvent** 컴포넌트의 EnableInHierarchy가 변경되었을 때 발생하는 이벤트입니다. - **EntityAddChildrenEvent** 엔티티에 자식 엔티티가 추가되었을 때 발생하는 이벤트입니다. - **EntityBeginPlayEvent** 엔티티의 BeginPlay 시점에 발생하는 이벤트입니다. - **EntityChangedParentEvent** 엔티티의 부모 엔티티가 변경되었을 때 발생하는 이벤트입니다. - *
[task] | single_turn [pass] | ✅ 통과 [title] | Entity [question] | ReadOnly로 표시된 CurrentMapName과 Path 속성은 직접 수정할 수 없는데, 엔티티가 다른 맵으로 이동했을 때 이 값들이 자동으로 갱신되는지 아니면 수동으로 업데이트해야 하는지 궁금합니다. [answer] | 참고 문서에는 `CurrentMapName`과 `Path` 속성이 `ReadOnly`로 표시되어 있어 직접 수정할 수 없다는 사실만 명시되어 있습니다. 엔티티가 다른 맵으로 이동했을 때 이 값들이 자동으로 갱신되는지, 아니면 수동으로 업데이트해야 하는지에 대한 정보는 제공된 문서에 포함되어 있지 않습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 없는 자동 갱신 여부를 지어내지 않고, 문서의 ReadOnly 제약만 정확히 인용하여 질문의 범위 내 답변을 제공했으므로 적절함 [source_doc] | MSW 내에서 존재하는 객체입니다. # Properties - **ReadOnlyList<Entity> Children [ReadOnly]** 엔티티의 자식 리스트입니다. - **Entity CurrentMap** 엔티티가 속한 맵입니다. - **string CurrentMapName [ReadOnly]** 엔티티가 속한 맵의 이름입니다. - **Entity CurrentWorld** 엔티티가 속한 월드 Entity입니다. - **boolean Enable** 엔티티가 활성화되어 있는지 여부입니다. - **bo
[task] | single_turn [pass] | ✅ 통과 [title] | SoundService [question] | OnBeginPlay에서 _EntityService:GetEntityByPath("/ui/DefaultGroup")로 UI 그룹을 가져오는 과정에서 nil 체크가 필요한 이유는 무엇이며, 이 체크 없이 코드를 실행하면 어떤 문제가 발생하나요? [answer] | `OnBeginPlay`에서 `_EntityService:GetEntityByPath("/ui/DefaultGroup")`로 가져온 UI 그룹 엔티티에 대해 `nil` 체크가 필요한 이유는, 해당 경로에 엔티티가 존재하지 않거나 로드되지 않은 경우 함수가 `nil`을 반환할 수 있기 때문입니다. 이 체크 없이 코드를 실행하면 `nil` 값에 접근하려는 오류가 발생하여 스크립트가 중단됩니다. 예를 들어, `nil` 엔티티를 부모로 지정하여 `_SpawnService:SpawnByModelId`를 호출하거나, `nil` 엔티티의 컴포 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 정확히 인용하며 nil 체크의 필요성과 오류 시나리오를 명확히 설명하여 질문에 완벽하게 부응함. [source_doc] | # Events - **SoundPlayStateChangedEvent** SoundService의 BGM, SoundComponent의 효과음 재생 상태가 변경될 때 발생하는 이벤트입니다. # Examples #### PlayBGM 시작 시 BGM을 재생하고, BGM을 일시정지하거나 재생을 재개 할 수 있는 버튼을 만드는 예제입니다. ```lua Method: [client only] void OnBeginPlay() { local defaultUIGroup = _EntityService:GetEntityByPath
[task] | code [pass] | ❌ 탈락 [title] | Entity [question] | `Parent` 속성이 null이 아닌 경우, 부모 엔티티의 `Path` 속성을 로그로 출력하고 현재 엔티티의 `Id` 속성을 반환하는 스크립트를 작성해줘 [answer] | `Parent` 속성이 `nil`이 아닌지 확인한 후, 부모 엔티티의 `Path`를 로그로 출력하고 현재 엔티티의 `Id`를 반환하는 스크립트는 다음과 같습니다. ```lua Method: [server only] string GetParentPathAndReturnId() { local parent = self.Entity.Parent if parent ~= nil then log(parent.Path) return self.Entity.Id end re [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=2 verbosity=2 [judge_reason] | Parent가 null이 아닌 경우 로그와 반환을 수행하지만, null인 경우 nil을 반환하는 로직이 질문의 조건(단순 출력/반환)과 다소 어긋나고, mLua의 C#풍 선언부에서 return nil 처리가 명시되지 않아 문법적 모호함이 있습니다. [source_doc] | MSW 내에서 존재하는 객체입니다. # Properties - **ReadOnlyList<Entity> Children [ReadOnly]** 엔티티의 자식 리스트입니다. - **Entity CurrentMap** 엔티티가 속한 맵입니다. - **string CurrentMapName [ReadOnly]** 엔티티가 속한 맵의 이름입니다. - **Entity CurrentWorld** 엔티티가 속한 월드 Entity입니다. - **boolean Enable** 엔티티가 활성화되어 있는지 여부입니다. - **bo
[task] | code [pass] | ❌ 탈락 [title] | Entity [question] | 자식 엔티티 리스트인 `Children`을 반복문으로 순회하며, 각 자식의 `Name` 속성이 "NPC"로 시작하는 경우 해당 자식의 `Enable` 속성을 true로 변경하는 스크립트를 작성해줘 [answer] | `Children`은 `ReadOnlyList<Entity>` 타입이며, `Name`과 `Enable`은 Entity의 프로퍼티로 존재합니다. 주어진 참고 문서의 예제에서 `pairs`를 사용하여 `Children` 리스트를 순회하는 방식으로 구현할 수 있습니다. ```lua Method: void OnBeginPlay() { local children = self.Entity.Children for index, child in pairs(children) do if child.Name:sub [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 없는 pairs()와 :sub() 메서드를 지어내어 정확도가 낮지만, 요청된 로직 흐름 자체는 이해를 돕습니다. [source_doc] | MSW 내에서 존재하는 객체입니다. # Properties - **ReadOnlyList<Entity> Children [ReadOnly]** 엔티티의 자식 리스트입니다. - **Entity CurrentMap** 엔티티가 속한 맵입니다. - **string CurrentMapName [ReadOnly]** 엔티티가 속한 맵의 이름입니다. - **Entity CurrentWorld** 엔티티가 속한 월드 Entity입니다. - **boolean Enable** 엔티티가 활성화되어 있는지 여부입니다. - **bo
[task] | single_turn [pass] | ✅ 통과 [title] | Entity [question] | 엔티티의 활성화와 보임 상태를 동시에 변경할 때 두 함수 호출 순서가 중요할 수 있나요? [answer] | 제공된 문서에는 `SetEnable`과 `SetVisible` 함수의 정의와 매개변수(`reset`, `shouldSync`)의 역할만 설명되어 있으며, 두 함수를 동시에 호출할 때의 **호출 순서가 중요하다는 명시적인 정보나 상호작용에 대한 설명이 없습니다.** 따라서 문서에 근거하여 두 함수의 호출 순서가 중요하다고 단정 지을 수 없습니다. 각 함수는 독립적으로 활성화(`SetEnable`)와 보임(`SetVisible`) 상태를 변경하며, `reset`이 `true`로 설정되면 각각의 이벤트가 기존 값과 같더라도 처리되고, [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 상호작용 정보를 지어내지 않고 정직하게 답변했으나, SetEnable/SetVisible이 엔티티 메서드인지 컴포넌트 메서드인지 명확하지 않은데 self.Entity 직접 호출 예시를 제시하여 API 사용법에 대한 불확실성을 남김 [source_doc] | void SetEnable(boolean enable, boolean reset = false, boolean shouldSync = true)** 활성화 여부를 설정합니다. reset이 true일 경우 기존 활성화 여부와 설정할 값이 같더라도 활성화 이벤트를 처리합니다. shouldSync가 true일 경우, 활성화 여부를 동기화합니다. - **void SetVisible(boolean visible, boolean reset = false, boolean shouldSync = true)** 보임 여부를 설정합니다. re
[task] | single_turn [pass] | ✅ 통과 [title] | Entity [question] | GetChild()와 GetChildByName() 함수에서 recursive 파라미터를 true로 설정하면 자식의 자식까지 탐색되나요? [answer] | 네, `recursive` 파라미터를 `true`로 설정하면 자식의 자식(손자 엔티티)까지 포함하여 탐색합니다. 참고 문서에 정의된 두 함수의 시그니처는 다음과 같습니다. * `Entity GetChild(string id, boolean recursive = false)` * `Entity GetChildByName(string name, boolean recursive = false)` 두 함수 모두 `recursive` 인자의 기본값은 `false`이며, 이를 `true`로 변경하면 현재 엔티티의 직접적인 자식뿐 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 시그니처와 의미에 정확히 부합하며, 예시 코드와 설명이 명확하고 도움이 됩니다. [source_doc] | - **Component AddComponent(string typename) [ControlOnly]** typename에 해당하는 컴포넌트를 추가합니다. - **Component AddComponent(Type componentType) [ControlOnly]** componentType에 해당하는 컴포넌트를 추가합니다. - **void AttachChild(Entity child)** child를 이 엔티티의 자식으로 편입시킵니다. - **boolean AttachTo(Entity parent) [ControlOn
[task] | instruction_following [pass] | ✅ 통과 [title] | AvatarBodyActionSelectorComponent [question] | AvatarBodyActionSelectorComponent 의 고유 프로퍼티와 상속된 프로퍼티를 구분하여 표로 정리하세요. [answer] | `AvatarBodyActionSelectorComponent`의 프로퍼티는 컴포넌트 고유 프로퍼티와 `Component`에서 상속된 프로퍼티로 구분할 수 있습니다. | 구분 | 프로퍼티 이름 | 타입 | 속성/특징 | 설명 | | :--- | :--- | :--- | :--- | :--- | | **고유 프로퍼티** | `ActionState` | `MapleAvatarBodyActionState` | - | 현재 Action 상태입니다. | | **고유 프로퍼티** | `StateActionDic` | `ReadOnlyDict [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 고유 및 상속 프로퍼티 정보를 누락 없이 정확히 표로 정리하여 질문에 완벽하게 부응함 [source_doc] | 아바타의 몸통 Action을 선택해 적용시키는 컴포넌트입니다. # Properties - **MapleAvatarBodyActionState ActionState** 현재 Action 상태입니다. - **ReadOnlyDictionary<MapleAvatarBodyActionState, ReadOnlyList<MapleAvatarActionStateElement>> StateActionDic [ReadOnly] [HideFromInspector]** 상태에 대한 정보값입니다. 추후 개선될 예정입니다. ##### inhe
[task] | two_turn [pass] | ✅ 통과 [title] | Entity [question] | `SetEnable`과 `SetVisible` 메서드의 `reset` 및 `shouldSync` 인자가 각각 어떤 동작 차이를 만드는지 설명해 주세요. [answer] | `SetEnable`과 `SetVisible` 메서드의 `reset` 및 `shouldSync` 인자는 이벤트 발생 조건과 클라이언트 동기화 여부를 제어합니다. **1. `reset` 인자** 기본값은 `false`입니다. * **`false` (기본값):** 현재 상태(활성화/비활성화 또는 보임/숨김)와 설정하려는 값이 **같다면** 해당 상태 변경 이벤트는 발생하지 않습니다. 즉, 이미 활성화된 것을 다시 활성화하려고 해도 이벤트가 처리되지 않습니다. * **`true`:** 현재 상태와 설정하려는 값이 **같더라도** [followup] | `reset`이 true일 때 기존 값과 같아도 이벤트가 처리되는 구체적인 예외 상황과, `shouldSync`를 false로 설정했을 때 클라이언트에서 나타나는 비동기 현상을 코드와 함께 보여주세요. [followup_answer] | 참고 문서에 `reset`이 true일 때 발생하는 "구체적인 예외 상황"이나 `shouldSync`를 false로 설정했을 때 클라이언트에서 나타나는 "비동기 현상"에 대한 명시적인 설명은 없습니다. 문서에 있는 정보만으로는 다음 사항만 확인 가능합니다: 1. **`reset` = true**: 기존 활성화/보임 여부와 설정할 값이 **같더라도** 활성화/보임 이벤트가 처리됩니다. (단, 어떤 구체적인 예외 상황에서 이것이 활용되는지에 대한 추가 설명은 문서에 없습니다.) 2. **`shouldSync` = false**: [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 API 시그니처와 동작 설명을 정확히 이해하여 명확하게 설명하고, mLua 표준 구문을 준수한 코드 예시를 제공하여 질의에 완벽하게 부응했습니다. [source_doc] | void SetEnable(boolean enable, boolean reset = false, boolean shouldSync = true)** 활성화 여부를 설정합니다. reset이 true일 경우 기존 활성화 여부와 설정할 값이 같더라도 활성화 이벤트를 처리합니다. shouldSync가 true일 경우, 활성화 여부를 동기화합니다. - **void SetVisible(boolean visible, boolean reset = false, boolean shouldSync = true)** 보임 여부를 설정합니다. re
[task] | single_turn [pass] | ❌ 탈락 [title] | Entity [question] | OwnerId 프로퍼티는 엔티티 소유자의 ID를 문자열로 반환하는데, 이 ID를 이용해 해당 소유자의 다른 엔티티나 정보를 조회할 수 있는 API가 있는지 알고 싶습니다. [answer] | 제공된 문서에는 `OwnerId` 프로퍼티가 엔티티를 소유한 주인의 Id를 문자열(`string`)로 반환한다고만 명시되어 있습니다. 하지만 이 `OwnerId` 값을 인수로 받아 해당 소유자의 다른 엔티티 목록을 조회하거나 소유자 정보를 가져오는 전용 API(메서드)는 문서에 **존재하지 않습니다**. 문서에서 확인할 수 있는 엔티티 관련 조회 메서드는 `_EntityService`의 `GetEntityByPath` (경로를 통한 특정 엔티티 조회)와 `_SpawnService`의 `SpawnByEntity` / `SpawnB [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=2 verbosity=2 [judge_reason] | OwnerId 프로퍼티 설명은 정확하나, 시스템 규칙에 없는 'SpawnByEntity' API를 존재하는 것처럼 인용하여 정확도가 떨어집니다. [source_doc] | MSW 내에서 존재하는 객체입니다. # Properties - **ReadOnlyList<Entity> Children [ReadOnly]** 엔티티의 자식 리스트입니다. - **Entity CurrentMap** 엔티티가 속한 맵입니다. - **string CurrentMapName [ReadOnly]** 엔티티가 속한 맵의 이름입니다. - **Entity CurrentWorld** 엔티티가 속한 월드 Entity입니다. - **boolean Enable** 엔티티가 활성화되어 있는지 여부입니다. - **bo
[task] | single_turn [pass] | ❌ 탈락 [title] | Entity [question] | Enable와 Visible 속성은 각각 엔티티의 로직 실행과 화면 표시를 제어하는데, 둘의 차이는 무엇이며 특정 상황에서 둘 중 하나만 변경해야 하는 이유가 있나요? [answer] | 제공된 참고 문서에는 `Enable`와 `Visible` 속성의 구체적인 기능 정의(로직 실행 제어, 화면 표시 제어 등)나 두 속성 간의 차이점에 대한 설명이 포함되어 있지 않습니다. 문서에 나와 있는 정보에 한해서만 설명하자면, 두 속성은 다음과 같이 정의되어 있습니다. * **Enable**: 엔티티가 활성화되어 있는지 여부를 나타내는 `boolean` 타입의 속성입니다. * **Visible**: 엔티티가 보이는지 여부를 나타내는 `boolean` 타입의 속성입니다. 따라서 문서만 근거로 할 때, `Enable` [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 기능적 차이 설명이 없어 답변을 거부한 점은 정직하지만, 질문자의 의도를 충족하지 못해 유용성이 낮음 [source_doc] | MSW 내에서 존재하는 객체입니다. # Properties - **ReadOnlyList<Entity> Children [ReadOnly]** 엔티티의 자식 리스트입니다. - **Entity CurrentMap** 엔티티가 속한 맵입니다. - **string CurrentMapName [ReadOnly]** 엔티티가 속한 맵의 이름입니다. - **Entity CurrentWorld** 엔티티가 속한 월드 Entity입니다. - **boolean Enable** 엔티티가 활성화되어 있는지 여부입니다. - **bo
[task] | two_turn [pass] | ✅ 통과 [title] | SoundService [question] | SoundService를 사용하여 게임 내 음원을 재생하고 일괄 정지하는 기본 구조가 어떻게 되는지? [answer] | `SoundService`를 사용하여 게임 내 음원을 재생하고 일괄 정지하는 기본 구조는 다음과 같습니다. ### 1. 핵심 API * **재생**: `_SoundService:PlayLoopSound("음원 ID", 볼륨)` * 특정 음원 ID를 지정하여 루프(반복) 재생을 시작합니다. * 두 번째 인자는 볼륨을 나타냅니다. * **일괄 정지**: `_SoundService:StopSound("음원 ID")` * 특정 음원 ID에 해당하는 재생 중인 모든 사운드를 한 번에 정지시킵니다. [followup] | OnBeginPlay에서 5초간 불꽃놀이 음원을 반복 재생한 뒤, 버튼 클릭 시 해당 음원을 StopSound로 정지하는 구체적인 코드 예시를 보여주세요. [followup_answer] | 요청하신 불꽃놀이 음원을 5초간 반복 재생하고, 버튼 클릭 시 `StopSound`로 일괄 정지하는 구체적인 mLua 코드 예시는 다음과 같습니다. ```lua Method: [client only] void OnBeginPlay() { local defaultUIGroup = _EntityService:GetEntityByPath("/ui/DefaultGroup") if defaultUIGroup == nil then return end -- 5초 동안 음원을 다섯번 재생합니다. for i=1, 5 do _S [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 제시된 SoundService API 사용법과 코드 예제를 정확히 설명하고 재현하여 질문에 완벽하게 답했습니다. [source_doc] | `SoundService`를 통해 재생한 음원를 일괄 정지하는 예제입니다. 게임 시작 후 5초에 걸쳐 5번 불꽃놀이 음원를 재생하고, "STOP FIREWORK" 버튼을 누르면 불꽃놀이 사운드가 일괄 정지됩니다. ```lua Method: [client only] void OnBeginPlay() { local defaultUIGroup = _EntityService:GetEntityByPath("/ui/DefaultGroup") if defaultUIGroup == nil then return end -- 5초
[task] | code [pass] | ✅ 통과 [title] | Entity [question] | 엔티티의 `Enable` 속성을 false로 설정하여 비활성화하고, `Visible` 속성을 true로 설정하여 비활성 상태에서도 시각적으로 보이도록 하는 스크립트를 작성해줘 [answer] | 엔티티의 `Enable` 속성을 `false`로 설정하면 해당 엔티티가 비활성화됩니다. 동시에 `Visible` 속성을 `true`로 설정하면 비활성 상태임에도 불구하고 시각적으로 보이도록 할 수 있습니다. 요청하신 동작을 수행하는 mLua 스크립트는 다음과 같습니다. ```lua Property: [None] Method: [server only] void OnBeginPlay() { self.Entity.Enable = false self.Entity.Visible = true } ``` **설명:** - [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 Enable 및 Visible 속성을 정확히 인용하여 요청한 동작을 수행하는 올바른 mLua 스크립트를 제시했습니다. [source_doc] | MSW 내에서 존재하는 객체입니다. # Properties - **ReadOnlyList<Entity> Children [ReadOnly]** 엔티티의 자식 리스트입니다. - **Entity CurrentMap** 엔티티가 속한 맵입니다. - **string CurrentMapName [ReadOnly]** 엔티티가 속한 맵의 이름입니다. - **Entity CurrentWorld** 엔티티가 속한 월드 Entity입니다. - **boolean Enable** 엔티티가 활성화되어 있는지 여부입니다. - **bo
[task] | single_turn [pass] | ✅ 통과 [title] | Entity [question] | EntityPostAttachEntityEvent 와 EntityChangedParentEvent 중 어떤 이벤트를 사용해야 하나요? [answer] | `EntityPostAttachEntityEvent` 대신 **`EntityChangedParentEvent`** 를 사용해야 합니다. `EntityPostAttachEntityEvent` 는 엔티티가 다른 엔티티에 붙을 때 발생하는 이벤트이지만, 공식적으로 **`EntityChangedParentEvent` 로 대체 사용을 권장**하고 있습니다. 따라서 부모 엔티티가 변경되는 상황을 처리할 때는 `EntityChangedParentEvent` 핸들러를 구현하는 것이 정석입니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 'EntityChangedParentEvent로 대체 사용을 권장합니다'라는 내용을 정확히 인용하여 질문에 대한 올바른 해결책을 제시했습니다. [source_doc] | # Events - **ComponentEnabledInHierarchyChangedEvent** 컴포넌트의 EnableInHierarchy가 변경되었을 때 발생하는 이벤트입니다. - **EntityAddChildrenEvent** 엔티티에 자식 엔티티가 추가되었을 때 발생하는 이벤트입니다. - **EntityBeginPlayEvent** 엔티티의 BeginPlay 시점에 발생하는 이벤트입니다. - **EntityChangedParentEvent** 엔티티의 부모 엔티티가 변경되었을 때 발생하는 이벤트입니다. - *
[task] | single_turn [pass] | ✅ 통과 [title] | Entity [question] | EnabledInHierarchy와 VisibleInHierarchy가 각각 Read-Only 속성으로 정의되어 있는데, 부모 엔티티의 상태에 따라 이 값들이 어떻게 연동되는지 구체적인 동작 원리를 알고 싶습니다. [answer] | 제공된 문서에는 `EnabledInHierarchy`와 `VisibleInHierarchy`가 각각 "엔티티가 계층 구조에 활성화되어 있는지 여부"와 "엔티티가 계층 구조에서 보이는지 여부"를 나타내는 **Read-Only** 속성이라고만 정의되어 있습니다. 그러나 부모 엔티티의 상태(`Enable`, `Visible` 등)가 변경될 때 자식 엔티티의 `EnabledInHierarchy` 또는 `VisibleInHierarchy` 값이 어떻게 구체적으로 연동되는지(예: AND 연산인지, 부모가 비활성화되면 자식도 무조건 비활성화되 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 없는 구체적인 연동 원리를 지어내지 않고, 문서 한계를 명확히 지적하여 질문에 충실하게 답변했습니다. [source_doc] | MSW 내에서 존재하는 객체입니다. # Properties - **ReadOnlyList<Entity> Children [ReadOnly]** 엔티티의 자식 리스트입니다. - **Entity CurrentMap** 엔티티가 속한 맵입니다. - **string CurrentMapName [ReadOnly]** 엔티티가 속한 맵의 이름입니다. - **Entity CurrentWorld** 엔티티가 속한 월드 Entity입니다. - **boolean Enable** 엔티티가 활성화되어 있는지 여부입니다. - **bo
[task] | single_turn [pass] | ❌ 탈락 [title] | AvatarBodyActionSelectorComponent [question] | 클라이언트와 서버 모두에서 이 컴포넌트의 ActionState를 읽을 때 값이 일치하지 않을 수 있나요? [answer] | 네, 클라이언트와 서버에서 `ActionState` 값을 읽을 때 값이 일치하지 않을 수 있습니다. `AvatarBodyActionSelectorComponent`의 `ActionState` 프로퍼티는 `[Sync]` 속성을 가지고 있지 않습니다. 문서의 Properties 목록에서 `ActionState`는 단순히 **MapleAvatarBodyActionState** 타입의 프로퍼티로만 정의되어 있으며, 다른 예시나 규칙과 달리 동기화(Sync) 마커가 붙어 있지 않습니다. 반면, 같은 컴포넌트에서 상속된 `Enable` 프 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | [Sync] 부재 시 동기화되지 않는다는 일반론은 타당하나, 문서에 없는 BodyActionStateChangeEvent를 지어내어 정확성에서 감점됨 [source_doc] | 아바타의 몸통 Action을 선택해 적용시키는 컴포넌트입니다. # Properties - **MapleAvatarBodyActionState ActionState** 현재 Action 상태입니다. - **ReadOnlyDictionary<MapleAvatarBodyActionState, ReadOnlyList<MapleAvatarActionStateElement>> StateActionDic [ReadOnly] [HideFromInspector]** 상태에 대한 정보값입니다. 추후 개선될 예정입니다. ##### inhe
[task] | single_turn [pass] | ✅ 통과 [title] | SoundService [question] | _SpawnService:SpawnByModelId로 생성한 버튼과 텍스트의 위치를 조정할 때, UITransformComponent와 TextComponent를 어떻게 접근해야 하나요? [answer] | `_SpawnService:SpawnByModelId`로 생성된 엔티티에서 컴포넌트를 접근하는 방식은 컴포넌트의 종류에 따라 다릅니다. **1. UITransformComponent 접근** 버튼이나 텍스트 엔티티를 생성한 후, 생성된 엔티티 객체에 직접 `UITransformComponent` 프로퍼티를 붙여서 접근합니다. 위치를 조정할 때는 `Position` 프로퍼티의 `x` 또는 `y` 값을 수정합니다. ```lua local button = _SpawnService:SpawnByModelId("Model Entry ID [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 코드 예제와 API 사용법(UITransformComponent, TextComponent 접근 및 속성 수정)을 정확히 설명하고 일관된 예제를 제시했습니다. [source_doc] | `SoundService`를 통해 재생한 음원를 일괄 정지하는 예제입니다. 게임 시작 후 5초에 걸쳐 5번 불꽃놀이 음원를 재생하고, "STOP FIREWORK" 버튼을 누르면 불꽃놀이 사운드가 일괄 정지됩니다. ```lua Method: [client only] void OnBeginPlay() { local defaultUIGroup = _EntityService:GetEntityByPath("/ui/DefaultGroup") if defaultUIGroup == nil then return end -- 5초
[task] | code [pass] | ✅ 통과 [title] | Entity [question] | `CurrentMapName` 속성의 값이 "map01"인 경우에만 실행되며, `OwnerId` 속성의 값이 "player123"과 일치할 때 `Visible` 속성을 false로 설정하는 스크립트를 작성해줘 [answer] | `CurrentMapName`과 `OwnerId`는 모두 `ReadOnly` 속성이므로 스크립트에서 직접 값을 변경할 수 없습니다. 하지만 `OnBeginPlay` 시점에 이 두 값이 조건에 부합하는지 확인하고, 부합할 경우 `Visible` 속성을 `false`로 설정하는 로직은 구현할 수 있습니다. 요구사항에 맞는 mLua 스크립트는 다음과 같습니다. ```lua Method: [server only] void OnBeginPlay() { local entity = self.Entity if entit [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 속성 정의(ReadOnly, Visible 등)와 mLua 스크립트 규칙(self.Entity, OnBeginPlay, [server only])을 정확히 준수하여 요구사항을 충족하는 코드를 제시했습니다. [source_doc] | MSW 내에서 존재하는 객체입니다. # Properties - **ReadOnlyList<Entity> Children [ReadOnly]** 엔티티의 자식 리스트입니다. - **Entity CurrentMap** 엔티티가 속한 맵입니다. - **string CurrentMapName [ReadOnly]** 엔티티가 속한 맵의 이름입니다. - **Entity CurrentWorld** 엔티티가 속한 월드 Entity입니다. - **boolean Enable** 엔티티가 활성화되어 있는지 여부입니다. - **bo
[task] | single_turn [pass] | ❌ 탈락 [title] | Entity [question] | EntityPostInitSyncEvent 와 EntityPostInitSyncedEvent 는 각각 서버와 클라이언트 어디서 발생한다고 이해하면 되나요? [answer] | 제공된 참고 문서에는 `EntityPostInitSyncEvent`와 `EntityPostInitSyncedEvent`의 정확한 발생 시점(서버 또는 클라이언트)에 대한 명시적인 설명이 포함되어 있지 않습니다. 문서에는 해당 이벤트들의 정의가 다음과 같이만 나와 있습니다. * **EntityPostInitSyncEvent**: 엔티티의 InitSync가 완료된 이후 발생하는 이벤트입니다. * **EntityPostInitSyncedEvent**: 엔티티의 InitSynced가 완료된 이후 발생하는 이벤트입니다. 따라서 제 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 서버/클라이언트 발생 위치 정보가 없으므로 이를 명시적으로 지적하며 답변을 거부한 것이 정확하고 일관된 응답입니다. [source_doc] | # Events - **ComponentEnabledInHierarchyChangedEvent** 컴포넌트의 EnableInHierarchy가 변경되었을 때 발생하는 이벤트입니다. - **EntityAddChildrenEvent** 엔티티에 자식 엔티티가 추가되었을 때 발생하는 이벤트입니다. - **EntityBeginPlayEvent** 엔티티의 BeginPlay 시점에 발생하는 이벤트입니다. - **EntityChangedParentEvent** 엔티티의 부모 엔티티가 변경되었을 때 발생하는 이벤트입니다. - *
[task] | code [pass] | ✅ 통과 [title] | Entity [question] | OnBeginPlay에서 Entity의 SetEnable을 false로 설정하고, OnUpdate에서 특정 조건(예: Speed 속성 값이 10보다 클 때)이 충족되면 SetEnable을 true로 설정하는 스크립트를 작성해줘 [answer] | 요청하신 조건에 맞는 mLua 스크립트입니다. `OnBeginPlay`에서 엔티티를 비활성화하고, `OnUpdate`에서 `Speed` 속성이 10을 초과하면 활성화하도록 작성했습니다. ```lua Property: [None] number Speed = 0 Method: [server only] void OnBeginPlay() { self.Entity:SetEnable(false) } [server only] void OnUpdate(number delta) { if self.Speed > 10 then [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 SetEnable 시그니처와 mLua 표준 구문(OnBeginPlay/OnUpdate, self.Entity 접근)을 정확히 준수하여 요청한 기능을 구현했으며, 지어낸 API나 오류가 없습니다. [source_doc] | void SetEnable(boolean enable, boolean reset = false, boolean shouldSync = true)** 활성화 여부를 설정합니다. reset이 true일 경우 기존 활성화 여부와 설정할 값이 같더라도 활성화 이벤트를 처리합니다. shouldSync가 true일 경우, 활성화 여부를 동기화합니다. - **void SetVisible(boolean visible, boolean reset = false, boolean shouldSync = true)** 보임 여부를 설정합니다. re
[task] | single_turn [pass] | ✅ 통과 [title] | Entity [question] | SetEnable과 SetVisible 함수의 기본 파라미터 값은 무엇이며 이것이 코드 작성에 어떤 영향을 주나요? [answer] | `SetEnable`과 `SetVisible` 함수의 기본 파라미터 값은 다음과 같습니다. **1. 기본 파라미터 값** * **`reset`**: `false` * **`shouldSync`**: `true` 함수 시그니처는 다음과 같습니다. ```lua void SetEnable(boolean enable, boolean reset = false, boolean shouldSync = true) void SetVisible(boolean visible, boolean reset = false, boolean shoul [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서와 시스템 규칙에 기반하여 기본값과 그 의미를 정확히 설명하고, mLua 문법에 맞는 예시를 제시하여 질문에 완벽히 답했습니다. [source_doc] | void SetEnable(boolean enable, boolean reset = false, boolean shouldSync = true)** 활성화 여부를 설정합니다. reset이 true일 경우 기존 활성화 여부와 설정할 값이 같더라도 활성화 이벤트를 처리합니다. shouldSync가 true일 경우, 활성화 여부를 동기화합니다. - **void SetVisible(boolean visible, boolean reset = false, boolean shouldSync = true)** 보임 여부를 설정합니다. re
[task] | instruction_following [pass] | ✅ 통과 [title] | CustomFootholdComponent [question] | CustomFootholdComponent에서 발판 모양을 변경할 때 주의해야 할 사항과 올바른 코드 작성법을 3문장 이내로 설명하세요. [answer] | `IsDynamicFoothold`가 true여야 하며, 기존 리스트 요소를 직접 수정해도 반영되지 않으므로 반드시 새로운 리스트를 만들어 덮어써야 합니다. 발판 일부만 수정할 때는 해당 인덱스에 새 리스트를 대입하고, 전체를 바꿀 때는 이중 리스트 전체를 대입하면 됩니다. ```lua local target = _EntityService:GetEntityByPath(EntityPath) local list = {Vector2(3,0), Vector2(2,3)} target.CustomFootholdComponent.edgeLis [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 핵심 제약(IsDynamicFoothold, 새 리스트 대입)과 예제 코드를 정확하고 간결하게 요약하여 질문에 완벽하게 부합합니다. [source_doc] | 사용자 정의 발판을 만드는 기능을 제공합니다. 발판의 모양과 속성을 설정할 수 있습니다 # Properties - **SyncList<List<Vector2>> edgeLists [Sync]** 발판을 나타냅니다. 하나의 발판은 여러 개의 연결점으로 구성됩니다. - **float FootholdDrag [Sync]** RigidbodyComponent가 포함된 엔티티가 발판 위에 있을 때 적용되는 마찰력입니다. 값이 클수록 빠르게 감속합니다. - **float FootholdForce [Sync]** Rigidbody
[task] | instruction_following [pass] | ✅ 통과 [title] | CustomFootholdComponent [question] | 문서에 제시된 '발판 일부를 변경하는 예제'의 Lua 코드를 그대로 출력하고, 왜 원본 리스트 요소를 직접 수정하면 안 되는지 주석으로만 설명하세요. [answer] | ```lua local target = _EntityService:GetEntityByPath(EntityPath) -- 요소의 값을 수정하면 변경 사항이 발판에 적용되지 않습니다. -- target.CustomFootholdComponent.edgeLists[1][1] = Vector2(3, 0) -- 새 List를 만들어 덮어써야 합니다. local list = {Vector2(3,0), Vector2(2,3)} target.CustomFootholdComponent.edgeLists[1] = list ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 제시된 코드를 정확히 재현하고, 요구사항인 '주석으로만 설명' 조건을 완벽하게 충족했습니다. [source_doc] | 사용자 정의 발판을 만드는 기능을 제공합니다. 발판의 모양과 속성을 설정할 수 있습니다 # Properties - **SyncList<List<Vector2>> edgeLists [Sync]** 발판을 나타냅니다. 하나의 발판은 여러 개의 연결점으로 구성됩니다. - **float FootholdDrag [Sync]** RigidbodyComponent가 포함된 엔티티가 발판 위에 있을 때 적용되는 마찰력입니다. 값이 클수록 빠르게 감속합니다. - **float FootholdForce [Sync]** Rigidbody
[task] | code [pass] | ❌ 탈락 [title] | Entity [question] | 엔티티가 속한 맵이 변경될 때 EntityMapChangedEvent 이벤트를 처리하여 맵 변경 사항을 log()로 기록하는 스크립트를 작성해줘 [answer] | 엔티티가 속한 맵이 변경될 때 발생하는 `EntityMapChangedEvent`를 처리하여 맵 변경 사항을 로그로 기록하는 스크립트는 다음과 같습니다. ```lua Event Handler: [self] HandleEntityMapChangedEvent(EntityMapChangedEvent event) { log("맵이 변경되었습니다.") } ``` [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=2 verbosity=2 [judge_reason] | EntityMapChangedEvent는 문서에 존재하지만, [self] 서비스 태그를 사용하여 해당 이벤트를 처리하는지 여부는 문서에 명시되지 않아 확인이 불가하며, 단순히 로그만 출력하여 질문 의도(맵 변경 사항 기록)를 완전히 충족하지 못함 [source_doc] | # Events - **ComponentEnabledInHierarchyChangedEvent** 컴포넌트의 EnableInHierarchy가 변경되었을 때 발생하는 이벤트입니다. - **EntityAddChildrenEvent** 엔티티에 자식 엔티티가 추가되었을 때 발생하는 이벤트입니다. - **EntityBeginPlayEvent** 엔티티의 BeginPlay 시점에 발생하는 이벤트입니다. - **EntityChangedParentEvent** 엔티티의 부모 엔티티가 변경되었을 때 발생하는 이벤트입니다. - *