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

传奇双英雄版本正将副将评定ASSESSMENTHERO命令与CheckDeputyHero自我修炼脚本配置教

热度:
双英雄正副将评定在卧龙、白日门类引擎里主要用系统命令完成,不建议自己用普通变量硬写正副关系,因为评定后会联动英雄寄存、副将三职业出战、自我修炼、主将死亡复仇等底层逻辑。下面按NPC菜单、评定判断、副将检测、修炼控制、自定义模拟、排错分别写。

一、评定相关系统命令

ASSESSMENTHERO:在NPC的#act里直接写,向玩家弹出主副将评定窗口。前提是角色已经按版本要求持有/寄存两个可评定英雄,比如白日门英雄与卧龙英雄,具体以本服酒馆流程为准。执行后由系统按规则分正将、副将,很多版本自动把等级高的定正将、低的定副将。

CheckAssessMentHero:条件命令,放在#if下检测当前角色是否已经完成主副将评定。已评定条件成立,可走查看状态、进入修炼、切换副将职业等分支;未评定走引导评定分支。

CheckDeputyHero:条件命令,检测当前在线出战的英雄是不是副将。用于副将专属菜单,例如只给副将开三职业切换、只给副将开自我修炼、只给副将发某些训练奖励。

CheckHeroAutoPractice:条件命令,检测副将是否正在自我修炼。正在修炼时通常只允许停止、查看时长、发结束奖励;未修炼时才允许开始新修炼。

OpenHeroAutoPractice:执行命令,打开副将自我修炼窗口或按版本参数开始自动修炼。部分引擎写OPENHEROAUTOPRACTICE,GOM类命令表两种写法都会出现,以本M2命令手册为准。

StopHeroAutoPractice:执行命令,停止副将自我修炼。配合@StopHeroAuto之类的回调段,在达到设定时长后发物品或经验。部分版本写STOPHEROAUTOPRACTICE。

SAVEHERO:寄放/保存英雄数据,双英雄酒馆流程常和评定、取回一起用。GETHERO:取回已寄放英雄。CLOSEDRINK/OPENPLAYDRINK/PLAYDRINKMSG:酒馆请酒、比酒相关,部分双英雄版本评定前要走请酒寄存,不全是必须,但卧龙英雄流程会用到。

二、最基础的评定NPC写法

[@main]
say

主副将评定与副将修炼。\
开始评定主副将。\
已评定则进入副将管理。\
未评定说明。\

[@do_assess]
if

CheckAssessMentHero
act

say

已评定主副将,无需重复评定。\
进入副将管理。\
break

[@do_assess]
elseact

act

ASSESSMENTHERO
say

已打开评定窗口,按系统规则确认正副将。\
break

[@manage]
if

CheckAssessMentHero
act

say

查看当前出战英雄身份。\
副将开始自我修炼。\
副将停止自我修炼。\
break

[@check_now]
if

CheckDeputyHero
act

say

当前出战为副将,可进行三职业与修炼管理。\
break

[@check_now]
elseact

say

当前出战为正将,切换副将后再用本菜单。\
break

[@start_practice]
if

CheckAssessMentHero
CheckDeputyHero
CheckHeroAutoPractice
act

say

副将正在自我修炼,先停止再重新开启。\
break

[@start_practice]
if

CheckAssessMentHero
CheckDeputyHero
act

OpenHeroAutoPractice
say

已打开副将自我修炼,按窗口设置强度。\
break

[@stop_practice]
if

CheckAssessMentHero
CheckDeputyHero
CheckHeroAutoPractice
act

StopHeroAutoPractice
say

已停止副将自我修炼。\
break

[@stop_practice]
if

CheckAssessMentHero
CheckDeputyHero
act

say

副将当前未在自我修炼。\
break

上面把评定、已评定判断、副将判断、修炼开始停止全部分支化。实际放Market_Def酒馆NPC文件,菜单名字按版本改中文即可。若引擎命令名是OPENHEROAUTOPRACTICE、STOPHEROAUTOPRACTICE,替换对应行后重载NPC。

三、评定后副将三职业与出战控制

官方双英雄规则里,副将评定后可一人切三职业出战,三职业的等级、内功、经络、忠诚度、酒量、奇经等共用一套数据,但切到战士、法师、道士时体力魔法技能和装备槽按职业变。脚本层通常不必自己写职业切换算法,只做入口:

[@deputy_job]
if

CheckAssessMentHero
CheckDeputyHero
act

say

切换副将战士状态。\
切换副将法师状态。\
切换副将道士状态。\
break

[@to_war]
if

CheckDeputyHero
act

参数按本引擎副将切职命令填写
say

已请求副将切战士。\
break

[@to_wiz]
if

CheckDeputyHero
act

