“天下第一”活动通常由服务端内置脚本控制,其经验倍数和攻击倍数设定不直接写在活动公告中,而是通过变量或配置文件实现。要将当前1.5倍经验改为1.2倍,并移除1.2倍攻击加成,需定位并修改以下关键位置。
一、确认倍数来源类型
首先判断倍数是通过以下哪种方式实现:
全局变量控制(如 HUMAN 变量);
活动脚本内临时设置(如 QFunction 中的 @OnTimer 或 @Login 事件);
M2Server.ini 或 !Setup.txt 中的固定参数。
多数“天下第一”活动采用第1或第2种方式。
二、查找经验倍数设置点
经验倍数通常由 EXP_RATE 或 GetExpRate 相关变量控制。检查以下文件:
QFunction-0.txt:搜索 天下第一、EXP、经验 等关键词;
RobotManage.txt 或 AutoRunRobot.txt:若活动由机器人触发;
MapQuest_def 目录下的活动专属脚本(如 TianXiaDiYi.txt)。
典型代码示例:
[@Login]
if
CHECKVAR HUMAN 天下第一 = 1
act
CALC EXP_RATE = 1.5
三、查找攻击倍数设置点
攻击倍数一般通过 ATTACK、PowerRate 或 SetAttack 类命令实现。常见形式:
ACT
SETATTACKRATE 120
或
CALCVAR HUMAN 攻击倍数 = 1.2
该逻辑通常与经验倍数在同一段脚本中,位于 [@Login]、[@ReConnection] 或定时器事件(如 @OnTimer_天下第一)内。
四、具体修改步骤
打开 QFunction-0.txt,搜索 天下第一 或 TianXia;
找到类似以下代码块:
if
CHECKVAR HUMAN 天下第一标志 = 1
act
CALC EXP_RATE = 1.5
SETATTACKRATE 120
修改为:
if
CHECKVAR HUMAN 天下第一标志 = 1
act
CALC EXP_RATE = 1.2
; SETATTACKRATE 120 ← 整行注释或删除
若使用变量控制攻击,如:
SET [ATT_RATE] 1.2
则直接删除该行或设为1.0。
五、处理动态加载逻辑
部分版本在角色登录时从外部文件加载倍数配置。检查是否存在:
..QuestDiary活动天下第一配置.txt
内容可能为:
[倍数]
经验=1.5
攻击=1.2
此时直接修改该文件:
[倍数]
经验=1.2
攻击=1.0
并在脚本中确保读取逻辑存在,如:
LOADVAR HUMAN 经验倍数 ..QuestDiary活动天下第一配置.txt
六、验证修改生效
重启M2服务端;
使用已获得“天下第一”称号的角色登录;
输入命令查看当前经验倍数(如 @变量 EXP_RATE);
用属性查看器确认攻击数值无额外加成。
注意事项
若倍数由数据库字段控制(如HeroDB中的字段),则需通过GM命令或数据库工具修改;
部分引擎使用 SendMsg 显示倍数但实际未生效,应以角色打怪获得的经验值为准;
修改后务必测试非活动玩家是否受影响,避免全局倍数被误改。
以上修改仅针对活动期间的临时加成,不影响基础游戏设置。核心在于定位控制“天下第一”状态的脚本入口,并调整对应的数值赋值语句。

