“一会进去一会进不去”与“变量RWSR不存在”的脚本错误是同一问题的两个表现。根本原因是脚本试图操作一个未事先声明的变量,导致登录流程中断。玩家登录时,登录脚本(QFunction-0.txt)执行失败,系统无法完成角色初始化,造成登录状态不稳定,表现为随机能进或不能进、有时无法建立角色。
一、问题根源定位
错误日志明确显示:在 QFunction 脚本中,执行 CALCVAR 和 SAVEVAR 命令时,系统找不到名为 RWSR 和 RWSW 的 HUMAN 类型变量。这表明变量在读取/保存前,未被 VAR 命令定义和赋值。脚本执行中断,玩家的登录流程卡住。
二、修复步骤:声明与初始化变量
必须在脚本使用变量(CALCVAR、SAVEVAR)之前,先对变量进行定义(VAR)和初始化(赋值)。请按以下步骤修改脚本。
1. 定位问题脚本
打开 MirServer\Mir200\Envir\Market_Def\QFunction-0.txt 文件,查找包含 RWSR 和 RWSW 的脚本段落(通常在 [@Login] 登录标签下)。
2. 在操作变量前添加定义
找到脚本中使用 CALCVAR HUMAN RWSR + 1 的位置,在它之前添加变量的声明和检查。标准写法如下:
[@Login] ; 登录触发标签
#IF
CHECKLEVELEX > 0 ; 或其他确保角色已建立的检测
#ACT
; 第一步:声明并初始化变量RWSR
VAR Integer HUMAN RWSR
LOADVAR HUMAN RWSR ..\QuestDiary\数据文件\RWSRSave.txt
; 如果文件不存在或变量为空,则给予初始值0
#IF
EQUAL HUMAN RWSR
#ACT
CALCVAR HUMAN RWSR = 0
SAVEVAR HUMAN RWSR ..\QuestDiary\数据文件\RWSRSave.txt
; 第二步:声明并初始化变量RWSW
VAR Integer HUMAN RWSW
LOADVAR HUMAN RWSW ..\QuestDiary\数据文件\RWSWSave.txt
#IF
EQUAL HUMAN RWSW
#ACT
CALCVAR HUMAN RWSW = 0
SAVEVAR HUMAN RWSW ..\QuestDiary\数据文件\RWSWSave.txt
; 以下才是你原有的变量操作脚本(例如增加1点)
; 现在可以安全地使用CALCVAR和SAVEVAR
CALCVAR HUMAN RWSR + 1
SAVEVAR HUMAN RWSR ..\QuestDiary\数据文件\RWSRSave.txt
; ... 其他脚本命令
关键点:
• VAR Integer HUMAN RWSR:声明 RWSR 是一个整数型的人个变量。
• LOADVAR:从文本文件加载该变量上次保存的值。
• EQUAL 检测与 CALCVAR ... = 0:如果变量为空(新玩家),则初始化为0,避免对空值进行计算。
三、标准个人变量管理脚本模板
以下是一个完整的个人变量声明、增加、保存的脚本模板。你可以复制到你的 QFunction-0.txt 的 [@Login] 段落后使用。
;=================== 变量初始化模板 ===================
; 在 [@Login] 标签下的最前面调用
[@Login]
#IF
#ACT
; 示例变量1:人物杀人数量 (RWSR)
VAR Integer HUMAN RWSR
LOADVAR HUMAN RWSR ..\QuestDiary\数据文件\RWSRSave.txt
#IF
EQUAL HUMAN RWSR
#ACT
CALCVAR HUMAN RWSR = 0
SAVEVAR HUMAN RWSR ..\QuestDiary\数据文件\RWSRSave.txt
; 示例变量2:人物杀怪数量 (RWSW)
VAR Integer HUMAN RWSW
LOADVAR HUMAN RWSW ..\QuestDiary\数据文件\RWSWSave.txt
#IF
EQUAL HUMAN RWSW
#ACT
CALCVAR HUMAN RWSW = 0
SAVEVAR HUMAN RWSW ..\QuestDiary\数据文件\RWSWSave.txt
;=================== 初始化结束 ===================
; 你的其他登录触发脚本...
; 在需要增加变量的地方(例如击杀触发[@KillMon]),安全地操作
[@KillMon]
#IF
#ACT
; 变量已提前声明和加载,现在可以直接计算
CALCVAR HUMAN RWSW + 1
SAVEVAR HUMAN RWSW ..\QuestDiary\数据文件\RWSWSave.txt
SENDMSG 6 你已累计击杀怪物:<$HUMAN(RWSW)> 只。
break
四、文件路径检查与权限
确保脚本中指定的数据文件目录和文件真实存在,且服务端有写入权限。
1. 检查路径:确认 ..\QuestDiary\数据文件\ 这个目录存在。如果不存在,手动创建名为“数据文件”的文件夹。
2. 创建空文件:在 数据文件 文件夹内,手动创建两个空的文本文件,分别命名为 RWSRSave.txt 和 RWSWSave.txt。
3. 修改后操作:完成上述所有脚本修改后,必须在M2Server的控制台点击 “重读-重读QFunction脚本”,或直接重启M2Server,修改才会生效。
总结:登录不稳定的根源是变量脚本逻辑错误。必须先通过 VAR 和 LOADVAR 定义并加载变量,再进行计算和保存。修正 QFunction-0.txt 中的变量初始化流程,即可解决登录与建号问题。

