北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 4429|回复: 4

[模块]随身物品信息

[复制链接]
发表于 2009-5-4 01:20:33 | 显示全部楼层 |阅读模式
Inventory 模块 管理随身物品
数据结构
Inventory.items   随身物品数组,以id为key,value结构为{name=大砍刀,id={dakan dao,dao,blade},num=1},num为数量
           其中id项为数组,对应此一物品的所有id
Inventory.wield   装备武器,Inventory.wield[left]左手,[right]右手
Inventory.wear    衣服盔甲,数组,每一元素结构{name=衣服,id=cloth}
辅助功能
按id划分物品,给出每种id的物品数量
接口
function Inventory.CheckItems ()
    更新Inventory数据,从新获取随身物品信息
function Inventory.ShowItems ()
    将Inventory数据打印到output
function Inventory.GetPartition (types)
    按指定types划分随身物品
    参数为数组,每一元素对应一种物品id,如sword,blade,armor
使用
a) 首先调用Inventory.CheckItems (),获取随身物品信息
  此时Inventory下items,wield,wear域数据被填充
  可通过访问以上三域获取物品信息,如确定 卖东西,买鱼饵,金疮药 等的数量
b) 划分随身物品
  根据随身物品全id划分物品
  调用Inventory.GetPartition (types), 参数形如{sword,blade,shu}的数组
  返回对应每一id的物品数量,形如{sword=1,blade=1,shu=2}
  如有若干把sword,若干把blade需要鉴定时,可使用本函数,获取每种物品的数量,然后遍历
  这种划分结果是无交集的,当一个物品计入一种id时,就不会再计入其他种类,有需要可自行修改
  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-5-4 01:28:21 | 显示全部楼层
Log举例,这里没有手动输入任何东西,仅仅是三次函数调用
最后的划分partition中
 一把大砍刀一把钢刀划入blade项
 两把青锋剑一把长剑划入sword项
 一本法华经,一本道德经划入shu项
call Inventory.CheckItems()
i
id
say inventory off
你身上带著下列这些东西(负重 62%):
钢刀(Blade)
长剑(Changjian)
法华经(Shu)
九十七文铜板(Coin)
二十一两白银(Silver)
二两黄金(Gold)
道德经(Shu)
二把青锋剑(Qingfeng sword)
北侠战甲(Pkuxkx zhanjia)
大砍刀(Dakan dao)
侠客行战靴(Xkx shoes)
布衣(Cloth)
-------------------------------------------
你右手拿着:大砍刀(Dakan dao)
你左手拿着:青锋剑(Qingfeng sword)
-------------------------------------------
你身上穿着:
北侠战甲(Pkuxkx zhanjia)
侠客行战靴(Xkx shoes)
布衣(Cloth)
> 你(你)身上携带物品的别称如下(右方) :
钢刀                 = blade
长剑                 = changjian, sword
法华经               = shu, book
铜板   = coin, coins, coin_money
白银 = silver, ingot, silver_money
黄金 = gold, ingot, gold_money
道德经               = shu, book
青锋剑               = qingfeng sword, jian, sword
北侠战甲             = pkuxkx zhanjia, zhanjia, armor
大砍刀               = dakan dao, dao, blade
侠客行战靴 = xkx shoes, shoes
布衣                 = cloth
> 你说道:「inventory off」
>
call Inventory.ShowItems ()
***   List Items  ***
  1 = 1  钢刀 blade
  2 = 1  长剑 changjian; sword
  3 = 1  法华经 shu; book
  4 = 97  铜板 coin; coins; coin_money
  5 = 21  白银 silver; ingot; silver_money
  6 = 2  黄金 gold; ingot; gold_money
  7 = 1  道德经 shu; book
  8 = 2  青锋剑 qingfeng sword; jian; sword
  9 = 1  北侠战甲 pkuxkx zhanjia; zhanjia; armor
  10 = 1  大砍刀 dakan dao; dao; blade
  11 = 1  侠客行战靴 xkx shoes; shoes
  12 = 1  布衣 cloth
***   List Wield  ***
  左 = 青锋剑 qingfeng sword
  右 = 大砍刀 dakan dao
***   List Wear   ***
  1 = 北侠战甲 pkuxkx zhanjia
  2 = 侠客行战靴 xkx shoes
  3 = 布衣 cloth

call Inventory.CheckItems({"sword","blade","shu"})
***   List Partition   ***
  blade = 2
  sword = 3
  shu = 2
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-5-4 02:48:45 | 显示全部楼层
能导出成插件不?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-5-4 22:57:22 | 显示全部楼层
我觉得require更简洁 囧
把一下两行加入你的scrips文件就行了
require "inventory_v2"        --  引用库文件,顶楼的附件
Inventory.CheckItems()  --  check物品信息

script 类型用lua
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-8-18 10:29:11 | 显示全部楼层
真是好东西啊!
最近在写自动处理身上物品的机器人,这个很有参考价值!
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-24 05:18 PM , Processed in 0.010746 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表