当前位置 : 145z游戏站 | 魔域 | 技术教程 | 

魔域单机版物品存在却无法使用:数据库字段脚本客户端三端修正

热度:
背包里看得到、双击没反应、右键不弹窗、穿不上也吃不了,本质是服务端把物品当“静态数据”塞进去了,但没给它可用的类型、脚本或权限。魔域单机版(含各类改版端)按下面顺序查,基本都能修。

先分清物品类别再下手
• 药水/回城石/经验球类:走 ItemType=消耗品 + FuncType 回血/传送码 + ScriptID 指向 Use_xxx 脚本

• 装备/武器:走 bagtype=0(普通装备)+ 职业字段匹配 + 耐久>0

- 技能书:ItemType=技能书 + 关联 skill 表里必须有对应技能 ID
• 礼包/宝箱:必须右键打开,双击无效是正常的,别当成坏物品

• 任务道具/材料:本来就不能“使用”,只能交 NPC,类型错配成消耗品才会让人误以为坏了

改数据库 cq_itemtype(MySQL 版)或 StdItems.def / Item.txt(文本版)
查到物品 ID 后看这几列:
• can_use / CanUse:必须为 1,0 就是强制禁用

- itemtype / ItemType:药水填消耗品类(各端代码不同,常见 1=药、18=书、0=装备),填成任务道具(4)或材料(3)就点不动
• need_level:改 1;need_prof / JobLimit:改 0(0/7/-1 都代表不限职业,看端而定)

- bagtype:想直接用的别填 1(任务物),填 0
• price:别留 0,部分为 0 会被判定不可交互

• script_id / UseScript:消耗品和特殊道具必须有值,NULL 或 0 就是“有皮无魂”

- bind_type:卡使用的话临时改 0 不绑定测一次

脚本缺失是最常见隐形原因
服务端 Script/ 或 Lua 脚本目录里,回城石、经验球、幻兽蛋、融合石都靠 Use_物品名.txt 或 ItemUse.lua 里的处理函数触发。比如 ID 5001 的回城石,脚本里得有 if itemid == 5001 then player:Teleport(x,y) end 这类分支,没有就只显示不生效。
修法:从同版本完整端 Script 目录拷同名脚本过来;或照着同类正常物品脚本改 ID 适配;改完放对路径(一般在 MSGServer/Script/ItemUse/ 下)。

客户端不同步也会“假不能用”
服务端 itemtype 改对了,客户端 elements.data、item.pak、ItemInfo.xml 里没这条 ID 的动作绑定,按钮就是灰的。把服务端生成的补丁覆盖到客户端 data 目录,删客户端 Cache 文件夹再进。图标有但点不动,九成是客户端 ActionID 和服务端对不上。

改完必须做的三件事
1. 全关服务端:AccountServer、MSGServer、NPCServer、GameServer 全退,等 10 秒
2. 重启后小退角色重登,别热更硬测;部分端支持 @reloaditem 或 GM 命令 /reloaditem 重载物品表
3. 用 GM 命令 /awarditem 物品ID 1 重新刷一个出来测,避免旧物品实例带着脏数据(耐久0、绑定异常、script 缓存)

耐久与绑定脏数据
装备类耐久字段 0/上限 0 会被判异常;消耗品被标成“服务器绑定不可解绑”也会拦使用。手动加的物品先在库里把 durability 设正常、bind_type 设 0,再刷出来。

权限陷阱
用 GM 账号测能点、切普通号不能点,是 need_prof/need_prof 没清或端开了“联机权限校验”没切单机模式。进服务端后台把运行模式切单机本地、当前角色提为本地玩家权限、关全局物品锁定,再测。

实操最小改法(Navicat 执行):
UPDATE cq_itemtype SET can_use=1, itemtype=1, need_level=1, need_prof=0, bagtype=0 WHERE id=目标ID;
改完重启服务端,GM 重刷物品,普通号登录测试。还不行就查 Script 目录和客户端 elements.data 同步,这两条比库字段更常背锅。
[顶部]