BLUE和LEG这两个引擎在装备绑定的实现上路子不太一样,一个偏数据库字段控制,一个偏数据块加事件触发。弄之前先搞清楚版本用的是哪一套,下手才准。
**BLUE引擎的绑定设置**
BLUE引擎做装备绑定最直接的办法,是在物品数据库里加一个Bind字段。这个字段的取值决定了装备什么时候被锁住:
- `Bind=0`:不绑定,捡了穿了都没事。
- `Bind=1`:拾取后绑定,只要从地上捡起来就锁上了。
- `Bind=2`:装备后绑定,穿到身上才触发绑定。
- `Bind=3`:拾取加穿戴双重绑定,两种操作都会锁。
改数据库可以用DBC2000这类工具打开StdItems.DB,找到对应的装备行,把Bind列改成想要的数值就行。改完之后在M2的控制台上重新加载一下物品数据库或者直接重启服务端让设置生效。
如果想用脚本来控制绑定,BLUE引擎也支持在脚本里写判断逻辑。比如在拾取触发脚本里检查物品是否需要绑定,然后执行绑定命令。具体写法可以在`ItemBind.txt`这类脚本文件中配置,通过`IfAction="PickUp"`捕捉拾取动作,再调用`ExecuteBind`执行绑定。绑定之后还要在交易和丢弃的脚本里加上限制,用`BlockTrade`和`BlockDrop`阻止绑定物品流通。
**LEG引擎的绑定设置**
LEG引擎的绑定逻辑跟BLUE不同,它用的是数据块加事件绑定的方式。先在`BindScript.dat`文件里为每个需要绑定的物品建一个数据块,写明绑定的模式和各种限制:
```
[BindItem]
ItemID=1001
BindMode=1 //1拾取绑定,2穿戴绑定
LimitTrade=1 //1禁止交易
LimitDrop=1 //1禁止丢弃
LimitDestroy=1 //1禁止销毁
```
然后在`ItemEvent.dat`里写触发脚本,捕捉穿戴或者拾取的事件,调用`SetItemBind`执行绑定。LEG引擎还提供了几个专门用于绑定的NPC命令:`QUERYBINDITEM 0`弹出绑定窗口,`QUERYBINDITEM 1`弹出解绑窗口,`RESUMEBINDITEM`允许继续执行绑定,`RESUMEUNBINDITEM`允许继续执行解绑。同时还有对应的脚本标签:`(@ItemBinding)`绑定前检测、`(@ItemBinded)`绑定成功后触发。
**GM命令直接绑定人物**
不管是BLUE还是LEG引擎,都支持用GM命令直接绑。格式是`@BindUseItem 人物名称 物品类型 绑定类型`,比如把张三的武器绑到他的账号上,输入`@BindUseItem 张三 武器 帐号`就行。绑定类型可以选帐号、角色名或者IP。物品类型包括衣服、武器、项链、头盔、手镯、戒指、腰带、鞋子、宝石这些。这个办法适合临时处理个别装备,大批量设置还是走数据库或者脚本比较省事。
**装绑与捡绑的混合用法**
有些版本还会用`GiveStateItem`这个脚本命令来发绑定物品。格式是`GiveStateItem 物品名称 项目1 项目2 ... 项目7 数量`,每个项目填0或者1,分别控制禁止扔、禁止交易、禁止存仓、禁止修理、禁止出售、禁止爆出和丢弃消失这七种限制。比如要给一把木剑并且禁止扔、禁止交易,就写`GiveStateItem 木剑 1 1 0 0 0 0 0 1`。这个命令在发任务奖励或者新手装备的时候特别好用,不用单独再写绑定判断。
**调试和验证**
脚本写好或者数据库改完之后,进游戏用GM号刷一件测试装备,按设定的触发方式操作一遍。拾取后或者穿戴后看有没有绑定提示,再试试交易和丢弃能不能成功。如果没生效,先检查物品ID和字段名有没有写错,再确认引擎有没有重新加载配置。LEG引擎可以在Log文件夹里翻脚本报错记录,BLUE引擎在控制台输入`ReloadScript`重载脚本。

