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

传奇随机领取攻击力倍数NPC脚本POWERRATE概率档位每日限领与GOMGEEBLUE倍攻排错教程

热度:
随机领取攻击力倍数在传奇服务端里通常走两条路。一条用POWERRATE类倍率命令直接给角色临时或永久攻击加成,配合random概率或movr随机数值分档;另一条改装备攻击倍数,用物品持久、AttackRate、ChangeItemAttr等命令让武器/首饰自带倍攻。NPC点击随机发、活动转盘随机发、每日限一次随机发,核心都是先随机出倍率值,再执行倍率命令,最后用变量防重复。

一、POWERRATE基础与随机倍率思路

通用倍率命令格式可写为:

POWERRATE倍率时间是否保存

倍率按百分制,100等于1倍,200等于2倍,150等于1.5倍,300等于3倍,0为永久依据引擎支持情况填写。时间单位按所使用引擎说明,0多表示永久,正数为持续秒数。是否保存参数部分引擎支持,1表示下线保留剩余或永久标记,0或不写表示不保存。

固定倍率NPC写法:

[@main]
say

领取攻击倍数。\
领取2倍攻击30分钟。\
领取3倍攻击10分钟。\
break

[@pow_2]
act

POWERRATE2001800
sendmsg6已获得2倍攻击,持续30分钟
break

[@pow_3]
act

POWERRATE300600
sendmsg6已获得3倍攻击,持续10分钟
break

随机倍率不要写死200、300,用random分档或movr出随机百分值。random5表示五分之一概率命中某一支;movrN1150300表示把N1赋成150到300之间随机值,再把这个值送进POWERRATE。不同引擎变量名和随机命令有差异,GEE类可用movr,部分GOM用N/D/P变量,BLUE用N/D/M系列,写前查本端命令表。

二、random分档随机发倍数

适合做“点击随机出1.5倍、2倍、3倍、5倍”的抽奖NPC。逻辑是用random概率把玩家随机分到不同倍率段,每段单独POWERRATE。

[@main]
say

随机攻击倍数领取。\
开始随机抽取倍数。\
break

[@do_random]
if

random4
act

POWERRATE1501800
sendmsg6随机结果1.5倍攻击,持续30分钟
break

[@do_random]
if

random4
act

POWERRATE2001800
sendmsg6随机结果2倍攻击,持续30分钟
break

[@do_random]
if

random4
act

POWERRATE3001800
sendmsg6随机结果3倍攻击,持续30分钟
break

[@do_random]
if

random4
act

POWERRATE5001800
sendmsg6随机结果5倍攻击,持续30分钟
break

[@do_random]
act

POWERRATE1001
sendmsg6本次未抽到加成,已重置为1倍
break

上面四个random4理论各占四分之一,最后兜底用无random的#act处理其余情况。若想让高阶倍数更低,把高阶段random值改大,例如5倍用random20、3倍用random10、2倍用random5、1.5倍用random3,低阶更容易出。random具体概率算法各引擎说明不同,实装后用小号连点统计,别只看教程数值。

三、movr随机百分比再转POWERRATE

适合做“1.5倍到3倍之间任意值”的平滑随机。先随机出150到300的百分倍率,再执行POWERRATE变量。

GEE思路:

[@main]
say

随机倍率抽取。\
抽取1.5到3倍攻击。\
break

[@roll_power]
act

movrN1150300
POWERRATE<$N1>1800
sendmsg6已按随机倍率开启攻击加成,持续30分钟
break

部分GOM若不支持POWERRATE直接吃字符串变量,用分档代替:

[@roll_power]
act

movrN113
if

equalN11
act

POWERRATE1501800
sendmsg6随机1.5倍攻击
break

[@roll_power]
if

equalN12
act

POWERRATE2251800
sendmsg6随机2.25倍攻击
break

[@roll_power]
act

POWERRATE3001800
sendmsg6随机3倍攻击
break

equal比较、movr区间、变量自增自减都属于通用脚本能力;N系列、D系列、P系列具体含义按引擎手册,BLUE可用N0/N1做临时,P0做个人持久,D0做临时计算,跨引擎抄片段要先试载。

四、按职业发物攻或魔攻倍数

战士要物攻倍数,法师要魔攻倍数,道士常双攻或按主属性。POWERRATE类型参数资料里常见1物攻、2魔攻、3双攻,但是否支持类型参数看所使用引擎;不支持类型时使用无类型POWERRATE会对物魔道同时放大,需按实际效果调整。

[@main]
say

职业随机倍攻。\
战士抽物攻倍数。\
法师抽魔攻倍数。\
道士抽双攻倍数。\
break

[@war_power]
if

checkjob0
act

movrN1200400
POWERRATE1<$N1>1800
sendmsg6战士随机物攻倍数已开
break

[@wiz_power]
if

checkjob1
act

movrN1200400
POWERRATE2<$N1>1800
sendmsg6法师随机魔攻倍数已开
break

[@tao_power]
if

