这篇文章纯粹是为了整理我阅读的"礼包业务"代码。页游中很常见"双击一个礼包获取礼包中的物品"。常见的有如下逻辑:
1.打开礼包后获取礼包中的所有物品。
2.打开礼包后获取礼包中的部分物品。在这些物品中,有些物品根据物品本身的概率来决定是否被抽取,有些物品则是从一组物品中抽取一个。比如"三级宝石"礼包,打开之后获取"三级攻击宝石"、"三级生命宝石"等其中之一。
3.打开礼包后获取礼包中的部分物品。这些物品是仅仅抽取每组中的一个物品,有概率决定。
下面则是我写的逻辑Lua代码。代码很简单,因此直接贴出。
--[[
日期:2014年3月24日
文件:从礼包中选择满足条件的物品。
]]
--礼包配置表,配置各种礼包
StaticAwardTable =
{
--grouptype = 0,获取此礼包中的所有物品。
-----------------------------------------------------
{
id = 11,
grouptype = 0,
award =
{
{ type = 0, count = 1, itemId = 110, quality = 0, strong = 0, bind = 1,},
{ type = 0, count = 1, itemId = 111, quality = 0, strong = 0, bind = 1,},
{ type = 0, count = 1, itemId = 112, quality = 0, strong = 0, bind = 1,},
{ type = 0, count = 1, itemId = 113, quality = 0, strong = 0, bind = 1,},
{ type = 0, count = 1, itemId = 114, quality = 0, strong = 0, bind = 1,},
},
},
--grouptype = 1,对礼包中的物品分组进行处理,相同组的物品应配置在一起。
-----------------------------------------------------
{
id = 22, --礼包id
grouptype = 1,
award =
{
--group = 0,根据单个物品的rate决定是否抽取此物品,由于概率最大值是10000,配置10000表示此物品必出。
{ type = 0, count = 1, itemId = 2201, quality = 0, strong = 0, bind = 1, group = 0, rate = 10000,}, --必出
{ type = 0, count = 1, itemId = 2202, q