英雄管理NPC脚本教程:创建回收出战洗点学技能穿装全实例

来源: 作者: 点击:
[@主菜单]
SAY

英雄管理处开放,以下功能按需选择\
1.创建/删除英雄\
2.召唤出战/收回休息\
3.英雄洗点重置属性\
4.学习本职业与合击技能\
5.英雄装备查看与自动穿戴\
6.英雄等级经验调整\
<创建删除/@英雄创建> <出战收回/@英雄出战> <洗点/@英雄洗点> <技能/@英雄技能> <装备/@英雄装备> <等级经验/@英雄等级> <离开/@exit>

[@英雄创建]
IF

HAVEHERO
ACT

SENDMSG 0 你已有英雄,如需重建请先删除
GOTO @删除确认
BREAK
ELSEACT

SAY

选择创建英雄职业与性别\
<战士男/@CREATEHERO_WARR_MAN> <战士女/@CREATEHERO_WARR_WOM>\
<法师男/@CREATEHERO_WIZA_MAN> <法师女/@CREATEHERO_WIZA_WOM>\
<道士男/@CREATEHERO_TAOS_MAN> <道士女/@CREATEHERO_TAOS_WOM>\
<返回/@主菜单>

[@CREATEHERO_WARR_MAN]
ACT

CREATEHERO 0 0
SENDMSG 0 战士男英雄创建成功
GOTO @主菜单

[@CREATEHERO_WARR_WOM]
ACT

CREATEHERO 0 1
SENDMSG 0 战士女英雄创建成功
GOTO @主菜单

[@CREATEHERO_WIZA_MAN]
ACT

CREATEHERO 1 0
SENDMSG 0 法师男英雄创建成功
GOTO @主菜单

[@CREATEHERO_WIZA_WOM]
ACT

CREATEHERO 1 1
SENDMSG 0 法师女英雄创建成功
GOTO @主菜单

[@CREATEHERO_TAOS_MAN]
ACT

CREATEHERO 2 0
SENDMSG 0 道士男英雄创建成功
GOTO @主菜单

[@CREATEHERO_TAOS_WOM]
ACT

CREATEHERO 2 1
SENDMSG 0 道士女英雄创建成功
GOTO @主菜单

[@删除确认]
SAY

删除英雄不可恢复,确认操作\
<确认删除/@执行删除> <返回/@主菜单>

[@执行删除]
IF

HAVEHERO
ACT

DELETEHERO
SENDMSG 0 英雄已删除,可重新创建
GOTO @主菜单
ELSEACT

SENDMSG 0 当前没有可删除的英雄
GOTO @主菜单

Hero引擎用CREATEHERO 职业 性别,0战士1法师2道士,0男1女;HAVEHERO检测已有英雄,DELETEHERO清掉当前英雄。部分版本创建完要用DELAYCALL延时再执行后续发装备、发技能,直接连续写可能英雄数据未落地导致发物失败。

[@英雄出战]
IF

CHECKHEROONLINE
ACT

SAY

英雄当前在线,选择操作\
<召唤到身边/@召回英雄> <英雄下线休息/@英雄下线> <返回/@主菜单>
ELSEACT

SAY

英雄未在线\
<召唤出战/@召回英雄> <返回/@主菜单>

[@召回英雄]
IF

HAVEHERO
ACT

RECALLHERO
SENDMSG 0 英雄已召唤到身边出战
GOTO @主菜单
ELSEACT

SENDMSG 0 没有英雄可召唤
GOTO @主菜单

[@英雄下线]
IF

CHECKHEROONLINE
ACT

HEROLOGOUT
SENDMSG 0 英雄已下线休息
GOTO @主菜单
ELSEACT

SENDMSG 0 英雄本来就不在线
GOTO @主菜单

Hero用RECALLHERO召回、HEROLOGOUT让英雄下线;CHECKHEROONLINE判断在线,HAVEHERO判断是否存在。GOM/GEE部分版本收回用TAKEHERO,检测用CheckHeroOnline,写跨引擎时按所装引擎命令替换,不要Hero和GOM命令混用。

[@英雄洗点]
IF

HAVEHERO
ACT

SAY

选择洗点方式\
1.免费重置英雄已分配属性点\
2.消耗洗点丹重置并返还初始点\
<免费重置/@洗点免费> <洗点丹重置/@洗点丹> <返回/@主菜单>
ELSEACT

SENDMSG 0 你还没有英雄,先去创建
GOTO @主菜单

[@洗点免费]
IF

HAVEHERO
ACT

H.CLEARABILITY
H.CLEARBONUSPOINT
SENDMSG 0 英雄属性点已清空,可重新分配
GOTO @主菜单
ELSEACT

