传奇在线蓄力技能完整脚本方案含开始取消计时伤害加成与打断处理

来源: 作者: 点击:
在Mir200\Envir\UserCmd.txt放自定义命令,玩家输入“蓄力”开始聚气,输入“停蓄”取消。私人变量用P变量记录蓄力秒数,P1记录状态,P2记录目标倍率。引擎支持个人定时器就配合SetOnTimer,不支持只用循环检测会卡主线程,不建议。

UserCmd.txt写入:

[@蓄力]
IF

CHECKLEVELEX < 30
ACT

SENDMSG 6 需要30级才能使用蓄力
BREAK
IF

EQUAL P1 1
ACT

SENDMSG 6 已经在蓄力中
BREAK
IF

CHECKMP < 10
ACT

SENDMSG 6 魔法值不足,无法蓄力
BREAK
ACT

MOV P1 1
MOV P2 0
MOV P3 0
SETON_TIMER 10 1
SENDMSG 6 开始蓄力,站立不要移动
SENDMSG 6 蓄力中可输入“停蓄”取消

[@停蓄]
IF

EQUAL P1 0
ACT

SENDMSG 6 当前没有蓄力
BREAK
ACT

MOV P1 0
MOV P2 0
MOV P3 0
SETOFF_TIMER 10
SENDMSG 6 已取消蓄力,未获得加成

定时器写在QFunction-0.txt,个人定时器编号按引擎改,下面用10号做每秒处理:

[@OnTimer10]
IF

EQUAL P1 0
ACT

SETOFF_TIMER 10
BREAK
IF

EQUAL P1 1
ACT

INC P3 1
MOV P2 0
IF

LARGE P3 0
SMALL P3 3
ACT

MOV P2 110
IF

LARGE P3 2
SMALL P3 6
ACT

MOV P2 125
IF

LARGE P3 5
SMALL P3 10
ACT

MOV P2 140
IF

LARGE P3 9
SMALL P3 16
ACT

MOV P2 160
IF

LARGE P3 15
ACT

MOV P2 180
MOV P3 15
SENDMSG 6 蓄力已满,输入“释放”打出蓄力技
BREAK
IF

EQUAL P2 110
ACT

SENDMSG 6 蓄力1阶,攻击提升10%
BREAK
IF

EQUAL P2 125
ACT

SENDMSG 6 蓄力2阶,攻击提升25%
BREAK
IF

EQUAL P2 140
ACT

SENDMSG 6 蓄力3阶,攻击提升40%
BREAK
IF

EQUAL P2 160
ACT

SENDMSG 6 蓄力4阶,攻击提升60%
BREAK

属性加成不要直接改人物面板永久值,用临时增益命令。Hero/LEG常用ChangeHumAbility,BLUE可用SetAbility相关,GOM/GEE看POWERRATE或AttackRate。按职业给加成,战士加攻,法师加魔,道士加道,写到定时器每次重设,避免叠层:

[@OnTimer10]
上面计秒后继续写:
IF

EQUAL P2 110
ACT

CHECKJOB 1
ChangeHumAbility 5 + 10
ChangeHumAbility 6 + 10
CHECKJOB 2
ChangeHumAbility 7 + 10
ChangeHumAbility 8 + 10
CHECKJOB 3
ChangeHumAbility 9 + 10
ChangeHumAbility 10 + 10
BREAK

不同阶位把数值替换即可,5和6代表物攻上下限,7和8魔攻,9和10道术,具体字段名按引擎文档核对。若引擎支持POWERRATE,可改为:

IF

EQUAL P2 110
ACT

POWERRATE 110 1
BREAK
IF

EQUAL P2 125
ACT

POWERRATE 125 1
BREAK
IF

EQUAL P2 140
ACT

POWERRATE 140 1
BREAK
IF

EQUAL P2 160
ACT

POWERRATE 160 1
BREAK
IF

EQUAL P2 180
ACT

POWERRATE 180 1
BREAK

POWERRATE按倍率百分比走,110就是1.1倍,180就是1.8倍,持续时间写1秒,因为定时器每秒重设,停止蓄力就关掉。

释放命令放UserCmd.txt:

[@释放]
IF

EQUAL P1 0
ACT

SENDMSG 6 当前没有蓄力可释放
BREAK
IF

LARGE P3 0
SMALL P3 3
ACT

MOV P1 0
SETOFF_TIMER 10
POWERRATE 110 5
ReleaseMagicEx 10 1 1
SENDMSG 6 释放1阶蓄力烈火
BREAK
IF

LARGE P3 2
SMALL P3 6
ACT

MOV P1 0
SETOFF_TIMER 10
POWERRATE 125 5
ReleaseMagicEx 10 1 1
SENDMSG 6 释放2阶蓄力烈火
BREAK
IF

LARGE P3 5
SMALL P3 10
ACT

MOV P1 0
SETOFF_TIMER 10
POWERRATE 140 5
ReleaseMagicEx 10 1 1
SENDMSG 6 释放3阶蓄力烈火
BREAK
IF

LARGE P3 9
SMALL P3 16
ACT

MOV P1 0
SETOFF_TIMER 10
POWERRATE 160 5
ReleaseMagicEx 10 1 1
SENDMSG 6 释放4阶蓄力烈火
BREAK
IF

