-- Функция проверки возможности использования инструментов для добычи ресурсов function Imining_CanUse(MapID, InstanceID, TypeID, TargetID) -- Проверяем корректность входных параметров if not MapID or not InstanceID or not TypeID or not TargetID then return 43, false end -- Получаем количество свободных слотов в инвентаре игрока local FreeSize = role.GetBagFreeSize(TargetID) if FreeSize == nil then return 43, false end -- Получаем уровень персонажа игрока local rolelevel = role.GetRoleLevel(MapID, InstanceID, TargetID) if rolelevel == nil then return 43, false end -- Если в инвентаре нет свободного места, отправляем сообщение об ошибке if FreeSize < 1 then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 26, 100003) -- Недостаточно места в инвентаре для использования этого предмета msg.AddMsgEvent(MsgID, 9, 1) msg.DispatchRoleMsgEvent(TargetID, MsgID) return 43, false end -- Если уровень персонажа ниже 20, отправляем сообщение об ошибке if rolelevel < 20 then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 26, 301003) -- Ваш уровень слишком низкий. Минимальный уровень для использования 20. msg.DispatchRoleMsgEvent(TargetID, MsgID) return 32, false end -- Проверяем, находится ли игрок в специальной зоне для майнинга if MapID == 3934900289 then local bCanUse1 = map.IsInArea(MapID, InstanceID, TargetID, 160) local bCanUse2 = map.IsInArea(MapID, InstanceID, TargetID, 161) local bCanUse3 = map.IsInArea(MapID, InstanceID, TargetID, 163) if bCanUse1 or bCanUse2 or bCanUse3 then return 0, false end end -- Если игрок находится вне допустимой зоны, возвращаем ошибку return 43, false end -- Функция обработки использования инструмента для майнинга с ID 3050033 function I3050033_OnUse(MapID, InstanceID, TypeID, TargetID) -- Проверяем корректность входных параметров if not MapID or not InstanceID or not TypeID or not TargetID then return end -- Генерируем случайное число для определения награды local rand = math.random(10000) -- Определяем награду на основе случайного числа if rand >= 1 and rand <= 9780 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050001, 2, -1, 8, 420) -- 97.8% - обычный ресурс elseif rand >= 9781 and rand <= 9790 then role.AddRoleItem(MapID, InstanceID, TargetID, 3030102, 1, -1, 8, 420) -- 0.1% - редкий ресурс elseif rand >= 9791 and rand <= 9800 then role.AddRoleItem(MapID, InstanceID, TargetID, 3030103, 1, -1, 8, 420) -- 0.1% - редкий ресурс else role.AddRoleItem(MapID, InstanceID, TargetID, 3050001, 1, -1, 8, 420) -- 2% - обычный ресурс (резервный вариант) end -- Отправляем уведомление клиенту о результате добычи role.FishingSendClient(MapID, InstanceID, TargetID) end -- Функция обработки использования инструмента для майнинга с ID 6600466 function I6600466_OnUse(MapID, InstanceID, TypeID, TargetID) -- Проверяем корректность входных параметров if not MapID or not InstanceID or not TypeID or not TargetID then return end -- Генерируем случайное число для определения награды local rand = math.random(10000) -- Определяем награду на основе случайного числа if rand >= 1 and rand <= 9780 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050002, 1, -1, 8, 420) -- 97.8% - обычный ресурс elseif rand >= 9781 and rand <= 9790 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050002, 1, -1, 8, 420) -- 0.1% - обычный ресурс elseif rand >= 9791 and rand <= 9800 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050002, 1, -1, 8, 420) -- 0.1% - обычный ресурс elseif rand >= 9801 and rand <= 10000 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050002, 1, -1, 8, 420) -- 2% - обычный ресурс end -- Отправляем уведомление клиенту о результате добычи role.FishingSendClient(MapID, InstanceID, TargetID) end -- Функция обработки использования инструмента для майнинга с ID 5000025 function I5000025_OnUse(MapID, InstanceID, TypeID, TargetID) -- Проверяем корректность входных параметров if not MapID or not InstanceID or not TypeID or not TargetID then return end -- Генерируем случайное число для определения награды local rand = math.random(10000) -- Определяем награду на основе случайного числа if rand >= 1 and rand <= 9780 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050001, 2, -1, 8, 420) -- 97.8% - обычный ресурс elseif rand >= 9781 and rand <= 9790 then role.AddRoleItem(MapID, InstanceID, TargetID, 3030102, 1, -1, 8, 420) -- 0.1% - редкий ресурс elseif rand >= 9791 and rand <= 9800 then role.AddRoleItem(MapID, InstanceID, TargetID, 3030103, 1, -1, 8, 420) -- 0.1% - редкий ресурс else role.AddRoleItem(MapID, InstanceID, TargetID, 3050001, 1, -1, 8, 420) -- 2% - обычный ресурс (резервный вариант) end -- Отправляем уведомление клиенту о результате добычи role.FishingSendClient(MapID, InstanceID, TargetID) end -- Функция обработки использования инструмента для майнинга с ID 3050032 function I3050032_OnUse(MapID, InstanceID, TypeID, TargetID) -- Проверяем корректность входных параметров if not MapID or not InstanceID or not TypeID or not TargetID then return end -- Генерируем случайное число для определения награды local rand = math.random(10000) -- Определяем награду на основе случайного числа if rand >= 1 and rand <= 8000 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050001, 2, -1, 8, 420) -- 80% - обычный ресурс elseif rand >= 8001 and rand <= 8002 then role.AddRoleItem(MapID, InstanceID, TargetID, 3030102, 1, -1, 8, 420) -- 0.02% - редкий ресурс elseif rand >= 8003 and rand <= 8004 then role.AddRoleItem(MapID, InstanceID, TargetID, 3030103, 1, -1, 8, 420) -- 0.02% - редкий ресурс elseif rand >= 8005 and rand <= 8205 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050001, 1, -1, 8, 420) -- 2.01% - обычный ресурс elseif rand >= 8206 and rand <= 10000 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050002, 1, -1, 8, 420) -- 17.96% - другой ресурс end -- Отправляем уведомление клиенту о результате добычи role.FishingSendClient(MapID, InstanceID, TargetID) end -- Функция обработки использования инструмента для майнинга с ID 3050031 function I3050031_OnUse(MapID, InstanceID, TypeID, TargetID) -- Проверяем корректность входных параметров if not MapID or not InstanceID or not TypeID or not TargetID then return end -- Генерируем случайное число для определения награды local rand = math.random(10000) -- Определяем награду на основе случайного числа if rand >= 1 and rand <= 8000 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050001, 1, -1, 8, 420) -- 80% - обычный ресурс elseif rand >= 8001 and rand <= 8002 then role.AddRoleItem(MapID, InstanceID, TargetID, 3030102, 1, -1, 8, 420) -- 0.02% - редкий ресурс elseif rand >= 8003 and rand <= 8004 then role.AddRoleItem(MapID, InstanceID, TargetID, 3030103, 1, -1, 8, 420) -- 0.02% - редкий ресурс elseif rand >= 8005 and rand <= 8205 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050001, 1, -1, 8, 420) -- 2.01% - обычный ресурс elseif rand >= 8206 and rand <= 10000 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050002, 1, -1, 8, 420) -- 17.96% - другой ресурс end -- Отправляем уведомление клиенту о результате добычи role.FishingSendClient(MapID, InstanceID, TargetID) end -- Функция обработки использования инструмента для майнинга с ID 3050030 function I3050030_OnUse(MapID, InstanceID, TypeID, TargetID) -- Проверяем корректность входных параметров if not MapID or not InstanceID or not TypeID or not TargetID then return end -- Добавляем базовую награду за майнинг role.AddRoleItem(MapID, InstanceID, TargetID, 3050001, 1, -1, 8, 420) -- Проверяем и выполняем квестовую награду, если игрок имеет соответствующий квест if role.IsRoleHaveQuest(MapID, InstanceID, TargetID, 20210) then role.QuestAddRoleItem(MapID, InstanceID, TargetID, 20210, 6601744, 1, -1, 420) end -- Отправляем уведомление клиенту о результате добычи role.FishingSendClient(MapID, InstanceID, TargetID) end -- Функция обработки использования инструмента для майнинга с ID 5000026 function I5000026_OnUse(MapID, InstanceID, TypeID, TargetID) -- Проверяем корректность входных параметров if not MapID or not InstanceID or not TypeID or not TargetID then return end -- Генерируем случайное число для определения награды local rand = math.random(10000) -- Определяем награду на основе случайного числа if rand >= 1 and rand <= 8000 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050001, 2, -1, 8, 420) -- 80% - обычный ресурс elseif rand >= 8001 and rand <= 8002 then role.AddRoleItem(MapID, InstanceID, TargetID, 3030102, 1, -1, 8, 420) -- 0.02% - редкий ресурс elseif rand >= 8003 and rand <= 8004 then role.AddRoleItem(MapID, InstanceID, TargetID, 3030103, 1, -1, 8, 420) -- 0.02% - редкий ресурс elseif rand >= 8005 and rand <= 8205 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050001, 1, -1, 8, 420) -- 2.01% - обычный ресурс elseif rand >= 8206 and rand <= 10000 then role.AddRoleItem(MapID, InstanceID, TargetID, 3050002, 1, -1, 8, 420) -- 17.96% - другой ресурс end -- Отправляем уведомление клиенту о результате добычи role.FishingSendClient(MapID, InstanceID, TargetID) end -- Функция обработки использования инструмента для майнинга с ID 6600784 function I6600784_OnUse(MapID, InstanceID, TypeID, TargetID) -- Проверяем корректность входных параметров if not MapID or not InstanceID or not TypeID or not TargetID then return end -- Генерируем случайное число для определения награды local rand = math.random(10000) -- Определяем награду на основе случайного числа (все варианты дают один предмет с разными количествами) if rand >= 1 and rand <= 8000 then role.AddRoleItem(MapID, InstanceID, TargetID, 6600384, 1, -1, 8, 420) -- 80% - ресурс elseif rand >= 8001 and rand <= 8002 then role.AddRoleItem(MapID, InstanceID, TargetID, 6600384, 1, -1, 8, 420) -- 0.02% - ресурс elseif rand >= 8003 and rand <= 8004 then role.AddRoleItem(MapID, InstanceID, TargetID, 6600384, 1, -1, 8, 420) -- 0.02% - ресурс elseif rand >= 8005 and rand <= 8205 then role.AddRoleItem(MapID, InstanceID, TargetID, 6600384, 2, -1, 8, 420) -- 2.01% - двойной ресурс elseif rand >= 8206 and rand <= 10000 then role.AddRoleItem(MapID, InstanceID, TargetID, 6600384, 1, -1, 8, 420) -- 17.96% - ресурс end -- Отправляем уведомление клиенту о результате добычи role.FishingSendClient(MapID, InstanceID, TargetID) end -- Функция обработки использования инструмента для майнинга с ID 6600785 function I6600785_OnUse(MapID, InstanceID, TypeID, TargetID) -- Проверяем корректность входных параметров if not MapID or not InstanceID or not TypeID or not TargetID then return end -- Генерируем случайное число для определения награды local rand = math.random(10000) -- Определяем награду на основе случайного числа (все варианты дают один предмет с разными количествами) if rand >= 1 and rand <= 8000 then role.AddRoleItem(MapID, InstanceID, TargetID, 6600384, 1, -1, 8, 420) -- 80% - ресурс elseif rand >= 8001 and rand <= 8002 then role.AddRoleItem(MapID, InstanceID, TargetID, 6600384, 1, -1, 8, 420) -- 0.02% - ресурс elseif rand >= 8003 and rand <= 8004 then role.AddRoleItem(MapID, InstanceID, TargetID, 6600384, 1, -1, 8, 420) -- 0.02% - ресурс elseif rand >= 8005 and rand <= 8205 then role.AddRoleItem(MapID, InstanceID, TargetID, 6600384, 2, -1, 8, 420) -- 2.01% - двойной ресурс elseif rand >= 8206 and rand <= 10000 then role.AddRoleItem(MapID, InstanceID, TargetID, 6600384, 1, -1, 8, 420) -- 17.96% - ресурс end -- Отправляем уведомление клиенту о результате добычи role.FishingSendClient(MapID, InstanceID, TargetID) end -- Регистрация событий для инструментов майнинга aux.RegisterItemEvent(3050030, 0, "Imining_CanUse") aux.RegisterItemEvent(3050031, 0, "Imining_CanUse") aux.RegisterItemEvent(3050032, 0, "Imining_CanUse") aux.RegisterItemEvent(3050033, 0, "Imining_CanUse") aux.RegisterItemEvent(3050030, 1, "I3050030_OnUse") aux.RegisterItemEvent(3050031, 1, "I3050031_OnUse") aux.RegisterItemEvent(3050032, 1, "I3050032_OnUse") aux.RegisterItemEvent(3050033, 1, "I3050033_OnUse") aux.RegisterItemEvent(5000026, 1, "I5000026_OnUse") aux.RegisterItemEvent(5000026, 0, "Imining_CanUse") aux.RegisterItemEvent(6600784, 1, "I6600784_OnUse") aux.RegisterItemEvent(6600784, 0, "Imining_CanUse") aux.RegisterItemEvent(6600785, 1, "I6600785_OnUse") aux.RegisterItemEvent(6600785, 0, "Imining_CanUse") aux.RegisterItemEvent(5000025, 1, "I5000025_OnUse") aux.RegisterItemEvent(5000025, 0, "Imining_CanUse") aux.RegisterItemEvent(6600466, 0, "Imining_CanUse") aux.RegisterItemEvent(6600466, 1, "I6600466_OnUse")