IGE引擎支持对物品设置堆叠属性,背包内同类物品可以合并占用单个格子,用来存放药水、材料、任务道具等消耗品,减少背包格子占用,物品堆叠能力由数据库字段控制,同时配套专属脚本命令处理堆叠物品拾取、拆分、扣除等逻辑,不同版本IGE内核在堆叠上限与触发规则上存在细微差别,配置前需要核对M2支持参数。
打开物品数据库Items.db,使用数据库工具打开,找到需要开启堆叠的物品,重点修改堆叠数量字段,该字段用来设置单格最大存放数量,填写数值代表一格最多堆叠多少件物品。例如填写99,代表背包一格最多存放99个该物品,填写1则代表物品不可堆叠,大部分装备、武器、首饰默认堆叠数值为1。堆叠类型字段需要同步设置,0代表不可堆叠,1为普通堆叠,拾取同类物品自动合并到已有堆叠格子,2为任务专用堆叠道具,这类道具不会因为死亡掉落。
堆叠物品数据库配套字段,物品重量需要合理调整,堆叠物品的重量分为单份重量和总重量,IGE引擎读取单份重量,堆叠多个物品之后自动计算总负重。如果单份重量设置过高,堆叠几十件之后会直接超出角色负重上限,无法拾取。耐久字段,堆叠类消耗道具一般设置耐久0,堆叠物品不支持耐久属性,填写耐久数值不会生效,堆叠装备不推荐制作,耐久变化会造成堆叠分裂。物品外观代码保持一致,只有物品编号完全相同的物品才可以互相堆叠,名称相同编号不同的道具无法合并。
IGE引擎堆叠相关基础脚本指令,GETITEMCOUNT 物品名称,读取角色背包内该物品总数量,包含堆叠在一起的全部数量,不是读取格子数量。TAKEITEM 物品名称 数量,扣除背包指定物品,自动识别堆叠物品,优先从堆叠格子扣减数量,不需要手动拆分格子,扣减到0之后该格子物品自动消失。CHECKITEM 物品名称 数量,判断背包内是否拥有对应总数量,支持堆叠物品校验,只要背包合计数量达标就返回成立。
堆叠物品拾取逻辑配置,拾取物品时引擎自动判断物品是否开启堆叠属性,背包存在对应物品堆叠格子,并且格子内物品数量没有达到上限,拾取的物品会合并进当前堆叠格子,不会新开背包格子。背包没有对应堆叠格子,会占用新格子存放,格子已满时无法拾取。拾取触发段[@OnPickUpItem]可以增加堆叠拦截判断,限制部分场景下物品自动堆叠,通过脚本判断拾取物品名称,修改拾取数量,不满足条件直接取消拾取。
堆叠物品拆分脚本实现,IGE引擎没有内置拆分按钮指令,需要依靠NPC脚本实现手动拆分功能。NPC拆分脚本示例。
[@main]
#SAY
在这里拆分堆叠材料。\
<拆分材料/@splititem>
[@splititem]
#IF
CHECKITEM 材料 10
#ACT
TAKEITEM 材料 10
GIVE 材料 1
SENDMSG 7 成功拆分出1份材料。
脚本逻辑为先扣除指定数量堆叠物品,再发放单份物品,实现拆分效果。拆分时增加数量判断,防止背包物品不足执行扣除,也可以增加输入变量,自定义每次拆分数量。批量拆分场景增加循环判断,循环执行扣除与发放,直到剩余物品不足拆分数量停止。
堆叠物品扣除注意事项,TAKEITEM命令操作堆叠物品是按总数量扣除,不是按格子扣除。背包内有一格堆叠99个药水,执行TAKEITEM 药水 30,格子内剩余69个药水。如果执行TAKEITEM 药水 99,该格子物品直接清空。多个格子同时存在同类堆叠物品,引擎优先扣减数量最少的格子,再依次扣减其他格子。
堆叠物品常见限制规则,堆叠物品不支持强化、锻造、镶嵌这类改变物品属性的操作,一旦修改堆叠物品属性,物品编号发生变化,堆叠状态自动打散,拆分为单个物品。堆叠物品不支持交易拆分,交易窗口选取堆叠物品时,IGE引擎默认取出整格堆叠物品,想要交易部分数量,需要先通过NPC拆分道具。堆叠物品死亡掉落规则由数据库掉落字段控制,开启堆叠的消耗品,死亡掉落会按单个计算掉落数量,不是一次性掉落整格全部堆叠物品。
堆叠物品与任务脚本搭配使用,任务收集道具开启堆叠之后,使用CHECKITEM校验任务道具总数量,QUESTTAKE回收道具同样识别堆叠总数。任务道具堆叠上限不宜设置过大,推荐设置50以内,避免角色一次性存放大量任务道具,造成任务计数异常。
堆叠物品测试步骤,保存物品数据库,重载M2物品数据库,不需要重启服务端。刷入堆叠物品放入背包,拾取同类物品,确认物品自动合并到同一格子,数量正常累加。测试物品扣除,使用TAKEITEM扣除部分数量,查看格子剩余数量是否正确。测试负重校验,堆叠大量物品,确认负重满了之后无法继续拾取。测试拆分脚本,扣除对应数量,产出单份物品。测试死亡掉落,验证堆叠物品掉落逻辑符合预期。
堆叠物品常见问题排查,物品无法堆叠,优先核对物品数据库堆叠数量字段,确认数值大于1,物品编号是否一致,物品属性是否存在额外附加参数,带有附加属性的物品无法堆叠。拾取物品不合并格子,检查物品是否存在不同有效期、不同创建标记,带有标记的道具视为不同物品,无法合并。TAKEITEM扣除数量不对,区分总数量和格子数量,脚本判断时使用GETITEMCOUNT读取全部数量,不要依靠格子数量做判断。堆叠物品扣完之后格子残留,检查脚本扣除数量是否完全匹配,部分旧版本IGE引擎少量情况下会出现格子残留空物品,增加脚本清理冗余格子指令处理。
堆叠属性应用场景,药水、卷轴、材料、矿石这类无附加属性的消耗品适合开启堆叠。装备、首饰、特殊勋章不建议开启堆叠,装备带有属性标识,堆叠之后修改属性会出现异常。可以区分不同堆叠档位,低级材料堆叠上限99,中级材料堆叠上限50,高级稀有材料堆叠上限20,以此控制背包存储容量,调整道具产出节奏。
堆叠功能还可以搭配拾取过滤脚本,设置拾取堆叠物品自动合并,过滤掉不需要拾取的材料,减少背包快速堆满的情况。部分IGE版本支持堆叠物品提示,拾取堆叠道具时,屏幕提示获得物品总数量,而不是单份数量,调整提示脚本,方便查看拾取总量。使用堆叠物品能够减少大量材料占用背包格子,优化背包使用体验,编写相关脚本时重点区分物品总数量和背包格子数量两个不同概念,避免脚本逻辑出现判断错误。

