dasfwa3w3_Num = {} -- Таблица предметов и их вероятностей local items = { {itemID = 4820105, chance = 1000}, {itemID = 4820162, chance = 3}, {itemID = 4820131, chance = 15}, {itemID = 4820136, chance = 1}, {itemID = 4820120, chance = 3}, {itemID = 4820121, chance = 3}, {itemID = 6600155, chance = 9} } -- Функция проверки возможности использования нового майнинга function dasfwa3w3_CanUse(MapID, InstanceID, TypeID, TargetID) -- Проверка свободного места в инвентаре local FreeSize = role.GetBagFreeSize(TargetID) 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 -- Разрешенные карты if MapID == 52649974 or MapID == 52649206 or MapID == 52649462 then return 0, false end -- На остальных картах запрещено local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 26, 100003) msg.AddMsgEvent(MsgID, 9, 1) msg.DispatchRoleMsgEvent(TargetID, MsgID) return 32, false end -- Функция использования нового майнинга function dasfwa3w3_OnUse(MapID, InstanceID, TypeID, TargetID) if not (MapID == 52649974 or MapID == 52649206 or MapID == 52649462) then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 26, 100003) msg.AddMsgEvent(MsgID, 9, 1) msg.DispatchRoleMsgEvent(TargetID, MsgID) return end local ItemID = 4820105 local curDate = tonumber(os.date("%j")) -- Инициализация счетчиков для нового дня if dasfwa3w3_Num.date == nil or dasfwa3w3_Num.date ~= curDate then dasfwa3w3_Num = { date = curDate, tuzhi = 0, huozhong1 = 0, huozhong2 = 0, yaoshi = 0 } end -- Определение вероятности выпадения предметов local totalChanceSum = 0 for _, item in ipairs(items) do totalChanceSum = totalChanceSum + item.chance end local index = math.random(totalChanceSum) local totalChance = 0 -- Определение индекса выпадения for i, item in ipairs(items) do totalChance = totalChance + item.chance if index <= totalChance then ItemID = item.itemID break end end -- Дополнительные шансы для предмета 4820105 if ItemID == 4820105 then if math.random(30) == 7 then ItemID = ItemID + 1 elseif math.random(20) == 7 then ItemID = ItemID + 2 end end -- Добавление предмета игроку role.AddRoleItem(MapID, InstanceID, TargetID, ItemID, 1, -1, 8, 420) role.FishingSendClient(MapID, InstanceID, TargetID) -- Отправка сообщения клиенту end -- Регистрация событий для предметов aux.RegisterItemEvent(6600154, 0, "dasfwa3w3_CanUse") aux.RegisterItemEvent(6600154, 1, "dasfwa3w3_OnUse")