参数按本引擎副将切职命令填写
say

已请求副将切法师。\
break

[@to_tao]
if

CheckDeputyHero
act

参数按本引擎副将切职命令填写
say

已请求副将切道士。\
break

不同引擎切副将职业可能不是公开NPC命令,而是客户端状态页加系统消息;这种情况NPC只做检测,正真切换走游戏内出战页。脚本里别强行用ChangeJob改英雄职业,那样会和标准双英雄数据分离,导致三职业经验、内功、经络不同步。

四、自我修炼时长、奖励与回调

部分卧龙双英雄设定:副将自动修炼累计到7200秒,在NPC主动停止可触发@StopHeroAuto类回调发奖;官方规则里每日一次在NPC开始并在NPC结束、中途不中断且至少2小时,有概率给千年灵芝等道具,召唤副将时会自动结算经验内功。脚本可这样写:

[@stop_practice_reward]
if

CheckAssessMentHero
CheckDeputyHero
CheckHeroAutoPractice
act

StopHeroAutoPractice
break

[@StopHeroAuto]
if

条件写本版本修炼时长达标判断
act

give千年灵芝1
sendmsg6副将自我修炼达标,发放奖励
break

[@StopHeroAuto]
elseact

say

副将修炼未达时长,无道具奖励。\
break

如果引擎不支持在@StopHeroAuto自动传时长,就用变量记录开始时间:OpenHeroAutoPractice前set个人变量起始秒,停止时取当前时间差比较。GOM类可用系统时间函数或QFunction登录脚本补算,具体函数名各版本不同,不硬抄其他引擎。

五、用自定义变量模拟正副将的替代方案

若所用服务端没有ASSESSMENTHERO原生评定,只是想做主英雄/辅英雄概念,可用普通变量和英雄条件模拟,但后果是副将三职业、系统复仇、自动修炼都不会自动跟着走,只适合简化版双英雄。

常用判断:

CheckHeroJob0/1/2:检测当前英雄职业,0战士1法师2道士按引擎说明核对。
CheckHeroLevel数值:英雄等级条件。
CheckHeroName名字:指定英雄。
CheckHaveHero:是否有英雄。
变量HUMAN或G变量记录正将标识,例如set[HUMAN(正将名)]1、set[HUMAN(副将名)]1。

示例:

[@set_main]
if

CheckHaveHero
CheckHeroLevel50
act

set[HUMAN(正将标识)]1
set[HUMAN(副将标识)]0
give正将令1
sendmsg6已设当前英雄为正将
break

[@set_main]
elseact

say

无英雄或等级不足50,不能评定正将。\
break

[@set_vice]
if

CheckHaveHero
CheckHeroLevel40
act

set[HUMAN(副将标识)]1
set[HUMAN(正将标识)]0
sendmsg6已设当前英雄为副将
break

[@bonus_main]
if

CheckHaveHero
check[HUMAN(正将标识)]1
act

参数按本版本正将加成命令填写
say

正将专属加成已处理。\
break

这种模拟只能做菜单、发奖、配装、AI倾向,不能替代ASSESSMENTHERO的底层双英雄关系。真要卧龙式副将三职业,还是走系统评定命令。

六、评定前置:寄放、取回、请酒

很多双英雄服评定前先寄放两个英雄。GOM相关命令可用SAVEHERO寄放、GETHERO取回;请酒比酒用OPENPLAYDRINK打开界面、PLAYDRINKMSG设显示、CLOSEDRINK关界面。示例:

[@save_both]
act

SAVEHERO白日门
SAVEHERO卧龙
sendmsg6已寄放双英雄,可前往评定
break

[@get_both]
act

GETHERO白日门
GETHERO卧龙
sendmsg6已取回双英雄
break

[@open_drink]
act

OPENPLAYDRINK
break

具体SAVEHERO参数名、GETHERO参数名看M2英雄配置;有的版本寄放不用命令,而在酒馆NPC对话框点寄存按钮,脚本只做菜单跳转。别把请酒、寄放、评定写进同一个#act不分支,否则玩家没请酒也强弹评定会报错。

七、主将副将规则对脚本的影响

官方双英雄有明确限制,写NPC时要避开冲突:

主将等级高于副将至少3级,副将才获升级经验;主将内功高于副将内功至少3级,副将才获内功经验。脚本做经验补助时不要给副将突破该限制,否则和原生系统叠加出bug。
副将三职业等级、内功、经络、忠诚、酒量、奇经等共用,按职业出战时仅体力魔法技能装备不同。发训练奖励按副将统一发,不要按出战职业建三套独立变量。
主将死亡后1分钟内召副将,副将进复仇状态,基础属性提升持续3分钟。脚本若做死亡触发,放QFunction或英雄死亡段,不要和NPC手动评定混写。
副将自我修炼可低中高强度,消耗金币/灵符;金币或灵符没了自动停。NPC开始修炼前用checkgold、检查灵符类命令预判,避免点了开始却立刻因资源不足停止。
评定后正副将通常不可删除、副将不可改原始职业;用ASSESSMENTHERO就别再写DeleteHero或改原始职业命令。

