-- Функция для обработки использования подарочного пакета с ID 4700300 function I4700300_GiftBag(MapID, InstanceID, TypeID, TargetID) local r = math.random(12) local temp = 0 local index = 1 local tbl = { {8170138, 1, -1, 1}, {8170139, 1, -1, 1}, {8170140, 1, -1, 1}, {8170141, 1, -1, 1}, {8170142, 1, -1, 1}, {8170143, 1, -1, 1}, {8160053, 1, -1, 1}, {8160054, 1, -1, 1}, {8160055, 1, -1, 1}, {8160056, 1, -1, 1}, {8160057, 1, -1, 1}, {8160058, 1, -1, 1} } for i = 1, #tbl 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 -- Функция для проверки возможности использования подарочного пакета с ID 4700300 function I4700300_CanUseGiftBag(MapID, InstanceID, TypeID, TargetID) local bRet, bIgnore = 0, false local FreeSize = role.GetBagFreeSize(TargetID) if FreeSize < 1 then bRet = 40 end return bRet, bIgnore end -- Регистрация событий для подарочного пакета с ID 4700300 aux.RegisterItemEvent(4700300, 1, "I4700300_GiftBag") aux.RegisterItemEvent(4700300, 0, "I4700300_CanUseGiftBag") -- Функция для обработки использования подарочного пакета с ID 6602148 function I6602148_GiftBag(MapID, InstanceID, TypeID, TargetID) local r = math.random(12) local temp = 0 local index = 1 local tbl = { {5802612, 1, -1, 1}, {5802617, 1, -1, 1}, {5802622, 1, -1, 1}, {5802627, 1, -1, 1}, {5802632, 1, -1, 1}, {5802637, 1, -1, 1}, {5802642, 1, -1, 1}, {5802647, 1, -1, 1}, {5802652, 1, -1, 1}, {5802657, 1, -1, 1}, {5802662, 1, -1, 1}, {5802667, 1, -1, 1} } for i = 1, #tbl 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 -- Функция для проверки возможности использования подарочного пакета с ID 6602148 function I6602148_CanUseGiftBag(MapID, InstanceID, TypeID, TargetID) local bRet, bIgnore = 0, false local FreeSize = role.GetBagFreeSize(TargetID) if FreeSize < 1 then bRet = 40 end return bRet, bIgnore end -- Регистрация событий для подарочного пакета с ID 6602148 aux.RegisterItemEvent(6602148, 1, "I6602148_GiftBag") aux.RegisterItemEvent(6602148, 0, "I6602148_CanUseGiftBag") -- Функция для обработки использования подарочного пакета с ID 4700301 function I4700301_GiftBag(MapID, InstanceID, TypeID, TargetID) local class = role.GetRoleClass(TargetID) local elfsMax = 0 local elfsNotHave = {} local elfsAll = {} local elfIndex = 0 elfsAll[1] = {8160004, 8160008, 8160012, 8160016, 8160020} elfsAll[2] = {8170004, 8170008, 8170012, 8170016, 8170020, 8170028, 8170029} if class == 2 or class == 6 or class == 7 or class == 3 or class == 8 or class == 9 then elfIndex = 1 elseif class == 4 or class == 10 or class == 11 or class == 5 or class == 12 or class == 13 then elfIndex = 2 end for i = 1, #elfsAll[elfIndex] do if role.GetRoleItemNum(TargetID, elfsAll[elfIndex][i]) > elfsMax then elfsMax = role.GetRoleItemNum(TargetID, elfsAll[elfIndex][i]) end end for i = 1, #elfsAll[elfIndex] do if role.GetRoleItemNum(TargetID, elfsAll[elfIndex][i]) < elfsMax then elfsNotHave[#elfsNotHave + 1] = elfsAll[elfIndex][i] end end if #elfsNotHave == 0 then elfsNotHave = elfsAll[elfIndex] end local result = math.random(1, #elfsNotHave) role.AddRoleItem(MapID, InstanceID, TargetID, elfsNotHave[result], 1, 6, 8, 420) end -- Функция для проверки возможности использования подарочного пакета с ID 4700301 function I4700301_CanUse(MapID, InstanceID, TypeID, TargetID) local bRet, bIgnore = 0, false local FreeSize = role.GetBagFreeSize(TargetID) if FreeSize < 1 then bRet = 40 end local class = role.GetRoleClass(TargetID) if class == 1 then bRet = 46 end return bRet, bIgnore end -- Регистрация событий для подарочного пакета с ID 4700301 aux.RegisterItemEvent(4700301, 1, "I4700301_GiftBag") aux.RegisterItemEvent(4700301, 0, "I4700301_CanUse") -- Функция для обработки использования подарочного пакета с ID 4700302 function I4700302_GiftBag(MapID, InstanceID, TypeID, TargetID) local class = role.GetRoleClass(TargetID) local elfsMax = 0 local elfsNotHave = {} local elfsAll = {} local elfIndex = 0 elfsAll[1] = {8160039, 8160040, 8160041, 8160042, 8160043} elfsAll[2] = {8170124, 8170125, 8170126, 8170127, 8170128, 8170144} if class == 2 or class == 6 or class == 7 or class == 3 or class == 8 or class == 9 then elfIndex = 1 elseif class == 4 or class == 10 or class == 11 or class == 5 or class == 12 or class == 13 then elfIndex = 2 end for i = 1, #elfsAll[elfIndex] do if role.GetRoleItemNum(TargetID, elfsAll[elfIndex][i]) > elfsMax then elfsMax = role.GetRoleItemNum(TargetID, elfsAll[elfIndex][i]) end end for i = 1, #elfsAll[elfIndex] do if role.GetRoleItemNum(TargetID, elfsAll[elfIndex][i]) < elfsMax then elfsNotHave[#elfsNotHave + 1] = elfsAll[elfIndex][i] end end if #elfsNotHave == 0 then elfsNotHave = elfsAll[elfIndex] end local result = math.random(1, #elfsNotHave) role.AddRoleItem(MapID, InstanceID, TargetID, elfsNotHave[result], 1, 5, 8, 420) end -- Функция для проверки возможности использования подарочного пакета с ID 4700302 function I4700302_CanUse(MapID, InstanceID, TypeID, TargetID) local bRet, bIgnore = 0, false local FreeSize = role.GetBagFreeSize(TargetID) if FreeSize < 1 then bRet = 40 end local class = role.GetRoleClass(TargetID) if class == 1 then bRet = 46 end return bRet, bIgnore end -- Регистрация событий для подарочного пакета с ID 4700302 aux.RegisterItemEvent(4700302, 1, "I4700302_GiftBag") aux.RegisterItemEvent(4700302, 0, "I4700302_CanUse")