-- ======================================== -- КАРТА ДРЕВА ЖИЗНИ (Tree of Life Map) -- Настройки карты и обработка событий карты -- ======================================== -- ======================================== -- ТЕЛЕПОРТ НА СОБЫТИЕ -- ======================================== -- Диалог с NPC телепорта на Древо жизни -- Управляет входом игроков на карты события по уровням function c9010333_On_Talk(MapID, InstanceID, TargetID, TargetTypeID, RoleID, TalkIndex) -- Проверяем существование всех необходимых параметров if not MapID or not InstanceID or not TargetID or not TargetTypeID or not RoleID or not TalkIndex then return end local rolelevel = role.GetRoleLevel(MapID, InstanceID, RoleID) if TalkIndex == -1 then -- Основное меню телепорта local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950372) -- Описание события Древо жизни msg.AddMsgEvent(MsgID, 24, TargetID) msg.AddMsgEvent(MsgID, 21, 4) msg.AddMsgEvent(MsgID, 1, 100001) -- OK msg.AddMsgEvent(MsgID, 21, 5) msg.AddMsgEvent(MsgID, 1, 100002) -- Отмена msg.DispatchRoleMsgEvent(RoleID, MsgID) elseif TalkIndex == 4 then -- Телепортация на карту события по уровням if rolelevel and rolelevel > 59 and rolelevel < 80 then -- Игроки 60-79 уровня role.RoleGotoNewMap(MapID, InstanceID, RoleID, 2301826433, 1376, 6939, 761) elseif rolelevel and rolelevel > 79 and rolelevel < 95 then -- Игроки 80-94 уровня role.RoleGotoNewMap(MapID, InstanceID, RoleID, 2301826689, 1376, 6939, 761) elseif rolelevel and rolelevel > 94 then -- Игроки 95+ уровня role.RoleGotoNewMap(MapID, InstanceID, RoleID, 2301826945, 1376, 6939, 761) end end end -- Регистрация события диалога с телепортом aux.RegisterCreatureEvent(9010333, 7, "c9010333_On_Talk") -- ======================================== -- ФУНКЦИИ КАРТЫ -- ======================================== -- Получение инстанса карты для игрока function w01_GetOnePerfectMap(MapID, InstanceID, RoleID) -- Проверяем существование параметров if not MapID or not InstanceID or not RoleID then return 1 end return 1 end -- Регистрация событий получения инстанса aux.RegisterMapEvent("w01", 14, "w01_GetOnePerfectMap") aux.RegisterMapEvent("w02", 14, "w01_GetOnePerfectMap") aux.RegisterMapEvent("w03", 14, "w01_GetOnePerfectMap") -- Обработка отключения игрока во время онлайн function w01_CanEnterWhenOnline(MapID, RoleID) -- Проверяем существование параметров if not MapID or not RoleID then return 1 end return 1 end -- Регистрация событий отключения aux.RegisterMapEvent("w01", 12, "w01_CanEnterWhenOnline") aux.RegisterMapEvent("w02", 12, "w01_CanEnterWhenOnline") aux.RegisterMapEvent("w03", 12, "w01_CanEnterWhenOnline") -- Получение карты и координат для экспорта function w01_GetExporMapAndCoord(MapID, InstanceID, RoleID) -- Проверяем существование параметров if not MapID or not InstanceID or not RoleID then return 1, 3424073512, 610, 23094, 669 end return 1, 3424073512, 610, 23094, 669 end -- Регистрация событий экспорта aux.RegisterMapEvent("w01", 13, "w01_GetExporMapAndCoord") aux.RegisterMapEvent("w02", 13, "w01_GetExporMapAndCoord") aux.RegisterMapEvent("w03", 13, "w01_GetExporMapAndCoord") -- Проверка возможности входа на карту function w01_CanEnter(MapID, InstanceID, RoleID) -- Проверяем существование параметров if not MapID or not InstanceID or not RoleID then return 1 end return 1 end -- Регистрация событий проверки входа aux.RegisterMapEvent("w01", 15, "w01_CanEnter") aux.RegisterMapEvent("w02", 15, "w01_CanEnter") aux.RegisterMapEvent("w03", 15, "w01_CanEnter") -- Обработка выхода игрока с карты function w01_OnPlayerLeave(MapID, InstanceID, RoleID) -- Проверяем существование параметров if not MapID or not InstanceID or not RoleID then return end local bhave = role.IsRoleHaveBuff(MapID, InstanceID, RoleID, 98086) if bhave == true then unit.CancelBuff(MapID, InstanceID, RoleID, 9808601) end end -- Регистрация событий выхода с карты aux.RegisterMapEvent("w01", 3, "w01_OnPlayerLeave") aux.RegisterMapEvent("w02", 3, "w01_OnPlayerLeave") aux.RegisterMapEvent("w03", 3, "w01_OnPlayerLeave") -- Обработка входа игрока на карту function w01_OnPlayerEnter(MapID, InstanceID, RoleID) -- Проверяем существование параметров if not MapID or not InstanceID or not RoleID then return end unit.AddBuff(MapID, InstanceID, RoleID, 9808601, RoleID) end -- Регистрация событий входа на карту aux.RegisterMapEvent("w01", 2, "w01_OnPlayerEnter") aux.RegisterMapEvent("w02", 2, "w01_OnPlayerEnter") aux.RegisterMapEvent("w03", 2, "w01_OnPlayerEnter") -- ======================================== -- ОБРАБОТКА СМЕРТИ МОБОВ -- ======================================== -- Обработка смерти мобов с выдачей наград function c9010341(MapID, InstanceID, CreatureID, CreatureTypeID, KillerID) -- Проверяем существование необходимых параметров if not MapID or not InstanceID or not KillerID or KillerID <= 0 then return end role.AddRoleItem(MapID, InstanceID, KillerID, 6600555, 1, -1, 8, 420) end -- Регистрация событий смерти мобов aux.RegisterCreatureEvent(9010341, 4, "c9010341") function c9010342(MapID, InstanceID, CreatureID, CreatureTypeID, KillerID) -- Проверяем существование необходимых параметров if not MapID or not InstanceID or not KillerID or KillerID <= 0 then return end role.AddRoleItem(MapID, InstanceID, KillerID, 6600555, 1, -1, 8, 420) end aux.RegisterCreatureEvent(9010342, 4, "c9010342") function c9010390(MapID, InstanceID, CreatureID, CreatureTypeID, KillerID) -- Проверяем существование необходимых параметров if not MapID or not InstanceID or not KillerID or KillerID <= 0 then return end role.AddRoleItem(MapID, InstanceID, KillerID, 6600555, 1, -1, 8, 420) end aux.RegisterCreatureEvent(9010390, 4, "c9010390") function c9010343(MapID, InstanceID, CreatureID, CreatureTypeID, KillerID) -- Проверяем существование необходимых параметров if not MapID or not InstanceID or not KillerID or KillerID <= 0 then return end role.AddRoleItem(MapID, InstanceID, KillerID, 6600553, 1, -1, 8, 420) end aux.RegisterCreatureEvent(9010343, 4, "c9010343") function c9010344(MapID, InstanceID, CreatureID, CreatureTypeID, KillerID) -- Проверяем существование необходимых параметров if not MapID or not InstanceID or not KillerID or KillerID <= 0 then return end role.AddRoleItem(MapID, InstanceID, KillerID, 6600553, 1, -1, 8, 420) end aux.RegisterCreatureEvent(9010344, 4, "c9010344") function c9010391(MapID, InstanceID, CreatureID, CreatureTypeID, KillerID) -- Проверяем существование необходимых параметров if not MapID or not InstanceID or not KillerID or KillerID <= 0 then return end role.AddRoleItem(MapID, InstanceID, KillerID, 6600553, 1, -1, 8, 420) end aux.RegisterCreatureEvent(9010391, 4, "c9010391")