八、常用完整酒馆评定菜单

[@main]
say

盟重酒馆双英雄管理。\
寄放白日门与卧龙英雄。\
开始主副将评定。\
副将状态与三职业管理。\
副将自我修炼开始。\
副将自我修炼停止。\
break

[@save_hero]
act

SAVEHERO白日门
SAVEHERO卧龙
say

已寄放,返回评定。\
break

[@assess_hero]
if

CheckAssessMentHero
act

say

已评定,直接进入管理。\
break

[@assess_hero]
elseact

act

ASSESSMENTHERO
say

已弹评定窗,确认后系统分正副将。\
break

[@deputy_center]
if

CheckAssessMentHero
CheckDeputyHero
act

say

查看副将三职业切换。\
查看副将修炼状态。\
break

[@deputy_center]
if

CheckAssessMentHero
act

say

当前出战非副将,先召副将。\
break

[@deputy_center]
elseact

say

尚未评定主副将。\
break

[@practice_start]
if

CheckAssessMentHero
CheckDeputyHero
CheckHeroAutoPractice
act

say

已在修炼中,勿重复开始。\
break

[@practice_start]
if

CheckAssessMentHero
CheckDeputyHero
act

OpenHeroAutoPractice
say

已开副将自我修炼窗口。\
break

[@practice_stop]
if

CheckAssessMentHero
CheckDeputyHero
CheckHeroAutoPractice
act

StopHeroAutoPractice
say

已停止修炼,若达时长回调查奖。\
break

[@practice_stop]
if

CheckAssessMentHero
CheckDeputyHero
act

say

副将未处于修炼状态。\
break

九、不生效排查

点评定没弹窗:确认NPC文件在Market_Def且M2/NPC列表绑定正确;确认#act里写ASSESSMENTHERO而不是自定义错名;确认角色已按版本要求拥有两个可评定英雄并完成寄放/请酒前置;确认脚本文件ANSI编码,UTF-8带BOM在老引擎会整文件不加载。
已评定还让再评定:CheckAssessMentHero没识别,检查拼写,有的引擎拼CheckAssessMentHero大小写不敏感但字母不能错;若放在#elseact前没有对应#if,逻辑会永远走错分支。
副将菜单不显示:用CheckDeputyHero包一层,正将出战时本来就不应满足;如果切了副将仍不进,检查英雄是否真的副将身份,还是只用变量模拟的假副将。
修炼开始无效:OpenHeroAutoPractice/OPENHEROAUTOPRACTICE命令名按引擎对齐;检查副将是否在出战、是否未达主将高3级等系统限制;检查金币灵符是否足够,部分高强度训练对资源校验很严。
停止没发奖:看是否走@StopHeroAuto回调;自写时长奖励要存开始时间变量,Stop时再算差。系统原生2小时奖励有的只在NPC开始、NPC结束、未中断条件下给,客户端强召副将会中断修炼导致无奖。
评定后删英雄报错:原生双英雄评定后禁止删除正副将,脚本别再放DeleteHero;副将也别用ChangeJob改原始职业,三职业切换走出战状态页。
换引擎命令不通:GOM可用ASSESSMENTHERO、OPENHEROAUTOPRACTICE、STOPHEROAUTOPRACTICE、SAVEHERO、GETHERO;其他Hero、GEE、翎风对双英雄卧龙评定的命令支持不一定完全一致,拿到新端先搜M2命令列表再写NPC,不把一套脚本全服套用。

十、和合击版主副英雄的区别

合击版常说主号加英雄,不叫正将副将;双英雄卧龙版是一个角色带主将、再召副将,副将可三职业。脚本命令不要混:合击用英雄等级、合击书、火龙之心怒气;双英雄评定用ASSESSMENTHERO、CheckDeputyHero、自我修炼。若服务器同时有合击和双英雄,NPC菜单要分开,正将副将一段、合击怒气一段,避免玩家点评定却去查怒槽,导致以为命令无效。

写双英雄正副将NPC时,评定用系统命令,副将身份用CheckDeputyHero判断,已评定用CheckAssessMentHero拦截重复操作,修炼用Open/Stop配@StopHeroAuto发奖,三职业切换尽量交给出战系统而不是脚本改职业;只有简化端没有原生评定时才用变量模拟正副并将就,且要明白会失去副将三职业、复仇、系统修炼等完整逻辑。
[顶部]