https://maplestoryworlds-creators.nexon.com/ko/docs?postId=743

월드 워프하기: MapleStory Worlds Creator Center# 학습 과정 소개TeleportService의 함수를 활용해 월드에서 다른 월드로 이동할 수 있습니다.# 다른 월드로 이동하기TeleportService는 월드의 유저를 특정 장소로 이동시킬 때 사용할 수 있을 뿐 아니라, 접속 중인 월드에서 다른 월드로 이동시킬 수 있습니다. 접속 중인 월드와 이동할 월드가 공개 출시된 상태여야 이동이 가능합니다. 이 특성으로 인해 제작 중에는 워프를 테스트할 수 없습니다. | 현재 월드 | 이동할 월드 | 워프 여부 || --- | --- | --- || 공개 | 공개 | **◯** || 비공개 | 공개 | **◯** || 공개 | 비공개 | X || 비공개 | 비공개 | X |유저를 다른 월드로 이동시킬 때는 `WarpUserToWorldAndWait()` 및 `WarpUserToWorldAsync()` 함수를 활용하며 **이동시킬 유저 ID, 이동할 월드 ID** 두 가지가 필요합니다. 다른 월드로 워프할 때 현재 머물던 월드에서 유저가 쌓은 데이터를 이동할 월드에서도 사용하고 싶다면 `WarpUserToWorldAndWait()`를 활용해 유저가 이동할 때 데이터를 함께 전달하고, GetWarpRecord()로 데이터에 접근하고 얻어올 수 있습니다.자세한 내용은 [TeleportService](/apiReference?postId=315{"target":"_self"})를 참고하세요.>**Tip.**> 크리에이터가 만든 월드가 아니더라도, 출시된 모든 월드로 워프할 수 있습니다.# World ID 확인하기WorldID는 메이플스토리 월드 공식 홈페이지에서 월드 정보 페이지의 URL로 확인할 수 있습니다. URL 끝의 번호가 월드 ID로써 활용할 수 있습니다.* https://maplestoryworlds.nexon.com/play/**번호** ![WorldID](https://mod-file.dn.nexoncdn.co.kr/bbs/16751471942527842b0f88f594139ad4488f2bce289e0.png "WorldID")# 활용 예제#### 워프시키기유저가 포탈을 타고 다른 월드로 이동할 수 있게 만들어 봅시다.![worldwarp](https://mod-file.dn.nexoncdn.co.kr/bbs/1657775410700475de8c715464f52919606dd284b6f7e.gif "worldwarp")1. 새로운 ![component](https://mod-file.dn.nexoncdn.co.kr/storage/icons/component/Ect.png "component") Warp 컴포넌트를 생성하고, 포탈에 추가합니다.2. 프로퍼티에 WorldId를 추가하고, 월드 ID를 프로퍼티 에디터 창에서 입력합니다.![warp](https://mod-file.dn.nexoncdn.co.kr/bbs/16577946836778dbd808244d6421e99a67c482d4aa1b8.png "warp")3. 아래와 같이 포탈 이벤트가 발생할 때 지정한 월드로 이동할 수 있게 작성합니다.    ```lua    Property:    [Sync]    string WorldId = ""         Method:    [server]    void Warp(string userId)    {        local warpDataTable = {}        warpDataTable.userId = userId                         local serializedData = _UtilLogic:TableToString(warpDataTable)                         _TeleportService:WarpUserToWorldAndWait(userId, self.WorldId, serializedData)    }         Event Handler:    [self]    HandlePortalUseEvent(PortalUseEvent event)    {        --------------- Native Event Sender Info ----------------        -- Sender: PortalComponent        -- Space: Client        ---------------------------------------------------------                -- Parameters        -- local PortalUser = event.PortalUser        ---------------------------------------------------------             self:Warp(PortalUser.Name)    }    ```#### 워프로 월드에 입장했는지 확인하기이동한 월드에서 입장한 유저가 워프로 입장한 것인지 `GetWarpRecord()`를 활용해 확인할 수 있습니다. 1. 새로운 스크립트 컴포넌트를 생성하고, ![common](https://mod-file.dn.nexoncdn.co.kr/storage/icons/workspace/icon_asset_no.png "common") Common에 추가합니다.2. 월드에 입장한 유저가 워프로 입장했는지 확인할 수 있도록 아래와 같이 작성합니다.    ```lua    Event Handler:    [server only] [service: UserService]    HandleUserEnterEvent(UserEnterEvent event)    {        --------------- Native Event Sender Info ----------------        -- Sender: UserService        -- Space: Server        ---------------------------------------------------------                -- Parameters        -- local ProfileCode = event.ProfileCode        -- local UserId = event.UserId        ---------------------------------------------------------             local warpRecord = _TeleportService:GetWarpRecord(UserId)                -- 일반적인 월드 입장이라면, GetWarpRecord() 함수는 nil을 반환합니다.        if warpRecord == nil then             return        end    }    ```#### 워프해 온 월드 확인하기`GetWarpRecord()`를 활용해 워프로 이동한 유저가 어떤 월드에서 온 것인지 확인할 수 있습니다.1. 새로운 스크립트 컴포넌트를 생성하고, ![common](https://mod-file.dn.nexoncdn.co.kr/storage/icons/workspace/icon_asset_no.png "common") Common에 추가합니다.2. 워프로 이동한 유저가 어떤 월드로부터 왔는지 확인할 수 있도록 아래와 같이 작성합니다.    ```lua         Event Handler:    [server only] [service: UserService]    HandleUserEnterEvent(UserEnterEvent event)    {        --------------- Native Event Sender Info ----------------        -- Sender: UserService        -- Space: Server        ---------------------------------------------------------                -- Parameters        -- local ProfileCode = event.ProfileCode        -- local UserId = event.UserId        ---------------------------------------------------------             local warpRecord = _TeleportService:GetWarpRecord(UserId)        if warpRecord == nil then            return        end                 local currentWorldId = warpRecord.CurrentWorldId        local prevWorldId = warpRecord.PreviousWorldId -- 이전 월드를 확인할 수 있습니다.    }    ```#### 다른 월드에 데이터 전달하기유저의 데이터를 이동할 월드로 전달할 수 있습니다.1. 새로운 스크립트 컴포넌트를 생성합니다.2. 맵에 포탈을 추가한 뒤, 만든 스크립트 컴포넌트를 포탈에 추가합니다.3. 아래와 같이 `WarpUserToWorldAndWait()`와 `UtilLogic`을 활용해 다른 월드에 데이터를 전달할 수 있게 작성합니다.     ```lua    Property:    [Sync]    string WorldId = ""         Method:    [server]    void Warp(string userId)    {        local warpDataTable = {}        warpDataTable.testData = "test"                         local warpData= _UtilLogic:TableToString(warpDataTable)                         _TeleportService:WarpUserToWorldAndWait(userId, self.WorldId, warpData)    }         Event Handler:    [self]    HandlePortalUseEvent(PortalUseEvent event)    {        --------------- Native Event Sender Info ----------------        -- Sender: PortalComponent        -- Space: Client        ---------------------------------------------------------                -- Parameters        -- local PortalUser = event.PortalUser        ---------------------------------------------------------                self:Warp(PortalUser.Name)    }    ```#### 이전 월드에서 전달한 데이터 얻어오기이전 월드에서 전달한 값을 받을 수 있습니다.1. 새로운 스크립트 컴포넌트를 생성하고,  ![common](https://mod-file.dn.nexoncdn.co.kr/storage/icons/workspace/icon_asset_no.png "common") Common에 추가합니다2. 아래와 같이 `WarpUserToWorldAndWait()`와 `UtilLogic`을 활용해 작성합니다.     ```lua           Event Handler:    [server only] [service: UserService]    HandleUserEnterEvent(UserEnterEvent event)    {        --------------- Native Event Sender Info ----------------        -- Sender: UserService        -- Space: Server        ---------------------------------------------------------                -- Parameters        -- local ProfileCode = event.ProfileCode        -- local UserId = event.UserId        ---------------------------------------------------------                 local warpRecord = _TeleportService:GetWarpRecord(UserId)        if warpRecord == nil then            return        end                 local warpDataTable = _UtilLogic:StringToTable(warpRecord.Data)        log(warpDataTable.testData)    }    ```##### 참고 가이드* [텔레포트](/docs/?postId=59{"target":"_self"})maplestoryworlds-creators.nexon.com


이거보고 다른 월드 가는거 따라했는데 안되네

혹시 구현한사람 있음?