-- ======================================== -- АКТИВНОСТЬ ДРЕВА ЖИЗНИ (Tree of Life Activity) -- Управление активностью события и диалогами -- ======================================== -- ======================================== -- КОНФИГУРАЦИЯ СОБЫТИЯ -- ======================================== -- Настройки активности Древа жизни function w01_OnStart(actID, MapID, InstanceID) -- Проверяем существование всех необходимых параметров if not actID or not MapID or not InstanceID then return end -- Создание инстанса карты события local instance = map.CreateInstance(MapID, InstanceID) if instance then -- Спавн мобов на карте tree_spawn(MapID, InstanceID) end end -- Завершение активности Древа жизни function w01_OnEnd(actID, MapID, InstanceID) -- Проверяем существование всех необходимых параметров if not actID or not MapID or not InstanceID then return end -- Удаление инстанса карты события map.DeleteInstance(MapID, InstanceID) end -- Регистрация событий активности aux.RegisterActEvent(9010350, 1, "w01_OnStart") aux.RegisterActEvent(9010350, 2, "w01_OnEnd") -- ======================================== -- ДИАЛОГИ С РАСТЕНИЯМИ -- ======================================== -- Диалог с Древесными грибами (9010345) -- Выдает предмет 6600548 и бафф 9860401 function c9010345_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 -- Проверяем валидность TargetID if not TargetID or TargetID <= 0 then return end if TalkIndex == -1 then -- Основное меню диалога local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950373) -- Описание Древесных грибов 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 -- Проверяем, есть ли уже бафф у игрока local bhave = role.IsRoleHaveBuff(MapID, InstanceID, RoleID, 9860401) if bhave == false then -- Выдаем предмет и бафф role.AddRoleItem(MapID, InstanceID, RoleID, 6600548, 1, -1, 8, 420) unit.AddBuff(MapID, InstanceID, RoleID, 9860401, RoleID) -- Сообщение об успешном получении local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950374) -- Сообщение о получении награды msg.DispatchRoleMsgEvent(RoleID, MsgID) else -- Сообщение о том, что бафф уже получен local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950375) -- Сообщение о том, что уже получено msg.DispatchRoleMsgEvent(RoleID, MsgID) end end end -- Диалог с Солнечными камышами (9010346) -- Выдает предмет 6600549 и бафф 9860401 function c9010346_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 -- Проверяем валидность TargetID if not TargetID or TargetID <= 0 then return end if TalkIndex == -1 then -- Основное меню диалога local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950376) -- Описание Солнечных камышей 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 -- Проверяем, есть ли уже бафф у игрока local bhave = role.IsRoleHaveBuff(MapID, InstanceID, RoleID, 9860401) if bhave == false then -- Выдаем предмет и бафф role.AddRoleItem(MapID, InstanceID, RoleID, 6600549, 1, -1, 8, 420) unit.AddBuff(MapID, InstanceID, RoleID, 9860401, RoleID) -- Сообщение об успешном получении local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950377) -- Сообщение о получении награды msg.DispatchRoleMsgEvent(RoleID, MsgID) else -- Сообщение о том, что бафф уже получен local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950378) -- Сообщение о том, что уже получено msg.DispatchRoleMsgEvent(RoleID, MsgID) end end end -- Диалог с Дикими лилиями (9010347) -- Выдает предмет 6600551 и бафф 9860401 function c9010347_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 -- Проверяем валидность TargetID if not TargetID or TargetID <= 0 then return end if TalkIndex == -1 then -- Основное меню диалога local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950379) -- Описание Диких лилий 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 -- Проверяем, есть ли уже бафф у игрока local bhave = role.IsRoleHaveBuff(MapID, InstanceID, RoleID, 9860401) if bhave == false then -- Выдаем предмет и бафф role.AddRoleItem(MapID, InstanceID, RoleID, 6600551, 1, -1, 8, 420) unit.AddBuff(MapID, InstanceID, RoleID, 9860401, RoleID) -- Сообщение об успешном получении local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950380) -- Сообщение о получении награды msg.DispatchRoleMsgEvent(RoleID, MsgID) else -- Сообщение о том, что бафф уже получен local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950381) -- Сообщение о том, что уже получено msg.DispatchRoleMsgEvent(RoleID, MsgID) end end end -- Диалог с Горящими факелами (9010351) -- Выдает предмет 6600556 и бафф 9860401 function c9010351_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 -- Проверяем валидность TargetID if not TargetID or TargetID <= 0 then return end if TalkIndex == -1 then -- Основное меню диалога local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950382) -- Описание Горящих факелов 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 -- Проверяем, есть ли уже бафф у игрока local bhave = role.IsRoleHaveBuff(MapID, InstanceID, RoleID, 9860401) if bhave == false then -- Выдаем предмет и бафф role.AddRoleItem(MapID, InstanceID, RoleID, 6600556, 1, -1, 8, 420) unit.AddBuff(MapID, InstanceID, RoleID, 9860401, RoleID) -- Сообщение об успешном получении local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950383) -- Сообщение о получении награды msg.DispatchRoleMsgEvent(RoleID, MsgID) else -- Сообщение о том, что бафф уже получен local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 20, 950384) -- Сообщение о том, что уже получено msg.DispatchRoleMsgEvent(RoleID, MsgID) end end end -- ======================================== -- РЕГИСТРАЦИЯ СОБЫТИЙ ДИАЛОГОВ -- ======================================== -- Регистрация событий диалогов с растениями aux.RegisterCreatureEvent(9010345, 7, "c9010345_On_Talk") aux.RegisterCreatureEvent(9010346, 7, "c9010346_On_Talk") aux.RegisterCreatureEvent(9010347, 7, "c9010347_On_Talk") aux.RegisterCreatureEvent(9010351, 7, "c9010351_On_Talk") -- ======================================== -- СИСТЕМА КВЕСТОВ -- ======================================== -- Выдача квеста при использовании предмета 6600550 function I6600550_GiftBag(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 -- Проверяем валидность TargetID if not TargetID or TargetID <= 0 then return end -- Выдаем квест игроку role.AddQuest(MapID, InstanceID, RoleID, 52098) end -- Выдача квеста при использовании предмета 6600552 function I6600552_GiftBag(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 -- Проверяем валидность TargetID if not TargetID or TargetID <= 0 then return end -- Выдаем квест игроку role.AddQuest(MapID, InstanceID, RoleID, 52098) end -- Регистрация событий использования предметов aux.RegisterItemEvent(6600550, 1, "I6600550_GiftBag") aux.RegisterItemEvent(6600552, 1, "I6600552_GiftBag") -- ======================================== -- ОБРАБОТКА ЗАВЕРШЕНИЯ КВЕСТА -- ======================================== -- Обработка завершения квеста 52098 -- Создает портал и удаляет факел function q52098_OnComplete(MapID, InstanceID, RoleID, QuestID) -- Проверяем существование всех необходимых параметров if not MapID or not InstanceID or not RoleID or RoleID <= 0 then return end -- Создаем портал на карте map.MapCreateCreature(MapID, InstanceID, 9010353, 1376, 6939, 761) -- Удаляем факел из инвентаря игрока role.RemoveFromRole(MapID, InstanceID, RoleID, 6600556, 1) end -- Регистрация события завершения квеста aux.RegisterQuestEvent(52098, 2, "q52098_OnComplete") -- ======================================== -- СПАВН МОБОВ -- ======================================== -- Создание мобов на карте события function tree_spawn(MapID, InstanceID) -- Проверяем существование всех необходимых параметров if not MapID or MapID <= 0 or not InstanceID then return end -- Создаем различные типы растений на карте map.MapCreateCreature(MapID, InstanceID, 9010345, 1376, 6939, 761) -- Древесные грибы map.MapCreateCreature(MapID, InstanceID, 9010346, 1376, 6939, 761) -- Солнечные камыши map.MapCreateCreature(MapID, InstanceID, 9010347, 1376, 6939, 761) -- Дикие лилии map.MapCreateCreature(MapID, InstanceID, 9010351, 1376, 6939, 761) -- Горящие факелы end