传奇脚本查看指定玩家指定变量,核心分脚本指令查询、数据库直接查看两类方式,适配G类、H类、U类等常见变量,以下是具体方法、路径及异常排查。
一、核心前提:变量类型与查询适配原则
1. 常见变量分类及查询范围
传奇变量按作用域分三类,查询方式各有差异:全局变量(G类、A类)可跨玩家、跨地图查询;玩家变量(U类、H类)仅对应单个玩家,需精准定位玩家ID;局部变量(L类)仅在当前脚本生效,无法跨场景查询指定玩家数据。
2. 核心适配原则
查询需匹配引擎指令与变量类型,GOM/GEE/HERO引擎基础查询逻辑一致,仅部分指令名称不同;玩家离线时无法通过脚本指令查询,需直接访问数据库;变量名称区分大小写,需与脚本中定义的名称完全一致。
二、脚本指令查询:在线玩家变量实时查看
1. NPC脚本查询(最常用,全引擎通用)
通过NPC交互脚本触发查询,支持手动输入玩家名称,实时返回指定变量值,脚本放入服务端\Mir200\Envir\QuestDiary\目录,关联NPC对话指令即可使用。
(1)查询在线玩家全局变量(G类)
示例脚本(查询玩家指定G类变量值):
[@查询全局变量]
#IF
CHECKONLINE 玩家名称 ;检测目标玩家是否在线
#ACT
SENDMSG 5 玩家<玩家名称>的G100变量值为:<$GETVAR(G100,玩家名称)>
#ELSEACT
MESSAGEBOX 目标玩家未在线,无法查询全局变量!
指令说明:$GETVAR(变量名,玩家名称)为核心查询指令,可直接调用指定玩家的全局变量值,支持G类、A类变量,结果通过屏幕提示返回。
(2)查询在线玩家专属变量(U类/H类)
玩家专属变量需通过玩家ID关联,脚本示例:
[@查询玩家变量]
#IF
CHECKONLINE 玩家名称
#ACT
SET U10 <$GETUSERVAR(U10,玩家名称)> ;将目标玩家U10值赋值给本地U10
SENDMSG 5 玩家<玩家名称>的U10变量值为:<$U10>
SENDMSG 5 玩家<玩家名称>的H5变量值为:<$GETUSERVAR(H5,玩家名称)>
#ELSEACT
SENDMSG 5 目标玩家离线或不存在!
备注:H类变量为玩家永久变量,查询指令与U类一致,仅替换变量前缀即可。
2. 分引擎指令适配调整
(1)GOM/GEE引擎补充指令
支持批量查询变量,脚本示例:
[@批量查询]
#IF
CHECKONLINE 玩家名称
#ACT
SENDMSG 5 玩家变量汇总:G100=<$GETVAR(G100,玩家名称)>,U10=<$GETUSERVAR(U10,玩家名称)>
MESSAGEBOX 查询完成,详情查看屏幕提示。
(2)HERO引擎指令替换
HERO引擎查询玩家变量需用“GETVARUSER”指令,替换后脚本示例:
[@HERO查询变量]
#IF
CHECKONLINE 玩家名称
#ACT
SENDMSG 5 玩家<玩家名称>G100值:<$GETVARUSER(G100,玩家名称)>
#ELSEACT
SENDMSG 5 目标玩家未在线!
三、数据库查询:离线玩家变量查看方法
1. 核心数据库路径与工具
玩家变量数据存储在服务端数据库中,路径为服务端\Mud2\DB\,核心数据文件为Human.db(玩家基础数据)、GlobalVal.ini(全局变量数据)。需使用DBC2000工具打开数据库,操作前建议备份原文件。
2. 分变量类型数据库查询步骤
(1)全局变量(G类/A类)查询
打开服务端\Mir200\GlobalVal.ini文件,直接搜索变量名(如G100、A5),文件中以“变量名=值”格式呈现,可直接查看或修改数值,无需通过数据库工具,修改后重启引擎生效。
(2)玩家专属变量(U类/H类)查询
1. 打开DBC2000工具,选择数据库路径为服务端\Mud2\DB\,加载Human.db文件;
2. 在数据表中找到目标玩家ID对应的记录,U类变量存储在“UserVar”字段,H类变量存储在“HumVar”字段;
3. 双击对应字段,即可查看变量键值对(如U10=50、H5=100),离线状态下可直接修改数值,保存后玩家上线即可同步。
四、批量查询与日志记录技巧
1. 批量查询脚本编写
针对多名玩家同一变量查询,可通过循环指令实现,示例:
[@批量查询玩家G100]
#IF
CHECKADMIN 1 ;仅管理员可触发
#ACT
SENDMSG 5 批量查询结果:
SENDMSG 5 玩家1:<$GETVAR(G100,玩家1)>
SENDMSG 5 玩家2:<$GETVAR(G100,玩家2)>
SENDMSG 5 玩家3:<$GETVAR(G100,玩家3)>
#ELSEACT
MESSAGEBOX 无权限执行批量查询!
2. 变量查询日志记录
添加日志写入指令,记录查询记录便于追溯,脚本示例:
[@查询并记录]
#IF
CHECKONLINE 玩家名称
#ACT
SET 变量值 <$GETVAR(G100,玩家名称)>
AddTextListEx ..\QuestDiary\查询日志.txt 玩家<玩家名称>G100值:<$变量值> ;写入日志
SENDMSG 5 查询完成,日志已保存。
#ELSEACT
SENDMSG 5 目标玩家未在线!
五、常见问题排查:查询失败解决方法
1. 脚本查询无结果
(1)核对玩家名称是否正确,区分大小写与空格,避免输入错误;
(2)确认玩家在线状态,离线玩家仅能通过数据库查询,脚本指令无法生效;
(3)检查变量类型与指令匹配,玩家变量需用GETUSERVAR(或GETVARUSER),全局变量用GETVAR。
2. 数据库查询失败
(1)确认DBC2000工具路径设置正确,需精准选择服务端\Mud2\DB\文件夹;
(2)Human.db文件损坏,替换备份文件后重新查询;
(3)变量字段对应错误,U类对应UserVar,H类对应HumVar,避免查错字段。
3. 引擎指令不兼容
老旧引擎可能不支持部分查询指令,替换为基础指令,如直接通过赋值变量后再调用,避免使用复合查询指令。
六、总结
查看指定玩家指定变量,在线玩家优先用脚本指令(NPC交互便捷高效),离线玩家需通过DBC2000工具查询数据库。核心是区分变量类型、适配引擎指令,确保玩家名称、变量名精准无误。按上述方法操作,可覆盖全场景变量查询需求,稳定获取目标数据。