checkjob2
act

movrN1200400
POWERRATE3<$N1>1800
sendmsg6道士随机双攻倍数已开
break

checkjob数值按本端职业编号核对,部分引擎0战士1法师2道士,部分资料示例相同;若职业编号不同,改checkjob参数即可。物攻、魔攻、双攻类型名不识别时,退回到单一POWERRATE按全攻击处理,再分别用ChangeHumAbility补物攻或魔攻固定值。

五、每日限领与防重复叠加

随机倍数最容易被反复点刷。用个人变量记录今日已领,登录或零点重置可用QM/QFunction配合机器人。NPC示例:

[@main]
say

每日随机倍攻。\
抽取今日随机攻击倍数。\
break

[@daily_power]
if

check[HUMAN(今日倍攻)]1
act

say

今日已抽取过随机倍攻,明天再来。
break

[@daily_power]
act

movrN1150300
POWERRATE<$N1>1800
set[HUMAN(今日倍攻)]1
savevarHUMAN今日倍攻..\QuestDiary\变量记录.txt
sendmsg6今日随机倍攻已开启
break

savevar把个人变量写文件,重启不丢;只set不savevar重启后变量清零,玩家可重新领。零点清变量可在Robot或QM写:

[@ZeroReset]
act

reset[HUMAN(今日倍攻)]1
savevarHUMAN今日倍攻..\QuestDiary\变量记录.txt
sendmsg6每日倍攻变量已重置
break

若做活动期间每人只领一次,把check条件改成永久标记,不用零点重置;若做每小时可领,用独立小时变量或缩短重置周期。变量名别和别的NPC重名,HUMAN、GLOBAL、GUILD变量作用域不同,全服活动用GLOBAL,个人随机用HUMAN。

六、消耗材料或元宝随机倍攻

收费随机倍攻先扣材料再roll。扣物品用take,扣元宝用所使用引擎的货币命令,GOM常用GAMEGOLD,BLUE/HERO各有不同,写前确认。

[@main]
say

消耗倍攻石随机开倍数。\
用1个倍攻石抽1.5到5倍。\
break

[@roll_by_item]
if

checkitem倍攻石1
act

take倍攻石1
random10
act

POWERRATE5001800
sendmsg6消耗倍攻石抽出5倍攻击
break

[@roll_by_item]
if

checkitem倍攻石1
act

take倍攻石1
random5
act

POWERRATE3001800
sendmsg6消耗倍攻石抽出3倍攻击
break

[@roll_by_item]
if

checkitem倍攻石1
act

take倍攻石1
POWERRATE1501800
sendmsg6消耗倍攻石抽出1.5倍攻击
break

[@roll_by_item]
elseact

say

背包没有倍攻石,无法抽取。
break

上面先判断材料,第一段random10出5倍、第二段random5出3倍、其余出1.5倍;如果想提高高阶概率,把random值改小。take必须在roll之前,先发倍数再take会导致不扣材料也能刷。元宝版本把checkitem换成所使用引擎的货币判断,take换成扣币命令。

七、装备自带随机攻击倍数

不想用角色buff,想让武器点一下随机加AttackRate,按引擎分命令。GOM资料可用AddItemAttackRate,位置0武器、数值0.1表示增加0.1倍即总共1.1倍,具体以命令说明为准;BLUE可用ChangeItemAttr改AttackRate,持久检测用CheckDuraItem;HERO可用SetItemAttackRate。

GOM武器NPC示例:

[@main]
say

武器随机倍攻强化。\
武器随机增加0.1到0.5倍攻击。\
break

[@weapon_rate]
if

checkitemw裁决之杖1
act

movrN115
INCN10
AddItemAttackRate00.<$N1>
sendmsg6武器已随机增加攻击倍数
break

[@weapon_rate]
elseact

say

请先佩戴武器再强化。
break

BLUE对照:

[@weapon_rate_blue]
if

checkduraitem01100
act

movrN115
ChangeItemAttr0AttackRate0.1
sendmsg6按BLUE命令给武器增加AttackRate,具体系数按引擎
break

AttackRate系数不同端解释不同,有的0.1表示增加10%即总1.1倍,有的表示额外倍率叠加;实装后穿武器打木桩看伤害差。装备倍攻要限制上限,避免反复点武器变成几十倍。用独立变量记录武器已加次数,超过上限不再Add/Change。

八、登录自动补随机倍攻

角色下线再上,POWERRATE若不保存会消失。若要做“登录按昨日随机结果继续”,把倍率和到期时间存变量,QManage登录重发:

[@Login]
if

check[HUMAN(倍攻值)]0
act

goto@no_power
break

[@Login]
if

check[HUMAN(倍攻到期秒)]0
act

goto@no_power
break

[@Login]
act

POWERRATE<HUMAN(倍攻值)><HUMAN(倍攻剩余)>1
sendmsg6登录恢复随机倍攻
break

[@no_power]
act

sendmsg6当前无随机倍攻
break

