[task] | two_turn [pass] | ⏳ 미판정 [title] | HttpService [question] | mLua에서 외부 API와 통신하기 위해 HttpService를 사용할 때, 서버에서 데이터를 가져오고 JSON으로 파싱하는 기본적인 흐름은 어떻게 구현하나요? [answer] | mLua에서 `HttpService`를 사용해 서버에서 데이터를 가져오고 JSON으로 파싱하는 기본 흐름은 다음과 같습니다. 1. **HTTP 요청 보내기**: `[server only]` 영역에서 `_HttpService:GetAndWait()` 메서드를 사용해 외부 URL로 GET 요청을 보냅니다. 2. **응답 받기**: `GetAndWait`는 비동기(Yield) 메서드이므로, 응답이 도착할 때까지 기다린 후 `application/json` 형식의 문자열 응답을 반환합니다. 3. **JSON 파싱**: 반환된 JSO [followup] | GetAndWait로 받은 응답 문자열을 JSONDecode로 변환하여 특정 필드 값을 추출하는 코드 예제를 작성해 주세요. [followup_answer] | `GetAndWait`로 받은 응답 문자열을 `JSONDecode`로 변환하고 특정 필드 값을 추출하는 mLua 코드 예시는 다음과 같습니다. ```lua Method: [server only] void FetchAndExtractData() { -- 1. HTTP GET 요청을 보내고 응답 문자열을 받음 local url = "https://api.example.com/user/123" local headers = { ["Accept"] = "application/json" } [scores] | [judge_reason] | [source_doc] | HTTP 요청을 보내는 기능을 제공합니다. # Properties - **boolean httpEnabled** http:// 프로토콜을 허용합니다. 기본값은 false이며 출시 게임에서는 https:// 프로토콜을 사용할 것을 권장합니다. # Methods - **string GetAndWait(string url, Dictionary<string, string> headers = nil) [ServerOnly] [Yield]** HTTP Get 요청을 보내고 application/json 응답을 받아옵니다. 헤더에
[task] | instruction_following [pass] | ⏳ 미판정 [title] | ScreenshotService [question] | 문서 내 비동기(Async) 캡처 메서드 두 가지의 반환 타입과 콜백 매개변수 차이를 표로 정리하세요. [answer] | 문서에 나와 있는 비동기(Async) 캡처 메서드 두 가지의 차이는 다음과 같습니다. | 구분 | `CaptureScreenRegionAsFileAsync` | `CaptureScreenRegionAsPixelDataAsync` | | :--- | :--- | :--- | | **메서드 시그니처** | `void CaptureScreenRegionAsFileAsync(string fileName, Vector2 from, Vector2 to, func<ScreenshotError, string> callbackFunction, b [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | to, boolean includeUI = true) [ClientOnly] [Yield]** 화면 일부를 캡처해 PNG 파일로 저장합니다. 저장을 완료하면 에러 코드와 저장 경로를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. Windows PC, macOS, Android, iOS 환경에서 지원합니다. - **void CaptureScreenRegionAsFileAsync(string fileName, Vector2 from, Vector2 to, func<ScreenshotError, string> callback
[task] | single_turn [pass] | ⏳ 미판정 [title] | ScreenshotService [question] | CaptureFullScreenAsFileAndWait와 CaptureFullScreenAsFileAsync를 사용할 때 어떤 환경에서 각각 지원되는지 차이점이 궁금합니다. [answer] | `CaptureFullScreenAsFileAndWait`와 `CaptureFullScreenAsFileAsync`는 모두 화면 전체를 캡처하여 PNG 파일로 저장하는 기능이지만, 지원 환경을 기준으로 다음과 같이 차이가 있습니다. * **CaptureFullScreenAsFileAndWait**: Windows PC, macOS, Android, iOS 환경에서 모두 지원합니다. * **CaptureFullScreenAsFileAsync**: Windows PC, Mac 환경에서만 지원합니다. (Android, iOS 미 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 화면의 전체 또는 일부를 캡처하는 기능을 제공합니다. # Methods - **ScreenshotError, string CaptureFullScreenAsFileAndWait(string fileName, boolean includeUI = true) [ClientOnly] [Yield]** 화면 전체를 캡처해 PNG 파일로 저장합니다. MobileShareService와 연동해 캡처 이미지를 공유할 때 사용합니다. 저장을 완료하면 에러 코드와 저장 경로를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. Window
[task] | two_turn [pass] | ⏳ 미판정 [title] | HttpService [question] | HttpService에서 요청을 보내고 응답을 받는 기본적인 사용법은 어떻게 되나요? [answer] | `HttpService`는 서버 측에서 HTTP 요청을 보내고 응답을 받을 때 사용하는 서비스입니다. 기본적인 사용법은 요청 방식에 따라 `GetAndWait`, `PostAndWait`, `RequestAndWait` 메서드를 선택하여 호출하는 것입니다. 모든 메서드는 `[server only]` 실행 공간에서만 사용 가능합니다. ### 주요 사용법 1. **GET 요청 (`GetAndWait`)** * 헤더를 포함한 GET 요청을 보내고 응답을 기다립니다. * 파라미터: URL (string), Hea [followup] | PostAsync 전송 타입 중 application/json으로 데이터를 보낼 때 JSONEncode를 어떻게 적용하는지 코드 예시를 보여주세요. [followup_answer] | `application/json` 타입으로 데이터를 보내기 위해서는 Lua 테이블 형태의 데이터를 `_HttpService:JSONEncode` 메서드를 사용해 JSON 문자열로 변환한 뒤, `PostAndWait` 메서드에 전달해야 합니다. 다음은 `application/json` 전송 타입을 사용하여 데이터를 보내는 코드 예시입니다. ```lua Method: [server only] void PostAndWait() { local headers = {["header1"] = "value1", ["header2"] = "v [scores] | [judge_reason] | [source_doc] | 1. HttpMethod Get/Post만 지원합니다. 2. PostAsync 전송 타입(HttpContentType)은 3가지입니다. * application/json * application/x-www-urlencoded * text/plain 3. 분당 최대 120회의 Http요청으로 제한합니다. 초과할 경우 30초간 HttpService요청이 불가능합니다. 4. 각 요청당 Timeout은 30초입니다. 5. Tls1.2 이상만 지원합니다. Tls1.0, Tls1.1의 경우 통신 시도를 하면 오류가 발생합니다. 6.
[task] | single_turn [pass] | ⏳ 미판정 [title] | ScreenshotService [question] | CaptureFullScreenToPhotoLibraryAndWait를 사용했을 때 Windows와 macOS 환경의 저장 경로가 서로 어떻게 다른지 확인하고 싶습니다. [answer] | `CaptureFullScreenToPhotoLibraryAndWait` 메서드를 사용할 때 Windows와 macOS 환경의 저장 경로는 다음과 같이 다릅니다. * **Windows**: `내 PC > 사진 > MapleStory Worlds > 월드 ID > fileName.png` * **macOS**: `홈 > 그림 > MapleStory Worlds > 월드 ID > fileName.png` 두 환경 모두 `MapleStory Worlds` 폴더와 `월드 ID` 하위 폴더 구조를 따르지만, 최상위 폴더 이름(Wi [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 화면의 전체 또는 일부를 캡처하는 기능을 제공합니다. # Methods - **ScreenshotError, string CaptureFullScreenAsFileAndWait(string fileName, boolean includeUI = true) [ClientOnly] [Yield]** 화면 전체를 캡처해 PNG 파일로 저장합니다. MobileShareService와 연동해 캡처 이미지를 공유할 때 사용합니다. 저장을 완료하면 에러 코드와 저장 경로를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. Window
[task] | instruction_following [pass] | ⏳ 미판정 [title] | ParticleService [question] | 문서 예제에서 `HandleKeyUpEvent`가 실행될 때 호출되는 파티클 제거 및 생성 메서드 이름을 나열하고, 생성 시 `options` 테이블에 포함된 `ParticleSize`와 `ParticleCount` 값을 표로 정리하세요. [answer] | `HandleKeyUpEvent`가 실행될 때 호출되는 파티클 관련 메서드와 생성 시 `options` 테이블의 값은 다음과 같습니다. ### 1. 호출되는 파티클 메서드 `KeyboardKey.Q` 키가 눌려졌다가 놓일 때(`HandleKeyUpEvent`) 아래 두 메서드가 순서대로 호출됩니다. 1. **파티클 제거:** `_ParticleService:RemoveParticle(self.ParticleSerial)` 2. **파티클 생성:** `_ParticleService:PlaySpriteParticle(...)` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # Examples 플레이어의 더블 점프 및 스킬 이펙트 효과를 파티클로 구현하는 예제입니다. ```lua Property : [None] number ParticleSerial = 0 Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { -- Parameters local key = event.key -------------------------------------------------------- if key == Ke
[task] | single_turn [pass] | ⏳ 미판정 [title] | ParticleService [question] | EventHandlerBase 타입의 변수를 선언해서 이벤트 연결 상태를 관리하는 것이 필요한 이유와 그 사용법에 대해 설명해 주세요. [answer] | `EventHandlerBase` 타입의 변수를 선언하여 이벤트 연결 상태를 관리해야 하는 이유와 사용법은 다음과 같습니다. ### 1. 왜 `EventHandlerBase` 변수를 관리해야 하는가? `ParticleService` (및 다른 서비스)의 `ConnectEvent` 메서드는 이벤트 연결이 성공적으로 완료되면 **`EventHandlerBase` 타입의 핸들러 객체**를 반환합니다. 이 반환값을 변수로 저장해야 하는 핵심 이유는 **이벤트 연결을 해제(Disconnect)할 때**입니다. `DisconnectEve [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지
[task] | instruction_following [pass] | ⏳ 미판정 [title] | ScreenshotService [question] | 문서에 제시된 두 캡처 메서드의 차이점과 공통점을 표로 정리하세요. [answer] | `_ScreenshotService`의 두 캡처 메서드 `CaptureFullScreenAsFileAndWait`와 `CaptureScreenRegionAsFileAndWait`의 차이점과 공통점은 다음과 같습니다. | 구분 | CaptureFullScreenAsFileAndWait | CaptureScreenRegionAsFileAndWait | | :--- | :--- | :--- | | **캡처 대상** | 전체 화면 | 지정된 특정 영역 (시작 픽셀부터 끝 픽셀까지) | | **필수 파라미터** | 파일 이름 (string [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # Examples #### CaptureFullScreenAsFileAndWait ```lua -- 전체 화면을 캡쳐해 "Screenshot.png" 이름으로 이미지 파일을 저장합니다. -- 리턴 값으로 캡쳐 결과를 나타내는 에러 코드와 파일이 저장된 전체 경로를 받을 수 있습니다. local error, fullPath = _ScreenshotService:CaptureFullScreenAsFileAndWait("Screenshot") if error == ScreenshotError.Success then log (
[task] | instruction_following [pass] | ⏳ 미판정 [title] | ParticleService [question] | 문서 예제의 `HandleKeyDownEvent`에서 `KeyboardKey.Space` 또는 `KeyboardKey.LeftAlt`가 눌렸을 때 수행되는 물리력 적용 및 파티클 재생 로직을 단계별 번호 목록으로 5단계 이내로 요약하세요. [answer] | 제공된 문서의 `HandleKeyDownEvent` 예제 코드를 바탕으로, `KeyboardKey.Space` 또는 `KeyboardKey.LeftAlt`가 눌렸을 때 수행되는 로직을 5단계 이내로 요약하면 다음과 같습니다. 1. `self.Entity.RigidbodyComponent:IsOnGround()`를 호출하여 엔티티가 지면에 있는지 확인하고, 지면에 있지 않을 경우에만 진행합니다. 2. `self.Entity.PlayerControllerComponent.LookDirectionX`를 통해 현재 시선 방향의 X축 값을 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # Examples 플레이어의 더블 점프 및 스킬 이펙트 효과를 파티클로 구현하는 예제입니다. ```lua Property : [None] number ParticleSerial = 0 Event Handler: [service: InputService] HandleKeyDownEvent (KeyDownEvent event) { -- Parameters local key = event.key -------------------------------------------------------- if key == Ke
[task] | instruction_following [pass] | ⏳ 미판정 [title] | AreaParticleType [question] | AreaParticleType의 CastFrom 메서드가 지원되는 인자 타입 2가지를 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua -- AreaParticleType.CastFrom은 number 타입과 string 타입의 인자를 지원하여 각각 숫자 값이나 문자열 이름으로 AreaParticleType을 생성합니다. local typeFromNumber = AreaParticleType.CastFrom(1) local typeFromString = AreaParticleType.CastFrom("Rain") ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | AreaParticleComponent에서 사용하는 파티클 프리셋 타입입니다. # Members | 이름 | 값 | 설명 | |---|---|---| | None | 0 | 기본값입니다. 사용하는 파티클이 없습니다. | | Rain | 1 | 비가 내리는 파티클입니다. | | Snow | 2 | 눈이 내리는 파티클입니다. | | FogCalm | 3 | 안개구름 파티클입니다. | | FogHeavy | 4 | 하강하는 안개구름 파티클입니다. | | FogLively | 5 | 피어오르는 안개구름 파티클입니다. | | CalmSt
[task] | code [pass] | ⏳ 미판정 [title] | HttpService [question] | 분당 120회 제한과 30초 타임아웃을 고려하여 `_HttpService` 요청을 안전하게 수행하는 로직을 포함하는 스크립트를 작성해줘 [answer] | HttpService는 분당 최대 120회의 요청 제한과 요청당 30초 타임아웃을 가지고 있습니다. 이를 안전하게 준수하기 위해 요청을 보내기 전에 현재 분 기준 요청 횟수를 추적하고, 제한에 도달했다면 다음 분까지 대기하는 로직을 구현해야 합니다. 또한 요청 실행 후 응답을 기다리는 동안 타임아웃이 발생하지 않도록 주의해야 합니다. 아래 스크립트는 분당 120회 제한을 체크하는 `CanMakeRequest` 메서드와, 요청을 안전하게 수행하는 `SafeGetRequest` 메서드를 포함합니다. ```lua Property: [ [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. HttpMethod Get/Post만 지원합니다. 2. PostAsync 전송 타입(HttpContentType)은 3가지입니다. * application/json * application/x-www-urlencoded * text/plain 3. 분당 최대 120회의 Http요청으로 제한합니다. 초과할 경우 30초간 HttpService요청이 불가능합니다. 4. 각 요청당 Timeout은 30초입니다. 5. Tls1.2 이상만 지원합니다. Tls1.0, Tls1.1의 경우 통신 시도를 하면 오류가 발생합니다. 6.
[task] | instruction_following [pass] | ⏳ 미판정 [title] | AreaParticleType [question] | AreaParticleType에서 비나 눈과 같은 기상 현상을 나타내는 프리셋 3개만 나열하세요. [answer] | AreaParticleType에서 비나 눈과 같은 기상 현상을 나타내는 프리셋 3개는 다음과 같습니다. 1. `Rain` (값: 1) - 비가 내리는 파티클 2. `Snow` (값: 2) - 눈이 내리는 파티클 3. `FogCalm` (값: 3) - 안개구름 파티클 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | AreaParticleComponent에서 사용하는 파티클 프리셋 타입입니다. # Members | 이름 | 값 | 설명 | |---|---|---| | None | 0 | 기본값입니다. 사용하는 파티클이 없습니다. | | Rain | 1 | 비가 내리는 파티클입니다. | | Snow | 2 | 눈이 내리는 파티클입니다. | | FogCalm | 3 | 안개구름 파티클입니다. | | FogHeavy | 4 | 하강하는 안개구름 파티클입니다. | | FogLively | 5 | 피어오르는 안개구름 파티클입니다. | | CalmSt
[task] | single_turn [pass] | ⏳ 미판정 [title] | ParticleService [question] | PlayAreaParticle과 PlayBasicParticle의 주된 차이점과 각각 어떤 상황에서 사용하는 것이 적합한가요? [answer] | `PlayAreaParticle`과 `PlayBasicParticle`의 주된 차이점은 **파티클의 종류(타입)** 와 **공간적 특성**에 있습니다. ### 1. 주된 차이점 | 구분 | PlayAreaParticle | PlayBasicParticle | | :--- | :--- | :--- | | **파티클 타입** | `AreaParticleType` | `BasicParticleType` | | **공간 특성** | **범위(Area) 기반** 파티클입니다. `areaSize` 매개변수를 통해 파티클이 생성되는 **범위 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클을 소환하는 기능을 제공합니다. # Methods - **integer PlayAreaParticle(AreaParticleType particleType, Vector2 areaSize, Entity instigator, Vector3 position, float zRotation, Vector3 scale, boolean isLoop = false, Dictionary<string, any> options = nil)** 현재 맵의 고정된 위치에 AreaParticle을 재생하고 이펙트를 제거하기 위한 일련번호를 반
[task] | instruction_following [pass] | ⏳ 미판정 [title] | AlignmentType [question] | 가로 또는 세로 방향이 부모 크기에 따라 늘어나는 동적 앵커(9~15)의 이름과 설명을 3문장 이내로 요약하세요. [answer] | 가로 방향이 부모의 가로 길이와 함께 늘어나는 동적 앵커는 `HorizontalTop`, `HorizontalCenter`, `HorizontalBottom`이며, 각각 기준 위치가 상단, 중앙, 하단입니다. 세로 방향이 부모의 세로 길이와 함께 늘어나는 동적 앵커는 `VerticalLeft`, `VerticalCenter`, `VerticalRight`이며, 각각 기준 위치가 왼쪽, 중앙, 오른쪽입니다. 가로와 세로 길이가 모두 부모의 크기와 동일하게 늘어나는 동적 앵커는 `StretchAll`입니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 앵커의 참조 포인트를 나타냅니다. # Members | 이름 | 값 | 설명 | |---|---|---| | Center | 0 | 기준 위치가 부모 중앙입니다. | | Left | 1 | 기준 위치가 부모 왼쪽 중앙입니다. | | Right | 2 | 기준 위치가 부모 오른쪽 중앙입니다. | | TopCenter | 3 | 기준 위치가 부모 상단 중앙입니다. | | TopLeft | 4 | 기준 위치가 부모 왼쪽 상단입니다. | | TopRight | 5 | 기준 위치가 부모 오른쪽 상단입니다. | | BottomCenter
[task] | single_turn [pass] | ⏳ 미판정 [title] | ScreenshotService [question] | 픽셀 데이터로 캡처할 때 이미지가 800x600 미만으로 자동 조정되는 조건이 정확히 무엇인가요? [answer] | 픽셀 데이터로 캡처할 때 이미지가 800x600 미만으로 자동 조정되는 조건은 캡처한 이미지의 **픽셀 총 개수**가 800x600(즉, 480,000개) 미만인 경우입니다. 따라서 캡처 영역의 크기가 800x600을 초과하면 픽셀 총 개수가 기준을 넘게 되므로, 시스템은 이를 만족시키기 위해 이미지를 축소하여 반환합니다. 반대로 캡처 영역의 픽셀 총 개수가 이미 480,000개 미만이라면 추가적인 자동 조정(축소) 없이 원래 크기의 픽셀 데이터를 반환받을 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | to, boolean includeUI = true) [ClientOnly] [Yield]** 화면 일부를 캡처해 PNG 파일로 저장합니다. 저장을 완료하면 에러 코드와 저장 경로를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. Windows PC, macOS, Android, iOS 환경에서 지원합니다. - **void CaptureScreenRegionAsFileAsync(string fileName, Vector2 from, Vector2 to, func<ScreenshotError, string> callback
[task] | instruction_following [pass] | ⏳ 미판정 [title] | AlignmentType [question] | AlignmentType CastFrom 메서드를 사용하여 숫자 5와 문자열 "TopRight"를 변환하는 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Method: [client only] void OnBeginPlay() { -- 숫자 5를 AlignmentType으로 변환합니다. -- AlignmentType의 값 5는 TopRight(오른쪽 상단)를 의미합니다. local alignFromNumber = AlignmentType.CastFrom(5) log(alignFromNumber) -- 문자열 "TopRight"를 AlignmentType으로 변환합니다. local alignFromString = Alignmen [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 앵커의 참조 포인트를 나타냅니다. # Members | 이름 | 값 | 설명 | |---|---|---| | Center | 0 | 기준 위치가 부모 중앙입니다. | | Left | 1 | 기준 위치가 부모 왼쪽 중앙입니다. | | Right | 2 | 기준 위치가 부모 오른쪽 중앙입니다. | | TopCenter | 3 | 기준 위치가 부모 상단 중앙입니다. | | TopLeft | 4 | 기준 위치가 부모 왼쪽 상단입니다. | | TopRight | 5 | 기준 위치가 부모 오른쪽 상단입니다. | | BottomCenter
[task] | instruction_following [pass] | ⏳ 미판정 [title] | AreaParticleType [question] | AreaParticleType의 Star 계열 프리셋 4종(6~9)을 이름, 값, 설명 순서로 표로 정리하세요. [answer] | AreaParticleType의 Star 계열 프리셋 4종은 다음과 같습니다. | 이름 | 값 | 설명 | |---|---|---| | CalmStarField | 6 | 피어오르는 별 무리 파티클입니다. | | StarFieldSimple | 7 | 반짝이는 별 무리 파티클입니다. | | StarFog | 8 | 별 무리와 성운이 제자리에서 움직이는 파티클입니다. | | StarFogFlow | 9 | 피어오르는 별 무리와 성운 파티클입니다. | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | AreaParticleComponent에서 사용하는 파티클 프리셋 타입입니다. # Members | 이름 | 값 | 설명 | |---|---|---| | None | 0 | 기본값입니다. 사용하는 파티클이 없습니다. | | Rain | 1 | 비가 내리는 파티클입니다. | | Snow | 2 | 눈이 내리는 파티클입니다. | | FogCalm | 3 | 안개구름 파티클입니다. | | FogHeavy | 4 | 하강하는 안개구름 파티클입니다. | | FogLively | 5 | 피어오르는 안개구름 파티클입니다. | | CalmSt
[task] | single_turn [pass] | ⏳ 미판정 [title] | AlignmentType [question] | AlignmentType CastFrom 메서드에 숫자 5를 전달하면 어떤 정렬 타입이 반환되나요? [answer] | `AlignmentType.CastFrom(5)`를 호출하면 `TopRight`가 반환됩니다. `AlignmentType` 멤버 목록에서 값 5에 해당하는 항목은 "기준 위치가 부모 오른쪽 상단입니다."라는 설명과 함께 `TopRight`로 정의되어 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 앵커의 참조 포인트를 나타냅니다. # Members | 이름 | 값 | 설명 | |---|---|---| | Center | 0 | 기준 위치가 부모 중앙입니다. | | Left | 1 | 기준 위치가 부모 왼쪽 중앙입니다. | | Right | 2 | 기준 위치가 부모 오른쪽 중앙입니다. | | TopCenter | 3 | 기준 위치가 부모 상단 중앙입니다. | | TopLeft | 4 | 기준 위치가 부모 왼쪽 상단입니다. | | TopRight | 5 | 기준 위치가 부모 오른쪽 상단입니다. | | BottomCenter
[task] | instruction_following [pass] | ⏳ 미판정 [title] | AlignmentType [question] | 가로, 세로, 대각선 고정 앵커(0~8)의 값을 오름차순으로 정렬한 표로 정리하세요. [answer] | 가로, 세로, 대각선 고정 앵커(값 0~8)를 값 기준 오름차순으로 정리하면 다음과 같습니다. | 값 | 이름 | 설명 | |---|---|---| | 0 | Center | 기준 위치가 부모 중앙입니다. | | 1 | Left | 기준 위치가 부모 왼쪽 중앙입니다. | | 2 | Right | 기준 위치가 부모 오른쪽 중앙입니다. | | 3 | TopCenter | 기준 위치가 부모 상단 중앙입니다. | | 4 | TopLeft | 기준 위치가 부모 왼쪽 상단입니다. | | 5 | TopRight | 기준 위치가 부모 오른쪽 상 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 앵커의 참조 포인트를 나타냅니다. # Members | 이름 | 값 | 설명 | |---|---|---| | Center | 0 | 기준 위치가 부모 중앙입니다. | | Left | 1 | 기준 위치가 부모 왼쪽 중앙입니다. | | Right | 2 | 기준 위치가 부모 오른쪽 중앙입니다. | | TopCenter | 3 | 기준 위치가 부모 상단 중앙입니다. | | TopLeft | 4 | 기준 위치가 부모 왼쪽 상단입니다. | | TopRight | 5 | 기준 위치가 부모 오른쪽 상단입니다. | | BottomCenter
[task] | two_turn [pass] | ⏳ 미판정 [title] | HttpService [question] | RequestAndWait 메서드를 사용하여 PUT 메서드로 데이터를 전송할 때, headers에 content 형식을 명시해야 한다는 유의사항이 있는데, 이를 누락하거나 잘못 지정하면 어떤 문제가 발생하며 올바른 headers 설정 방법은 무엇인가요? [answer] | `RequestAndWait` 메서드를 사용하여 PUT 요청을 보낼 때, `content`의 형식을 `headers`에 명시하는 것은 서버가 전송된 데이터를 올바르게 해석할 수 있도록 하는 필수 조건입니다. ### 누락하거나 잘못 지정할 때 발생하는 문제 `RequestAndWait` 메서드의 `content` 파라미터는 문자열(string)로 전달됩니다. 서버 측에서는 이 문자열이 JSON인지, URL 인코딩된 폼 데이터인지, 아니면 일반 텍스트인지 구별하기 위해 HTTP 헤더의 `Content-Type`을 확인합니다. * [followup] | application/json 형식의 데이터를 PUT 요청으로 보내는 RequestAndWait 호출 예제 코드를 작성해 주시고, headers에 반드시 포함해야 할 키와 값의 형식을 설명해 주세요. [followup_answer] | `RequestAndWait` 메서드를 사용하여 `application/json` 형식의 데이터를 PUT 요청으로 전송할 때, `headers` 테이블에는 반드시 `content-type` 키를 포함하고 그 값으로 `application/json`을 지정해야 합니다. ### headers 설정 형식 * **키 (Key):** `content-type` * **값 (Value):** `application/json` `RequestAndWait`는 `content` 매개변수에 문자열을 전달하므로, 서버가 이 문자열을 JSO [scores] | [judge_reason] | [source_doc] | HTTP 요청을 보내는 기능을 제공합니다. # Properties - **boolean httpEnabled** http:// 프로토콜을 허용합니다. 기본값은 false이며 출시 게임에서는 https:// 프로토콜을 사용할 것을 권장합니다. # Methods - **string GetAndWait(string url, Dictionary<string, string> headers = nil) [ServerOnly] [Yield]** HTTP Get 요청을 보내고 application/json 응답을 받아옵니다. 헤더에
[task] | single_turn [pass] | ⏳ 미판정 [title] | ScreenshotService [question] | CaptureScreenRegionAsFileAsync의 콜백 함수에서 첫 번째와 두 번째 매개변수로 각각 무엇을 받을 수 있나요? [answer] | `CaptureScreenRegionAsFileAsync`의 콜백 함수(`callbackFunction`)는 두 가지 매개변수를 전달받습니다. 1. **첫 번째 매개변수**: 캡처 수행 중 발생한 **에러 코드** (`ScreenshotError` 타입) 2. **두 번째 매개변수**: 파일이 저장된 **경로** (`string` 타입) 예를 들어, 비동기 캡처를 사용한다면 다음과 같이 콜백 함수를 정의할 수 있습니다. ```lua Method: [client only] void CaptureAndSave() { l [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | to, boolean includeUI = true) [ClientOnly] [Yield]** 화면 일부를 캡처해 PNG 파일로 저장합니다. 저장을 완료하면 에러 코드와 저장 경로를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. Windows PC, macOS, Android, iOS 환경에서 지원합니다. - **void CaptureScreenRegionAsFileAsync(string fileName, Vector2 from, Vector2 to, func<ScreenshotError, string> callback
[task] | single_turn [pass] | ⏳ 미판정 [title] | ScreenshotService [question] | 모바일 환경에서도 사용할 수 있는 캡처 함수와 그렇지 않은 함수를 구분하는 기준은 무엇인가요? [answer] | 모바일 환경(Android, iOS)에서도 사용할 수 있는 캡처 함수와 그렇지 않은 함수를 구분하는 기준은 **지원되는 플랫폼 목록**입니다. 문서에 명시된 각 함수의 플랫폼 지원 여부를 확인하면 다음과 같이 나눌 수 있습니다. **1. 모바일 환경(Android, iOS) 포함으로 지원되는 함수** 다음 함수들은 `Windows PC, macOS, Android, iOS` 환경을 모두 지원합니다. * `CaptureScreenRegionAsFileAndWait` * `CaptureScreenRegionAsPixelDat [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | to, boolean includeUI = true) [ClientOnly] [Yield]** 화면 일부를 캡처해 PNG 파일로 저장합니다. 저장을 완료하면 에러 코드와 저장 경로를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. Windows PC, macOS, Android, iOS 환경에서 지원합니다. - **void CaptureScreenRegionAsFileAsync(string fileName, Vector2 from, Vector2 to, func<ScreenshotError, string> callback
[task] | code [pass] | ⏳ 미판정 [title] | PulleyJoint [question] | OnBeginPlay 생명주기 메서드에서 PulleyJoint를 생성한 후 GroundAnchorA와 GroundAnchorB를 각각 (5, 0)과 (-5, 0)으로 설정하여 지면 기준 앵커를 고정하고, TargetEntityRef를 매개변수로 받아온 Entity에 연결하는 스크립트를 작성해줘 [answer] | 메이플스토리 월드의 mLua 환경에서 `PulleyJoint` 컴포넌트는 독립적으로 생성하여 엔티티에 붙이는 것이 아니라, `PullyJointComponent`의 `Joints` 목록에 추가하는 방식으로 동작합니다. 또한, `PulleyJoint` 구조체 자체는 C# 스타일의 생성자(`new PulleyJoint()`)로 초기화하는 것이 아니라, Lua의 테이블(table) 리터럴을 사용하여 프로퍼티 값을 채운 후 `PullyJointComponent.Joints`에 삽입하는 형태가 일반적입니다. 제시된 요구사항(OnBeginP [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 두 Entity의 Anchor와 GroundAnchor의 값을 설정해 선을 만들고, 그 선들의 총 합이 일정하게 유지되도록 합니다. 마치 두 Entity가 도르래에 연결된 것처럼 동작하게 됩니다. PullyJointComponent의 Joints에 추가해 사용합니다. # Properties - **boolean CollideConnected** Joint로 연결된 두 Entity가 서로 충돌할지 여부를 설정합니다. - **Vector2 GroundAnchorA** JointComponent를 가진 Entity의 Groun
[task] | instruction_following [pass] | ⏳ 미판정 [title] | AxisType [question] | AxisType의 CastFrom 메서드가 지원하는 파라미터 타입과 반환 타입을 코드 블록 안에 주석으로만 작성하세요. [answer] | ```lua -- CastFrom 메서드 시그니처 (AxisType) -- 1. 파라미터: number value -- 반환 타입: AxisType -- 2. 파라미터: string value -- 반환 타입: AxisType ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | JoystickComponent에서 사용하는 조작키 타입입니다. # Members | 이름 | 값 | 설명 | |---|---|---| | Axis_4 | 0 | 4방향으로 조작이 가능합니다. 4방향은 상하좌우입니다. | | Axis_8 | 1 | 8방향으로 조작이 가능합니다. 8방향은 상하좌우와 대각선 4방향입니다. | # Methods - **AxisType CastFrom(number value) [Static]** 숫자를 해당 타입으로 변환합니다. - **AxisType CastFrom(string value) [
[task] | code [pass] | ⏳ 미판정 [title] | WheelJoint [question] | WheelJoint의 MotorSpeed를 런타임에 동적으로 변경하여 회전 속도를 조절하는 로직을 포함하는 스크립트를 작성해줘. [answer] | 참고 문서에 따르면 `WheelJointComponent`의 `MotorSpeed`는 `float` 타입의 프로퍼티입니다. 이 값을 런타임에 변경하여 회전 속도를 조절할 수 있습니다. 단, 문서의 예제 코드를 보면 `DistanceJointComponent`를 사용할 때 `AddJoint` 메서드를 통해 Joint 객체를 생성하는 패턴이 보입니다. `WheelJoint` 역시 `Joints` 컬렉션에 추가해 사용한다고 명시되어 있으므로, 동일한 패턴(`AddJoint`)을 적용하여 `WheelJoint`를 생성하고, 생성된 객체의 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 한 점에서 Entity를 연결하고 연결된 Entity가 해당 점을 기준으로 회전하도록 합니다. 마치 연결된 Entity가 바퀴처럼 동작하게 됩니다. WheelJointComponent의 Joints에 추가해 사용합니다. # Properties - **boolean CollideConnected** Joint로 연결된 두 Entity가 서로 충돌할지 여부를 설정합니다. - **Vector2 LocalAnchorA** JointComponent를 가진 Entity의 Anchor를 설정합니다. Entity 기준 상대 좌표를 사
[task] | instruction_following [pass] | ⏳ 미판정 [title] | AxisType [question] | JoystickComponent의 조작키 타입인 AxisType에 포함된 멤버 이름, 수치, 설명을 2행 3열의 표로 정리하세요. [answer] | | 이름 | 값 | 설명 | |---|---|---| | Axis_4 | 0 | 4방향으로 조작이 가능합니다. 4방향은 상하좌우입니다. | | Axis_8 | 1 | 8방향으로 조작이 가능합니다. 8방향은 상하좌우와 대각선 4방향입니다. | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | JoystickComponent에서 사용하는 조작키 타입입니다. # Members | 이름 | 값 | 설명 | |---|---|---| | Axis_4 | 0 | 4방향으로 조작이 가능합니다. 4방향은 상하좌우입니다. | | Axis_8 | 1 | 8방향으로 조작이 가능합니다. 8방향은 상하좌우와 대각선 4방향입니다. | # Methods - **AxisType CastFrom(number value) [Static]** 숫자를 해당 타입으로 변환합니다. - **AxisType CastFrom(string value) [
[task] | instruction_following [pass] | ⏳ 미판정 [title] | AxisType [question] | Axis_4와 Axis_8의 조작 가능한 방향 수와 구체적 방향 구성을 단계별 번호 목록으로 나열하세요. [answer] | Axis_4와 Axis_8의 조작 가능한 방향 수와 구체적 방향 구성은 다음과 같습니다. 1. **Axis_4** - 조작 가능한 방향 수: 4방향 - 구체적 방향 구성: 상, 하, 좌, 우 2. **Axis_8** - 조작 가능한 방향 수: 8방향 - 구체적 방향 구성: 상, 하, 좌, 우, 대각선 4방향 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | JoystickComponent에서 사용하는 조작키 타입입니다. # Members | 이름 | 값 | 설명 | |---|---|---| | Axis_4 | 0 | 4방향으로 조작이 가능합니다. 4방향은 상하좌우입니다. | | Axis_8 | 1 | 8방향으로 조작이 가능합니다. 8방향은 상하좌우와 대각선 4방향입니다. | # Methods - **AxisType CastFrom(number value) [Static]** 숫자를 해당 타입으로 변환합니다. - **AxisType CastFrom(string value) [
[task] | single_turn [pass] | ⏳ 미판정 [title] | ScreenshotService [question] | 캡처 함수를 호출했는데 스크립트 실행이 멈추는 현상이 발생했는데, 이것이 [Yield] 태그와 어떤 관련이 있나요? [answer] | mLua에서 `[Yield]` 태그가 붙은 함수는 호출 시 스크립트 실행을 일시 중단(블로킹)합니다. 캡처 함수 중 `CaptureFullScreenAsFileAndWait`, `CaptureFullScreenAsPixelDataAndWait`, `CaptureFullScreenToPhotoLibraryAndWait`가 이 태그를 가지고 있어, 화면 캡처와 파일 저장(또는 픽셀 데이터 처리)이 완료될 때까지 해당 스크립트의 실행 흐름이 멈춥니다. 이로 인해 캡처 처리가 끝날 때까지 이후에 작성된 코드(예: 다음 로직, 이벤트 처리 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 화면의 전체 또는 일부를 캡처하는 기능을 제공합니다. # Methods - **ScreenshotError, string CaptureFullScreenAsFileAndWait(string fileName, boolean includeUI = true) [ClientOnly] [Yield]** 화면 전체를 캡처해 PNG 파일로 저장합니다. MobileShareService와 연동해 캡처 이미지를 공유할 때 사용합니다. 저장을 완료하면 에러 코드와 저장 경로를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. Window
[task] | single_turn [pass] | ⏳ 미판정 [title] | AlignmentType [question] | StretchAll과 VerticalCenter의 차이점이 무엇인가요? [answer] | `StretchAll`과 `VerticalCenter`는 앵커(Anchor)의 기준 위치와 크기 변경 방식에서 다음과 같은 차이가 있습니다. 1. **StretchAll** * **기준 위치:** 가로, 세로 길이가 모두 부모의 크기와 동일하게 늘어납니다. * **특징:** 부모 객체의 크기가 변하면 자식 객체도 가로와 세로 방향 모두에서 부모와 동일한 비율로 늘어나며, 부모의 전체 영역을 채우도록 동작합니다. 2. **VerticalCenter** * **기준 위치:** 세로 방향의 중앙을 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 앵커의 참조 포인트를 나타냅니다. # Members | 이름 | 값 | 설명 | |---|---|---| | Center | 0 | 기준 위치가 부모 중앙입니다. | | Left | 1 | 기준 위치가 부모 왼쪽 중앙입니다. | | Right | 2 | 기준 위치가 부모 오른쪽 중앙입니다. | | TopCenter | 3 | 기준 위치가 부모 상단 중앙입니다. | | TopLeft | 4 | 기준 위치가 부모 왼쪽 상단입니다. | | TopRight | 5 | 기준 위치가 부모 오른쪽 상단입니다. | | BottomCenter
[task] | single_turn [pass] | ⏳ 미판정 [title] | AlignmentType [question] | AlignmentType의 멤버 값 10번이 의미하는 바와 실제 동작 방식이 궁금합니다. [answer] | `AlignmentType`의 멤버 값 **10**은 **`HorizontalCenter`**를 의미합니다. 이 옵션은 앵커의 기준 위치가 **중앙**에 오도록 설정하며, 가장 중요한 동작 특징은 **가로 길이가 부모 오브젝트의 가로 길이와 함께 자동으로 늘어나는 것**입니다. 즉, 부모 오브젝트의 폭이 변경되면 자식 오브젝트의 가로 크기나 위치가 그에 맞춰 조정되어 항상 수평 방향 중앙 정렬 상태와 확장성을 유지합니다. mLua 스크립트에서 이 값을 사용하는 방법은 다음과 같습니다. ```lua Property: [None] [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 앵커의 참조 포인트를 나타냅니다. # Members | 이름 | 값 | 설명 | |---|---|---| | Center | 0 | 기준 위치가 부모 중앙입니다. | | Left | 1 | 기준 위치가 부모 왼쪽 중앙입니다. | | Right | 2 | 기준 위치가 부모 오른쪽 중앙입니다. | | TopCenter | 3 | 기준 위치가 부모 상단 중앙입니다. | | TopLeft | 4 | 기준 위치가 부모 왼쪽 상단입니다. | | TopRight | 5 | 기준 위치가 부모 오른쪽 상단입니다. | | BottomCenter