← 목록

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

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

[task] | instruction_following [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | MoveUser와 MoveUsers 메서드의 파라미터 구조와 [Yield] 속성의 의미를 단계별 번호 목록으로 [answer] | 참고 문서에 근거하여 `MoveUser`와 `MoveUsers` 메서드의 파라미터 구조와 `[Yield]` 속성의 의미를 단계별로 설명합니다. 1. **MoveUser 메서드 파라미터 구조** * **userId (string)**: 이동시킬 대상 유저의 식별자입니다. * **mapName (string, 선택)**: 이동할 맵 이름입니다. 기본값은 `nil`이며, 지정하지 않으면 현재 인스턴스 룸 설정에 따라 처리됩니다. 2. **MoveUsers 메서드 파라미터 구조** * **userId [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 인스턴스 룸 관련 기능을 제공합니다. # Properties - **string InstanceKey [ReadOnly]** 인스턴스 룸 식별자입니다. # Methods - **int32 GetUserCount()** 인스턴스 룸에 속한 유저 수를 반환합니다. - **boolean IsValid()** 인스턴스 룸이 유효한지 여부를 반환합니다. - **boolean MoveUser(string userId, string mapName = nil) [Yield]** userId에 해당하는 유저를 이 인스턴스 룸으

[task] | two_turn [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | _MaplePreferencesLogic 을 통해 플레이어의 점프음이나 사망음 등 사운드 설정을 변경하는 기본 구조와 예시를 알고 싶습니다 [answer] | `_MaplePreferencesLogic` 서비스를 사용하면 플레이어의 점프음, 사망음, 그리고 다양한 무기의 공격 효과음을 클라이언트에서 직접 변경할 수 있습니다. 이 서비스의 프로퍼티에 음원 ID(문자열)를 대입하거나, 효과음을 제거하려면 빈 문자열(`""`)을 대입하는 방식으로 동작합니다. 사운드 설정은 클라이언트에서 처리되므로, 해당 로직은 반드시 `[client only]` 실행 공간에서 실행되는 메서드(예: `OnBeginPlay`) 내에 작성해야 합니다. 아래는 게임 시작 시 플레이어의 점프음과 사망음을 특정 음원 [followup] | 사운드 ID를 빈 문자열("")으로 설정했을 때 음성이 완전히 제거되는지, 아니면 다른 오류가 발생하는지 확인하고 싶은데 어떤 방식으로 테스트해야 하나요? [followup_answer] | 제공된 참고 문서에는 사운드 ID를 빈 문자열(`""`)로 설정했을 때 음성이 완전히 제거되는지, 아니면 오류가 발생하는지에 대한 동작 방식이나 테스트 방법에 대한 정보가 포함되어 있지 않습니다. 문서에 있는 예제 코드에서는 모든 무기 효과음을 비활성화(disable)하기 위해 빈 문자열(`""`)을 대입하고 있으며, 주석에도 "disable all weapon sound"라고 명시되어 있습니다. 하지만 이것이 실제 게임 런타임에서 음성이 완전히 사라지는지, 아니면 다른 방식으로 처리되는지, 혹은 오류가 나는지에 대한 구체적인 설 [scores] | [judge_reason] | [source_doc] | ##### inherited from Logic: - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이

[task] | code [pass] | ⏳ 미판정 [title] | UserReconnectEvent [question] | UserService의 UserReconnectEvent를 처리하여 재접속한 유저의 UserId와 ReconnectMapName을 로그로 출력하는 스크립트를 작성해줘 [answer] | UserService의 `UserReconnectEvent`는 서버에서 발생하며, 재접속한 유저의 정보를 포함합니다. 이벤트 핸들러를 등록하여 `UserId`와 `ReconnectMapName`을 추출하고 로그로 출력하는 스크립트는 다음과 같습니다. ```lua Event Handler: [service: UserService] HandleUserReconnectEvent(UserReconnectEvent event) { local UserId = event.UserId local ReconnectMapName = [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저가 재접속되었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string ProfileCode** 유저의 프로필 코드입니다. - **string ReconnectMapName**

[task] | code [pass] | ⏳ 미판정 [title] | UserReconnectEvent [question] | UserService의 UserReconnectEvent를 처리하여 ProfileCode가 "VIP"인 유저가 재접속했을 때 별도 알림 로그를 출력하는 스크립트를 작성해줘 [answer] | UserService의 UserReconnectEvent 이벤트 핸들러를 정의하고, 이벤트의 ProfileCode 프로퍼티를 확인하여 "VIP"인 경우에만 별도의 알림 로그를 출력하는 스크립트입니다. ```lua Event Handler: [service: UserService] HandleUserReconnectEvent(UserReconnectEvent event) { local ProfileCode = event.ProfileCode local UserId = event.UserId if Profile [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저가 재접속되었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string ProfileCode** 유저의 프로필 코드입니다. - **string ReconnectMapName**

[task] | instruction_following [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | Sword 계열(SwordB, SwordK, SwordL, SwordS, SwordZB, SwordZL) 사운드 프로퍼티의 이름과 해당 프로퍼티에 명시된 구체적 무기 종류를 6문장 이내로 나열하세요. [answer] | SwordB 타입의 사운드 프로퍼티 이름은 WeaponSwordBSound이며, 한손검이 해당됩니다. SwordK 타입의 사운드 프로퍼티 이름은 WeaponSwordKSound이며, 카타나가 해당됩니다. SwordL 타입의 사운드 프로퍼티 이름은 WeaponSwordLSound이며, 양손검이 해당됩니다. SwordS 타입의 사운드 프로퍼티 이름은 WeaponSwordSSound이며, 단검이 해당됩니다. SwordZB 타입의 사운드 프로퍼티 이름은 WeaponSwordZBSound이며, 대검이 해당됩니다. SwordZL 타입의 사운드 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 메이플스토리의 설정 값이나 변수 값을 프로퍼티로 제공합니다. # Properties - **string DeathSound [Sync]** 죽을 때 재생되는 소리입니다. - **string JumpSound [Sync]** 점프할 때 재생되는 소리입니다. - **string WeaponBowSound [Sync]** Bow 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생되는 소리입니다. - **string WeaponCaneSound [Sync]** Cane 타입의 사운드 이펙트와 연결된 무기로 근접 공

[task] | single_turn [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | MaplePreferencesLogic 컴포넌트를 사용해서 캐릭터의 사망 사운드만 바꾸고 싶을 때, 어떤 프로퍼티에 값을 넣어야 하나요? [answer] | MaplePreferencesLogic 컴포넌트에서 캐릭터의 사망 사운드를 변경하려면 **DeathSound** 프로퍼티에 값을 넣어야 합니다. `DeathSound`는 `string` 타입의 `[Sync]` 프로퍼티이며, 죽을 때 재생되는 소리를 정의합니다. 값을 변경하는 예시 코드는 다음과 같습니다. ```lua Method: [client only] void OnBeginPlay() { -- 캐릭터의 사망 사운드만 변경 _MaplePreferencesLogic.DeathSound = "000000" } ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 메이플스토리의 설정 값이나 변수 값을 프로퍼티로 제공합니다. # Properties - **string DeathSound [Sync]** 죽을 때 재생되는 소리입니다. - **string JumpSound [Sync]** 점프할 때 재생되는 소리입니다. - **string WeaponBowSound [Sync]** Bow 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생되는 소리입니다. - **string WeaponCaneSound [Sync]** Cane 타입의 사운드 이펙트와 연결된 무기로 근접 공

[task] | single_turn [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | Bow 타입의 무기로 근접 공격할 때 재생되는 사운드를 변경하려면 MaplePreferencesLogic의 어떤 프로퍼티를 조작해야 하나요? [answer] | Bow 타입의 무기로 근접 공격할 때 재생되는 사운드를 변경하려면 `MaplePreferencesLogic` 컴포넌트의 `WeaponBowSound` 프로퍼티를 조작해야 합니다. 해당 프로퍼티는 `string` 타입이며 `[Sync]` 속성을 가지고 있습니다. 값을 변경하려면 클라이언트 측에서 다음과 같이 접근할 수 있습니다. ```lua Method: [client only] void ChangeBowSound() { _MaplePreferencesLogic.WeaponBowSound = "새로운_사운드_ID"; } ` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 메이플스토리의 설정 값이나 변수 값을 프로퍼티로 제공합니다. # Properties - **string DeathSound [Sync]** 죽을 때 재생되는 소리입니다. - **string JumpSound [Sync]** 점프할 때 재생되는 소리입니다. - **string WeaponBowSound [Sync]** Bow 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생되는 소리입니다. - **string WeaponCaneSound [Sync]** Cane 타입의 사운드 이펙트와 연결된 무기로 근접 공

[task] | code [pass] | ⏳ 미판정 [title] | Warning Level [question] | LWA-1109(IntroduceGlobalVariable) 경고를 피하기 위해 모든 상태 변수를 self 전역 대신 로컬 변수로 선언하고, LWA-1112(UnreachableCode)를 방지하기 위해 if-else 구조의 마지막에 return 문을 명시적으로 배치하는 캐릭터 이동 제어 스크립트를 작성해줘 [answer] | LWA-1109(IntroduceGlobalVariable)와 LWA-1112(UnreachableCode) 경고를 피하기 위한 원칙과 이를 적용한 캐릭터 이동 제어 스크립트는 다음과 같습니다. **1. LWA-1109 (IntroduceGlobalVariable) 회피 전략** mLua에서 `Property:` 블록에 선언된 변수는 해당 컴포넌트 인스턴스의 상태(프로퍼티)로 취급됩니다. 스크립트 본문(Method 내부)에서 `local` 키워드를 사용하여 함수 스택에 할당되는 로컬 변수로 선언하면, 이는 글로벌 변수가 아니므로 [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] | UserReconnectEvent [question] | UserService의 UserReconnectEvent를 처리하여 UserId가 "admin01"인 경우와 아닌 경우를 구분하여 각각 다른 메시지를 로그로 출력하는 스크립트를 작성해줘 [answer] | `UserService`에서 발생하는 `UserReconnectEvent`를 처리하는 Event Handler를 작성합니다. 이벤트에서 `UserId`를 추출하여 "admin01"과 비교하고, 조건에 따라 서로 다른 문자열을 `log` 함수로 출력합니다. ```lua Event Handler: [service: UserService] HandleUserReconnectEvent(UserReconnectEvent event) { local UserId = event.UserId local ReconnectMapName [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저가 재접속되었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string ProfileCode** 유저의 프로필 코드입니다. - **string ReconnectMapName**

[task] | two_turn [pass] | ⏳ 미판정 [title] | RigidbodyMovementOptionType [question] | `RigidbodyMovementOptionType`의 `RelativeX`와 `Absolute` 옵션의 동작 차이와 각각 적합한 사용 사례가 궁금합니다. [answer] | `RigidbodyMovementOptionType`는 풋홀드(Foothold, 발판) 위에서 RigidbodyComponent의 물리 동작 방식을 결정하는 옵션입니다. 두 옵션의 차이와 사용 사례는 다음과 같습니다. ### 1. 옵션별 동작 차이 * **RelativeX (값: 0)** * **동작:** x축(수평) 방향의 관성만 적용하고, y축(수직) 방향의 관성은 적용하지 않습니다. * **상대적 속도:** 플레이어가 발판의 이동 방향과 **반대**로 움직이면 속도가 감속되고, **같은** 방향으로 [followup] | `RelativeX` 옵션을 적용한 발판 위를 플레이어가 반대 방향으로 움직일 때 감속이 발생하는 정확한 메커니즘과, 이를 스크립트로 제어하는 예제 코드를 알려주세요. [followup_answer] | `RelativeX` 옵션의 정확한 메커니즘과 스크립트 제어 예제를 설명합니다. ### 1. `RelativeX` 감속 메커니즘 `RelativeX` 옵션은 **x축(수평) 방향의 관성만 적용**하고, y축(수직) 방향의 관성은 적용하지 않도록 설정합니다. * **상대 속도 기반 동작:** 플레이어의 실제 이동 속도는 플레이어 자신의 입력 속도와 발판의 이동 속도의 합으로 결정됩니다. * **감속 발생 조건:** 플레이어가 발판의 이동 방향과 **반대** 방향으로 입력을 할 경우, 두 속도가 상쇄되어 체감 속도가 감소합 [scores] | [judge_reason] | [source_doc] | 풋홀드 위의 RigidbodyComponent에게 적용할 옵션을 설정합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | RelativeX | 0 | x축 관성은 적용하고, y축 관성은 적용하지 않습니다. 플레이어가 발판의 이동 방향과 반대로 움직이면 속도가 감속하고, 같은 방향으로 움직이면 가속합니다. | | Absolute | 1 | 플레이어가 어느 방향으로 움직여도 속도가 동일합니다. | # Methods - **RigidbodyMovementOptionType CastFrom(number

[task] | single_turn [pass] | ⏳ 미판정 [title] | UserReconnectEvent [question] | 이벤트 핸들러에서 ReconnectMapName을 통해 유저가 특정 맵으로 돌아왔는지 확인하려면 어떤 코드를 작성해야 하나요? [answer] | `UserReconnectEvent` 이벤트 핸들러에서 `event.ReconnectMapName` 프로퍼티의 값을 확인하여 유저가 특정 맵으로 재접속했는지 판별할 수 있습니다. 아래 코드는 유저가 재접속했을 때, `ReconnectMapName`이 `"MyMap"`과 일치하는지 비교하는 예시입니다. ```lua Event Handler: [service: UserService] HandleUserReconnectEvent(UserReconnectEvent event) { local ReconnectMapName = ev [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저가 재접속되었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string ProfileCode** 유저의 프로필 코드입니다. - **string ReconnectMapName**

[task] | code [pass] | ⏳ 미판정 [title] | InstanceRoom [question] | 유효한 인스턴스 룸인지 확인하고 유저 수를 로그로 출력하는 스크립트를 작성해줘 [answer] | ```lua Method: [server only] void CheckInstanceRoom() { if self.InstanceRoomComponent:IsValid() then log("유저 수: " .. self.InstanceRoomComponent:GetUserCount()) else log("유효하지 않은 인스턴스 룸입니다.") end } ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 인스턴스 룸 관련 기능을 제공합니다. # Properties - **string InstanceKey [ReadOnly]** 인스턴스 룸 식별자입니다. # Methods - **int32 GetUserCount()** 인스턴스 룸에 속한 유저 수를 반환합니다. - **boolean IsValid()** 인스턴스 룸이 유효한지 여부를 반환합니다. - **boolean MoveUser(string userId, string mapName = nil) [Yield]** userId에 해당하는 유저를 이 인스턴스 룸으

[task] | single_turn [pass] | ⏳ 미판정 [title] | EntryService [question] | GetDataSetIdByName과 GetMaterialIdByName의 반환 값 차이점이 무엇인가요? [answer] | `GetDataSetIdByName`와 `GetMaterialIdByName`의 반환 값은 모두 `string` 타입이지만, 그 의미와 용도가 다릅니다. * **`GetDataSetIdByName(string name)`**: 매개변수로 전달한 **DataSet 이름**에 해당하는 **DataSet Id**를 문자열로 반환합니다. * **`GetMaterialIdByName(string name)`**: 매개변수로 전달한 **Material 이름**에 해당하는 **Material Id**를 문자열로 반환합니다. 즉, 함수 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 엔트리 관련 기능을 제공합니다. # Methods - **string GetDataSetIdByName(string name)** DataSet 이름으로 DataSet Id를 찾아 반환합니다. - **string GetMaterialIdByName(string name)** Material 이름으로 Material Id를 찾아 반환합니다. - **string GetModelIdByName(string name)** Model 이름으로 Modle Id를 찾아 반환합니다. ##### inherited from Servi

[task] | instruction_following [pass] | ⏳ 미판정 [title] | MaterialService [question] | _MaterialService:ChangeMaterialProperty 메서드의 시그니처와 매개변수 타입을 코드 블록으로만 출력하세요. [answer] | ```lua void ChangeMaterialProperty(string entryId, Dictionary<string, any> changeProperty) ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 머티리얼 프로퍼티를 제어하는 기능을 제공합니다. # Methods - **void ChangeMaterialProperty(string entryId, Dictionary<string, any> changeProperty) [ClientOnly]** entryId에 해당하는 머티리얼의 프로퍼티를 변경합니다. changeProperty의 key는 프로퍼티 이름, value는 프로퍼티 값입니다. ##### inherited from Service: - **EventHandlerBase ConnectEvent(string ke

[task] | single_turn [pass] | ⏳ 미판정 [title] | EntryService [question] | EntryService에서 GetModelIdByName으로 찾은 ID를 SpawnService에 바로 넘겨줘도 되나요? [answer] | 네, 됩니다. `EntryService:GetModelIdByName`으로 찾은 ID는 문자열(string) 타입이며, 이 값은 `SpawnService:SpawnByModelId` 메서드의 첫 번째 매개변수로 직접 전달할 수 있습니다. 참고 문서의 예시에서도 `GetModelIdByName`으로 얻은 `modelId`를 `nil`이 아닌지 확인한 후, `SpawnByModelId`에 바로 넘겨주는 코드가 있습니다. ```lua local modelId = _EntryService:GetModelIdByName("NewModel [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 엔트리 관련 기능을 제공합니다. # Methods - **string GetDataSetIdByName(string name)** DataSet 이름으로 DataSet Id를 찾아 반환합니다. - **string GetMaterialIdByName(string name)** Material 이름으로 Material Id를 찾아 반환합니다. - **string GetModelIdByName(string name)** Model 이름으로 Modle Id를 찾아 반환합니다. ##### inherited from Servi

[task] | single_turn [pass] | ⏳ 미판정 [title] | RigidbodyClimbableDetachEndEvent [question] | 사다리에서 떨어진 순간에만 반응하게 하려면 이 이벤트와 어떤 다른 이벤트를 조합해야 하나요? [answer] | 사다리나 로프에서 떨어지는 순간에만 반응하려면 `RigidbodyClimbableDetachEndEvent`와 `RigidbodyClimbableAttachEvent`(또는 `RigidbodyClimbableAttachEndEvent`)를 조합하여 상태(Attached/Detached)를 관리해야 합니다. 참고 문서에는 `RigidbodyClimbableDetachEndEvent`에 대한 정보만 명시되어 있으며, `RigidbodyClimbableAttachEvent`나 `RigidbodyClimbableAttachEndEvent [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Avatar가 사다리, 로프에서 떨어진 후에 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * RigidbodyComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Constructors - **RigidbodyClimbableDetachEndEvent()** 기본값으로 Rigi

[task] | instruction_following [pass] | ⏳ 미판정 [title] | MaterialService [question] | ChangeMaterialProperty 호출 시 전달하는 options 테이블의 key와 value 구조를 3문장 이내로 설명하세요. [answer] | `options` 테이블의 key는 변경할 머티리얼 프로퍼티의 이름을 문자열로 지정합니다. value는 해당 프로퍼티에 설정할 값을 담으며, 문서 예제에서는 `Vector2` 타입의 좌표가 사용되었습니다. 이 구조는 `Dictionary<string, any>` 형태와 동일하게 동작합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 머티리얼 프로퍼티를 제어하는 기능을 제공합니다. # Methods - **void ChangeMaterialProperty(string entryId, Dictionary<string, any> changeProperty) [ClientOnly]** entryId에 해당하는 머티리얼의 프로퍼티를 변경합니다. changeProperty의 key는 프로퍼티 이름, value는 프로퍼티 값입니다. ##### inherited from Service: - **EventHandlerBase ConnectEvent(string ke

[task] | instruction_following [pass] | ⏳ 미판정 [title] | EntryService [question] | EntryService의 고유 메서드 3개와 Service에서 상속받은 메서드 5개를 메서드 시그니처와 함께 표로 정리하세요. [answer] | EntryService의 고유 메서드와 Service에서 상속받은 메서드는 다음과 같습니다. ### EntryService 고유 메서드 | 메서드 시그니처 | 설명 | | :--- | :--- | | `string GetDataSetIdByName(string name)` | DataSet 이름으로 DataSet Id를 찾아 반환합니다. | | `string GetMaterialIdByName(string name)` | Material 이름으로 Material Id를 찾아 반환합니다. | | `string GetModelIdB [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 엔트리 관련 기능을 제공합니다. # Methods - **string GetDataSetIdByName(string name)** DataSet 이름으로 DataSet Id를 찾아 반환합니다. - **string GetMaterialIdByName(string name)** Material 이름으로 Material Id를 찾아 반환합니다. - **string GetModelIdByName(string name)** Model 이름으로 Modle Id를 찾아 반환합니다. ##### inherited from Servi

[task] | instruction_following [pass] | ⏳ 미판정 [title] | MaterialService [question] | 문서 예제에서 WorldToScreenPosition 결과 값을 정규화(normalize)하는 과정이 포함된 OnUpdate 함수 본문만 단계별 번호 목록으로 나열하세요. [answer] | 문서 예제의 `OnUpdate` 함수 본문에서 `WorldToScreenPosition` 결과 값을 정규화하는 과정은 다음과 같습니다. 1. `targetScreenPos.x` 값을 `_UILogic.ScreenWidth`로 나눕니다. 2. `targetScreenPos.y` 값을 `_UILogic.ScreenHeight`로 나눕니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 머티리얼 프로퍼티를 제어하는 기능을 제공합니다. # Methods - **void ChangeMaterialProperty(string entryId, Dictionary<string, any> changeProperty) [ClientOnly]** entryId에 해당하는 머티리얼의 프로퍼티를 변경합니다. changeProperty의 key는 프로퍼티 이름, value는 프로퍼티 값입니다. ##### inherited from Service: - **EventHandlerBase ConnectEvent(string ke

[task] | single_turn [pass] | ⏳ 미판정 [title] | EntryService [question] | 모델 이름이 잘못 입력되면 GetModelIdByName이 nil을 반환하는데, 이걸 처리하는 가장 안전한 방법은 무엇인가요? [answer] | `_EntryService:GetModelIdByName`은 요청한 이름의 Model을 찾지 못하면 `nil`을 반환합니다. 따라서 가장 안전한 방법은 반환값이 `nil`인지 반드시 확인한 후, 값이 유효할 때만 스폰 등 후속 작업을 실행하는 것입니다. ```lua Method: [server only] void SpawnModelByName(string modelName) { local modelId = _EntryService:GetModelIdByName(modelName) if modelId ~= n [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 엔트리 관련 기능을 제공합니다. # Methods - **string GetDataSetIdByName(string name)** DataSet 이름으로 DataSet Id를 찾아 반환합니다. - **string GetMaterialIdByName(string name)** Material 이름으로 Material Id를 찾아 반환합니다. - **string GetModelIdByName(string name)** Model 이름으로 Modle Id를 찾아 반환합니다. ##### inherited from Servi

[task] | single_turn [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | MaplePreferencesLogic 문서에 Methods 섹션이 비어 있는 것으로 보아, 이 컴포넌트에는 메서드를 직접 호출할 수 있는 기능이 없는 것인가요? [answer] | 네, `MaplePreferencesLogic` 컴포넌트에는 직접 호출할 수 있는 메서드가 없습니다. 해당 컴포넌트는 프로퍼티(속성)들을 제공하여 설정 값을 읽거나 수정하는 용도로만 사용되며, `OnBeginPlay`나 `OnUpdate`와 같은 생명주기 메서드나 커스텀 메서드를 직접 호출하는 API는 정의되어 있지 않습니다. 따라서 이 컴포넌트를 사용하려면 다른 스크립트에서 `_MaplePreferencesLogic`을 참조하여 특정 프로퍼티(예: `JumpSound`, `DeathSound`, `WeaponBowSound` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 메이플스토리의 설정 값이나 변수 값을 프로퍼티로 제공합니다. # Properties - **string DeathSound [Sync]** 죽을 때 재생되는 소리입니다. - **string JumpSound [Sync]** 점프할 때 재생되는 소리입니다. - **string WeaponBowSound [Sync]** Bow 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생되는 소리입니다. - **string WeaponCaneSound [Sync]** Cane 타입의 사운드 이펙트와 연결된 무기로 근접 공

[task] | two_turn [pass] | ⏳ 미판정 [title] | RigidbodyMovementOptionType [question] | `RigidbodyMovementOptionType`의 정적 메서드 `CastFrom`을 사용하여 숫자나 문자열을 해당 타입으로 변환할 때 주의할 점과 사용법이 궁금합니다. [answer] | `RigidbodyMovementOptionType`의 정적 메서드 `CastFrom`은 숫자(`number`) 또는 문자열(`string`)을 `RigidbodyMovementOptionType` 열거형 값으로 변환하는 데 사용됩니다. ### 사용법 1. **숫자 변환**: `CastFrom(number value)` * `0`을 전달하면 `RigidbodyMovementOptionType.RelativeX` * `1`을 전달하면 `RigidbodyMovementOptionType.Absolute` [followup] | `RigidbodyMovementOptionType.CastFrom(0)` 호출 시 반환되는 값이 `RelativeX`인지 확인하고, 잘못된 값(예: 99)을 전달했을 때의 예외 처리나 기본 동작 방식을 코드와 함께 설명해 주세요. [followup_answer] | `RigidbodyMovementOptionType.CastFrom(0)` 호출 시 반환되는 값은 **`RelativeX`**입니다. 문서에 정의된 Members 표를 보면 `RelativeX`의 값이 `0`으로 명시되어 있기 때문입니다. ### 잘못된 값(예: 99) 전달 시 예외 처리나 기본 동작 방식 제공된 문서에는 `CastFrom` 메서드에 **유효하지 않은 값(예: 99)을 전달했을 때의 예외 처리, 오류 메시지, 또는 기본 동작 방식(예: 0으로 기본값 반환, nil 반환, 오류 발생 등)에 대한 설명이 포함되어 [scores] | [judge_reason] | [source_doc] | 풋홀드 위의 RigidbodyComponent에게 적용할 옵션을 설정합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | RelativeX | 0 | x축 관성은 적용하고, y축 관성은 적용하지 않습니다. 플레이어가 발판의 이동 방향과 반대로 움직이면 속도가 감속하고, 같은 방향으로 움직이면 가속합니다. | | Absolute | 1 | 플레이어가 어느 방향으로 움직여도 속도가 동일합니다. | # Methods - **RigidbodyMovementOptionType CastFrom(number

[task] | code [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | MaplePreferencesLogic 컴포넌트의 DeathSound 프로퍼티 값을 "custom_death_sound" 문자열로 변경하는 스크립트를 작성해줘 [answer] | `MaplePreferencesLogic` 컴포넌트의 `DeathSound` 프로퍼티는 클라이언트에서 직접 접근하여 값을 변경할 수 있습니다. 아래 스크립트는 게임 시작 시(`OnBeginPlay`) 사운드 ID를 `"custom_death_sound"`로 설정하는 예시입니다. ```lua Method: [client only] void OnBeginPlay() { _MaplePreferencesLogic.DeathSound = "custom_death_sound" } ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 메이플스토리의 설정 값이나 변수 값을 프로퍼티로 제공합니다. # Properties - **string DeathSound [Sync]** 죽을 때 재생되는 소리입니다. - **string JumpSound [Sync]** 점프할 때 재생되는 소리입니다. - **string WeaponBowSound [Sync]** Bow 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생되는 소리입니다. - **string WeaponCaneSound [Sync]** Cane 타입의 사운드 이펙트와 연결된 무기로 근접 공

[task] | single_turn [pass] | ⏳ 미판정 [title] | EntryService [question] | EntryService의 ConnectEvent 메서드에서 key와 eventType 매개변수를 사용할 때의 실용적인 차이점은 있나요? [answer] | EntryService의 `ConnectEvent` 메서드는 문자열(`key`)과 타입(`eventType`) 두 가지 방식으로 이벤트를 연결할 수 있으며, 이 둘 사이의 실용적인 차이는 제공된 문서에 명시되어 있지 않습니다. 문서에서는 두 메서드의 시그니처와 "이벤트를 연결한다"는 기능적 설명만 제공하며, 성능, 가독성, 또는 사용 시나리오에 따른 구체적인 장단점이나 차이점에 대한 정보는 포함되어 있지 않습니다. 참고로 문서에 정의된 메서드는 다음과 같습니다: 1. `EventHandlerBase ConnectEvent(str [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 엔트리 관련 기능을 제공합니다. # Methods - **string GetDataSetIdByName(string name)** DataSet 이름으로 DataSet Id를 찾아 반환합니다. - **string GetMaterialIdByName(string name)** Material 이름으로 Material Id를 찾아 반환합니다. - **string GetModelIdByName(string name)** Model 이름으로 Modle Id를 찾아 반환합니다. ##### inherited from Servi

[task] | two_turn [pass] | ⏳ 미판정 [title] | UserReconnectEvent [question] | UserReconnectEvent의 기본 속성 중 UserId와 ReconnectMapName을 어떻게 활용할 수 있나요? [answer] | `UserReconnectEvent`는 유저가 재접속했을 때 서버에서 발생하는 이벤트입니다. 이 이벤트의 `UserId`와 `ReconnectMapName` 속성은 재접속한 유저를 식별하고, 해당 유저가 어느 맵으로 돌아왔는지 확인하는 데 핵심적으로 사용됩니다. ### 속성 활용 방법 1. **`UserId` (유저의 고유 식별자)** * 재접속한 유저를 정확히 찾아내기 위한 유일한 키입니다. * 이 값을 사용하면 `_UserService:GetUserEntityByUserId(UserId)`와 같은 AP [followup] | 서버에서 이 이벤트 핸들러를 등록하여 특정 맵으로 재접속한 유저의 UserId를 추출하고, 해당 유저가 재접속 전 끊겼던 시간(TimeNetworkClosed)이 5초 이내인지 조건 분기하는 코드 예제를 요청합니다. [followup_answer] | `UserReconnectEvent`는 서버 공간(Server Space)에서 발생하는 이벤트이므로, 이벤트 핸들러는 `[server only]` 속성을 명시하여 서버에서 실행되도록 등록해야 합니다. 요청하신 조건에 맞춰 특정 맵으로 재접속한 유저의 `UserId`를 추출하고, `TimeNetworkClosed`와 현재 시간의 차이를 계산하여 5초 이내인지 판별하는 mLua 코드 예시는 다음과 같습니다. ```lua Event Handler: [server only] [service: UserService] HandleUserR [scores] | [judge_reason] | [source_doc] | 유저가 재접속되었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string ProfileCode** 유저의 프로필 코드입니다. - **string ReconnectMapName**

[task] | code [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | MaplePreferencesLogic 컴포넌트의 WeaponSwordKSound 프로퍼티 값을 읽어와서 로그에 출력하는 스크립트를 작성해줘 [answer] | `MaplePreferencesLogic` 컴포넌트의 `WeaponSwordKSound` 프로퍼티는 `string` 타입이며, 카타나(SwordK 타입)로 근접 공격 시 재생되는 사운드 이펙트 경로 값을 저장합니다. 이 값을 읽어와서 로그에 출력하는 스크립트는 다음과 같습니다. ```lua Method: [client only] void OnBeginPlay() { local soundValue = _MaplePreferencesLogic.WeaponSwordKSound log("카타나 공격 사운드: " .. so [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 메이플스토리의 설정 값이나 변수 값을 프로퍼티로 제공합니다. # Properties - **string DeathSound [Sync]** 죽을 때 재생되는 소리입니다. - **string JumpSound [Sync]** 점프할 때 재생되는 소리입니다. - **string WeaponBowSound [Sync]** Bow 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생되는 소리입니다. - **string WeaponCaneSound [Sync]** Cane 타입의 사운드 이펙트와 연결된 무기로 근접 공

[task] | single_turn [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | _MaplePreferencesLogic 의 ConnectEvent 메서드에서 string key 와 Type eventType 중 어느 것을 사용해야 이벤트 연결이 더 안정적으로 유지될까요? [answer] | 제공된 문서에는 `_MaplePreferencesLogic`의 `ConnectEvent` 메서드가 `string key`와 `Type eventType` 두 가지 오버로드를 지원한다는 사실만 명시되어 있습니다. 하지만 **어느 방식이 더 "안정적으로" 유지되는지에 대한 비교, 장단점 분석, 또는 권장 사항에 대한 정보는 문서에 포함되어 있지 않습니다.** 따라서 문서의 정보만으로는 어느 방식을 사용하는 것이 더 안정적인지 판단할 수 없습니다. 문서에 따르면 두 방식 모두 "이벤트를 연결합니다"라는 동일한 동작을 수행하며, 핸들러 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ##### inherited from Logic: - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이

[task] | code [pass] | ⏳ 미판정 [title] | UserReconnectEvent [question] | UserService의 UserReconnectEvent를 처리하여 TimeNetworkClosed 값을 기준으로 접속이 끊긴 지 5초 이내라면 재접속 성공 로그를, 그 외에는 재접속 지연 로그를 출력하는 스크립트를 작성해줘 [answer] | `UserReconnectEvent`는 서버 공간에서 발생하는 이벤트이며, `event.TimeNetworkClosed` 속성은 `DateTime` 타입입니다. 제공된 참고 문서에는 `DateTime` 타입의 현재 시각을 가져오는 API나, `DateTime` 객체 간의 차이를 계산하는 연산자/함수가 명시되어 있지 않습니다. 따라서 요청하신 "접속이 끊긴 지 5초 이내"라는 시간 차이를 계산하는 로직을 **제공된 문서의 정보만으로 구현할 수 없습니다.** 다만, `UserReconnectEvent`를 처리하고 `TimeNetwo [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저가 재접속되었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **string ProfileCode** 유저의 프로필 코드입니다. - **string ReconnectMapName**

[task] | single_turn [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | 클라이언트에서 _MaplePreferencesLogic.JumpSound 을 설정했는데 서버에서는 값이 초기값으로 남아있는 이유는 무엇인가요? [answer] | `_MaplePreferencesLogic` 의 프로퍼티는 기본적으로 클라이언트 로컬 환경에서만 적용되는 설정입니다. 제공된 문서의 예제 코드에서 `_MaplePreferencesLogic.JumpSound` 를 수정하는 메서드가 `[client only]` 실행 공간으로 선언되어 있는 점을 확인할 수 있습니다. 이는 해당 로직이 클라이언트의 사운드 재생 등 로컬 표시와 관련된 동작을 담당하며, 서버와 상태가 동기화(Sync)되지 않는다는 의미입니다. 따라서 클라이언트에서 값을 변경해도 서버에서는 해당 변경 사항이 반영되지 않고 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ##### inherited from Logic: - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이

[task] | code [pass] | ⏳ 미판정 [title] | MaplePreferencesLogic [question] | MaplePreferencesLogic 컴포넌트의 WeaponSwordLSound 프로퍼티 값을 가져와서 해당 값이 "sword_l_sound.mp3"인지 비교하여 결과에 따라 다른 로그 메시지를 출력하는 스크립트를 작성해줘 [answer] | `MaplePreferencesLogic` 컴포넌트에서 `WeaponSwordLSound` 프로퍼티의 값을 가져와 `"sword_l_sound.mp3"`와 비교하는 로직은 클라이언트 측에서 처리할 수 있습니다. 다음은 요청하신 기능을 수행하는 mLua 스크립트입니다. ```lua Method: [client only] void OnBeginPlay() { local swordLsound = _MaplePreferencesLogic.WeaponSwordLSound if swordLsound == "sword [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 메이플스토리의 설정 값이나 변수 값을 프로퍼티로 제공합니다. # Properties - **string DeathSound [Sync]** 죽을 때 재생되는 소리입니다. - **string JumpSound [Sync]** 점프할 때 재생되는 소리입니다. - **string WeaponBowSound [Sync]** Bow 타입의 사운드 이펙트와 연결된 무기로 근접 공격할 때 재생되는 소리입니다. - **string WeaponCaneSound [Sync]** Cane 타입의 사운드 이펙트와 연결된 무기로 근접 공

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