LARGE P3 14
ACT

MOV P1 0
SETOFF_TIMER 10
POWERRATE 180 5
ReleaseMagicEx 10 1 1
SENDMSG 6 释放满阶蓄力烈火
BREAK

ReleaseMagicEx写法按引擎调整,通用参数技能ID、强化等级、目标类型;烈火技能ID常用10,法师可换火墙22、雷电11,道士换施毒或灵魂火符,具体ID在Mir200\Envir\MagicList.txt或Magic.DB核对。不想用释放技,只给普攻加成的版本,把释放段删掉,蓄力满后继续保持POWERRATE,玩家普通攻击即享受倍率,移动或受击再清除。

打断规则写QFunction-0.txt,移动、受击、换图都清状态:

[@MoveScene]
IF

EQUAL P1 1
ACT

MOV P1 0
MOV P2 0
MOV P3 0
SETOFF_TIMER 10
POWERRATE 100 1
ChangeHumAbility 5 = 0
ChangeHumAbility 6 = 0
ChangeHumAbility 7 = 0
ChangeHumAbility 8 = 0
ChangeHumAbility 9 = 0
ChangeHumAbility 10 = 0
SENDMSG 6 移动导致蓄力中断

[@Struck]
IF

EQUAL P1 1
ACT

MOV P1 0
MOV P2 0
MOV P3 0
SETOFF_TIMER 10
POWERRATE 100 1
ChangeHumAbility 5 = 0
ChangeHumAbility 6 = 0
ChangeHumAbility 7 = 0
ChangeHumAbility 8 = 0
ChangeHumAbility 9 = 0
ChangeHumAbility 10 = 0
SENDMSG 6 受击导致蓄力中断

[@ChangeMap]
IF

EQUAL P1 1
ACT

MOV P1 0
MOV P2 0
MOV P3 0
SETOFF_TIMER 10
POWERRATE 100 1
ChangeHumAbility 5 = 0
ChangeHumAbility 6 = 0
ChangeHumAbility 7 = 0
ChangeHumAbility 8 = 0
ChangeHumAbility 9 = 0
ChangeHumAbility 10 = 0
SENDMSG 6 切换地图蓄力中断

登录清理放QManage.txt,防止下线再上保留异常增益:

[@Login]
ACT

MOV P1 0
MOV P2 0
MOV P3 0
SETOFF_TIMER 10
POWERRATE 100 1
ChangeHumAbility 5 = 0
ChangeHumAbility 6 = 0
ChangeHumAbility 7 = 0
ChangeHumAbility 8 = 0
ChangeHumAbility 9 = 0
ChangeHumAbility 10 = 0

如果用魔法触发而不是命令触发,可在M2功能设置开启魔法触发,QFunction写对应技能段。例如把蓄力做成新技能ID99,玩家使用后开始计时:

[@MagSelfFunc99]
IF

CHECKMP < 10
ACT

SENDMSG 6 魔法值不足
BREAK
ACT

MOV P1 1
MOV P2 0
MOV P3 0
SETON_TIMER 10 1
SENDMSG 6 施法蓄力开始,站立累积阶位

释放仍用命令或再用一个技能ID100触发:

[@MagSelfFunc100]
IF

EQUAL P1 0
ACT

SENDMSG 6 未处于蓄力
BREAK
IF

LARGE P3 0
ACT

MOV P1 0
SETOFF_TIMER 10
POWERRATE <$STR(P2)> 5
ReleaseMagicEx 10 1 1
SENDMSG 6 按当前蓄力阶位释放强化技能

魔法触发总开关和MagSelfFunc标签按引擎开,BLUE、Hero、GOM路径不完全一致,部分版本在M2功能设置其他控制里开魔法触发后QFunction才会跑MagSelfFunc。

参数修改点:等级限制改CHECKLEVELEX数值;每秒一阶的时间改OnTimer里P3判断,想3秒一阶就把0到3改0到3、3到6、6到9;倍率改P2和POWERRATE;职业区分用CHECKJOB,1战士2法师3道士;只做战士可删CHECKJOB 2、3两段;只做法师把ReleaseMagicEx改成火系技能ID并只加魔攻;想要蓄力越久伤害越高但不设上限,把P3最大15去掉,P2按公式算,例如MOV P2 <$STR(P3)>再乘系数,部分引擎不支持变量直接运算就用CALCVAR。

排错:输入命令没反应,检查UserCmd.txt是否在Envir根目录、M2是否重载命令、P变量是否被其他脚本占用。蓄力不涨阶,检查SetOnTimer定时器编号和QFunction的OnTimer编号是否一致,个人定时器有的引擎写SetOnTimer也有的写SetOnTimerX。加成不消失,登录脚本没清、停蓄没关定时器、受击标签没触发都会留增益,优先把Login、Struck、MoveScene、ChangeMap四处都写清。释放没伤害,检查技能ID是否在本服MagicList存在、角色是否学会、MP是否够、ReleaseMagicEx参数顺序是否按引擎要求。多职业共用时别同时给物攻魔攻道术全加,按CHECKJOB分支,否则战士也会吃到法术加成造成数值失衡。