SENDMSG 0 无英雄不处理
GOTO @主菜单

[@洗点丹]
IF

HAVEHERO
CHECKITEM 洗点丹 1
CHECKBAGGAGE 1
ACT

TAKE 洗点丹 1
H.CLEARABILITY
H.CLEARBONUSPOINT
SENDMSG 0 消耗洗点丹,英雄属性已重置
GOTO @主菜单
ELSEACT

SENDMSG 0 需要洗点丹1个,且英雄已创建
GOTO @主菜单

不同引擎洗点命令差异大。Hero可用H.前缀执行人物洗点类命令,GEE可用H.ChangeHumAbility调整临时/永久属性,GOM可用CLEARHEROALLSKILL只清技能不清属性。若只清已加属性不清剩余点数,把CLEARBONUSPOINT去掉,只保留CLEARABILITY类命令;具体命令名以M2命令列表为准。

[@英雄技能]
IF

HAVEHERO
ACT

SAY

英雄技能管理\
1.按英雄职业补基础技能\
2.领取合击技能书\
3.清空英雄所有技能重学\
<基础技能/@英雄基础技能> <合击技能/@英雄合击> <清技能/@英雄清技能> <返回/@主菜单>
ELSEACT

SENDMSG 0 无英雄无法管理技能
GOTO @主菜单

[@英雄基础技能]
IF

CHECKHEROONLINE
CHECKHEROJOB WARRIOR
ACT

ADDSKILL 基本剑术 3 HERO
ADDSKILL 攻杀剑术 3 HERO
ADDSKILL 刺杀剑术 3 HERO
ADDSKILL 半月弯刀 3 HERO
ADDSKILL 烈火剑法 3 HERO
SENDMSG 0 战士英雄基础技能已补齐
BREAK
IF

CHECKHEROONLINE
CHECKHEROJOB WIZARD
ACT

ADDSKILL 火球术 3 HERO
ADDSKILL 地狱火 3 HERO
ADDSKILL 雷电术 3 HERO
ADDSKILL 魔法盾 3 HERO
ADDSKILL 冰咆哮 3 HERO
SENDMSG 0 法师英雄基础技能已补齐
BREAK
IF

CHECKHEROONLINE
CHECKHEROJOB TAOIST
ACT

ADDSKILL 治愈术 3 HERO
ADDSKILL 精神力战法 3 HERO
ADDSKILL 施毒术 3 HERO
ADDSKILL 灵魂火符 3 HERO
ADDSKILL 召唤神兽 3 HERO
SENDMSG 0 道士英雄基础技能已补齐
BREAK
ELSEACT

SENDMSG 0 英雄不在线或职业检测失败
GOTO @主菜单

ADDSKILL 技能名 等级 HERO给英雄加技能;HEROCHECKSKILL可检测已会等级,写防重复时用。例如先HEROCHECKSKILL 烈火剑法 < 1再ADDSKILL,避免每次点NPC都重加。

[@英雄合击]
IF

CHECKHEROONLINE
CHECKJOB WARRIOR
CHECKHEROJOB WARRIOR
ACT

ADDSKILL 破魂斩 1 HERO
SENDMSG 0 已学习战战合击破魂斩
BREAK
IF

CHECKHEROONLINE
CHECKJOB WIZARD
CHECKHEROJOB WIZARD
ACT

ADDSKILL 火龙气焰 1 HERO
SENDMSG 0 已学法法合击火龙气焰
BREAK
IF

CHECKHEROONLINE
CHECKJOB TAOIST
CHECKHEROJOB TAOIST
ACT

ADDSKILL 噬魂沼泽 1 HERO
SENDMSG 0 已学道道合击噬魂沼泽
BREAK
IF

CHECKHEROONLINE
CHECKJOB WARRIOR
CHECKHEROJOB WIZARD
ACT

ADDSKILL 雷霆一击 1 HERO
SENDMSG 0 已学战法合击雷霆一击
BREAK
IF

CHECKHEROONLINE
CHECKJOB WARRIOR
CHECKHEROJOB TAOIST
ACT

ADDSKILL 劈星斩 1 HERO
SENDMSG 0 已学战道合击劈星斩
BREAK
IF

CHECKHEROONLINE
CHECKJOB WIZARD
CHECKHEROJOB WARRIOR
ACT

ADDSKILL 雷霆一击 1 HERO
SENDMSG 0 已学法战合击雷霆一击
BREAK
IF

CHECKHEROONLINE
CHECKJOB WIZARD
CHECKHEROJOB TAOIST
ACT

ADDSKILL 末日审判 1 HERO
SENDMSG 0 已学法道合击末日审判
BREAK
IF

