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

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

热度:
[@主菜单]
SAY

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

[@英雄创建]
IF

HAVEHERO
ACT

SENDMSG0你已有英雄,如需重建请先删除
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

CREATEHERO00
SENDMSG0战士男英雄创建成功
GOTO@主菜单

[@CREATEHERO_WARR_WOM]
ACT

CREATEHERO01
SENDMSG0战士女英雄创建成功
GOTO@主菜单

[@CREATEHERO_WIZA_MAN]
ACT

CREATEHERO10
SENDMSG0法师男英雄创建成功
GOTO@主菜单

[@CREATEHERO_WIZA_WOM]
ACT

CREATEHERO11
SENDMSG0法师女英雄创建成功
GOTO@主菜单

[@CREATEHERO_TAOS_MAN]
ACT

CREATEHERO20
SENDMSG0道士男英雄创建成功
GOTO@主菜单

[@CREATEHERO_TAOS_WOM]
ACT

CREATEHERO21
SENDMSG0道士女英雄创建成功
GOTO@主菜单

[@删除确认]
SAY

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

[@执行删除]
IF

HAVEHERO
ACT

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

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

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

[@英雄出战]
IF

CHECKHEROONLINE
ACT

SAY

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

SAY

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

[@召回英雄]
IF

HAVEHERO
ACT

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

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

[@英雄下线]
IF

CHECKHEROONLINE
ACT

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

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

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

[@英雄洗点]
IF

HAVEHERO
ACT

SAY

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

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

[@洗点免费]
IF

HAVEHERO
ACT

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

SENDMSG0无英雄不处理
GOTO@主菜单

[@洗点丹]
IF

HAVEHERO
CHECKITEM洗点丹1
CHECKBAGGAGE1
ACT

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

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

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

[@英雄技能]
IF

HAVEHERO
ACT

SAY

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

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

[@英雄基础技能]
IF

CHECKHEROONLINE
CHECKHEROJOBWARRIOR
ACT

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

CHECKHEROONLINE
CHECKHEROJOBWIZARD
ACT

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

CHECKHEROONLINE
CHECKHEROJOBTAOIST
ACT

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

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

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

[@英雄合击]
IF

CHECKHEROONLINE
CHECKJOBWARRIOR
CHECKHEROJOBWARRIOR
ACT

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

CHECKHEROONLINE
CHECKJOBWIZARD
CHECKHEROJOBWIZARD
ACT

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

CHECKHEROONLINE
CHECKJOBTAOIST
CHECKHEROJOBTAOIST
ACT

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

CHECKHEROONLINE
CHECKJOBWARRIOR
CHECKHEROJOBWIZARD
ACT

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

CHECKHEROONLINE
CHECKJOBWARRIOR
CHECKHEROJOBTAOIST
ACT

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

CHECKHEROONLINE
CHECKJOBWIZARD
CHECKHEROJOBWARRIOR
ACT

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

CHECKHEROONLINE
CHECKJOBWIZARD
CHECKHEROJOBTAOIST
ACT

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

CHECKHEROONLINE
CHECKJOBTAOIST
CHECKHEROJOBWARRIOR
ACT

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

CHECKHEROONLINE
CHECKJOBTAOIST
CHECKHEROJOBWIZARD
ACT

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

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

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

[@英雄清技能]
IF

HAVEHERO
ACT

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

SENDMSG0无英雄不处理
GOTO@主菜单

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

[@英雄装备]
IF

CHECKHEROONLINE
ACT

SAY

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

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

[@英雄自动穿]
IF

CHECKHEROONLINE
CHECKHEROJOBWARRIOR
CHECKBAGGAGE1
ACT

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

CHECKHEROONLINE
CHECKHEROJOBWIZARD
CHECKBAGGAGE1
ACT

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

CHECKHEROONLINE
CHECKHEROJOBTAOIST
CHECKBAGGAGE1
ACT

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

SENDMSG0自动穿装失败,检查背包是否有对应装备
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.CHECKITEMWEAR1
ACT

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

SENDMSG0英雄武器部位为空
GOTO@英雄部位

[@查衣服]
IF

H.CHECKITEMWEAR0
ACT

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

SENDMSG0英雄衣服部位为空
GOTO@英雄部位

[@查项链]
IF

H.CHECKITEMWEAR3
ACT

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

SENDMSG0英雄项链部位为空
GOTO@英雄部位

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

[@英雄脱光]
IF

CHECKHEROONLINE
ACT

H.TakeOffItem0
H.TakeOffItem1
H.TakeOffItem3
H.TakeOffItem4
H.TakeOffItem5
H.TakeOffItem6
H.TakeOffItem7
H.TakeOffItem8
H.TakeOffItem10
H.TakeOffItem11
SENDMSG0英雄已脱下主要部位装备并回背包
GOTO@主菜单
ELSEACT

SENDMSG0英雄不在线
GOTO@主菜单

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

[@英雄等级]
IF

HAVEHERO
ACT

SAY

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

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

[@英雄设级]
IF

CHECKHEROONLINE
ACT

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

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

[@英雄加经]
IF

CHECKHEROONLINE
ACT

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

SENDMSG0英雄不在线
GOTO@主菜单

[@英雄双倍]
IF

CHECKHEROONLINE
ACT

Hero.KillMonExpRate2003600
SENDMSG0英雄获得1小时双倍打怪经验
GOTO@主菜单
ELSEACT

SENDMSG0英雄不在线
GOTO@主菜单

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

排错按下面顺序处理。NPC点创建没反应,先看Merchant或NpcDialog是否加载脚本,文件名、地图坐标、NPC名要和配置一致;Hero放NpcDialog或QuestDiary按版本走,GOM/GEE放Market_Def或QuestDiary,路径错了菜单不显示。创建英雄报已存在,用HAVEHERO判断后先引导删除;删除后立刻创建如果失败,加DELAYCALL1秒再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;先小号建英雄跑创建、出战、洗点、学技能、穿脱、设等级全流程,再放正式环境。
[顶部]