-- Generic function to handle gift bag logic function HandleGiftBag(MapID, InstanceID, TargetID, itemID, itemCount, quality, logMode) role.AddRoleItem(MapID, InstanceID, TargetID, itemID, itemCount, quality, 8, logMode) end -- Generic function to check if the gift bag can be used function CanUseGiftBag(MapID, InstanceID, TargetID, requiredFreeSize) local bRet, bIgnore = 0, false local FreeSize = role.GetBagFreeSize(TargetID) if FreeSize < requiredFreeSize then bRet = 40 end return bRet, bIgnore end -- Define functions for each gift bag type function I4700032_GiftBag(MapID, InstanceID, TypeID, TargetID) HandleGiftBag(MapID, InstanceID, TargetID, 8400001, 1, -1, 420) end function I4700032_CanUseGiftBag(MapID, InstanceID, TypeID, TargetID) return CanUseGiftBag(MapID, InstanceID, TargetID, 2) end function I4700033_GiftBag(MapID, InstanceID, TypeID, TargetID) HandleGiftBag(MapID, InstanceID, TargetID, 8400002, 1, -1, 420) end function I4700033_CanUseGiftBag(MapID, InstanceID, TypeID, TargetID) return CanUseGiftBag(MapID, InstanceID, TargetID, 2) end function I4700034_GiftBag(MapID, InstanceID, TypeID, TargetID) HandleGiftBag(MapID, InstanceID, TargetID, 8400003, 1, -1, 420) end function I4700034_CanUseGiftBag(MapID, InstanceID, TypeID, TargetID) return CanUseGiftBag(MapID, InstanceID, TargetID, 2) end function I4700035_GiftBag(MapID, InstanceID, TypeID, TargetID) HandleGiftBag(MapID, InstanceID, TargetID, 8400004, 1, -1, 420) end function I4700035_CanUseGiftBag(MapID, InstanceID, TypeID, TargetID) return CanUseGiftBag(MapID, InstanceID, TargetID, 2) end function I4700276_GiftBag(MapID, InstanceID, TypeID, TargetID) local gold = math.random(1, 99) role.AddRoleSilver(MapID, InstanceID, TargetID, gold * 10000, 1, -1, 8, 420) role.AddRoleItem(MapID, InstanceID, TargetID, 4700278, 3, -1, 8, 420) role.AddRoleItem(MapID, InstanceID, TargetID, 4820081, 10, -1, 8, 420) end function I4700276_CanUseGiftBag(MapID, InstanceID, TypeID, TargetID) local bRet, bIgnore = 0, false local FreeSize = role.GetBagFreeSize(TargetID) local freegold = role.GetRoleSilver(MapID, InstanceID, TargetID) if FreeSize < 2 then bRet = 40 elseif freegold > 9999009999 then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 26, 306002) -- 需要至少x格背包空间才可继续操作 msg.DispatchRoleMsgEvent(TargetID, MsgID) bRet = 999 end return bRet, bIgnore end function I4800114_CanUse(MapID, InstanceID, TypeID, RoleID, TargetID) local bRet, bIgnore = 0, false local FreeSize = role.GetBagFreeSize(TargetID) local LoverID = role.GetRoleLoverID(MapID, InstanceID, RoleID) if FreeSize < 1 then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 26, 100010) -- 目标玩家行囊的空间不足 msg.AddMsgEvent(MsgID, 9, 1) msg.DispatchRoleMsgEvent(RoleID, MsgID) bRet = 32 elseif LoverID ~= nil and LoverID == TargetID then bRet = 32 end return bRet, bIgnore end function I4800114_OnUse(MapID, InstanceID, TypeID, RoleID, TargetID) local Target_MapID, Target_InstanceID = role.GetRoleMapID(TargetID) role.AddRoleItem(Target_MapID, Target_InstanceID, TargetID, 4800115, 1, -1, 8, 420) end function I4800115_CanUse(MapID, InstanceID, ItemTypeID, TargetID) return CanUseGiftBag(MapID, InstanceID, TargetID, 3) end function I4800115_Use(MapID, InstanceID, ItemTypeID, TargetID) local num = math.random(100) role.AddRoleItem(MapID, InstanceID, TargetID, 4800116, 5, -1, 8, 420) role.AddRoleItem(MapID, InstanceID, TargetID, 4800117, 5, -1, 8, 420) if num < 20 then local ran = math.random(100) if ran < 50 then role.AddRoleItem(MapID, InstanceID, TargetID, 4100101, 1, -1, 8, 420) elseif ran < 54 then role.AddRoleItem(MapID, InstanceID, TargetID, 4100102, 1, -1, 8, 420) elseif ran < 58 then role.AddRoleItem(MapID, InstanceID, TargetID, 4100103, 1, -1, 8, 420) elseif ran < 62 then role.AddRoleItem(MapID, InstanceID, TargetID, 4100104, 1, -1, 8, 420) elseif ran < 66 then role.AddRoleItem(MapID, InstanceID, TargetID, 4100105, 1, -1, 8, 420) elseif ran < 70 then role.AddRoleItem(MapID, InstanceID, TargetID, 4100106, 1, -1, 8, 420) elseif ran < 74 then role.AddRoleItem(MapID, InstanceID, TargetID, 4100107, 1, -1, 8, 420) elseif ran < 84 then role.AddRoleItem(MapID, InstanceID, TargetID, 4400049, 1, -1, 8, 420) else role.AddRoleItem(MapID, InstanceID, TargetID, 3090017, 1, -1, 8, 420) end end end -- Register item events aux.RegisterItemEvent(4700032, 1, "I4700032_GiftBag") aux.RegisterItemEvent(4700032, 0, "I4700032_CanUseGiftBag") aux.RegisterItemEvent(4700033, 1, "I4700033_GiftBag") aux.RegisterItemEvent(4700033, 0, "I4700033_CanUseGiftBag") aux.RegisterItemEvent(4700034, 1, "I4700034_GiftBag") aux.RegisterItemEvent(4700034, 0, "I4700034_CanUseGiftBag") aux.RegisterItemEvent(4700035, 1, "I4700035_GiftBag") aux.RegisterItemEvent(4700035, 0, "I4700035_CanUseGiftBag") aux.RegisterItemEvent(4700276, 1, "I4700276_GiftBag") aux.RegisterItemEvent(4700276, 0, "I4700276_CanUseGiftBag") aux.RegisterItemEvent(4800114, 0, "I4800114_CanUse") aux.RegisterItemEvent(4800114, 1, "I4800114_OnUse") aux.RegisterItemEvent(4800115, 0, "I4800115_CanUse") aux.RegisterItemEvent(4800115, 1, "I4800115_Use")