CHECKHEROONLINE
CHECKJOB TAOIST
CHECKHEROJOB WARRIOR
ACT

ADDSKILL 劈星斩 1 HERO
SENDMSG 0 已学道战合击劈星斩
BREAK
IF

CHECKHEROONLINE
CHECKJOB TAOIST
CHECKHEROJOB WIZARD
ACT

ADDSKILL 末日审判 1 HERO
SENDMSG 0 已学道法合击末日审判
BREAK
ELSEACT

SENDMSG 0 主号与英雄需同时在线才可领合击
GOTO @主菜单

主号职业用CHECKJOB,英雄职业用CHECKHEROJOB,两个同时判断才不会发错合击书。部分版本合击技能不直接用ADDSKILL,而是GIVE技能书再让英雄学,写法改成GIVE 破魂斩书 1后提示英雄打开技能栏学习。

[@英雄清技能]
IF

HAVEHERO
ACT

CLEARHEROALLSKILL
SENDMSG 0 英雄所有技能已清空,可重新学习
GOTO @主菜单
ELSEACT

SENDMSG 0 无英雄不处理
GOTO @主菜单

GOM/GEE用CLEARHEROALLSKILL清英雄全技能;Hero若没有该命令,用逐条HEROCHECKSKILL判断后DELSKILL HERO替代,或者删除英雄重建最省事。

[@英雄装备]
IF

CHECKHEROONLINE
ACT

SAY

英雄装备管理\
1.自动穿背包符合职业的武器衣服\
2.查看英雄各部位穿戴状态\
3.脱下英雄全部装备回背包\
<自动穿装/@英雄自动穿> <查看部位/@英雄部位> <全部脱下/@英雄脱光> <返回/@主菜单>
ELSEACT

SENDMSG 0 英雄不在线无法管理装备
GOTO @主菜单

[@英雄自动穿]
IF

CHECKHEROONLINE
CHECKHEROJOB WARRIOR
CHECKBAGGAGE 1
ACT

H.TakeOnItem 屠龙 1
H.TakeOnItem 天魔神甲 0
SENDMSG 0 战士英雄已尝试自动穿屠龙与天魔神甲
BREAK
IF

CHECKHEROONLINE
CHECKHEROJOB WIZARD
CHECKBAGGAGE 1
ACT

H.TakeOnItem 骨玉权杖 1
H.TakeOnItem 法神披风 0
SENDMSG 0 法师英雄已尝试自动穿骨玉与法神披风
BREAK
IF

CHECKHEROONLINE
CHECKHEROJOB TAOIST
CHECKBAGGAGE 1
ACT

H.TakeOnItem 龙纹剑 1
H.TakeOnItem 天师长袍 0
SENDMSG 0 道士英雄已尝试自动穿龙纹与天师长袍
BREAK
ELSEACT

SENDMSG 0 自动穿装失败,检查背包是否有对应装备
GOTO @主菜单

GEE/部分GOM用TakeOnItem 物品 位置,英雄命令加H.前缀;位置0衣服1武器3项链4头盔5右镯6左镯7右戒8左戒10腰带11鞋13斗笠等,具体以物品库部位为准。若引擎不支持H.TakeOnItem,改由人物TakeOnItem后通过英雄触发脚本转发,或者用AutoTakeOnItem配合英雄穿戴触发@HeroTakeOnEx处理。

[@英雄部位]
IF

CHECKHEROONLINE
ACT

SAY

英雄当前装备查询\
武器:<查看/@查武器>\
衣服:<查看/@查衣服>\
项链:<查看/@查项链>\
返回主菜单<返回/@主菜单>

[@查武器]
IF

H.CHECKITEMWEAR 1
ACT

SENDMSG 0 英雄武器部位有装备,名称见英雄面板
GOTO @英雄部位
ELSEACT

SENDMSG 0 英雄武器部位为空
GOTO @英雄部位

[@查衣服]
IF

H.CHECKITEMWEAR 0
ACT

SENDMSG 0 英雄衣服部位有装备,名称见英雄面板
GOTO @英雄部位
ELSEACT

SENDMSG 0 英雄衣服部位为空
GOTO @英雄部位

[@查项链]
IF

H.CHECKITEMWEAR 3
ACT

SENDMSG 0 英雄项链部位有装备,名称见英雄面板
GOTO @英雄部位
ELSEACT

SENDMSG 0 英雄项链部位为空
GOTO @英雄部位

CHECKITEMWEAR位置号检测该部位是否穿装;Hero用H.CHECKITEMWEAR,GOM/GEE可用H.CHECKITEMWEAR或英雄变量触发。要精确到装备名,用H.CHECKITEM 物品名 数量判断背包,用穿戴触发里读当前装备名变量判断身上装的是什么。

