NPC教导框架
阅读
2023-05-14更新
最新编辑:TierneyJohn
阅读:
更新日期:2023-05-14
最新编辑:TierneyJohn
简介
本文是觅长生创意工坊Mod 《NPC教导框架》的使用说明,Mod目前提供了一系列NPC功法神通数据的修改操作。可以方便的定制NPC的装备栏功法神通,请教栏功法神通等。(修改NPC装备栏的功法神通后,NPC打架的时候也会自己释放新增神通哦!)
另外,这个Mod不会止步于此,还会再后续版本提供更多NPC相关的功能,例如:对NPC行为进行增强、让NPC更加灵活(更像个人)、更多的NPC行为、更多的NPC与玩家的交互等等...但是精力是有限的,开发是漫长的,还请诸位耐心等待后续版本。
目前文章提供了Mod使用方法、相关指令参数及用法的相关内容介绍,以及还会在后续版本添加功能定制等更多功能的介绍。
文章本身不提供Mod的下载方式,相关Mod订阅请移步steam创意工坊:创意工坊地址
当前文章对应版本为v1.1.0
Mod 相关使用教程
玩家使用教程
作为游戏玩家,仅需要在创意工坊中订阅该Mod,同时确保在游戏中同时启用了当前Mod和Next前置Mod,即可获得相关的功能。只不过,Mod目前版本尚未提供游戏内置得教导NPC功能,该部分内容正在抓紧制作中。
如果您希望在目前版本也能够自定义修改NPC的功法神通的话,可以使用Next编辑器提供的游戏内置工具,通过调用指令来完成相关修改操作。但是由于目前仅仅是早期版本,相关数据处理的优化还不到位,所以还请尽量避免对同一个NPC数据进行反复变更操作,以防出现游戏性能下降问题。
当然,您也可以查找其他使用了该Mod作为前置的其他Mod,要相信其他的Mod作者能制作出更加贴合故事剧情设定的,Npc教导玩法。
如果您有更多的契合"NPC教导框架"设计初衷的新奇的创意、功能、玩法,也请可以随时向我反馈,我会在精力以及个人能力的范围内,尽量满足大家的需求的。
Mod制作者使用教程
作为Mod制作者,相信您已经有了一定的Mod制作经验了。当前"NPC教导框架"为了方便广大作者使用,封装了一系列的Next指令方便进行功能调用,您可以在本文的"Next指令扩展"中,查找满足您需求的指令来丰富您自己的Mod内容。
另外,Mod后续版本会将Next相关功能扩展进行分离(对于使用上是没有区别的,不会产生任何影响),届时将不再硬性依赖Next框架,而是当检测到Next前置存在时进行相关功能增强。这样可以对于一些特殊的场景提供更加高性能的处理。
如果您是一个熟练Mod作者,也可以直接通过C#访问"NPC教导框架"内提供的相关Manager方法,来实现一些定制化的操作。甚至可以基于"NPC教导框架"进行一定的魔改(但要注意不要影响其他人使用),以实现一些特殊的效果。
但是如果您希望在Lua或者JavaScript中使用CS对象进行访问的话,可能会因为某些原因导致部分方法无法正常调用,后续版本中计划提供专门的API接口,方便直接引用提供的C#方法。
当然,如果您有更多的契合"NPC教导框架"设计初衷的指令需求、功能需求、玩法需求,也可以随时向我反馈,我也会及时进行相关内容填充的。
Next 指令扩展
Next Event 指令扩展
Event指令 | 参数说明 | 指令说明 |
---|---|---|
NpcChangeSex*NPC编号#性别类型 runner.NpcChangeSex(NPC编号, 性别类型) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 性别类型: 根据觅长生原版设定,总共有三种对应的类型 1: 男 2: 女 3: 未知 |
修改指定NPC的性别 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的性别类型还请输入正确的数据,如若输入错误也会有相应的提示日志。 |
NpcChangeSkill*NPC编号#执行模式#神通编号一#神通编号二(可省略) runner.NpcChangeSkill(NPC编号, 执行模式, 神通编号一, 神通编号二(可省略)) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 执行模式: 目前提供有三种模式,可以根据输入决定实现的效果 ADD: 给NPC添加神通编号一中的数据 DELETE: 移除NPC神通编号一中的数据 CHANGE: 将npc神通装备栏中,神通编号一中的数据替换为神通编号二中的数据 神通编号一: 神通唯一编号 神通编号二: 神通唯一编号,若当前执行模式不是change,则可以省略不写 |
修改指定NPC的装备栏中的神通数据 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的操作模式输入大小写均可,如若模式输入错误也会有相应的提示日志。 神通编号需要传入神通唯一编号,因为官方设定神通会根据对应NPC等级进行调整,所以需要使用唯一编号。 神通编号二中的数据在ADD模式和DELETE模式下是会被忽略的,不论是否传递数据都不会造成影响,但仍然建议不要传入对应数据,以免在优化指令组数据时造成影响。 |
NpcChangeStaticSkill*NPC编号#执行模式#功法编号一#功法编号二(可省略) runner.NpcChangeStaticSkill(NPC编号, 执行模式, 功法编号一, 功法编号二(可省略)) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 执行模式: 目前提供有三种模式,可以根据输入决定实现的效果 ADD: 给NPC添加功法编号一中的数据 DELETE: 移除NPC功法编号一中的数据 CHANGE: 将npc功法装备栏中,功法编号一中的数据替换为功法编号二中的数据 功法编号一: 功法固定编号 功法编号二: 功法固定编号,若当前执行模式不是change,则可以省略不写 |
修改指定NPC的装备栏中的功法数据 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的操作模式输入大小写均可,如若模式输入错误也会有相应的提示日志。 该指令需要输入功法的固定编号,因为官方设定功法是不会随NPC等级自动改变的,所以只能指定特定的功法编号才行。包括移除和修改操作,也要确认原本的具体编号是多少才能正确执行 功法编号二中的数据在ADD模式和DELETE模式下是会被忽略的,不论是否传递数据都不会造成影响,但仍然建议不要传入对应数据,以免在优化指令组数据时造成影响。 |
NpcChangeAutoStaticSkill*NPC编号#执行模式#功法编号一#功法编号二(可省略) runner.NpcChangeAutoStaticSkill(NPC编号, 执行模式, 功法编号一, 功法编号二(可省略)) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 执行模式: 目前提供有三种模式,可以根据输入决定实现的效果 ADD: 给NPC添加功法编号一中的数据 DELETE: 移除NPC功法编号一中的数据 CHANGE: 将npc功法装备栏中,功法编号一中的数据替换为功法编号二中的数据 功法编号一: 功法编号 功法编号二: 功法编号,若当前执行模式不是change,则可以省略不写 |
修改指定NPC的装备栏中的功法数据 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的操作模式输入大小写均可,如若模式输入错误也会有相应的提示日志。 该指令使用时较为特殊,因为官方设定功法是不会随NPC等级自动改变的,所以如果希望添加符合NPC境界的功法的话,需要做一些额外处理,因此提供了这个功能和NpcChangeStaticSkill相似的指令,可以通过输入功法唯一编号给NPC添加符合其对应境界的功法数据。但由于进行了模式匹配的简化,所以在数据输入时需要注意。 对于ADD模式,可以通过在功法编号一中输入功法唯一编号进行动态添加 对于DELETE模式,则只能可以通过在功法编号一中输入相应的功法固定编号进行删除(后续会提供动态删除操作) 对于CHANGE模式,则需要在功法编号一中输入相应的功法固定编号(后续会提供动态查询)并在功法编号二中输入功法唯一编号,才能执行动态功法添加操作 相对来说,目前提供的AUTO指令使用起来非常复杂,强烈建议配合其他查询指令,先获取对应的数据后,再进行相应的数据修改操作 功法编号二中的数据在ADD模式和DELETE模式下是会被忽略的,不论是否传递数据都不会造成影响,但仍然建议不要传入对应数据,以免在优化指令组数据时造成影响。 |
NpcChangeAskSkill*NPC编号#执行模式#神通编号一#神通编号二(可省略) runner.NpcChangeAskSkill(NPC编号, 执行模式, 神通编号一, 神通编号二(可省略)) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 执行模式: 目前提供有三种模式,可以根据输入决定实现的效果 ADD: 给NPC添加神通编号一中的数据 DELETE: 移除NPC神通编号一中的数据 CHANGE: 将npc请教神通栏中,神通编号一中的数据替换为神通编号二中的数据 神通编号一: 神通唯一编号 神通编号二: 神通唯一编号,若当前执行模式不是change,则可以省略不写 |
修改指定NPC的请教神通栏中的神通数据 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的操作模式输入大小写均可,如若模式输入错误也会有相应的提示日志。 神通编号需要传入神通唯一编号,因为官方设定神通会根据对应NPC等级进行调整,所以需要使用唯一编号。 神通编号二中的数据在ADD模式和DELETE模式下是会被忽略的,不论是否传递数据都不会造成影响,但仍然建议不要传入对应数据,以免在优化指令组数据时造成影响。 |
NpcChangeAskStaticSkill*NPC编号#执行模式#功法编号一#功法编号二(可省略) runner.NpcChangeAskStaticSkill(NPC编号, 执行模式, 功法编号一, 功法编号二(可省略)) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 执行模式: 目前提供有三种模式,可以根据输入决定实现的效果 ADD: 给NPC添加功法编号一中的数据 DELETE: 移除NPC功法编号一中的数据 CHANGE: 将npc请教功法栏中,功法编号一中的数据替换为功法编号二中的数据 功法编号一: 功法固定编号 功法编号二: 功法固定编号,若当前执行模式不是change,则可以省略不写 |
修改指定NPC的请教功法栏中的功法数据 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的操作模式输入大小写均可,如若模式输入错误也会有相应的提示日志。 该指令需要输入功法的固定编号,因为官方设定功法是不会随NPC等级自动改变的,所以只能指定特定的功法编号才行。包括移除和修改操作,也要确认原本的具体编号是多少才能正确执行 功法编号二中的数据在ADD模式和DELETE模式下是会被忽略的,不论是否传递数据都不会造成影响,但仍然建议不要传入对应数据,以免在优化指令组数据时造成影响。 |
NpcChangeAutoAskStaticSkill*NPC编号#执行模式#功法编号一#功法编号二(可省略) runner.NpcChangeAutoAskStaticSkill(NPC编号, 执行模式, 功法编号一, 功法编号二(可省略)) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 执行模式: 目前提供有三种模式,可以根据输入决定实现的效果 ADD: 给NPC添加功法编号一中的数据 DELETE: 移除NPC功法编号一中的数据 CHANGE: 将npc请教功法栏中,功法编号一中的数据替换为功法编号二中的数据 功法编号一: 功法编号 功法编号二: 功法编号,若当前执行模式不是change,则可以省略不写 |
修改指定NPC的请教功法栏中的功法数据 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的操作模式输入大小写均可,如若模式输入错误也会有相应的提示日志。 该指令使用时较为特殊,因为官方设定功法是不会随NPC等级自动改变的,所以如果希望添加符合NPC境界的功法的话,需要做一些额外处理,因此提供了这个功能和NpcChangeAskStaticSkill相似的指令,可以通过输入功法唯一编号给NPC添加符合其对应境界的功法数据。但由于进行了模式匹配的简化,所以在数据输入时需要注意。 对于ADD模式,可以通过在功法编号一中输入功法唯一编号进行动态添加 对于DELETE模式,则只能可以通过在功法编号一中输入相应的功法固定编号进行删除(后续会提供动态删除操作) 对于CHANGE模式,则需要在功法编号一中输入相应的功法固定编号(后续会提供动态查询)并在功法编号二中输入功法唯一编号,才能执行动态功法添加操作 相对来说,目前提供的AUTO指令使用起来非常复杂,强烈建议配合其他查询指令,先获取对应的数据后,再进行相应的数据修改操作 功法编号二中的数据在ADD模式和DELETE模式下是会被忽略的,不论是否传递数据都不会造成影响,但仍然建议不要传入对应数据,以免在优化指令组数据时造成影响。 |
ClearNpcOperate*NPC编号 runner.ClearNpcOperate(NPC编号) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 |
清空指定NPC的操作指令集 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 目前所有的NPC数据修改操作,都会记录在对应的指令集中,以便在数据变动时可以及时更新数据,改指令可以清空先前缓存的操作指令 建议在复杂的数据操作之前,或者Mod更新时,进行一定的指令清空操作,以防数据更新后可能导致的老存档数据混乱问题 |
ClearAllOperate* runner.ClearNpcOperate() |
清空所有操作指令集 改指令会清空所有的缓存操作指令,且该操作不可逆,使用时请多加注意 目前所有的NPC数据修改操作,都会记录在对应的指令集中,以便在数据变动时可以及时更新数据,改指令可以清空先前缓存的操作指令 建议在复杂的数据操作之前,或者Mod更新时,进行一定的指令清空操作,以防数据更新后可能导致的老存档数据混乱问题 | |
Npc性别修改*NPC编号#性别类型 runner.NpcChangeSex(NPC编号, 性别类型) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 性别类型: 根据觅长生原版设定,总共有三种对应的类型 1: 男 2: 女 3: 未知 |
该方法同 NpcChangeSex 虽然有提供对应的中文指令,但仍然建议使用原指令进行操作 修改指定NPC的性别 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的性别类型还请输入正确的数据,如若输入错误也会有相应的提示日志。 |
Npc神通修改*NPC编号#执行模式#神通编号一#神通编号二(可省略) runner.Npc神通修改(NPC编号, 执行模式, 神通编号一,神通编号二(可省略)) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 执行模式: 目前提供有三种模式,可以根据输入决定实现的效果 ADD: 给NPC添加神通编号一中的数据 DELETE: 移除NPC神通编号一中的数据 CHANGE: 将npc神通装备栏中,神通编号一中的数据替换为神通编号二中的数据 神通编号一: 神通唯一编号 神通编号二: 神通唯一编号,若当前执行模式不是change,则可以省略不写 |
该方法同 NpcChangeSkill 虽然有提供对应的中文指令,但仍然建议使用原指令进行操作 修改指定NPC的装备栏中的神通数据 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的操作模式输入大小写均可,如若模式输入错误也会有相应的提示日志。 神通编号需要传入神通唯一编号,因为官方设定神通会根据对应NPC等级进行调整,所以需要使用唯一编号。 神通编号二中的数据在ADD模式和DELETE模式下是会被忽略的,不论是否传递数据都不会造成影响,但仍然建议不要传入对应数据,以免在优化指令组数据时造成影响。 |
Npc功法修改*NPC编号#执行模式#功法编号一#功法编号二(可省略) runner.Npc功法修改(NPC编号, 执行模式, 功法编号一,功法编号二(可省略)) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 执行模式: 目前提供有三种模式,可以根据输入决定实现的效果 ADD: 给NPC添加功法编号一中的数据 DELETE: 移除NPC功法编号一中的数据 CHANGE: 将npc功法装备栏中,功法编号一中的数据替换为功法编号二中的数据 功法编号一: 功法固定编号 功法编号二: 功法固定编号,若当前执行模式不是change,则可以省略不写 |
该方法同 NpcChangeStaticSkill 虽然有提供对应的中文指令,但仍然建议使用原指令进行操作 修改指定NPC的装备栏中的功法数据 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的操作模式输入大小写均可,如若模式输入错误也会有相应的提示日志。 该指令需要输入功法的固定编号,因为官方设定功法是不会随NPC等级自动改变的,所以只能指定特定的功法编号才行。包括移除和修改操作,也要确认原本的具体编号是多少才能正确执行 功法编号二中的数据在ADD模式和DELETE模式下是会被忽略的,不论是否传递数据都不会造成影响,但仍然建议不要传入对应数据,以免在优化指令组数据时造成影响。 |
Npc功法修改自动版*NPC编号#执行模式#功法编号一#功法编号二(可省略) runner.Npc功法修改自动版(NPC编号, 执行模式, 功法编号一,功法编号二(可省略)) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 执行模式: 目前提供有三种模式,可以根据输入决定实现的效果 ADD: 给NPC添加功法编号一中的数据 DELETE: 移除NPC功法编号一中的数据 CHANGE: 将npc功法装备栏中,功法编号一中的数据替换为功法编号二中的数据 功法编号一: 功法编号 功法编号二: 功法编号,若当前执行模式不是change,则可以省略不写 |
该方法同 NpcChangeAutoStaticSkill 虽然有提供对应的中文指令,但仍然建议使用原指令进行操作 修改指定NPC的装备栏中的功法数据 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的操作模式输入大小写均可,如若模式输入错误也会有相应的提示日志。 该指令使用时较为特殊,因为官方设定功法是不会随NPC等级自动改变的,所以如果希望添加符合NPC境界的功法的话,需要做一些额外处理,因此提供了这个功能和NpcChangeStaticSkill相似的指令,可以通过输入功法唯一编号给NPC添加符合其对应境界的功法数据。但由于进行了模式匹配的简化,所以在数据输入时需要注意。 对于ADD模式,可以通过在功法编号一中输入功法唯一编号进行动态添加 对于DELETE模式,则只能可以通过在功法编号一中输入相应的功法固定编号进行删除(后续会提供动态删除操作) 对于CHANGE模式,则需要在功法编号一中输入相应的功法固定编号(后续会提供动态查询)并在功法编号二中输入功法唯一编号,才能执行动态功法添加操作 相对来说,目前提供的AUTO指令使用起来非常复杂,强烈建议配合其他查询指令,先获取对应的数据后,再进行相应的数据修改操作 功法编号二中的数据在ADD模式和DELETE模式下是会被忽略的,不论是否传递数据都不会造成影响,但仍然建议不要传入对应数据,以免在优化指令组数据时造成影响。 |
Npc请教神通修改*NPC编号#执行模式#神通编号一#神通编号二(可省略) runner.Npc请教神通修改(NPC编号, 执行模式, 神通编号一,神通编号二(可省略)) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 执行模式: 目前提供有三种模式,可以根据输入决定实现的效果 ADD: 给NPC添加神通编号一中的数据 DELETE: 移除NPC神通编号一中的数据 CHANGE: 将npc请教神通栏中,神通编号一中的数据替换为神通编号二中的数据 神通编号一: 神通唯一编号 神通编号二: 神通唯一编号,若当前执行模式不是change,则可以省略不写 |
该方法同 NpcChangeAutoStaticSkill 虽然有提供对应的中文指令,但仍然建议使用原指令进行操作 修改指定NPC的请教神通栏中的神通数据 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的操作模式输入大小写均可,如若模式输入错误也会有相应的提示日志。 神通编号需要传入神通唯一编号,因为官方设定神通会根据对应NPC等级进行调整,所以需要使用唯一编号。 神通编号二中的数据在ADD模式和DELETE模式下是会被忽略的,不论是否传递数据都不会造成影响,但仍然建议不要传入对应数据,以免在优化指令组数据时造成影响。 |
Npc请教功法修改*NPC编号#执行模式#功法编号一#功法编号二(可省略) runner.Npc请教功法修改(NPC编号, 执行模式, 功法编号一,功法编号二(可省略)) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 执行模式: 目前提供有三种模式,可以根据输入决定实现的效果 ADD: 给NPC添加功法编号一中的数据 DELETE: 移除NPC功法编号一中的数据 CHANGE: 将npc请教功法栏中,功法编号一中的数据替换为功法编号二中的数据 功法编号一: 功法固定编号 功法编号二: 功法固定编号,若当前执行模式不是change,则可以省略不写 |
该方法同 NpcChangeAutoStaticSkill 虽然有提供对应的中文指令,但仍然建议使用原指令进行操作 修改指定NPC的请教功法栏中的功法数据 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的操作模式输入大小写均可,如若模式输入错误也会有相应的提示日志。 该指令需要输入功法的固定编号,因为官方设定功法是不会随NPC等级自动改变的,所以只能指定特定的功法编号才行。包括移除和修改操作,也要确认原本的具体编号是多少才能正确执行 功法编号二中的数据在ADD模式和DELETE模式下是会被忽略的,不论是否传递数据都不会造成影响,但仍然建议不要传入对应数据,以免在优化指令组数据时造成影响。 |
Npc请教功法修改自动版*NPC编号#执行模式#功法编号一#功法编号二(可省略) runner.Npc请教功法修改自动版(NPC编号, 执行模式, 功法编号一,功法编号二(可省略)) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 执行模式: 目前提供有三种模式,可以根据输入决定实现的效果 ADD: 给NPC添加功法编号一中的数据 DELETE: 移除NPC功法编号一中的数据 CHANGE: 将npc请教功法栏中,功法编号一中的数据替换为功法编号二中的数据 功法编号一: 功法编号 功法编号二: 功法编号,若当前执行模式不是change,则可以省略不写 |
该方法同 NpcChangeAutoStaticSkill 虽然有提供对应的中文指令,但仍然建议使用原指令进行操作 修改指定NPC的请教功法栏中的功法数据 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 其中的操作模式输入大小写均可,如若模式输入错误也会有相应的提示日志。 该指令使用时较为特殊,因为官方设定功法是不会随NPC等级自动改变的,所以如果希望添加符合NPC境界的功法的话,需要做一些额外处理,因此提供了这个功能和NpcChangeAskStaticSkill相似的指令,可以通过输入功法唯一编号给NPC添加符合其对应境界的功法数据。但由于进行了模式匹配的简化,所以在数据输入时需要注意。 对于ADD模式,可以通过在功法编号一中输入功法唯一编号进行动态添加 对于DELETE模式,则只能可以通过在功法编号一中输入相应的功法固定编号进行删除(后续会提供动态删除操作) 对于CHANGE模式,则需要在功法编号一中输入相应的功法固定编号(后续会提供动态查询)并在功法编号二中输入功法唯一编号,才能执行动态功法添加操作 相对来说,目前提供的AUTO指令使用起来非常复杂,强烈建议配合其他查询指令,先获取对应的数据后,再进行相应的数据修改操作 功法编号二中的数据在ADD模式和DELETE模式下是会被忽略的,不论是否传递数据都不会造成影响,但仍然建议不要传入对应数据,以免在优化指令组数据时造成影响。 |
清空Npc指令*NPC编号 runner.ClearNpcOperate(NPC编号) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 |
该方法同 ClearNpcOperate 虽然有提供对应的中文指令,但仍然建议使用原指令进行操作 清空指定NPC的操作指令集 关于NPC编号,如果要修改固定NPC的数据的话,还是建议直接输入NPC的固定编号。这样不仅可以省去查找对应实例编号是多少,也能同步修改固定数据和实例数据,以免出现其他问题。 目前所有的NPC数据修改操作,都会记录在对应的指令集中,以便在数据变动时可以及时更新数据,改指令可以清空先前缓存的操作指令 建议在复杂的数据操作之前,或者Mod更新时,进行一定的指令清空操作,以防数据更新后可能导致的老存档数据混乱问题 |
清空所有指令* runner.ClearNpcOperate() |
该方法同 ClearAllOperate 虽然有提供对应的中文指令,但仍然建议使用原指令进行操作 清空所有操作指令集 改指令会清空所有的缓存操作指令,且该操作不可逆,使用时请多加注意 目前所有的NPC数据修改操作,都会记录在对应的指令集中,以便在数据变动时可以及时更新数据,改指令可以清空先前缓存的操作指令 建议在复杂的数据操作之前,或者Mod更新时,进行一定的指令清空操作,以防数据更新后可能导致的老存档数据混乱问题 |
Next Env 指令扩展
Env指令 | 参数说明 | 指令说明 |
---|---|---|
[&NpcDataInquire(NPC编号, 数据类型)&] env:NpcDataInquire(NPC编号, 数据类型) |
NPC编号: 需要查询的NPC的编号,传入NPC固定编号和NPC实例编号均可 数据类型: 目前提供了一系列的数据可供查询,目前支持的数据列表如下 Name: 获取当前NPC的名称 Title: 获取当前NPC的称号 SexType: 获取当前NPC的性别 Level: 获取当前NPC的等级(小境界等级) BigLevel: 获取当前NPC的等级(大境界等级) HP: 获取当前NPC的原始血量 DunSu: 获取当前NPC的原始遁速 ZiZhi: 获取当前NPC的原始资质 WuXing: 获取当前NPC的原始悟性 ShenShi: 获取当前NPC的原始神识 ShouYuan: 获取当前NPC的原始寿元 Age: 获取当前NPC的年龄 Sect: 获取当前NPC的所在门派 LiuPai: 获取当前NPC的流派编号 LingGen: 获取当前NPC的灵根数据 Skills: 获取当前NPC的装备栏中的所有神通数据 StaticSkills: 获取当前NPC的装备栏中的所有功法数据 AskSkills: 获取当前NPC的请教神通栏中的所有神通数据 AskStaticSkills: 获取当前NPC的请教神通栏中的所有功法数据 |
获取指定NPC的相关数据 关于数据类型的填写,只需要正确填写对应的文本即可查询,所有的数据文本均不区分大小写 |
[&GetNpcSkills(NPC编号)&] env:GetNpcSkills(NPC编号) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 | 获取指定NPC的装备栏中的所有神通数据 该指令将在未来版本弃用,请使用 NpcDataInquire 指令 |
[&GetNpcStaticSkills(NPC编号)&] env:GetNpcStaticSkills(NPC编号) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 | 获取指定NPC的装备栏中的所有功法数据 该指令将在未来版本弃用,请使用 NpcDataInquire 指令 |
[&GetNpcAskSkills(NPC编号)&] env:GetNpcAskSkills(NPC编号) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 | 获取指定NPC的请教神通栏中的所有神通数据 该指令将在未来版本弃用,请使用 NpcDataInquire 指令 |
[&GetNpcAskStaticSkills(NPC编号)&] env:GetNpcAskStaticSkills(NPC编号) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 | 获取指定NPC的请教功法栏中的所有功法数据 该指令将在未来版本弃用,请使用 NpcDataInquire 指令 |
[&NpcHasSkill(NPC编号, 神通编号)&] env:NpcHasSkill(NPC编号, 神通编号) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 神通编号: 神通唯一编号 |
获取指定NPC的装备栏中的所有神通数据 相关参数列表可能描述不准确,具体数据以GetNpcSkills指令获取到的数据为准 |
[&NpcHasStaticSkill(NPC编号, 功法编号)&] env:NpcHasStaticSkill(NPC编号, 功法编号) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 神通编号: 功法固定编号 |
获取指定NPC的装备栏中的所有功法数据 相关参数列表可能描述不准确,具体数据以GetNpcStaticSkills指令获取到的数据为准 |
[&NpcHasAskSkill(NPC编号, 神通编号)&] env:NpcHasAskSkill(NPC编号, 神通编号) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 神通编号: 神通唯一编号 |
获取指定NPC的请教神通栏中的所有神通数据 相关参数列表可能描述不准确,具体数据以GetNpcAskSkills指令获取到的数据为准 |
[&NpcHasAskStaticSkill(NPC编号, 功法编号)&] env:NpcHasAskStaticSkill(NPC编号, 功法编号) |
NPC编号: 需要修改的NPC的编号,传入NPC固定编号和NPC实例编号均可 神通编号: 功法固定编号 |
获取指定NPC的请教功法栏中的所有功法数据 相关参数列表可能描述不准确,具体数据以GetNpcAskStaticSkills指令获取到的数据为准 |
相关代码示例
在该板块我会选取几个常用的剧情指令编写代码示例,同时也会分别提供不同的环境下如何调用相关方法。受篇幅限制仅提供部分指令的示例,其余指令参考使用即可。
Json 文件中指令使用示例
[
{
"id": "Event事件名称",
"character": {},
"dialog": [
"NpcChangeSex*20003#2",
"NpcChangeSkill*20003#add#16",
"NpcChangeSkill*20003#change#27#8",
"Print*Info#[& NpcDataInquire(20003, \"skills\") &]",
"Print*Info#[& NpcHasSkill(20003, 16) &]"
]
}
]
在上述代码中,我总共执行了5次操作,下面我根据所写代码逐行解释各个操作的意义:
第一行:NpcChangeSex*20003#2 中
我调用了一个 Event 指令,将实例编号为 20003 的 NPC 的性别修改成女
第二行:NpcChangeSkill*20003#add#16 中
我调用了一个 Event 指令,将实例编号为 20003 的 NPC 的装备神通进行了修改,给她添加了一个编号为 16 的神通
第三行:NpcChangeSkill*20003#change#27#8 中
我调用了一个 Event 指令,将实例编号为 20003 的 NPC 的装备神通进行了修改,将她自身所装备的 27 号神通替换为 8号神通
第四行:Print*Info#[&NpcDataInquire(20003, "skills")&] 中
我调用了一个 Env 指令去获取一个数据,并通过 Event 的 Print 指令将结果打印了出来
具体的数据内容是获取实例编号 20003 的 NPC 的所有装备神通数据
第五行:Print*Info#[&NpcHasSkill(20003, 16)&] 中
我调用了一个 Env 指令去获取一个数据,并通过 Event 的 Print 指令将结果打印了出来
具体的数据内容是获取实例编号 20003 的 NPC 是否拥有编号为 16 的神通,它会返回一个 bool 类型结果
Lua 文件中指令使用示例
示例一、通过 Next 进行指令调用
function Test(runner, env)
runner.NpcChangeSex(20003, 2)
runner.NpcChangeSkill(20003, "add", 16)
runner.NpcChangeSkill(20003, "change", 27, 8)
local skills = env:NpcDataInquire(20003, "skills")
runner.Print("Info", skills)
local result = env:NpcHasSkill(20003, 16)
runner.Print("Info", result)
end
在上述代码中,我使用了 Lua 语言进行了相关指令的调用,具体的实现效果和 Json 中说明的是相同的
不过对于数据打印的操作,我这边并没有写到一起,同样的这里也建议大家尽量不要将多个指令复合然后写到一起
C# 文件中指令使用示例
示例一、通过 Next 进行指令调用
public class DemoClass
{
public void TestMethod()
{
DialogAnalysis.StartTestDialogEvent("NpcChangeSex*20003#2");
DialogAnalysis.StartTestDialogEvent("NpcChangeSkill*20003#add#16");
DialogAnalysis.StartTestDialogEvent("NpcChangeSkill*20003#change#27#8");
// 这里访问 Env 方法有可能会存在问题
DialogAnalysis.StartTestDialogEvent("Print*Info#[&NpcDataInquire(20003, "skills")&]");
// 这里访问 Env 方法有可能会存在问题
DialogAnalysis.StartTestDialogEvent("Print*Info#[&NpcHasSkill(20003, 16)&]");
// 对于 Env 的指令调用,是有另外的操作方式的,但由于稍显复杂所以这里进提供一种简单的实现方式
// 这种实现方式在自定义的 Env 指令中会比较方便,把相关数据传入即可
IDialogEnvQuery dialogEnvQuery = DialogAnalysis.GetEnvQuery("NpcDataInquire");
dialogEnvQuery.Execute(new DialogEnvQueryContext(new DialogEnvironment(), new object[] { 20003, "skills" }));
}
}
上述代码中,使用了 Next 封装的 DialogAnalysis.StartTestDialogEvent 方法来处理一个字符串文本的指令,这种处理方式仅适用于少量且无需关注具体回调的方法。仅提供相关的代码作为演示,并不建议在实际的项目中这样处理指令。
如果你发现 IDE 提示找不到 DialogAnalysis.StartTestDialogEvent 方法,请注意要将 Next.dll 作为你的项目依赖添加进去。
同样的,对于不同的场景也有不同的处理方式,例如直接访问 Next 的指令数据集进行相关指令调用,或者在自己的自定义指令内去进行其他指令调用。针对不同的场景具体的代码实现也有所差异,需要根据实际使用场景去进行修改。因为这里变数过多并不适合全部展示出来。如果您有相关的设计需求可以在Mod制作群中联系我。
示例二、通过教导框架封装的 Manager 管理器调用
public class DemoClass
{
public void TestMethod()
{
// 因为在 NPC 教导框架中,所有的 NPC 相关操作都是通过一个指令对象去执行的,因此这里需要先创建一个对应的指令对象
// 这个指令对象中包含了所要执行的操作和相关的数据
NpcOperateInfo operate1 = new NpcOperateInfo(20003, NpcChangeType.Update, NpcOperate.SexType, 2, 0);
// 使用 NpcOperateManager 执行指令
// 因为修改性别的操作只需要修改一次就能生效,所以调用 TryOnlyExecuteOnceOperate 方法
NpcOperateManager.Inst.TryOnlyExecuteOnceOperate(operate1);
// 同样的封装其余指令数据
NpcOperateInfo operate2 = new NpcOperateInfo(20003, NpcChangeType.Add, NpcOperate.Skills, 16, 0);
// 因为觅长生原版游戏的一些特性,对于功法神通数据的修改会在该Npc突破后被流派数据覆盖
// 所以这里NPC教导框架做了一系列的指令存放、加载、自动执行的相关操作,具体的原理略显复杂,这里不详细展开说明了
NpcOperateManager.Inst.TryAddAndExecuteOperate(operate2);
// 这里封装了第三条指令,从这里可以看出所有的指令的数据结构是遵守一定的约定的,不同指令之间的变动很小,但却可以实现不同的操作
NpcOperateInfo operate3 = new NpcOperateInfo(20003, NpcChangeType.Change, NpcOperate.Skills, 27, 8);
NpcOperateManager.Inst.TryAddAndExecuteOperate(operate3);
// 同样的对于 Env 相关的数据获取,也是通过指令实现的
NpcOperateInfo operate4 = new NpcOperateInfo(20003, NpcChangeType.Select, NpcOperate.Skills, 0, 0);
// 这里调用了查询相关的方法,要注意查询指令需要传递数据类型
List<int> skills = NpcOperateManager.Inst.TryOnlyInquireOnceOperate<List<int>>(operate4);
Console.WriteLine(skills);
// 最终的查询指令
NpcOperateInfo operate5 = new NpcOperateInfo(20003, NpcChangeType.Select, NpcOperate.Skills, 0, 0);
// 这里调用了查询相关的方法,要注意查询指令需要传递数据类型
List<int> skills = NpcOperateManager.Inst.TryOnlyInquireOnceOperate<List<int>>(operate4);
Console.WriteLine(skills.Contains(16));
}
}
可以看到在上述代码中,Npc数据相关的操作非常简单,本质是都是通过 NpcOperateInfo 数据来执行的。而对于 NpcOperateManager 来说,内部也提供了很多指令执行模式,这些模式的差异以及 NpcOperateInfo 指令数据的差异,可以通过查看具体代码进行详细了解。这里就不再展开说明了。
如果你发现 IDE 提示找不到相关的类或方法,请注意要将 NPC 教导框架的 dll 作为你的项目依赖添加进去,同时在上传 Mod 是注意将其设置为前置 Mod。
另外,因为本质上所有的数据操作都是基于 NpcOperateInfo 指令数据实现的,因此实际也是有更简单的执行方式的,这部分代码我也同样不在这里详细列举了,相信能看到这里的 也有足够的能力自己进行代码优化处理,或者二次封装调用。