变量名、取变量、剩余时间计算按引擎;不支持POWERRATE吃变量的端,登录用分档判断:小于150发1倍、150到200发1.5、200到300发2、大于300发3。临时活动倍攻不建议永久保存,避免玩家下线挂机一直享受高倍破坏经济。

九、机器人全服随机倍攻活动

整点活动给全服随机倍数,用Robot_def周期调用,RobotManage写段。思路是到点发公告,所有在线角色按random分倍率。

RobotManage示例段:

[@AllRandomPower]
act

sendmsg0全服随机倍攻活动开始,30分钟内随机倍数
movrN1150300
POWERRATE<$N1>18000
break

若POWERRATE不支持全服单行,用循环或GMPOWER类命令对在线名单逐个发;玄可直接NPC点击,大服用机器人避免逐个处理复杂。机器人周期在AutoRunRobot配置,例如每3600秒一次调用@AllRandomPower;未触发先检查AutoRunRobot调用名、RobotManage段名、脚本文件ANSI编码。

十、常见不生效与排错

POWERRATE命令不识别:引擎不支持该写法,GOM/GEE/HERO多可用POWERRATE,部分BLUE用ChangeHumAbility加攻数值代替真倍数,部分版本用AttackPowerRate全局系数。先搜M2命令列表,再决定用倍率命令还是改攻魔道固定值。

随机结果总是1倍:random写错位置,或#ifrandom后没有#act只写#say,条件分支未执行POWERRATE。每个random分支必须#if+#act,最后兜底再写无random的#act。movr变量送POWERRATE时,若引擎不接受<$N1>,改分档equal判断。

倍数时间不到期:时间参数写0被当永久;想临时务必写正秒数。部分引擎POWERRATE第三个保存参数写1会存盘,想活动结束恢复就写0或不写保存。

重复领取刷倍数:NPC没check已领变量,或变量没savevar。每日限领加check[HUMAN(标记)]再加set和savevar;活动限领把标记放GLOBAL,避免小号多角色重复薅。

装备倍攻不显示:AddItemAttackRate/ChangeItemAttr命令与引擎不匹配,武器位置参数错。GOM武器位置常0,BLUE用ChangeItemAttr0AttackRate,HERO用SetItemAttackRate;改完重新加载物品、脱下再穿,M2看有无红字。

高倍覆盖低倍或低倍覆盖高倍:多个倍攻脚本同时跑,POWERRATE后发覆盖先发。活动NPC、登录脚本、装备触发都给倍率时会互相冲,统一用一个变量存当前倍率,发新倍率前先清旧倍率再按优先级执行。登录恢复用保存值,活动期间用活动值并临时覆盖,活动结束回登录值。

随机概率理解错:random2不是“50%出、50%不出”就一定均匀,老引擎随机种子和具体实现会有偏差;做抽奖别把高阶倍率设random2,实测连点统计再调。重要活动用movr区间比用多层random更可控。

M2改完不生效:NPC放Market_Def,QM放Mir200EnvirQuestDiary或QManage,QF放QFunction-0;改完M2重新加载NPC、重新加载脚本,POWERRATE相关若涉及物品数据库还要重新加载物品。脚本文件用ANSI,UTF-8带BOM在老端会整文件不加载。

十一、按业务给配置组合

单机爽服随机倍攻:NPC不限制次数,movr1501000,POWERRATE变量1800秒,想永久把时间写0;武器再配AddItemAttackRate随便点。

微变每日倍攻:checkHUMAN今日倍攻,movr150300,发30分钟,零点reset;不允许多角色同号刷,变量按账号维度而非角色维度,具体账号变量看引擎支持。

材料抽奖倍攻:checkitem倍攻石,random分5倍/3倍/2倍/1.5倍,先take后roll;高阶概率低,抽奖记录写ItemLog便于查异常。

活动整点全服倍攻:Robot每小时或自定义周期调用全服POWERRATE,movr150300,时间按活动时长;活动结束用另一段POWERRATE100恢复1倍。

职业赛事倍攻:战士POWERRATE类型1,法师类型2,道士类型3;若引擎无类型参数,统一POWERRATE后用ChangeHumAbility分别加DC、MC、SC固定值替代真倍数。

装备成长倍攻:武器持久或强化等级对应AttackRate,BLUE用ChangeItemAttr,GOM用AddItemAttackRate,HERO用SetItemAttackRate;每次强化先查已加次数,超过上限不再加,避免武器倍数膨胀。

随机倍攻脚本落地顺序固定为:NPC菜单或机器人触发,先判材料/等级/每日标记,再random或movr出倍率,再POWERRATE或装备AttackRate命令,再sendmsg提示,最后set变量和savevar防重复。M2命令名、变量类型、职业编号、武器位置按本引擎手册对齐,不把GOM的AddItemAttackRate硬套BLUE,也不把BLUE的ChangeItemAttr硬套GOM,分别小号实测伤害后再全服开放。
[顶部]