[@英雄脱光]
IF

CHECKHEROONLINE
ACT

H.TakeOffItem 0
H.TakeOffItem 1
H.TakeOffItem 3
H.TakeOffItem 4
H.TakeOffItem 5
H.TakeOffItem 6
H.TakeOffItem 7
H.TakeOffItem 8
H.TakeOffItem 10
H.TakeOffItem 11
SENDMSG 0 英雄已脱下主要部位装备并回背包
GOTO @主菜单
ELSEACT

SENDMSG 0 英雄不在线
GOTO @主菜单

脱装前用CHECKBAGGAGE判断人物/英雄背包空格,避免脱下后无位置导致物品丢失。部分版本脱英雄装备要写英雄包袱命令而不是人物TakeOffItem,按引擎手册把H.前缀和不带H.的脱装命令分别测试。

[@英雄等级]
IF

HAVEHERO
ACT

SAY

英雄等级与经验管理\
1.直接设英雄到指定等级\
2.增加英雄经验\
3.开启英雄双倍经验\
<设等级/@英雄设级> <加经验/@英雄加经> <双倍/@英雄双倍> <返回/@主菜单>
ELSEACT

SENDMSG 0 无英雄不可操作
GOTO @主菜单

[@英雄设级]
IF

CHECKHEROONLINE
ACT

CHANGEHEROLEVEL = 50
SENDMSG 0 英雄等级已设置为50级
GOTO @主菜单
ELSEACT

SENDMSG 0 英雄需在线才能设等级
GOTO @主菜单

[@英雄加经]
IF

CHECKHEROONLINE
ACT

CHANGEHEROEXP + 5000000 1
SENDMSG 0 英雄增加500万经验,不受等级上限限制
GOTO @主菜单
ELSEACT

SENDMSG 0 英雄不在线
GOTO @主菜单

[@英雄双倍]
IF

CHECKHEROONLINE
ACT

Hero.KillMonExpRate 200 3600
SENDMSG 0 英雄获得1小时双倍打怪经验
GOTO @主菜单
ELSEACT

SENDMSG 0 英雄不在线
GOTO @主菜单

CHANGEHEROLEVEL =等级直接改级,+级是加级、-级减级;CHANGEHEROEXP +数值 类型,0按等级限制、1忽略等级限制、2心法相关特殊算法,跨版本参数含义会有差别。Hero用Hero.KillMonExpRate做倍率,其它引擎用M2经验倍率或自定义变量定时加经验。

排错按下面顺序处理。NPC点创建没反应,先看Merchant或NpcDialog是否加载脚本,文件名、地图坐标、NPC名要和配置一致;Hero放NpcDialog或QuestDiary按版本走,GOM/GEE放Market_Def或QuestDiary,路径错了菜单不显示。创建英雄报已存在,用HAVEHERO判断后先引导删除;删除后立刻创建如果失败,加DELAYCALL 1秒再CREATEHERO,避免数据库未刷新。召回没反应,Hero看RECALLHERO、CheckHeroOnline,GOM看TAKEHERO/RECALL类命令,部分版本召回和收回是同一个命令带参数,写错参数就会变成收回而不是召唤。洗点后属性没清,确认用的是英雄属性命令而不是人物命令,GEE英雄临时属性用H.ChangeHumAbility,永久洗点用引擎BonusPoint/ClearAbility对应英雄版;GOM没有对应命令就用删除英雄重创最稳。技能加了但不显示,检查技能名和SkillList/技能库完全一致,烈火剑法、冰咆哮、召唤神兽等名字错一个字都不会学;合击技能还要英雄达到合击等级、怒气系统开启,低版本直接ADDSKILL可能用不了,改发合击书让英雄手动学。自动穿装不穿,先SENDMSG把H.CHECKITEM背包检测和CHECKHEROJOB职业判断拆开,确认背包有物、职业匹配、部位空格足够;GEE用TakeOnItem位置码,Hero用H.TakeOnItem或先GIVE再提示手动穿。脱装丢物一般是背包满,所有脱装前加CHECKBAGGAGE,英雄包袱空格单独判断。跨引擎移植不要整段复制,Hero的CREATEHERO/RECALLHERO/HEROLOGOUT、GOM的TAKEHERO/CHANGEHEROJOB/CLEARHEROALLSKILL、GEE的H.前缀和ChangeHumAbility分别建配置表,按M2命令列表对照替换。改完Hero重载QF/QM相关脚本,GOM用脚本重载,Blue按版本重读NpcDialog;先小号建英雄跑创建、出战、洗点、学技能、穿脱、设等级全流程,再放正式环境。