当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇双倍经验脚本怎么写

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

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

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

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

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

DoubleExpOn23600

意思是开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
SetOnLineExp23600
SENDMSG6你已开启双倍经验,持续1小时!
goto@main
#ELSEACT
MessageBox元宝不足,无法开启双倍经验
goto@main

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

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

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

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

[@OnKillMonster]
#IF
CHECKVARDOUBLE_EXP=1
#ACT
;原本给100经验,这里再补100,等于双倍
GiveExpSelf100
SENDMSG7[双倍]额外经验+100

再配NPC开关:

[@开双倍]
#ACT
VARDOUBLE_EXP
SetDOUBLE_EXP=1
Timer3600@关双倍
MessageBox双倍经验已开,1小时后结束

[@关双倍]
#ACT
SetDOUBLE_EXP=0
SENDMSG6双倍经验已结束

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

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


;声明
VarDoubleExpInt

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

[@OnKillMonster]
#IF
EqualDoubleExp1
#ACT
GiveExp%s100

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

五、翎风引擎常见写法

翎风偏GEE分支,常用:

SETEXP2;设当前角色经验倍率2
SETEXPTIME3600;持续秒数

或:

ExpRate23600

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

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

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

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

•杀怪触发里写:

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

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

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

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

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


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

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

[@close_double]
#ACT
SetHumanExpRate10
SENDMSG6已恢复单倍经验
goto@main

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

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

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

•改发包可能被验签拦截

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

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

十、确认你引擎支持啥

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

•Mir200\EngineCommand.txt

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

搜到ExpRate就用ExpRate23600
搜到SETEXP就用SETEXP2
搜到DoubleExp就用DoubleExpOn23600
啥都没有,就用OnKillMonster里GiveExp补一倍。

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