传奇双倍经验脚本怎么写

来源: 作者: 点击:
双倍经验不是“一行命令开倍率”,而是看引擎把经验倍率放在哪:有的走 M2 参数,有的走变量,有的走活动系统,有的只能靠“给经验时乘 2”。下面按能落地的写法来。

一、最稳:M2 自带双倍经验活动

GOM / GEE / 翎风 / HERO 基本都有:
• M2 → 选项 → 游戏参数 → 经验倍数

• 或 M2 → 活动管理 → 双倍经验 → 起止时间、倍数、是否全服

这种不用写脚本,配时间就行。玩家打怪经验自动 ×2,系统自己发公告。
脚本里只想“手动开关”就调 GM 命令(各引擎不同):

DoubleExp On 2 3600

意思是开 2 倍、持续 3600 秒。不是所有引擎认这行,去 QuestCommandList.txt 搜 DoubleExp / ExpRate / SetExpMul。

二、NPC 点一下领双倍(限时)

思路:玩家点 NPC → 扣元宝/免费 → 给一个“双倍经验状态” → 打怪时经验乘 2,到时间消失。

1. 用引擎变量存状态(GOM/GEE 思路)


[@双倍经验]
双倍经验(2倍/1小时)\
<花费50元宝开启/@open_double> <返回/@main>

[@open_double]
#IF
CHECKGAMEGOLD > 49
#ACT
GAMEGOLD - 50
SetOnLineExp 2 3600
SENDMSG 6 你已开启双倍经验,持续1小时!
goto @main
#ELSEACT
MessageBox 元宝不足,无法开启双倍经验
goto @main

SetOnLineExp 倍数 秒数 是部分 GEE/翎风支持的命令;没有就换 AddExpRate / ExpMultiplier。

三、打怪给经验时手动乘 2(QFunction 写法)

如果引擎没“双倍状态”命令,就在杀怪触发里自己乘:

Envir\QuestDiary\经验系统\双倍.txt

[@OnKillMonster]
#IF
CHECKVAR DOUBLE_EXP = 1
#ACT
; 原本给 100 经验,这里再补 100,等于双倍
GiveExp Self 100
SENDMSG 7 [双倍]额外经验 +100

再配 NPC 开关:

[@开双倍]
#ACT
VAR DOUBLE_EXP
Set DOUBLE_EXP = 1
Timer 3600 @关双倍
MessageBox 双倍经验已开,1小时后结束

[@关双倍]
#ACT
Set DOUBLE_EXP = 0
SENDMSG 6 双倍经验已结束

注意:不是所有引擎在 QFunction 里用 CHECKVAR 这么写,HERO 用 <$HUMAN(DOUBLE_EXP)>,GOM 用自定义变量要先声明。
真落地时把 DOUBLE_EXP 换成你引擎支持的“人物变量”。

四、GOM/GEE 人物变量标准写法


; 声明
Var DoubleExp Int

[@open_double]
#IF
CHECKGAMEGOLD > 49
#ACT
GAMEGOLD - 50
Set DoubleExp 1
; 经验倍数用 M2 接口或下面杀怪触发判断
SENDMSG 6 双倍经验开启!
goto @main

[@OnKillMonster]
#IF
Equal DoubleExp 1
#ACT
GiveExp %s 100

%s 在某些引擎代表玩家名,Self 在另一些引擎代表自己。别混用,先看本服命令表。

五、翎风引擎常见写法

翎风偏 GEE 分支,常用:

SETEXP 2 ; 设当前角色经验倍率 2
SETEXPTIME 3600 ; 持续秒数

或:

ExpRate 2 3600

M2 里搜 ExpRate 最准。搜不到就走“杀怪额外 GiveExp”笨办法。

六、活动双倍 + NPC 双倍叠加

别让两种双倍乘出 4 倍把服搞崩。规则写死:
• 全服活动双倍:M2 里开,倍率 2

• NPC 双倍:只“延长活动时间”或“给额外固定经验”,不再乘倍率

• 杀怪触发里写:

#IF
IsDoubleExp
#ACT
; 已经全局双倍,不再额外给
break

IsDoubleExp 也是部分引擎命令,没有就用变量代替。

七、新手最容易写错的地方

1. 以为 EXPRATE 2 是通用命令——不同引擎命令名不同,先搜命令表。
2. 双倍开了但打怪没变多:经验在 OnKillMonster / GetExp 里发,你没改发经验那一段。
3. 用 Gmexecute GiveExp 但权限没开,报“命令不正确或没有足够权限”。
4. 变量不声明就用 <$STR(1)>,翎风直接红。
5. 双倍时间用 delay 等——NPC 脚本里 delay 是卡对话,不是卡 1 小时,必须用 Timer / M2 活动 / 在线秒数判断。
6. 经验命令 GiveExp 参数顺序错:有的是 GiveExp 玩家名 数量,有的是 GiveExp Self 数量,有的是 GiveExp 100。

八、能直接抄的通用模板(GOM/GEE 风)


[@双倍经验员]
双倍经验系统\ \
<开启双倍(50元宝/1小时)/@open_double>\
<关闭双倍/@close_double>\
<返回/@main>

[@open_double]
#IF
CHECKGAMEGOLD > 49
#ACT
GAMEGOLD - 50
SetHumanExpRate 2 3600
SENDMSG 6 双倍经验开启,持续60分钟!
goto @main
#ELSEACT
MessageBox 元宝不足

[@close_double]
#ACT
SetHumanExpRate 1 0
SENDMSG 6 已恢复单倍经验
goto @main

SetHumanExpRate 倍数 秒数 是示意命令,你服要是没有,就换成 SETEXP / ExpRate / QFunction 里 GiveExp 补发。

九、脱机/外挂式“双倍经验脚本”别碰

市面那种“脱机双倍、自动打怪双倍、内存改经验倍率”的不是脚本写作,是改客户端通信或读内存:
• 改本地显示没用,经验以服务端为准

• 改发包可能被验签拦截

• 内存改倍率一旦被行为检测抓到,号没了

正经服双倍一定走服务端命令或 M2 活动,不靠客户端脚本改数字。

十、确认你引擎支持啥

打开这几个文件搜:
• Mir200\QuestCommandList.txt

• Mir200\EngineCommand.txt

• M2 菜单“游戏命令”里搜:Exp、Double、Rate、GiveExp、SETEXP

搜到 ExpRate 就用 ExpRate 2 3600
搜到 SETEXP 就用 SETEXP 2
搜到 DoubleExp 就用 DoubleExp On 2 3600
啥都没有,就用 OnKillMonster 里 GiveExp 补一倍。

双倍经验脚本核心就一句:服务端认哪个命令,就用哪个;别信“通用一行开双倍”,传奇引擎里没有真正通用的经验倍率命令。