function I6601823_GiftBag(MapID, InstanceID, TypeID, TargetID) -- Удаляем предмет из инвентаря игрока role.RemoveFromRole(MapID, InstanceID, TargetID, 6601823, 99, 101) -- Генерация случайного числа local r = math.random(260) local temp = 0 local index = 1 -- Таблица предметов и их вероятностей local tbl = { {6601285, 1, 6, 20}, {6601285, 1, 6, 20}, {6601285, 1, 6, 20}, {6601285, 1, 6, 20}, {6601285, 1, 6, 20}, {6601285, 1, 6, 20}, {6601285, 1, 6, 20}, {6601285, 1, 6, 20}, {6601285, 1, 6, 20}, {6601285, 1, 6, 20}, {6601285, 1, 6, 20}, {6601285, 1, 6, 20}, {6601285, 1, 6, 20} } -- Определение индекса предмета на основе случайного числа for i = 1, 13 do temp = temp + tbl[i][4] if temp >= r then index = i break end end -- Отправка сообщения, если индекс корректен if index >= 1 then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 100, 280) --?????? msg.AddMsgEvent(MsgID, 2, TargetID) msg.AddMsgEvent(MsgID, 4, TypeID) msg.AddMsgEvent(MsgID, 4, tbl[index][1]) msg.DispatchWorldMsgEvent(MsgID) end -- Добавление предмета в инвентарь игрока role.AddRoleItem(MapID, InstanceID, TargetID, tbl[index][1], tbl[index][2], tbl[index][3], 8, 420) end function I6601823_CanUseGiftBag(MapID, InstanceID, TypeID, TargetID) local bRet, bIgnore = 0, false -- Проверка свободного места в инвентаре local FreeSize = role.GetBagFreeSize(TargetID) local b = role.GetRoleItemNum(TargetID, 6601823) if FreeSize < 1 then bRet = 40 end if b < 100 then bRet = 103 end return bRet, bIgnore end aux.RegisterItemEvent(6601823, 1, "I6601823_GiftBag") aux.RegisterItemEvent(6601823, 0, "I6601823_CanUseGiftBag")