[task] | single_turn [pass] | ✅ 통과 [title] | CameraService [question] | DisconnectEvent를 호출했을 때 반환되는 boolean 값이 false가 나오면 어떤 상황일 가능성이 높은가요? [answer] | `DisconnectEvent` 메서드는 특정 이벤트와 핸들러 간의 연결을 끊는 동작을 수행하며, 성공 여부에 따라 `boolean` 값을 반환합니다. 반환값이 `false`로 나오는 상황은 요청한 **이벤트와 핸들러 간의 연결이 존재하지 않는 경우**일 가능성이 높습니다. 구체적으로 다음 중 하나에 해당할 수 있습니다: 1. 해당 이벤트와 핸들러가 이전에 `ConnectEvent`를 통해 연결된 적이 없는 경우 2. 해당 연결이 이미 이전에 `DisconnectEvent`를 통해 끊어진 상태인 경우 따라서 `false` 반환 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 API 명세(ConnectEvent/DisconnectEvent)를 바탕으로 반환값의 의미를 논리적으로 잘 설명했으며, 지어낸 API나 잘못된 정보가 없습니다. [source_doc] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지
[task] | instruction_following [pass] | ❌ 탈락 [title] | CameraService [question] | 문서 예제 코드에 포함된 `_CameraService` 메서드 호출 3가지를 실행 순서대로 줄바꿈 없이 한 줄로 나열하세요. [answer] | _CameraService:SwitchCameraTo(targetCamera) _CameraService:ZoomTo(200, 1.0) _CameraService:ZoomReset() [followup] | [followup_answer] | [scores] | helpfulness=0 correctness=0 coherence=1 complexity=1 verbosity=2 [judge_reason] | 질문에서 요구한 '줄바꿈 없이 한 줄' 형식을 무시하고 줄바꿈을 사용하여 나열했으므로 형식 요건을 충족하지 못합니다. [source_doc] | # Events - **CameraSwitchEvent** 카메라가 비추는 대상이 전환될 때 발생하는 이벤트입니다. - **CameraZoomEndEvent** 카메라의 줌 변경이 완료된 후 발생하는 이벤트입니다. # Examples `LeftShift` 키를 누르고 있는 동안 카메라가 `Target Entity`를 2배 확대해 가까이에서 보이도록 만드는 예제입니다. ```lua Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event)
[task] | code [pass] | ✅ 통과 [title] | CameraService [question] | 카메라 서비스 이벤트를 커스텀 이벤트로 변환해 전송하는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 `CameraService`의 이벤트 연결(`ConnectEvent`)과 전송(`SendEvent`) 메서드만 설명되어 있으며, **`CameraService`에서 발생하는 구체적인 이벤트 타입 이름(예: `CameraMoveEvent` 등)이나 해당 이벤트 객체가 가진 속성(예: `Position`, `Rotation` 등)에 대한 정보는 포함되어 있지 않습니다.** 따라서 문서에 근거하여 "카메라 서비스의 특정 이벤트를 받아 커스텀 이벤트로 변환"하는 코드를 작성할 수 없습니다. 지어내지 않기 원칙에 따라 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 구체적인 이벤트 이름을 지어내지 않고, 제공된 API 문법 구조만 활용한 예시를 보여주며 문서의 한계를 명확히 설명하여 정확하고 유용합니다. [source_doc] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지
[task] | code [pass] | ✅ 통과 [title] | EntityService [question] | MoveMonster 모델로 생성된 엔티티들에게 점프력을 가하는 스크립트를 작성해줘 [answer] | `_EntityService:GetEntitiesSpawnedByModelId` 메서드를 사용하여 `MoveMonster` 모델로 생성된 엔티티들을 조회한 뒤, 각 엔티티의 `RigidbodyComponent`에 `AddForce` 메서드를 호출하여 위 방향(`Vector2(0.0, 5.0)`)으로 힘을 가하는 방식으로 구현합니다. ```lua [server] void JumpMoveMonsters () { local entities = _EntityService:GetEntitiesSpawnedByModelId("model:/ [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 정확히 인용하여 질문에 대한 명확하고 정확한 답변을 제공했습니다. [source_doc] | `TagComponent`를 통해 특정 Tag를 가지고 있는 엔티티들의 `visible`을 수정하는 예제입니다. ```lua [server] void VisibleTagEntities (string tag, boolean visible) { local entities = _EntityService:GetEntitiesByTag(tag) for k, v in pairs(entities) do v.Visible = visible end } ``` #### GetEntitiesSpawnedByModelId MoveMonst
[task] | code [pass] | ✅ 통과 [title] | EntityService [question] | EntityService:GetEntitiesSpawnedByModelId 메서드를 사용하여 "model://movemonster" 경로로 생성된 엔티티 목록을 가져오고, 각 엔티티의 RigidbodyComponent:AddForce 메서드를 호출하여 Vector2(0.0, 5.0)의 힘을 적용하는 서버 전용 메서드를 구현해야 합니다. [answer] | `_EntityService:GetEntitiesSpawnedByModelId` 메서드를 사용하여 "model://movemonster" 모델로 생성된 엔티티들을 조회한 뒤, 각 엔티티의 `RigidbodyComponent`에 `AddForce` 메서드로 `Vector2(0.0, 5.0)`의 힘을 가하는 서버 전용 스크립트는 다음과 같습니다. ```lua [server only] void JumpMoveMonsters () { local entities = _EntityService:GetEntitiesSpawnedByModel [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | 요청된 기능을 정확히 구현했으나, 참고 문서의 실행 공간 태그 [server]와 달리 [server only]를 사용하여 문서와의 일치도가 약간 낮음. [source_doc] | `TagComponent`를 통해 특정 Tag를 가지고 있는 엔티티들의 `visible`을 수정하는 예제입니다. ```lua [server] void VisibleTagEntities (string tag, boolean visible) { local entities = _EntityService:GetEntitiesByTag(tag) for k, v in pairs(entities) do v.Visible = visible end } ``` #### GetEntitiesSpawnedByModelId MoveMonst
[task] | instruction_following [pass] | ✅ 통과 [title] | CameraService [question] | `CameraService`에서 제공하는 이벤트 2가지를 이름과 발생 시점으로 구분하여 표로 정리하세요. [answer] | `CameraService`에서 제공하는 이벤트는 다음과 같습니다. | 이벤트 이름 | 발생 시점 | | :--- | :--- | | `CameraSwitchEvent` | 카메라가 비추는 대상이 전환될 때 | | `CameraZoomEndEvent` | 카메라의 줌 변경이 완료된 후 | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 두 이벤트의 이름과 발생 시점을 정확하고 간결하게 표로 정리했습니다. [source_doc] | # Events - **CameraSwitchEvent** 카메라가 비추는 대상이 전환될 때 발생하는 이벤트입니다. - **CameraZoomEndEvent** 카메라의 줌 변경이 완료된 후 발생하는 이벤트입니다. # Examples `LeftShift` 키를 누르고 있는 동안 카메라가 `Target Entity`를 2배 확대해 가까이에서 보이도록 만드는 예제입니다. ```lua Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event)
[task] | two_turn [pass] | ❌ 탈락 [title] | CameraService [question] | SwitchCameraTo 메서드의 Entity messageOwnerEntity와 string targetUserId 파라미터는 어떤 상황에서 각각 사용해야 하나요? [answer] | `SwitchCameraTo` 메서드의 `Entity messageOwnerEntity`와 `string targetUserId` 파라미터는 **특정 플레이어의 클라이언트에서만 카메라를 전환할 때** 사용합니다. 기본적으로 `SwitchCameraTo(CameraComponent cameraToSwitch)`를 호출하면 호출한 스크립트가 실행 중인 클라이언트(또는 로컬 플레이어)의 카메라만 전환됩니다. 하지만 멀티플레이어 환경에서 **나 자신 말고 다른 특정 플레이어의 카메라를 원격으로 제어**해야 할 경우 이 두 가지 오버로드를 [followup] | 특정 유저의 카메라를 원격으로 전환할 때 targetUserId를 사용하여 호출하는 스크립트 예제를 작성해 주세요. [followup_answer] | 특정 유저의 카메라를 원격으로 전환하려면 `SwitchCameraTo` 메서드의 `string targetUserId` 오버로드를 사용합니다. 아래 예제는 트리거에 다른 플레이어가 들어왔을 때, 그 플레이어의 카메라를 지정된 NPC의 카메라로 전환하는 스크립트입니다. ```lua [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { -- 트리거에 들어온 플레이어 엔티티와 그 유저 ID를 가져옵니다. local TriggerBodyEntity = event.Trigg [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에는 파라미터 설명이 없어 '타겟 지정'이라는 추론은 합리적이나, '서버에서 실행하더라도 메시지 전송'이나 '동시 지정 불가' 등 문서에 없는 제약/동작을 지어내어 정확도가 낮음 [source_doc] | 카메라 관련 기능을 제공합니다. # Properties - **float currentZoomRatio [ReadOnly]** 현재 줌 비율입니다. - **float TransitionBlendTime** 카메라 전환 시 블렌드 시간이 얼마나 걸릴지를 정의합니다. - **CameraBlendType TransitionBlendType** 카메라 전환 시의 애니메이션 블랜드 타입을 정의합니다. # Methods - **CameraComponent GetCurrentCameraComponent() [ClientOnly
[task] | instruction_following [pass] | ✅ 통과 [title] | CameraService [question] | `LeftShift` 키를 눌렀을 때와 뗐을 때 각각 어떤 카메라 동작이 수행되는지 `KeyDownEvent`와 `KeyUpEvent` 핸들러 기준으로 3문장 이내로 설명하세요. [answer] | `LeftShift` 키를 누르면 `KeyDownEvent`가 발생하여 지정된 대상 엔티티의 카메라로 전환된 후 줌 레벨 200으로 확대됩니다. 키를 뗄 때는 `KeyUpEvent`가 발생하여 줌을 초기화하고 다시 로컬 플레이어의 카메라로 전환합니다. 이 과정을 통해 키 입력 상태에 따라 카메라의 시점과 확대 수준이 실시간으로 변경됩니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 정확히 바탕으로 KeyDown/KeyUp 시 카메라 전환 및 줌 동작을 3문장 이내로 명확하고 정확하게 설명하였습니다. [source_doc] | # Events - **CameraSwitchEvent** 카메라가 비추는 대상이 전환될 때 발생하는 이벤트입니다. - **CameraZoomEndEvent** 카메라의 줌 변경이 완료된 후 발생하는 이벤트입니다. # Examples `LeftShift` 키를 누르고 있는 동안 카메라가 `Target Entity`를 2배 확대해 가까이에서 보이도록 만드는 예제입니다. ```lua Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event)
[task] | code [pass] | ✅ 통과 [title] | EntityService [question] | _EntityService:GetEntitiesByTag("enemy") 로 태그가 enemy인 엔티티 목록을 조회하고, _EntityService:IsValid(entity) 로 유효성 검사 후 _EntityService:Destroy(entity) 로 즉시 소멸시키는 스크립트를 작성해줘 [answer] | 태그가 `enemy`인 엔티티 목록을 조회하여 유효한 엔티티만 즉시 소멸시키는 스크립트는 다음과 같습니다. ```lua Method: [server only] void DestroyEnemiesByTag() { local entities = _EntityService:GetEntitiesByTag("enemy") for k, v in pairs(entities) do if _EntityService:IsValid(v) then _EntityService:Destroy(v) [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 요청된 API(GetEntitiesByTag, IsValid, Destroy)를 문서와 일치하는 방식으로 정확히 조합하여 요청사항을 충족했습니다. [source_doc] | 엔티티와 관련된 여러 기능을 제공합니다. # Methods - **void Destroy(Entity entity)** 엔티티를 파괴합니다. - **void Destroy(Entity entity, float delaySeconds)** 엔티티를 delaySeconds(초) 후 파괴합니다. - **table<Entity> GetEntitiesByPath(string worldPath)** worldPath에 해당하는 경로의 엔티티를 반환합니다. - **table<Entity> GetEntitiesByTag(string
[task] | two_turn [pass] | ❌ 탈락 [title] | EntityService [question] | EntityService를 이용해 특정 조건에 맞는 엔티티를 그룹으로 제어하는 일반적인 방법과 주요 메서드에는 어떤 것이 있나요? [answer] | EntityService를 사용하여 특정 조건에 맞는 엔티티를 그룹으로 제어하는 일반적인 방법은 해당 조건에 부합하는 엔티티 목록을 가져온 후, 반복문(`for ... in pairs(...)`)을 사용해 각 엔티티의 컴포넌트나 속성을 일괄적으로 수정하는 것입니다. 참고 문서에 근거한 주요 메서드와 사용 예시는 다음과 같습니다. ### 1. 태그(Tag) 기반 엔티티 그룹 제어 `_EntityService:GetEntitiesByTag(tag)` 메서드를 사용하면 특정 태그를 가진 모든 엔티티를 배열 형태로 가져올 수 있습니다. [followup] | `TagComponent`를 활용하여 특정 Tag를 가진 엔티티들의 `visible` 속성을 일괄 변경하는 `[server]` 스크립트 코드 예제를 작성해 주세요. [followup_answer] | ```lua [server] void VisibleTagEntities (string tag, boolean visible) { local entities = _EntityService:GetEntitiesByTag(tag) for k, v in pairs(entities) do v.Visible = visible end } ``` [scores] | helpfulness=3 correctness=1 coherence=3 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 없는 NameTagComponent, Color.green, FontSize, SetTimerOnce 등 API 및 속성을 지어내어 정확도가 낮습니다. [source_doc] | `TagComponent`를 통해 특정 Tag를 가지고 있는 엔티티들의 `visible`을 수정하는 예제입니다. ```lua [server] void VisibleTagEntities (string tag, boolean visible) { local entities = _EntityService:GetEntitiesByTag(tag) for k, v in pairs(entities) do v.Visible = visible end } ``` #### GetEntitiesSpawnedByModelId MoveMonst
[task] | code [pass] | ✅ 통과 [title] | EntityService [question] | _EntityService:GetEntitiesSpawnedByModelId("monster_01") 로 모델 ID가 monster_01인 모든 엔티티를 조회하여 각 엔티티의 TransformComponent.Position 을 로그로 출력하는 스크립트를 작성해줘 [answer] | `_EntityService:GetEntitiesSpawnedByModelId("monster_01")`을 호출하여 해당 모델 ID로 소환된 엔티티 목록을 `table<Entity>` 형태로 받아옵니다. 이후 이 테이블을 반복하며 각 엔티티의 `TransformComponent.Position`을 로그로 출력하면 됩니다. ```lua Method: [server only] void LogMonsterPositions() { local entities = _EntityService:GetEntitiesSpawnedByMode [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서와 규칙에 명시된 API 및 문법을 정확히 사용해 질문에 맞는 코드를 간결하게 제시했습니다. [source_doc] | 엔티티와 관련된 여러 기능을 제공합니다. # Methods - **void Destroy(Entity entity)** 엔티티를 파괴합니다. - **void Destroy(Entity entity, float delaySeconds)** 엔티티를 delaySeconds(초) 후 파괴합니다. - **table<Entity> GetEntitiesByPath(string worldPath)** worldPath에 해당하는 경로의 엔티티를 반환합니다. - **table<Entity> GetEntitiesByTag(string
[task] | code [pass] | ✅ 통과 [title] | EntityService [question] | TagComponent를 가진 엔티티들의 Visible을 변경하는 스크립트를 작성해줘 [answer] | Tag를 가진 엔티티들의 `Visible` 속성을 변경하는 스크립트는 `_EntityService:GetEntitiesByTag` 메서드를 사용해야 합니다. 참고 문서에 따르면, 특정 태그를 가진 엔티티 목록을 가져와 반복문을 통해 각 엔티티의 `Visible` 프로퍼티를 수정하는 방식이 표준적입니다. 아래는 지정한 태그를 가진 모든 엔티티의 가시성을 변경하는 예제입니다. `tag` 인자로 원하는 태그 이름을, `visible` 인자로 `true`(표시) 또는 `false`(숨김)를 전달하면 됩니다. ```lua Method: [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 예제를 정확히 인용하여 질문에 부합하는 올바른 스크립트를 제공하고 설명도 명확하며 지어낸 API가 없다. [source_doc] | `TagComponent`를 통해 특정 Tag를 가지고 있는 엔티티들의 `visible`을 수정하는 예제입니다. ```lua [server] void VisibleTagEntities (string tag, boolean visible) { local entities = _EntityService:GetEntitiesByTag(tag) for k, v in pairs(entities) do v.Visible = visible end } ``` #### GetEntitiesSpawnedByModelId MoveMonst
[task] | code [pass] | ❌ 탈락 [title] | EditorService [question] | ScreenTouchHoldEditorEvent와 ScreenTouchReleaseEditorEvent를 이용하여 터치 시작과 종료 시점을 기록하고, OnUpdate 메서드에서 두 이벤트 간 경과 시간을 계산해 log 로 출력하는 스크립트를 작성해줘 [answer] | `ScreenTouchHoldEditorEvent`와 `ScreenTouchReleaseEditorEvent`는 **에디터(Editor) 환경에서만 발생**하는 이벤트입니다. 따라서 이 스크립트는 에디터에서 플레이/테스트 모드에 진입한 상태(Play Mode)가 아닌, 편집 모드에서 동작하도록 설계되어야 합니다. mLua의 일반 게임 루프(`OnUpdate`)는 주로 서버/클라이언트 런타임에서 동작하지만, 에디터 이벤트 핸들러와 `OnUpdate`를 결합하여 사용하려면 해당 스크립트가 에디터 컨텍스트에서 실행되어야 합니다. 아래 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | os.clock()은 mLua 문서나 규칙에 명시되지 않은 표준 API가 아니므로 존재하지 않는 함수를 지어낸 것으로 판단되며, 에디터 이벤트와 OnUpdate의 결합 가능성에 대한 서술도 다소 추측적입니다. [source_doc] | # Events - **EnterEditorEvent** Editor 진입 시 발생하는 에디터 이벤트입니다. - **EnterPlayEvent** 플레이 모드에 진입할 때 발생하는 이벤트입니다. - **EntityCreateEditorEvent** 엔티티 생성 시 발생하는 에디터 이벤트입니다. - **EntityDeleteEditorEvent** 엔티티가 삭제되었을 때 발생하는 에디터 이벤트입니다. - **EntityDeselectEditorEvent** 엔티티 선택 해제 시 발생하는 에디터 이벤트입니다. - *
[task] | code [pass] | ✅ 통과 [title] | CameraService [question] | 특정 카메라 이벤트 발생 시 카메라 포지션 기록 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 `CameraService`의 이벤트 연결(`ConnectEvent`), 해제(`DisconnectEvent`), 발생(`SendEvent`) 메서드만 설명되어 있습니다. **참고 문서에는 특정 카메라 이벤트의 이름(키 또는 타입)이나, 카메라 포지션(Position)을 반환하는 프로퍼티/메서드가 명시되어 있지 않습니다.** mLua API 문서에 없는 구체적인 이벤트 이름(예: `CameraMoveEvent`, `CameraFocusEvent` 등)이나 포지션 접근자(예: `CameraComponent.P [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 API나 이벤트를 지어내지 않고, 존재하지 않는 정보임을 명확히 밝히며 문서 기반의 구조만 제시하여 정확도와 일관성이 높음 [source_doc] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지
[task] | code [pass] | ✅ 통과 [title] | EntityService [question] | _EntityService:GetEntityByPath("/maps/map01/obj") 로 특정 경로의 엔티티를 찾고, _EntityService:Destroy(entity, 5.0) 로 5초 후 지연 소멸시키는 스크립트를 작성해줘 [answer] | `_EntityService:GetEntityByPath(worldPath)` 메서드는 특정 경로에 있는 엔티티를 반환하며, `_EntityService:Destroy(entity, delaySeconds)` 메서드는 주어진 엔티티를 지정된 초(delaySeconds) 후 파괴합니다. 요청하신 동작을 수행하는 mLua 스크립트는 다음과 같습니다. ```lua Method: [server only] void DelayDestroyEntity() { local targetEntity = _EntityService:GetEnt [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 요청된 API를 정확히 사용하고 nil 체크 등 방어적 코딩을 포함하여 문서와 일치하며 명확하고 적절합니다. [source_doc] | 엔티티와 관련된 여러 기능을 제공합니다. # Methods - **void Destroy(Entity entity)** 엔티티를 파괴합니다. - **void Destroy(Entity entity, float delaySeconds)** 엔티티를 delaySeconds(초) 후 파괴합니다. - **table<Entity> GetEntitiesByPath(string worldPath)** worldPath에 해당하는 경로의 엔티티를 반환합니다. - **table<Entity> GetEntitiesByTag(string
[task] | code [pass] | ❌ 탈락 [title] | DataStorageService [question] | DataStorageService의 GetUserDataStoragePagesAsync를 사용하여 서버에서 유저의 저장 데이터를 페이지별로 조회하고, 조회가 완료되면 콜백 함수를 통해 에러 코드와 데이터를 처리하는 스크립트를 작성해줘 [answer] | 사용자 질문에서 언급된 `GetUserDataStoragePagesAsync` API는 제공된 참고 문서에 존재하지 않습니다. 참고 문서에 따르면, `DataStorageService`에서 유저 저장 데이터를 페이지 단위로 비동기 조회하는 함수의 이름은 **`GetUserDataStoragePagesAsync`**가 아니라 **`GetUserDataStoragePagesAsync`**가 아닙니다. 문서에 명시된 정확한 함수 시그니처는 다음과 같습니다: `GetUserDataStoragePagesAsync(func<int32, U [followup] | [followup_answer] | [scores] | helpfulness=0 correctness=2 coherence=1 complexity=3 verbosity=4 [judge_reason] | 질문자가 요청한 API가 문서에 잘려있어 이름이 불확실하다는 이유로 정답을 제시하지 못하고, 추론 과정을 과도하게 나열하며 최종 답변 없이 끊긴 코드를 출력하는 등 도움이 되지 않습니다. [source_doc] | taStoragePagesAsync(func<int32, UserDataStoragePages> callbackFunction) [ServerOnly]** UserDataStorage를 페이지 단위로 조회합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 조회용 객체와 함께 callbackFunction으로 전달된 함수가 호출됩니다. - **boolean SetAndWait(string storageName, string key, string value) [Deprecated] [ServerOnly] [Yield
[task] | two_turn [pass] | ❌ 탈락 [title] | EditorService [question] | 에디터에서 맵을 생성하고 특정 위치에 모델을 배치하는 자동화 스크립트 작성 방법은 무엇인가요? [answer] | 에디터에서 맵을 생성하고 특정 위치에 모델을 배치하는 자동화 스크립트는 `_EditorService`의 `CreateMap`과 `CreateSelectedModel` 메서드를 조합하여 작성할 수 있습니다. 주요 절차는 다음과 같습니다. 1. **모델 선택**: 배치할 모델 ID를 `_EditorService`에 설정해야 합니다. (참고: `SetSelectedModel` API는 제공된 문서에 명시되어 있지 않지만, 실제 mLua 예제에서 `_EditorService:SetSelectedModel(spawnModelId)` 호출이 [followup] | CreateSelectedModel의 callback으로 생성된 엔티티를 받아서, GetCameraPosition으로 카메라 위치를 확인한 후 해당 엔티티를 카메라 중앙에 맞춰 선택(SelectEntity)하는 코드 예시를 보여주세요. [followup_answer] | `CreateSelectedModel`의 callback으로 생성된 엔티티를 받고, `GetCameraPosition`으로 카메라 위치를 확인한 후 해당 엔티티를 선택하는 코드 예시는 다음과 같습니다. 참고로 `SelectEntity`는 엔티티의 `string entityId`를 인자로 받습니다. `CreateSelectedModel`의 callback으로 전달되는 `Entity` 객체에서 ID를 직접 추출하는 API는 제공된 문서에 명시되어 있지 않으므로, 일반적으로 엔티티 객체의 `Id` 또는 `EntityId` 프로퍼티를 사 [scores] | helpfulness=2 correctness=1 coherence=3 complexity=3 verbosity=3 [judge_reason] | 문서에 없는 SetSelectedModel API를 지어내어 사용하므로 정확도가 낮고, 실제 자동화 시 필요한 모델 선택 방법을 정확히 제시하지 못했습니다. [source_doc] | 에디터 스크립트 관련 기능을 제공합니다. # Methods - **void CloneSelectedEntity()** 선택된 엔티티를 복제합니다. - **void CreateMap(func<string> callback)** 맵을 생성합니다. callback으로 생성된 맵의 Id를 전달받습니다. - **void CreateSelectedModel(Vector2 position, boolean select = true)** 선택된 모델을 position에 생성합니다. - **void CreateSelectedModel(
[task] | code [pass] | ✅ 통과 [title] | CameraService [question] | 카메라 이벤트 핸들러 동적 연결 및 해제 로직 구현 스크립트를 작성해줘 [answer] | 참고 문서에 `CameraService`의 `ConnectEvent`, `DisconnectEvent`, `SendEvent` 메서드 시그니처와 `EventHandlerBase` 타입은 포함되어 있습니다. 하지만 실제 카메라 이벤트의 **구체적인 이벤트 타입 이름**(예: `CameraMoveEvent`, `CameraZoomEvent` 등)이나 이벤트 객체가 가지는 **프로퍼티 목록**은 문서에 명시되어 있지 않습니다. 따라서 아래 스크립트는 `CameraService`에 존재하는 이벤트 중 하나를 가정하여(`CameraEven [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=3 verbosity=3 [judge_reason] | 문서에 없는 구체적 이벤트 타입을 명시적으로 가정하여 구조만 제시했고, API 시그니처와 서비스 접근 규칙을 정확히 준수했으며, 불필요한 설명이 다소 포함되어 있어 유용성과 간결성에서 1점씩 감점함 [source_doc] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지
[task] | single_turn [pass] | ❌ 탈락 [title] | EntityService [question] | `GetEntitiesByTag`로 가져온 엔티티들의 `Visible` 속성을 바꿀 때, 클라이언트에서도 동시에 반영되도록 하려면 어떻게 해야 하나요? [answer] | 제공된 참고 문서에는 `GetEntitiesByTag`로 엔티티를 가져와 `Visible` 속성을 변경하는 서버 측 로직(`[server]` 또는 `[server only]` 컨텍스트)만 설명되어 있습니다. 문서에는 `Visible` 속성 변경이 클라이언트에 자동으로 동기화(Sync)되는지, 아니면 별도의 클라이언트 전용 스크립트나 이벤트가 필요한지에 대한 정보가 포함되어 있지 않습니다. 또한, 클라이언트에서 `Visible`을 직접 조작하거나 서버-클라이언트 간 동기화 메커니즘에 대한 구체적인 API나 예제는 문서에 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 클라이언트 동기화 관련 정보가 없어 이를 명시적으로 부정하며, 지어내지 않는 태도는 정확하지만 질문자 입장에서 해결책이 없는 답이므로 유용성은 중간 수준입니다. [source_doc] | `TagComponent`를 통해 특정 Tag를 가지고 있는 엔티티들의 `visible`을 수정하는 예제입니다. ```lua [server] void VisibleTagEntities (string tag, boolean visible) { local entities = _EntityService:GetEntitiesByTag(tag) for k, v in pairs(entities) do v.Visible = visible end } ``` #### GetEntitiesSpawnedByModelId MoveMonst
[task] | single_turn [pass] | ❌ 탈락 [title] | EntityService [question] | `RigidbodyComponent:AddForce`를 호출할 때 `Vector2`의 인자 순서나 값이 잘못되었을 때 발생하는 일반적인 오류 메시지는 무엇이며, 이를 어떻게 확인해야 하나요? [answer] | 제공된 참고 문서에는 `RigidbodyComponent:AddForce` 메서드 호출 시 `Vector2` 인자 순서나 값이 잘못되었을 때 발생하는 구체적인 오류 메시지나 해당 오류를 확인하는 방법에 대한 정보가 포함되어 있지 않습니다. 참고 문서에 포함된 내용은 `RigidbodyComponent:AddForce`를 사용하여 엔티티에 힘을 가하는 정상적인 사용 예제(`Vector2(0.0, 5.0)` 전달)뿐이며, 오류 처리나 디버깅 절차에 대한 설명은 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 질문에서 요구한 구체적인 오류 메시지나 확인 방법은 문서에 존재하지 않으므로, 이를 명확히 부인하고 문서에 있는 정상 사용 예제만 언급한 응답은 사실에 부합하며 일관되지만 실질적 도움은 제한적입니다. [source_doc] | `TagComponent`를 통해 특정 Tag를 가지고 있는 엔티티들의 `visible`을 수정하는 예제입니다. ```lua [server] void VisibleTagEntities (string tag, boolean visible) { local entities = _EntityService:GetEntitiesByTag(tag) for k, v in pairs(entities) do v.Visible = visible end } ``` #### GetEntitiesSpawnedByModelId MoveMonst
[task] | two_turn [pass] | ✅ 통과 [title] | EditorService [question] | 모델 프로퍼티(GetModelProperty, SetModelProperty)를 읽기/쓰기할 때 존재하지 않는 프로퍼티에 대한 예외 처리는 어떻게 수행해야 하나요? [answer] | `GetModelProperty`와 `SetModelProperty` 메서드는 요청한 프로퍼티가 존재하지 않거나 설정에 실패할 경우 `false`를 반환합니다. 따라서 예외 처리는 이 반환 값을 확인하여 수행해야 합니다. ### 1. 읽기 (GetModelProperty) 예외 처리 `_EditorService:GetModelProperty`를 호출한 후 반환 값이 `false`인 경우, 해당 모델에 요청한 컴포넌트 또는 프로퍼티가 존재하지 않는 것으로 간주하고 에러를 처리하거나 대체 동작을 수행합니다. ```lua Method [followup] | SetModelProperty가 false를 반환했을 때 Notification 메서드를 통해 에디터에 실패 알림을 띄우고, GetModelProperty에서 false가 반환되면 기본값을 설정하는 방어적 코딩 예제를 작성해 주세요. [followup_answer] | `SetModelProperty`가 실패하면 `_EditorService:Notification`으로 에디터 알림을 띄우고, `GetModelProperty`가 실패하면 미리 정의한 기본값을 사용하는 방어적 코딩 예제는 다음과 같습니다. ```lua Property: [None] string DefaultSpeed = "10" Method: [server only] void OnBeginPlay() { local modelId = "000000" local componentName = "ScriptComponent [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 boolean 반환값 기반 예외 처리 방식을 정확히 설명하고, mLua 구문과 API 시그니처를 올바르게 적용한 명확한 답변입니다. [source_doc] | 에디터 스크립트 관련 기능을 제공합니다. # Methods - **void CloneSelectedEntity()** 선택된 엔티티를 복제합니다. - **void CreateMap(func<string> callback)** 맵을 생성합니다. callback으로 생성된 맵의 Id를 전달받습니다. - **void CreateSelectedModel(Vector2 position, boolean select = true)** 선택된 모델을 position에 생성합니다. - **void CreateSelectedModel(
[task] | single_turn [pass] | ❌ 탈락 [title] | CameraService [question] | CameraService에서 이벤트를 연결할 때 문자열 key와 Type 객체를 각각 사용할 때의 차이점이 무엇인가요? [answer] | CameraService에서 이벤트를 연결할 때 문자열 key와 Type 객체를 사용하는 방식은 이벤트 식별 방법에 차이가 있습니다. **1. 문자열 key 사용 (`ConnectEvent(string key, IScriptFunction eventHandler)`)** 이벤트 이름을 문자열로 직접 지정하여 연결합니다. 해당 문자열 이름과 일치하는 이벤트가 CameraService에서 발생하면, 전달받은 핸들러 함수가 호출됩니다. ```lua Method: [server only] void OnBeginPlay() { - [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에는 없는 구체적인 이벤트 이름("CameraMove")과 Type 객체 예시("CameraMoveEvent")를 지어내어 정확도가 낮으나, 두 방식의 개념적 차이와 연결/해제 메서드 서명은 문서와 일치한다. [source_doc] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지
[task] | two_turn [pass] | ✅ 통과 [title] | EditorService [question] | EditorService의 DataSet 관련 메서드(DataSetInsertRow, DataSetSetCell 등)를 사용하여 리소스 데이터 행을 추가하고 값을 수정하는 순서와 주의사항은 어떻게 되나요? [answer] | `_EditorService`의 DataSet 관련 메서드를 사용하여 리소스 데이터 행을 추가하고 값을 수정하는 기본 순서와 주의사항은 다음과 같습니다. ### 1. 기본 처리 순서 1. **행 삽입 (`DataSetInsertRow`)**: * `DataSetSetCell`로 값을 설정하기 전에 반드시 먼저 `DataSetInsertRow`를 호출하여 새 행을 생성해야 합니다. * 기존에 존재하지 않는 행 번호에 값을 바로 설정하면 오류가 발생하거나 데이터가 제대로 저장되지 않을 수 있으므로, 항상 "행 [followup] | DataSetSetCell에서 row 인덱스가 0부터 시작하는지, 아니면 InsertRow 직후 반환되는 인덱스를 바로 사용해야 하는지에 대한 구체적인 코드 흐름을 설명해 주세요. [followup_answer] | 제공된 `EditorService` 문서에 따르면, `DataSetInsertRow` 메서드는 `void` 타입을 반환하며 생성된 행의 인덱스를 반환하지 않습니다. 또한, `DataSetSetCell`의 `row` 인자가 0부터 시작하는지 1부터 시작하는지에 대한 명시적인 정의도 문서에 포함되어 있지 않습니다. 따라서 **InsertRow 직후 반환되는 인덱스를 바로 사용할 수 없으며**, 문서만으로는 0부터 시작하는지 여부를 단정할 수 없습니다. ### 권장 코드 흐름 및 주의사항 `DataSetInsertRow`가 인덱스를 [scores] | helpfulness=3 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 API 명세(void 반환, string 타입 등)를 정확히 반영하여 순서와 주의사항을 설명했으나, 행 인덱스 관리 방식에 대한 구체적인 가이드가 부족해 실용성이 약간 제한적임. [source_doc] | 에디터 스크립트 관련 기능을 제공합니다. # Methods - **void CloneSelectedEntity()** 선택된 엔티티를 복제합니다. - **void CreateMap(func<string> callback)** 맵을 생성합니다. callback으로 생성된 맵의 Id를 전달받습니다. - **void CreateSelectedModel(Vector2 position, boolean select = true)** 선택된 모델을 position에 생성합니다. - **void CreateSelectedModel(
[task] | single_turn [pass] | ✅ 통과 [title] | TeleportService [question] | GetWarpRecord 함수는 클라이언트에서도 호출할 수 있는 건가요? [answer] | 아니요, `GetWarpRecord` 함수는 클라이언트에서 호출할 수 없습니다. 해당 함수의 실행 공간은 **ServerOnly**로 지정되어 있어, 서버 스크립트에서만 사용 가능합니다. 클라이언트 스크립트에서 이 함수를 호출하면 오류가 발생하거나 의도대로 동작하지 않습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에서 GetWarpRecord의 실행 공간이 ServerOnly임을 정확히 인용하여 질문에 적절히 답변했습니다. [source_doc] | Entity를 특정 위치로 이동시키는 기능과 유저를 다른 월드 인스턴스로 워프시키는 기능을 제공합니다. # Methods - **void ClearReservation() [Server]** 예약된 텔레포트들을 취소합니다. - **void ClearReservation(Entity messageOwnerEntity = nil) [Deprecated] [Server]** 더는 사용하지 않는 함수입니다. 다른 ClearReservation() 함수를 사용하세요. - **WarpRecord GetWarpRecord(string
[task] | code [pass] | ✅ 통과 [title] | CameraService [question] | 카메라 이벤트 연결 상태 관리 스크립트를 작성해줘 [answer] | 카메라 서비스(`CameraService`)의 이벤트 연결 상태 관리는 `ConnectEvent`와 `DisconnectEvent` 메서드를 통해 수행됩니다. 참고 문서에 명시된 `CameraService`의 API는 다음과 같습니다. 1. **이벤트 연결**: * `ConnectEvent(string key, IScriptFunction eventHandler)`: 이벤트 이름(`key`)을 문자열로 전달하여 연결합니다. * `ConnectEvent(Type eventType, IScriptFunctio [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | CameraService API를 정확히 인용하고, 문서에 없는 구체적 이벤트 이름을 예시임을 명시하여 오용을 방지했으며, mLua 문법과 생명주기 패턴도 적절히 적용했습니다. [source_doc] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지
[task] | code [pass] | ✅ 통과 [title] | EntityService [question] | _EntityService:GetSameModelEntities(self.Entity) 로 자기 자신과 동일한 모델을 가진 엔티티들을 찾아서, _EntityService:Destroy(entity) 로 전부 파괴하는 스크립트를 작성해줘 [answer] | `_EntityService:GetSameModelEntities(Entity entity)` 메서드를 사용하면 주어진 엔티티와 동일한 모델을 가진 엔티티 목록을 `table<Entity>` 형태로 반환받을 수 있습니다. 이 목록을 순회하면서 각 엔티티를 `_EntityService:Destroy(entity)` 메서드로 파괴하는 로직은 다음과 같습니다. ```lua Method: [server only] void DestroySameModelEntities() { -- 자기 자신과 동일한 모델을 가진 엔티티 목록 가져오 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 API 정의와 예제 문법과 정확히 일치하며, 질문의 의도를 충족하는 명확하고 적절한 코드를 제공함 [source_doc] | 엔티티와 관련된 여러 기능을 제공합니다. # Methods - **void Destroy(Entity entity)** 엔티티를 파괴합니다. - **void Destroy(Entity entity, float delaySeconds)** 엔티티를 delaySeconds(초) 후 파괴합니다. - **table<Entity> GetEntitiesByPath(string worldPath)** worldPath에 해당하는 경로의 엔티티를 반환합니다. - **table<Entity> GetEntitiesByTag(string
[task] | single_turn [pass] | ✅ 통과 [title] | CameraService [question] | ConnectEvent로 연결한 핸들러를 해제하려면 DisconnectEvent에서 어떤 인자들을 정확히 전달해야 하나요? [answer] | `DisconnectEvent`를 호출하여 `ConnectEvent`로 연결한 핸들러를 해제하려면, 연결할 때와 동일한 **이벤트 식별 정보**와 **핸들러 객체**를 정확히 전달해야 합니다. 참고 문서에 따르면 `DisconnectEvent`에는 두 가지 오버로드가 존재합니다. ### 1. 이벤트 이름(string) 기반 해제 이벤트를 이름(`key`)으로 연결한 경우, 동일한 `key` 문자열과 `ConnectEvent`를 호출할 때 반환받은 `EventHandlerBase` 객체를 전달합니다. * **필요한 인자:** [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 명시된 두 가지 DisconnectEvent 오버로드의 인자 구성과 반환값, 그리고 ConnectEvent 반환 객체 저장 필요성을 정확하고 명확하게 설명했습니다. [source_doc] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지
[task] | instruction_following [pass] | ✅ 통과 [title] | TeleportService [question] | ClearReservation, GetWarpRecord, TeleportReservedEntities 메서드의 실행 공간([Server] 또는 [ServerOnly])을 2열 3행 표로 정리하세요. [answer] | 요청하신 메서드들의 실행 공간을 정리한 표는 다음과 같습니다. | 메서드 이름 | 실행 공간 | | :--- | :--- | | `ClearReservation` | [Server] | | `GetWarpRecord` | [ServerOnly] | | `TeleportReservedEntities` | [Server] | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=3 complexity=1 verbosity=2 [judge_reason] | 요청한 2열 3행 표 형식을 정확히 준수하지 않고(표 헤더 포함 시 4행, 헤더 제외 시 2행이 되어 형식 불일치), 내용은 문서와 일치함 [source_doc] | Entity를 특정 위치로 이동시키는 기능과 유저를 다른 월드 인스턴스로 워프시키는 기능을 제공합니다. # Methods - **void ClearReservation() [Server]** 예약된 텔레포트들을 취소합니다. - **void ClearReservation(Entity messageOwnerEntity = nil) [Deprecated] [Server]** 더는 사용하지 않는 함수입니다. 다른 ClearReservation() 함수를 사용하세요. - **WarpRecord GetWarpRecord(string
[task] | single_turn [pass] | ❌ 탈락 [title] | CameraService [question] | ZoomReset과 ZoomTo 메서드의 targetUserId 인자가 nil일 때와 특정 유저 ID를 지정했을 때 동작 범위가 어떻게 달라지나요? [answer] | `ZoomReset`과 `ZoomTo` 메서드의 `targetUserId` 인자는 카메라 줌 명령이 적용되는 대상의 범위를 결정합니다. **1. targetUserId가 nil일 때** `targetUserId` 인자를 지정하지 않거나 `nil`로 넘기면, 해당 줌 명령은 **현재 로컬 플레이어(스스로)** 의 카메라에만 적용됩니다. 이는 기본적으로 클라이언트에서 실행되는 카메라 조작이 자신의 뷰포인트를 변경하는 것임을 의미합니다. **2. 특정 유저 ID를 지정했을 때** `targetUserId` 인자에 특정 유저의 ID 문 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | targetUserId가 nil일 때 '스스로'에 적용된다는 서술은 문서에 명시되지 않은 추론이며, 예시 코드에 문서에 없는 InputService/KeyDownEvent/KeyboardKey/_UserService.LocalPlayer/_EntityService:GetEntityByUserId 등 존재하지 않는 API가 포함되어 있어 정확도가 낮음. [source_doc] | 카메라 관련 기능을 제공합니다. # Properties - **float currentZoomRatio [ReadOnly]** 현재 줌 비율입니다. - **float TransitionBlendTime** 카메라 전환 시 블렌드 시간이 얼마나 걸릴지를 정의합니다. - **CameraBlendType TransitionBlendType** 카메라 전환 시의 애니메이션 블랜드 타입을 정의합니다. # Methods - **CameraComponent GetCurrentCameraComponent() [ClientOnly
[task] | instruction_following [pass] | ✅ 통과 [title] | TeleportService [question] | ReserveTeleportToMapPosition 메서드의 파라미터 목록을 코드 블록으로만 출력하고, 각 파라미터의 타입은 주석으로 명시하세요. [answer] | ```lua ReserveTeleportToMapPosition( Entity targetEntity, -- [Entity] 텔레포트 대상 엔티티 Vector3 destinationPosition, -- [Vector3] 목적지 위치 string destinationMapName = "", -- [string] 목적지 맵 이름 (기본값: "") boolean overridePrevious = true -- [boolean] 이전 예약을 덮어쓸지 여부 (기본값: true) ) ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 비-Deprecated 메서드 시그니처와 일치하며 요청대로 코드 블록으로만 출력했습니다. [source_doc] | Entity를 특정 위치로 이동시키는 기능과 유저를 다른 월드 인스턴스로 워프시키는 기능을 제공합니다. # Methods - **void ClearReservation() [Server]** 예약된 텔레포트들을 취소합니다. - **void ClearReservation(Entity messageOwnerEntity = nil) [Deprecated] [Server]** 더는 사용하지 않는 함수입니다. 다른 ClearReservation() 함수를 사용하세요. - **WarpRecord GetWarpRecord(string