[task] | distill [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | # 심화 엔티티를 탐색하는 EntityService ## 엔티티 삭제 매개 변수로 전달한 엔티티를 삭제합니다. ```lua void DestroyExample() { local entity = _EntityService:GetEntityByPath("/maps/map01/Monster1_1") _EntityService:Destroy(entity) if isvalid(entity) == false then log("Entity is destroyed") end } ``` `E [original] | 매개 변수로 전달한 엔티티를 삭제합니다. ```lua void DestroyExample() { local entity = _EntityService:GetEntityByPath("/maps/map01/Monster1_1") _EntityService:Destroy(entity) if isvalid(entity) == false then log("Entity is destroyed") end } ``` 꼭 `EntityService:Destroy`를 사용하지 않고도, 엔티티의 ` [chunk_id] | Guides:201:2
[task] | wikipedia [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | # EntityService `EntityService`는 메이플스토리 월드에서 엔티티의 생성과 소멸을 관리하는 서비스입니다. 이 서비스는 엔티티가 생성되거나 삭제될 때 발생하는 이벤트를 처리할 수 있도록 제공하며, 이를 통해 스크립트에서 동적으로 생성된 객체를 식별하고 제어할 수 있습니다. ## EntityCreateEvent `EntityCreateEvent`는 엔티티가 생성될 때 발생하는 이벤트입니다. 이 이벤트를 처리하기 위해 `Entity Event Handler` 섹션에 핸들러를 등록해야 합니다. 이벤트 핸들러는 매 [original] | 엔티티가 생성될 때 발생하는 이벤트입니다. **Entity Event Handler**에서 핸들러를 추가할 수 있습니다. 이벤트 핸들러의 매개 변수로 이벤트가 전송되며, 이벤트에는 생성된 엔티티가 정보가 포함되어 있습니다. ```lua Method: [server only] void OnBeginPlay() { local monsterTemplate = _EntityService:GetEntityByPath("/maps/map01/monster-1") -- "spawnedMonster"라는 이름의 몬스터 엔티티 스폰 [chunk_id] | Guides:201:3
[task] | distill [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | **EntityDestroyEvent** 엔티티 삭제 시 발생하는 이벤트입니다. `Entity Event Handler`에서 등록하며, `EntityDestroyEvent` 객체를 인자로 전달받습니다. 이벤트 객체의 `Entity` 프로퍼티에는 삭제 대상 엔티티 정보가 포함됩니다. ```lua Method: [server only] void OnBeginPlay() { local monsterTemplate = _EntityService:GetEntityByPath("/maps/map01/monster-1") lo [original] | 엔티티가 삭제될 때 발생하는 이벤트입니다. **Entity Event Handler**에서 핸들러를 추가할 수 있습니다. 이벤트 핸들러의 매개 변수로 이벤트가 전송되며, 이벤트에는 삭제 대기 중인 엔티티가 정보가 포함되어 있습니다. ```lua Method: [server only] void OnBeginPlay() { local monsterTemplate = _EntityService:GetEntityByPath("/maps/map01/monster-1") -- "spawnedMonster"라는 이름의 몬 [chunk_id] | Guides:201:4
[task] | knowledge_list [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | ```lua -- 문서에 포함된 코드 예제 (참고용) void DestroyExample() { local entity = _EntityService:GetEntityByPath("/maps/map01/Monster1_1") _EntityService:Destroy(entity) if isvalid(entity) == false then log("Entity is destroyed") end } void IsValidExample() { local entity = _Ent [original] | 매개 변수로 전달한 엔티티를 삭제합니다. ```lua void DestroyExample() { local entity = _EntityService:GetEntityByPath("/maps/map01/Monster1_1") _EntityService:Destroy(entity) if isvalid(entity) == false then log("Entity is destroyed") end } ``` 꼭 `EntityService:Destroy`를 사용하지 않고도, 엔티티의 ` [chunk_id] | Guides:201:2
[task] | wikipedia [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | # 심화 엔티티를 탐색하는 EntityService 본 섹션은 `EntityService`를 통해 엔티티를 삭제하고, 그 상태를 확인하며, 생성 및 삭제 이벤트를 처리하는 방법에 대해 설명합니다. ## 엔티티 삭제 `EntityService:Destroy` 메서드는 매개변수로 전달된 엔티티를 삭제합니다. 아래 예시에서는 경로 정보를 이용해 특정 엔티티를 조회한 후 삭제하고, `isvalid` 함수를 사용하여 삭제 여부를 로그로 출력합니다. ```lua void DestroyExample() { local entity [original] | 매개 변수로 전달한 엔티티를 삭제합니다. ```lua void DestroyExample() { local entity = _EntityService:GetEntityByPath("/maps/map01/Monster1_1") _EntityService:Destroy(entity) if isvalid(entity) == false then log("Entity is destroyed") end } ``` 꼭 `EntityService:Destroy`를 사용하지 않고도, 엔티티의 ` [chunk_id] | Guides:201:2
[task] | extract_knowledge [title] | Entity Event System [category] | Guides [rephrased] | # Entity Event System: 중계자 기반 이벤트 수신 ## 개념 설명 메이플스토리 월드의 `Entity Event System`은 특정 엔티티(중계자)를 통해 발생한 이벤트를 다른 엔티티에 전달하는 메커니즘입니다. 이 시스템은 이벤트 발생 소스와 수신자 간의 직접적인 의존성을 분리하여, 중앙 엔티티(예: 맵 엔티티)를 통해 상태 변경(예: 해의 출몰)을 브로드캐스트하고 수신 컴포넌트에서 해당 상태를 처리하도록 합니다. 이 예제에서는 `map01` 엔티티가 `SunriseEvent`를 중계하고, 이를 수신하는 `Hu [original] | **HunterComponent**, **VampireComponent** 스크립트를 작성해 봅시다. 우선 두 컴포넌트 모두 **SunriseEvent**를 받도록 해야 합니다. 1. **HunterComponent**, **VampireComponent** 스크립트를 엽니다. **Event Handler**에서 **[+]** 버튼을 누르고, **SunriseEvent**를 추가합니다. 2. **SunriseEvent**의 중계 엔티티를 **map01**으로 설정해야 합니다. 다음과 같이 핸들러 상단의 이벤트 중계자를 **ma [chunk_id] | Guides:176:1
[task] | diverse_qa [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | 질문: `_EntityService:GetEntitiesSpawnedByModelId` 함수는 어떤 데이터를 매개변수로 받아 어떤 결과를 반환하나요? 답변: 모델 ID를 매개변수로 받아, 해당 모델 ID와 일치하는 모델로부터 생성된 모든 엔티티를 반환합니다. 질문: 수많은 엔티티가 배치된 상황에서 동일한 모델로부터 생성된 NPC 엔티티들을 모두 가져오기 위해 어떤 함수를 사용하는 것이 유용한가요? 답변: `GetEntitiesSpawnedByModelId` 또는 `GetEntitiesSpawnedByModel` 함수를 사용하는 것 [original] | 모델 ID와 일치하는 모델로부터 생성된 모든 엔티티를 반환합니다. 다음과 같이 수많은 엔티티가 배치된 상황에서 NPC와 같이 동일 모델로부터 생성된 모든 엔티티를 받고 싶을 때 유용하게 사용됩니다. 특정 엔티티에 접근하여 모델을 받은 뒤, 해당 모델로부터 생성된 모든 엔티티를 받을 수 있습니다. ```lua void GetEntitiesSpawnedByModelIdExample() { local modelId = _EntityService:GetEntityByPath("/maps/map02/npc-5396_1").Mode [chunk_id] | Guides:201:1
[task] | extract_knowledge [title] | Entity Event System [category] | Guides [rephrased] | # 3. Entity Event System (엔티티 이벤트 시스템) ## 1. 개념 설명 mLua에서 엔티티 간 또는 엔티티 내부를 통해 상태 변경을 전달하기 위해 **Entity Event System**을 사용합니다. 이 시스템은 `SendEvent` 메서드를 통해 특정 이벤트 객체를 발생시키고, 이를 수신하는 로직을 트리거하는 구조입니다. 문서에서는 특정 시간 간격(5초)마다 상태를 번갈아 변경하는 `TimeManager` 컴포넌트와, 사용자 입력(Z키)을 통해 해당 이벤트를 직접 호출하는 `HunterComponent` [original] | 특정 시간마다 해가 뜨고 지는 로직을 만들어봅시다. 1. 해가 뜨고 지는 시간을 관리할 스크립트 컴포넌트가 필요합니다. **Workspace - MyDesk**의 콘텍스트 메뉴에서 **Create Scrips - Create Component**를 클릭해 새 컴포넌트를 만듭니다. 이름으로 **TimeManager**를 입력합니다. 2. **TimeManager** 스크립트 컴포넌트를 엽니다. `OnUpdate` 함수를 추가하여 해가 뜨고 지는 것을 판단하도록 합니다. ```lua Property: [Sy [chunk_id] | Guides:176:2
[task] | distill [title] | 스크립트 디버그 [category] | Guides [rephrased] | # 스크립트 디버그: 중단점(Breakpoints) 스크립트 디버깅은 특정 코드 라인에서 실행을 일시 중지하는 **중단점** 설정으로 시작합니다. ## 중단점 타입 및 상태 | 상태 | 설명 | | :--- | :--- | | **기본 중단점** | 조건식이나 추가 설정이 없는 기본 상태. | | **조건부 중단점** | `BreakPoints` 패널에서 조건식을 입력한 상태. | | **코드 계속 실행** | `BreakPoints` 패널에서 "코드 계속 실행" 옵션이 활성화된 상태. | | **비활성화** | 중단점 기능이 [original] | ## 학습 과정 소개 디버그 기능을 통해 스크립트를 디버깅하는 방법에 대해 알아봅니다. ## 중단점(Breakpoints) 스크립트 디버깅의 시작은 중단점 설정에서 시작됩니다. 이상이 발생하거나, 오작동의 원인으로 의심되는 코드 라인에 중단점을 설정 또는 해제하는 방법을 알아봅니다. ### 중단점 아이콘 중단점 설정 상태에 따라 아이콘이 다르게 나타납니다. |아이콘 | 이름 | 설명| ---|---|--- | ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17691 [chunk_id] | Guides:202:0
[task] | knowledge_list [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | 1. `EntityCreateEvent`는 엔티티가 생성될 때 발생하는 이벤트이며, `Entity Event Handler` 블록에서 핸들러를 등록하여 처리할 수 있습니다. 2. `EntityCreateEvent` 이벤트 핸들러는 매개변수로 `EntityCreateEvent` 타입의 이벤트 객체를 수신하며, 해당 객체의 `event.Entity` 속성을 통해 생성된 엔티티 정보에 접근할 수 있습니다. 3. `_EntityService:GetEntityByPath(path)` 메서드는 지정된 경로 문자열을 인자로 받아 해당 엔티티를 [original] | 엔티티가 생성될 때 발생하는 이벤트입니다. **Entity Event Handler**에서 핸들러를 추가할 수 있습니다. 이벤트 핸들러의 매개 변수로 이벤트가 전송되며, 이벤트에는 생성된 엔티티가 정보가 포함되어 있습니다. ```lua Method: [server only] void OnBeginPlay() { local monsterTemplate = _EntityService:GetEntityByPath("/maps/map01/monster-1") -- "spawnedMonster"라는 이름의 몬스터 엔티티 스폰 [chunk_id] | Guides:201:3
[task] | diverse_qa [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | 질문: `_EntityService:Destroy(entity)` 함수의 매개변수로 전달된 엔티티에 대해 어떤 동작을 수행하나요? 답변: 매개 변수로 전달한 엔티티를 삭제합니다. 질문: 다음 코드의 실행 결과는 무엇인가요? ```lua local entity = _EntityService:GetEntityByPath("/maps/map01/Monster1_1") _entityService:Destroy(entity) if isvalid(entity) == false then log("Entity is destroyed") [original] | 매개 변수로 전달한 엔티티를 삭제합니다. ```lua void DestroyExample() { local entity = _EntityService:GetEntityByPath("/maps/map01/Monster1_1") _EntityService:Destroy(entity) if isvalid(entity) == false then log("Entity is destroyed") end } ``` 꼭 `EntityService:Destroy`를 사용하지 않고도, 엔티티의 ` [chunk_id] | Guides:201:2
[task] | diverse_qa [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | 질문: 엔티티가 생성될 때 발생하는 이벤트의 이름은 무엇인가요? 답변: 엔티티가 생성될 때 발생하는 이벤트는 EntityCreateEvent입니다. 질문: EntityCreateEvent 핸들러를 추가할 수 있는 위치는 어디인가요? 답변: Entity Event Handler에서 핸들러를 추가할 수 있습니다. 질문: EntityCreateEvent 핸들러의 매개 변수로 전송되는 이벤트 객체에는 어떤 정보가 포함되어 있나요? 답변: 이벤트에는 생성된 엔티티에 대한 정보가 포함되어 있습니다. 질문: 아래 코드에서 _EntitySe [original] | 엔티티가 생성될 때 발생하는 이벤트입니다. **Entity Event Handler**에서 핸들러를 추가할 수 있습니다. 이벤트 핸들러의 매개 변수로 이벤트가 전송되며, 이벤트에는 생성된 엔티티가 정보가 포함되어 있습니다. ```lua Method: [server only] void OnBeginPlay() { local monsterTemplate = _EntityService:GetEntityByPath("/maps/map01/monster-1") -- "spawnedMonster"라는 이름의 몬스터 엔티티 스폰 [chunk_id] | Guides:201:3
[task] | wikipedia [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | **EntityDestroyEvent**는 엔티티가 삭제될 때 발생하는 이벤트입니다. 이 이벤트 핸들러를 사용하려면 **Entity Event Handler**를 추가해야 합니다. 이벤트 핸들러의 매개변수로 `EntityDestroyEvent` 객체가 전달되며, 해당 객체에는 삭제 대기 중인 엔티티의 정보가 포함되어 있습니다. 아래 예제는 `OnBeginPlay` 메서드에서 몬스터 엔티티를 스폰한 후 5초 뒤에 삭제하는 과정과, `EntityCreateEvent` 및 `EntityDestroyEvent` 핸들러에서 해당 엔티티의 [original] | 엔티티가 삭제될 때 발생하는 이벤트입니다. **Entity Event Handler**에서 핸들러를 추가할 수 있습니다. 이벤트 핸들러의 매개 변수로 이벤트가 전송되며, 이벤트에는 삭제 대기 중인 엔티티가 정보가 포함되어 있습니다. ```lua Method: [server only] void OnBeginPlay() { local monsterTemplate = _EntityService:GetEntityByPath("/maps/map01/monster-1") -- "spawnedMonster"라는 이름의 몬 [chunk_id] | Guides:201:4
[task] | wikipedia [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | # 심화 엔티티를 탐색하는 EntityService `EntityService`는 스크립트 실행 환경에서 특정 조건에 부합하는 엔티티를 검색하고 관리하기 위한 다양한 메서드를 제공합니다. 이 서비스는 모델 기반 검색, 경로 기반 검색, 태그 기반 검색, 그리고 엔티티의 생명 주기 관리(삭제 및 유효성 검사) 기능을 포함합니다. ## 모델 기반 엔티티 검색 모델 정보를 기준으로 엔티티를 찾는 기능은 동일한 외형이나 동작을 가진 여러 엔티티를 일괄적으로 제어할 때 유용합니다. 예를 들어, 맵에 배치된 수많은 NPC 중 동일한 모델 [original] | 모델 ID와 일치하는 모델로부터 생성된 모든 엔티티를 반환합니다. 다음과 같이 수많은 엔티티가 배치된 상황에서 NPC와 같이 동일 모델로부터 생성된 모든 엔티티를 받고 싶을 때 유용하게 사용됩니다. 특정 엔티티에 접근하여 모델을 받은 뒤, 해당 모델로부터 생성된 모든 엔티티를 받을 수 있습니다. ```lua void GetEntitiesSpawnedByModelIdExample() { local modelId = _EntityService:GetEntityByPath("/maps/map02/npc-5396_1").Mode [chunk_id] | Guides:201:1
[task] | diverse_qa [title] | 스크립트 디버그 [category] | Guides [rephrased] | 질문: 스크립트 디버깅을 시작하기 위해 가장 먼저 수행해야 하는 작업은 무엇인가요? 답변: 스크립트 디버깅의 시작은 중단점(Breakpoints) 설정에서 시작됩니다. 질문: 스크립트 에디터에서 특정 코드 라인에 중단점을 설정하는 단축키는 무엇인가요? 답변: 원하는 코드 라인에 F9 키를 눌러 중단점을 설정할 수 있습니다. 질문: 이미 설정된 중단점을 해제하는 방법은 무엇인가요? 답변: 중단점이 설정된 코드 라인을 선택하고 다시 F9 키를 누르면 중단점이 해제됩니다. 질문: 중단점이 해제된 상태에서 디버그 모드로 실행하면 해당 [original] | ## 학습 과정 소개 디버그 기능을 통해 스크립트를 디버깅하는 방법에 대해 알아봅니다. ## 중단점(Breakpoints) 스크립트 디버깅의 시작은 중단점 설정에서 시작됩니다. 이상이 발생하거나, 오작동의 원인으로 의심되는 코드 라인에 중단점을 설정 또는 해제하는 방법을 알아봅니다. ### 중단점 아이콘 중단점 설정 상태에 따라 아이콘이 다르게 나타납니다. |아이콘 | 이름 | 설명| ---|---|--- | ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17691 [chunk_id] | Guides:202:0
[task] | knowledge_list [title] | 스크립트 디버그 [category] | Guides [rephrased] | 제공된 문서 내용만 바탕으로 추출한 핵심 사실 목록입니다. 1. 스크립트 디버깅은 중단점(Breakpoints) 설정을 통해 시작되며, 이상이 발생하거나 오작동이 의심되는 코드 라인에 중단점을 설정하거나 해제하는 과정으로 구성됩니다. 2. 중단점 아이콘은 설정 상태에 따라 5가지로 구분되며, 각각 기본 중단점, 조건부 중단점, 코드 계속 실행 중단점, 중단점 비활성화, 코드 계속 실행 중단점 비활성화 상태임을 나타냅니다. 3. '기본 중단점' 아이콘은 다른 설정이 없는 기본 상태의 중단점을 의미합니다. 4. '조건부 중단점' 아이 [original] | ## 학습 과정 소개 디버그 기능을 통해 스크립트를 디버깅하는 방법에 대해 알아봅니다. ## 중단점(Breakpoints) 스크립트 디버깅의 시작은 중단점 설정에서 시작됩니다. 이상이 발생하거나, 오작동의 원인으로 의심되는 코드 라인에 중단점을 설정 또는 해제하는 방법을 알아봅니다. ### 중단점 아이콘 중단점 설정 상태에 따라 아이콘이 다르게 나타납니다. |아이콘 | 이름 | 설명| ---|---|--- | ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17691 [chunk_id] | Guides:202:0
[task] | knowledge_list [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | 제시된 문서의 내용을 바탕으로 추출한 핵심 사실 목록입니다. 1. 엔티티가 삭제될 때 발생하는 이벤트는 `EntityDestroyEvent`이며, 해당 이벤트 핸들러를 추가하기 위해서는 `Entity Event Handler` 블록을 사용해야 합니다. 2. `EntityDestroyEvent` 이벤트 핸들러는 `[service: EntityService]` 태그를 지정하여 선언하며, 매개변수로 `EntityDestroyEvent` 타입의 `event` 객체를 전달받습니다. 3. `EntityDestroyEvent` 이벤트 객체(` [original] | 엔티티가 삭제될 때 발생하는 이벤트입니다. **Entity Event Handler**에서 핸들러를 추가할 수 있습니다. 이벤트 핸들러의 매개 변수로 이벤트가 전송되며, 이벤트에는 삭제 대기 중인 엔티티가 정보가 포함되어 있습니다. ```lua Method: [server only] void OnBeginPlay() { local monsterTemplate = _EntityService:GetEntityByPath("/maps/map01/monster-1") -- "spawnedMonster"라는 이름의 몬 [chunk_id] | Guides:201:4
[task] | extract_knowledge [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | # EntityService를 활용한 심화 엔티티 탐색 ## 개념 설명 `EntityService`는 게임 월드 내의 엔티티를 경로로 검색하거나, 엔티티 생성과 소멸 시 발생하는 이벤트를 처리하는 데 사용됩니다. 엔티티가 생성될 때 `EntityCreateEvent`가 발생하며, 이 이벤트를 통해 생성된 엔티티의 정보를 참조할 수 있습니다. 해당 이벤트 핸들러는 **Entity Event Handler** 섹션에 등록되며, 이벤트 객체를 매개변수로 받아 처리합니다. ## API 사용법 - **`_EntityService:GetE [original] | 엔티티가 생성될 때 발생하는 이벤트입니다. **Entity Event Handler**에서 핸들러를 추가할 수 있습니다. 이벤트 핸들러의 매개 변수로 이벤트가 전송되며, 이벤트에는 생성된 엔티티가 정보가 포함되어 있습니다. ```lua Method: [server only] void OnBeginPlay() { local monsterTemplate = _EntityService:GetEntityByPath("/maps/map01/monster-1") -- "spawnedMonster"라는 이름의 몬스터 엔티티 스폰 [chunk_id] | Guides:201:3
[task] | wikipedia [title] | 스크립트 디버그 [category] | Guides [rephrased] | # 스크립트 디버그 메이플스토리 월드의 스크립트 디버그 기능은 개발자가 스크립트 실행 과정을 추적하고 오류를 분석할 수 있도록 지원하는 도구입니다. 이 문서는 디버깅의 핵심 요소인 중단점(Breakpoints)의 설정, 해제, 편집方法及 시각적 표시에 대해 설명합니다. ## 중단점(Breakpoints) 스크립트 디버깅은 중단점 설정을 통해 시작됩니다. 개발자는 이상 발생이 의심되거나 오작동의 원인으로 추정되는 코드 라인에 중단점을 설정하거나 해제하여 실행을 일시 정지시킬 수 있습니다. ### 중단점 아이콘 중단점의 설정 [original] | ## 학습 과정 소개 디버그 기능을 통해 스크립트를 디버깅하는 방법에 대해 알아봅니다. ## 중단점(Breakpoints) 스크립트 디버깅의 시작은 중단점 설정에서 시작됩니다. 이상이 발생하거나, 오작동의 원인으로 의심되는 코드 라인에 중단점을 설정 또는 해제하는 방법을 알아봅니다. ### 중단점 아이콘 중단점 설정 상태에 따라 아이콘이 다르게 나타납니다. |아이콘 | 이름 | 설명| ---|---|--- | ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17691 [chunk_id] | Guides:202:0
[task] | distill [title] | 스크립트 디버그 [category] | Guides [rephrased] | # 스크립트 디버그 ## 중단점 관리 **Breakpoints** 패널(내비게이션: `Panels - Debug - Breakpoints`)에서 설정된 중단점을 조회, 이동, 삭제할 수 있습니다. | 항목 | 설명 | | --- | --- | | **Entry** | 중단점이 설정된 스크립트 컴포넌트 또는 로직 이름 | | **Method** | Entry 내 중단점이 설정된 메서드 이름 | | **Line** | Method 내 중단점 라인 위치 | - **이동**: 목록 더블 클릭 또는 콘텍스트 메뉴 `Move` - **삭 [original] | 중단점을 비활성화할 때는 마우스 왼쪽 버튼을 클릭합니다. 비활성화된 중단점은 ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1769135859948681fdb075cef4ee7ab4fed9f2f4d4ebd.png "breakpoint4"), ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1769135881421982425439c154f54a9f5db45be1c38a6.png "breakpoint5") 로 표시되며, ** [chunk_id] | Guides:202:2
[task] | extract_knowledge [title] | 엔티티를 탐색하는 EntityService [category] | Guides [rephrased] | # EntityService를 활용한 엔티티 탐색 `EntityService`는 메이플스토리 월드(MapleStory Worlds) 환경에서 월드 내 엔티티(Entity)를 탐색, 삭제, 유효성 체크하는 기능을 제공하는 서비스입니다. 특정 경로를 가진 단일 엔티티를 가져오거나, 특정 조건에 맞는 복수의 엔티티를 한 번에 수집할 필요가 있을 때 이 서비스를 활용합니다. ## 1. 개념 설명 엔티티 탐색은 주로 다음 두 가지 기준으로 수행됩니다. 1. **월드 경로(World Path)**: `Hierarchy` 뷰에서 각 엔티 [original] | # 학습 과정 소개 월드를 제작하다 보면 특정 엔티티를 탐색하여 받아오거나, 혹은 관련 있는 여러 엔티티를 한 번에 받아야 하는 상황이 자주 발생합니다. 이럴 때 [**EntityService**](/apiReference/Services/EntityService)를 활용할 수 있습니다. **EntityService**는 엔티티 탐색, 삭제, 유효성 체크 등의 기능을 제공하고 있습니다. 이번 과정에서는 **EntityService**에서 제공하는 기능의 사용법을 하나씩 알아보도록 하겠습니다. **테스트 환경** **common [chunk_id] | Guides:201:0
[task] | distill [title] | 스크립트 디버그 [category] | Guides [rephrased] | ## 스크립트 디버그: 중단점 편집 디버그 실행 중이거나 종료된 상태에서도 중단점을 편집할 수 있으며, 편집 내용은 항상 유지됩니다. 마우스 오른쪽 버튼 > **BreakPoint Settings** 창에서 설정합니다. ### BreakPoint Settings 옵션 | 이름 | 설명 | | :--- | :--- | | **Enabled** | 체크박스 해제 시 중단점은 유지되지만 동작하지 않습니다. | | **Condition** | 조건식이 `true`일 때만 중단점을 멈춥니다. (예: `x > 1`) | | **Hit C [original] | 디버그를 시작했거나 종료한 이후 등 언제든 중단점을 편집할 수 있습니다. 디버그 실행 상태와 관계 없이 편집된 내용은 유지됩니다. 중단점은 마우스 오른쪽 버튼을 클릭해 **BreakPoint Settings** 창을 열고 편집할 수 있습니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/177319929868794f98eef19be40fb98fbc36f88291b3a.png "BreakingPoint Settings") | 번호 | 이름 | 설명 | | --- | --- [chunk_id] | Guides:202:1
[task] | diverse_qa [title] | 스크립트 디버그 [category] | Guides [rephrased] | 질문: 중단점을 편집할 수 있는 시기는 언제이며, 편집 내용은 어떻게 유지됩니까? 답변: 디버그를 시작했거나 종료한 이후 등 언제든 중단점을 편집할 수 있으며, 디버그 실행 상태와 관계없이 편집된 내용은 유지됩니다. 질문: 중단점을 편집하기 위해 어떤 창을 열어야 합니까? 답변: 마우스 오른쪽 버튼을 클릭해 **BreakPoint Settings** 창을 열고 편집할 수 있습니다. 질문: 'Enabled(활성화 여부)' 옵션을 해제하면 중단점은 어떻게 동작합니까? 답변: 체크 박스 해제 시 비활성화되며, 중단점은 유지되지만 실제 [original] | 디버그를 시작했거나 종료한 이후 등 언제든 중단점을 편집할 수 있습니다. 디버그 실행 상태와 관계 없이 편집된 내용은 유지됩니다. 중단점은 마우스 오른쪽 버튼을 클릭해 **BreakPoint Settings** 창을 열고 편집할 수 있습니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/177319929868794f98eef19be40fb98fbc36f88291b3a.png "BreakingPoint Settings") | 번호 | 이름 | 설명 | | --- | --- [chunk_id] | Guides:202:1
[task] | knowledge_list [title] | 스크립트 디버그 [category] | Guides [rephrased] | 제시된 원문에 포함된 정보만 바탕으로 핵심 사실을 추출하여 정리했습니다. * 중단점을 비활성화하려면 중단점 위치에서 마우스 왼쪽 버튼을 1회 클릭하며, 비활성화된 중단점은 `BreakPoint Settings` 창에서 다시 활성화할 수 있습니다. * 중단점 위치에서 마우스 왼쪽 버튼을 2회 클릭하면 해당 중단점이 완전히 해제됩니다. * 설정된 모든 중단점을 한곳에서 확인하려면 내비게이션 메뉴의 `Panels - Debug - Breakpoints`를 클릭해 `Breakpoints` 패널을 열어야 합니다. * `Bre [original] | 중단점을 비활성화할 때는 마우스 왼쪽 버튼을 클릭합니다. 비활성화된 중단점은 ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1769135859948681fdb075cef4ee7ab4fed9f2f4d4ebd.png "breakpoint4"), ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1769135881421982425439c154f54a9f5db45be1c38a6.png "breakpoint5") 로 표시되며, ** [chunk_id] | Guides:202:2
[task] | knowledge_list [title] | 스크립트 디버그 [category] | Guides [rephrased] | 1. 디버그 세션이 시작되었거나 종료된 상태와 관계없이, 사용자는 언제든 중단점을 편집할 수 있으며 편집된 설정 내용은 유지됩니다. 2. 중단점을 편집하려면 마우스 오른쪽 버튼을 클릭하여 `BreakPoint Settings` 창을 열어야 합니다. 3. `Enabled` 옵션은 체크 박스 해제 시 중단점을 비활성화하며, 중단점 자체는 유지되지만 실제로 동작하지 않습니다. 4. `Condition` 옵션에는 조건식을 입력할 수 있으며, 해당 식이 `true`일 때만 중단점에서 실행이 멈추도록 설정됩니다. 5. `Hit Count` 옵 [original] | 디버그를 시작했거나 종료한 이후 등 언제든 중단점을 편집할 수 있습니다. 디버그 실행 상태와 관계 없이 편집된 내용은 유지됩니다. 중단점은 마우스 오른쪽 버튼을 클릭해 **BreakPoint Settings** 창을 열고 편집할 수 있습니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/177319929868794f98eef19be40fb98fbc36f88291b3a.png "BreakingPoint Settings") | 번호 | 이름 | 설명 | | --- | --- [chunk_id] | Guides:202:1
[task] | extract_knowledge [title] | 스크립트 디버그 [category] | Guides [rephrased] | # 스크립트 디버그: 중단점(Breakpoints) ## 개념 설명 메이플스토리 월드의 mLua 스크립트를 디버깅할 때, 실행 흐름을 일시적으로 멈추고 상태 확인이 필요한 지점을 지정하는 기능을 **중단점(Breakpoint)** 이라 합니다. 이는 오류 발생 지점이나 오작동으로 의심되는 코드 라인에서 실행을 정지시켜 논리적 오류를 분석하는 데 사용됩니다. 중단점은 다음과 같은 상태에 따라 아이콘이 다르게 표시됩니다. | 아이콘 상태 | 이름 | 설명 | | :--- | :--- | :--- | | 기본 중단점 | 기본 중단 [original] | ## 학습 과정 소개 디버그 기능을 통해 스크립트를 디버깅하는 방법에 대해 알아봅니다. ## 중단점(Breakpoints) 스크립트 디버깅의 시작은 중단점 설정에서 시작됩니다. 이상이 발생하거나, 오작동의 원인으로 의심되는 코드 라인에 중단점을 설정 또는 해제하는 방법을 알아봅니다. ### 중단점 아이콘 중단점 설정 상태에 따라 아이콘이 다르게 나타납니다. |아이콘 | 이름 | 설명| ---|---|--- | ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17691 [chunk_id] | Guides:202:0
[task] | distill [title] | 스크립트 디버그 [category] | Guides [rephrased] | # 스크립트 디버깅 중단점 이후 코드의 상태와 흐름을 파악하기 위해, 디버그 세션 중 **단위별 코드 실행** 기능을 사용합니다. 디버그 시작 시 노출되는 버튼들로 제어합니다. | 기능 | 단축키 | 동작 규칙 | | :--- | :--- | :--- | | **다음 중단점까지 이동** | `F5` | 현재 라인에서 다음 중단점이 있는 라인까지 실행합니다. | | **프로시저 단위 실행** | `F10` | 한 줄씩 실행합니다. 포커싱된 라인에 함수 호출이 있으면 함수 내부로 진입하지 않고 반환값만 얻어 다음 줄로 넘어갑니다. [original] | 중단점을 설정한 코드를 확인했을 때 문제가 없다면, 혹은 해당 코드 아래 줄의 상태도 함께 확인하고 싶다면 어떻게 해야 할까요? 확인하고자 하는 모든 코드 라인에 중단점을 설정할 수도 없고, 매번 디버그 시작/중지를 반복하며 중단점 설정 해제를 반복하는 것도 비효율적입니다. 디버깅 중 중단점에서 플레이가 멈춘 뒤, 중단점이 설정된 라인 이후로 코드를 실행하는 방법이 있습니다. **프로시저 단위 실행**, **한 단계씩 코드 실행** 등을 통해 단위별로 코드를 실행하며 코드의 상태나 흐름을 파악할 수 있습니다. 단위별 코드 실행은 디 [chunk_id] | Guides:202:3
[task] | diverse_qa [title] | 스크립트 디버그 [category] | Guides [rephrased] | 질문: 비활성화된 중단점을 활성화하려면 어떤 창을 사용해야 하나요? 답변: BreakPoint Settings 창에서 활성화할 수 있습니다. 질문: 중단점을 해제하려면 마우스 버튼 몇 번을 눌러야 하나요? 답변: 마우스 왼쪽 버튼을 2번 누르면 중단점이 해제됩니다. 질문: 설정된 모든 중단점을 한눈에 확인하고 관리할 수 있는 패널의 이름은 무엇인가요? 답변: Breakpoints 패널입니다. 질문: Breakpoints 패널에 접근하기 위한 내비게이션 메뉴 경로는 무엇인가요? 답변: 내비게이션 메뉴의 Panels - Debug [original] | 중단점을 비활성화할 때는 마우스 왼쪽 버튼을 클릭합니다. 비활성화된 중단점은 ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1769135859948681fdb075cef4ee7ab4fed9f2f4d4ebd.png "breakpoint4"), ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1769135881421982425439c154f54a9f5db45be1c38a6.png "breakpoint5") 로 표시되며, ** [chunk_id] | Guides:202:2
[task] | wikipedia [title] | 스크립트 디버그 [category] | Guides [rephrased] | # 스크립트 디버그: 중단점 편집 메이플스토리 월드 스크립트 에디터에서는 디버그 세션이 시작되었거나 종료된 상태와 무관하게, 언제든 중단점을 편집할 수 있습니다. 디버그 실행 상태에 관계없이 편집된 내용은 유지됩니다. 중단점은 해당 중단점 위치에서 마우스 오른쪽 버튼을 클릭하여 **BreakPoint Settings** 창을 열고 편집합니다. **BreakPoint Settings** 창에는 다음과 같은 항목들이 포함되어 있습니다. 첫째, **Enabled(활성화 여부)** 항목은 체크 박스를 통해 중단점의 활성화 여부를 결정 [original] | 디버그를 시작했거나 종료한 이후 등 언제든 중단점을 편집할 수 있습니다. 디버그 실행 상태와 관계 없이 편집된 내용은 유지됩니다. 중단점은 마우스 오른쪽 버튼을 클릭해 **BreakPoint Settings** 창을 열고 편집할 수 있습니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/177319929868794f98eef19be40fb98fbc36f88291b3a.png "BreakingPoint Settings") | 번호 | 이름 | 설명 | | --- | --- [chunk_id] | Guides:202:1
[task] | wikipedia [title] | 스크립트 디버그 [category] | Guides [rephrased] | # 메이플스토리 월드 스크립트 디버깅 메이플스토리 월드(MapleStory Worlds)의 스크립트 편집 환경에서는 코드의 실행을 일시 정지하고 변수의 값을 확인하는 디버깅 기능을 제공합니다. 이 기능은 중단점(Breakpoint)을 설정하고 디버그 모드로 월드를 실행하는 과정을 통해 작동합니다. ## 중단점 관리 중단점은 코드의 특정 라인에서 실행을 멈추게 하는 마커입니다. 활성화된 중단점을 마우스 왼쪽 버튼으로 클릭하면 비활성화되며, 비활성화된 중단점은 `breakpoint4`, `breakpoint5` 이미지로 표시됩니다 [original] | 중단점을 비활성화할 때는 마우스 왼쪽 버튼을 클릭합니다. 비활성화된 중단점은 ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1769135859948681fdb075cef4ee7ab4fed9f2f4d4ebd.png "breakpoint4"), ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1769135881421982425439c154f54a9f5db45be1c38a6.png "breakpoint5") 로 표시되며, ** [chunk_id] | Guides:202:2