local MAP_IDS = { BIBLIOTEKA = 1266372430, -- f01 LOGOVO_TMY = 1266371662, -- f02 OBITEL_ZLA = 1266371918, -- f03 MESTO_VLASTI = 1266371150, -- f04 ZAMOK_TENEY = 1266371406, -- f05 ZAMOK_ADA = 1266370638, -- f06 ZABYTY_HRAM = 1266370894, -- f07 BITVA_VEKA = 1266370126, -- f08 DOLINA_MAGOV = 1266370382, -- f09 OSTROV_SOMNENIY = 1232817742, -- f20 DVOREC_ZVEZD = 3373741608, -- s53 HRAM_ELEMENTOV = 1174895199, -- s53_1 DMAP1 = 2962677420, -- Дьявольское ущелье DMAP2 = 2962677164, -- Пиратская бухта DMAP3A = 2919364867, -- Дворец Судьбы DMAP4A = 2835478787, -- Дворец Сокровищ DMAP5A = 2818701571, -- Дворец Демонов SOKROVISCHE_MONSTROV = 3373740840, -- s56 LEGENDA_SOKROVISCHE = 3510278698, -- s56_1 LABIRINT_MOROKA = 1845508352, -- n9 } local TELEPORT_POINTS = { [MAP_IDS.BIBLIOTEKA] = {x = 158.16, y = 0, z = 73.98}, [MAP_IDS.LOGOVO_TMY] = {x = 181.90, y = 0, z = 441.62}, [MAP_IDS.OBITEL_ZLA] = {x = 681.54, y = 0, z = 1110.70}, [MAP_IDS.MESTO_VLASTI] = {x = 91.0, y = 0, z = 41.0}, [MAP_IDS.ZAMOK_TENEY] = {x = 1280.34, y = 0, z = 452.54}, [MAP_IDS.ZAMOK_ADA] = {x = 246.68, y = 0, z = 54.46}, [MAP_IDS.ZABYTY_HRAM] = {x = 667.60, y = 0, z = 109.56}, [MAP_IDS.BITVA_VEKA] = {x = 958.50, y = 0, z = 113.76}, [MAP_IDS.DOLINA_MAGOV] = {x = 907.0, y = 0, z = 874.0}, [MAP_IDS.OSTROV_SOMNENIY] = {x = 958.50, y = 0, z = 113.76}, [MAP_IDS.DVOREC_ZVEZD] = {x = 91.34, y = 0, z = 214.56}, [MAP_IDS.HRAM_ELEMENTOV] = {x = 91.34, y = 0, z = 214.56}, [MAP_IDS.DMAP1] = {x = 941.42, y = 0, z = 108.02}, [MAP_IDS.DMAP2] = {x = 505.24, y = 0, z = 182.22}, [MAP_IDS.DMAP3A] = {x = 381.14, y = 0, z = 369.24}, [MAP_IDS.DMAP4A] = {x = 260.20, y = 0, z = 132.94}, [MAP_IDS.DMAP5A] = {x = 330.32, y = 0, z = 582.84}, [MAP_IDS.SOKROVISCHE_MONSTROV] = {x = 416.0, y = 0, z = 30.0}, [MAP_IDS.LEGENDA_SOKROVISCHE] = {x = 416.0, y = 0, z = 30.0}, [MAP_IDS.LABIRINT_MOROKA] = {x = 60.0, y = 0, z = 484.0}, } local function canTeleportFrom(mapId) return TELEPORT_POINTS[mapId] ~= nil end local function ensureStallClosed(MapID, InstanceID, RoleID) if role.IsRoleInStatus and role.IsRoleInStatus(RoleID, 1024) then role.CancelRoleStallState(MapID, InstanceID, RoleID) end end function S9100701_CanUse(MapID, InstanceID, SkillID, OwnerID, TargetID) if not canTeleportFrom(MapID) then return 23, false end return 0, false end function S9100701_Cast(MapID, InstanceID, SkillID, OwnerID) local point = TELEPORT_POINTS[MapID] if not point then return end ensureStallClosed(MapID, InstanceID, OwnerID) role.RoleGotoNewMap(MapID, InstanceID, OwnerID, MapID, point.x, point.y, point.z) end aux.RegisterSkillEvent(9100701, 0, "S9100701_CanUse") aux.RegisterSkillEvent(9100701, 1, "S9100701_Cast")