游戏中,玩家物品的管理是通过每个玩家独有的物品管理进程,结合ETS缓存表实现的。
物品相关模块有mod_goods.erl,lib_goods.erl,goods_util.erl和lib_make.erl
mod_goods.erl:物品管理进程模块,负责创建进程,进程内接收消息并调用相关操作。
lib_goods.erl:负责物品的发放和删除,物品属性修改,背包内物品更改(物品堆叠处理),掉落管理,
goods_util.erl:负责服务器启动时和用户登录时物品数据的初始化;通过指定id或者属性获取对应的物品
lib_make.erl:负责物品品质升级,强化,打洞,镶嵌,洗练的计算
游戏中的物品主要分为两种:物品原型(type_goods)和玩家所属物品(goods)。当玩家获得物品的时候,需要根据物品原型生成相应的玩家所属物品,将一些未确定的物品属性确定下来,将其和玩家id进行关联,并将物品id记录到玩家背包中。
物品的初始化分为两个步骤:
1.服务器启动时的初始化:在mod_kenel.erl中调用init_goods(),将数据库中的物品原型数据和物品属性加载进ETS缓存。
2.玩家登录时的初始化:玩家登录时调用mod_goods:start(PlayerId,CellNum,Equip)创建物品管理进程,并返回Pid,保存在#player_status.goods_pid中。
物品管理进程初始化方法:
init([PlayerId,CellNum,