3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 侠客前传 | 刺客信条 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 5641|回复: 2
打印 上一主题 下一主题

[原创] 部落与弯刀 Mod制作教程 进阶篇-技能

[复制链接]

16

主题

187

帖子

1万

积分

3DM Mod 原创组

Rank: 12Rank: 12Rank: 12

贡献度
1300
金元
117680
积分
17018
精华
5
注册时间
2015-6-22

3DM MOD站(黄金)

跳转到指定楼层
主题
发表于 2020-6-23 21:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 魔剑圣尊 于 2020-6-23 21:24 编辑

一、技能表介绍
好久不见……咕了这么久,终于有时间开始动笔写技能篇的内容了。
接下来先从技能表格开始
1.技能表格介绍
惯例,从官方开源里偷…咳咳,复制一个技能表出来,具体位置是官方开源下的 EXCEL\ 技能测试\ J技能列表测试.xlsx 这个表不止一个,不过我们只需要复制一个就够了。

把表复制到自己的mod目录下后,按自己的习惯改名(不改也无所谓)

然后打开valuebundle\INDEX.xml 添加以下内容:

<convert reg="skill_info_pojo.xml" from="技能列表.xlsx" />

顺带一提,随着版本更新,现在可以不用写default.xml了,不过这个表依然会生效,所以建议删除default.xml。

随后打开技能表格,按照惯例删除除表头以外的所有内容。

技能表的表头很复杂,因此我会分为三个部分讲解。

1.1 技能信息

这些内容是是技能表里的基础信息
ID:技能的唯一ID,如果相同则会覆盖
技能名称:技能的显示名称,用于展示
对应槽位:废弃设定,不用填写
被动:事实上是技能类型,有以下几种填写格式
0:主动技能(主动施放但可拥有被动效果)
1:被动技能(不能主动施放)
3:战斗开始时被动触发

2有啥用?我也不知道。

等级信息:技能的等级以及升级范围
格式:
最低等级-最高等级(可省略):对应等级系数表的起始等级#步长(可省略,默认为1)
有多个等级信息时,将从上至下进行综合,下面的信息会覆盖上面的信息
等级范围为1~40级,不能超过等级系数表所定义的等级上限

举个例子,比如一个技能最低1级,最高5级,每次升级加1级,则是:
1-5:1#1
如果一个技能最低3级,最高10级,每次升级加3级,则是:
1-10:1#3

技能描述:技能显示在面板上的内容,用于展示
使用情况:废弃设定,不用填写
技能描述备注:备注内容,随意填写
技能图标:技能的图标,使用方法同技能图标,可以参考之前的教程内容,对应游戏资源路径 Asset\BuildSource\SkillIcon\ 下的图标(不用翻了,这个是资源包解包后的路径)
如果需要使用自己图标,可以把技能图标放到RES\ SkillIcons\*下,然后在override.txt里填写以下路径:
RES\SkillIcons\* >:\BuildSource\SkillIcons\*

技能系:作用未知,姑且当做废弃设定
增幅系数:技能享受的字段增幅系数,对应角色属性字段里字段,未测试过效果。
技能页:估计是废弃设定,因为没有挖掘出使用效果。要把技能写入技能页可以使用技能页的表格
气力消耗:技能的蓝量消耗
吟唱时间:技能的蓄力时间(之后解释)
技能分类:影响AI对技能使用时机的判断。类型有以下几种:
技能分类:
0:被动技能
1:伤害技能
2:减益技能
3:治疗技能
4:增益技能
5:DEBUFF技能
6:位移技能
7:嘲讽技能
8:救命技能

目标类型:技能的指定目标,决定了技能指示器和技能里获取到的信息有哪些(具体之后解释)有以下几种类型:
0:自己(无需选择)  技能直接释放
1:敌方单体                技能需要选择一个敌人
2:目标位置                技能需要选择一个点或一个圈
3:目标方向                技能需要选择一个方向
4:我方单体                技能需要选择一个友方

目标查询参数:当目标类型为1 (即敌方单位)时生效。会影响选择的目标
有以下内容可选:
当参数为空时默认返回最近的敌人或当前目标
only_hero:仅寻找英雄类型的单位
only_soldier:仅寻找小兵类型的敌人
min_hp:优先寻找血量最低的敌人

选择参数:影响技能选择指示器的显示
当目标类型为2目标位置时表示选择指示器半径;
当目标类型为3目标方向时表示选择指示器长度;

冷却时间:技能的单独冷却时间,当技能释放成功或失败后会进入冷却时间(吟唱被打断不会进入冷却)
公共CD:所有技能的通用冷却时间,当技能释放成功或失败后会进入公共冷却时间(吟唱被打断不会进入冷却)公共冷却时无法使用任何主动技能(不影响被动技能和普通攻击)
释放距离:技能的释放距离,影响技能选择指示器的显示
当目标类型为1、4时影响选择单位所需最短距离
当目标类型为2时影响能选择的最远位置
当目标类型为3时影响选择指示器的圆圈大小

1.2 技能属性

吟唱动作:技能吟唱开始时使用的动作,动作ID可以参考 Z战斗单位模型动作.xlsx 里人形动作绑定的动作ID,如 翻滚、蓄力、冲锋 等
吟唱特效:技能吟唱期间使用的特效,使用的是特效的相对路径,可以参考 Z战斗特效对象模型.xlsx 里战斗特效模型对象的地址。
释放动作:技能吟唱完毕后使用的动作,动作ID同吟唱动作
限定武器类型:估计为废弃设定,据测试无效。
被动增加属性:拥有技能后该角色增加的属性字段,具体属性可以参考 J角色属性字段.xlsx,填写格式为:属性字段1,增加值|属性字段2,增加值,此处可以使用查询和计算表达式。
此处使用的是战斗中查询,具体的查询内容可以参考部落与弯刀WIKI
范例
增加2000点生命:s_生命,2000
增加100点攻击和200点气力:s_攻击,100|s_气力,200
增加自身攻击的80%:s_攻击,[&[$stat:s_攻击$]*0.8&]
技能每增加一级,增加100点攻击:s_攻击,[&[$def_val$]*100&]

成功判断条件表达式:当技能吟唱完毕后,会使用此处的表达式判断,表达式的使用方法同之前在事件表里使用表达式,不过不需要写结果跳转。
范例
当目标生命值小于等于20%:[%aim_hp_pct%][<=]20
当己方或敌方的生命值大于50%:[%aim_hp_pct%][>]50|[%this_hp_pct%] [>]50
当己方的攻击力比敌方高100及以上:[&[%stat:s_攻击%]-[%aim_stat:s_攻击%]&][>=]100


1.3 技能命令
此处是技能最核心的部分,填写技能的指令内容,具体的指令内容会在之后的章节讲解

在讲解这四个内容前,我们需要先看一张技能释放流程的简图:

上面是我根据个人理解绘制的一张技能流程使用图,金色部分为该章节涉及到的命令,因此现在看来四个值就很好理解了:
开始吟唱时命令:技能使用后立即进入吟唱阶段,此时会触发此处的命令,如果吟唱时间为0则还会顺势进入释放阶段。
发动成功时命令:条件表达式判定成功后执行该命令
发动失败时命令:条件表达式判定失败后执行该命令
命中时命令:以上三个命令产生的伤害判定命中后触发

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

2

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3
回复

使用道具 举报

16

主题

187

帖子

1万

积分

3DM Mod 原创组

Rank: 12Rank: 12Rank: 12

贡献度
1300
金元
117680
积分
17018
精华
5
注册时间
2015-6-22

3DM MOD站(黄金)

舒服的沙发
 楼主| 发表于 2020-6-24 23:05 | 只看该作者
二、第一个技能:火球术!1.技能指令WIKI
介绍完了技能后表后,开始介绍如何编写技能指令。
技能相关的指令可以在wiki上查找到,技能指令wiki地址是:
打开技能指令wiki后,首先看到目录
                              
1     战斗中的指令脚本说明
2     战斗中的脚本指令列表
以上两项并非技能指令内容,而是战斗中事件里使用的事件指令,不过在技能指令与事件指令可以相互调用。
3     专门用于战斗场景中条件查询方法
4     伤害表达式格式
以上是技能里涉及数值判定和伤害属性填写的核心部分,建议简单浏览一遍。
5     技能指令编辑说明
以上是技能的核心指令内容,基本绝大部分技能指令都可以在此处翻到。
6     战斗中的特殊对象ID
7     单位对象附加触发脚本编辑说明
以上内容是战斗中剧情事件和人物挂载事件的相关内容,用于触发和执行战斗中的事件。
2.第一个技能
讲了这么久的基础内容,现在开始讲解如何制作一个技能。
此处以火球术作为范例,来讲解重要指令 add_eft 的作用
首先填写技能的基础信息,如何填写可以参考上一章的内容
由于是瞬发的主动非指向性法术,因此可以省略被动、吟唱时间动作特效与吟唱指令,同时不需要进行目标判定因此省略条件判断
来到发动成功时指令,在这里,我们需要在技能使用后,发出一个火球,所有产生技能特效的技能,都需要用到一个指令:add_eft
我们打开wiki,翻到add_eft,可以看到一长串的内容,由此也可以得知该指令的重要程度。
看到这一长串是不是有点蒙?没关系,我们先写一个简单的火球术,然后再慢慢解释。
0#add_eft#M火魔弹2#cast_pos#3:0,2500
以上指令的效果是从自身位置开始,发射一个火球
可能你还是有点蒙圈,我们开始分解一下以上指令的内容
首先,# 这个符号是分隔符,在技能里,所有技能指令都遵守
0#技能命令2
0*条件表达式1#技能命令1
的填写方式,第一个数字代表技能指令的生效时间,这个时间是从这一串指令被触发后开始的。
条件表达式可写可不写,如果填写了条件表达式,则这一行指令只有满足条件后才会触发。
0#add_eft
这里代表从指令触发后,第0秒开始执行add_eft这个指令
0#add_eft#M火魔弹2
add_eft的第一个指令是要产生的特效体
M火魔弹2这个内容定义在Z战斗特效对象模型 里,之后会具体讲解这里的表格如何填写,现在这个内容是告诉你使用后会产生一个火球
此处其实还可以在特效体后面加上冒号:来填写速度和大小缩放信息,这个之后再详细讲解
0#add_eft#M火魔弹2#cast_pos
add_eft的第二个指令是特效体出现的位置,在wiki里有详细的位置指令说明,此处粘贴一下:
此处使用的位置信息是cast_pos,意思是技能使用时的位置。这个位置不会随主角位移而改变。如果位置需要有偏移,则可以使用偏移信息。
偏移信息的填写格式是:
位置,x,y,z
此处,x是位置向前为正,y是位置向左为正,z是位置向上为正。
假如想要火球从头上发射,则应该填写的位置是:cast_pos,0,0,200
0#add_eft#M火魔弹2#cast_pos#3:0,2500
add_eft的第三个指令是位移信息,代表着这个特效体会以什么样的形式运动,以下是wiki里对于运动信息的解释:
此处3:0,2500的意思是,向指定方向运动,偏移角度0(即正前方)移动距离2500个单位
会移动的特效,速度可以在Z战斗特效对象模型 表里修改,也可以在第一个指令上加上冒号:来修改,之后会详细讲解。
我们把
0#add_eft#M火魔弹2#cast_pos#3:0,2500
这一串指令放到 发动成功时命令 里
然后打开游戏,构建mod,勾选mod,随后进入技能编辑器。
等进入技能编辑器后,在技能ID里输入之前创建的技能的ID,点击载入后,技能就会出现在技能栏里,同时技能的信息也会加载出来
在此处说明一下,技能编辑器,起到的其实是一个实时调整技能的作用,所有的内容都不会保存,所以如果你在技能编辑器里调整好了你的技能,一定要记得把参数复制回技能的表格里。
使用技能后,可以很明显的看到一个火球飞出去了!
OHHHHHH!完结撒……等等,为啥火球碰到敌人就消失了,但是没伤害?
这其实是因为 M火球术 这个特效体有伤害范围判定,但是本身没有写默认的伤害表达式,因此,我们需要在add_eft里为其补上。
接着补充add_eft的内容:
0#add_eft#M火魔弹2#cast_pos#3:0,2500#0
add_eft的第四个指令是伤害判定的目标对象,分为以下几种:
伤害判定对象:
0:敌方
1:我方单位
2:敌我双方
由于我们需要痛击的不是队友,是敌人,所以此项数值写0.
(如果你是一个二五仔或混沌中立者,可以写2)
0#add_eft#M火魔弹2#cast_pos#3:0,2500#0#type:2;dmg:[%stat:s_魔法攻击%]*3;hit:1000;blk:-1000;attack_type:900;eft:火焰受击4
最核心的部分来了!add_eft的第五个指令是伤害表达式。这里的内容由于比较繁杂,可能会造成理解有些难度。我们先翻到wiki上对伤害表达式的解释:
是不是看完还有一点理解不能?如果你理解了可以略过以下内容,如果没理解可以跟着我过一遍:
type:2;
这个是伤害类型,0:普通近战攻击 1:普通远程攻击 2:技能伤害 3:治疗 4:回蓝
0、1、2的区别会表现在一些特殊的判定上,3和4则是恢复性的判定。
dmg:[%stat:s_魔法攻击%]*3;
这个是伤害数值,可以在这里写表达式,此处的意思是造成玩家魔法攻击3倍的伤害。如果你的伤害不能被防御抵消,可以使用t_dmg来实现此效果。同时,所有的恢复判定使用的都是t_dmg,因此如果你发现你写的技能无法恢复血量或气力的话,可以看看是不是没有使用t_dmg
attack_type:900;
此处是伤害类型,这里写的伤害类型与 W武器护甲作用表 里的数值一致,目前弯刀里使用的伤害类型有以下几种:
hit:1000;blk:-1000;
此处是伤害的闪避与格挡机制,因此在这里并列写出了。意思是该技能无法被闪避无法被格挡。
顺带一提,官方wiki上有个错误,技能不能被闪避是hit:1000而不是-1000,可以理解为命中满值则不可闪避。
eft:火焰受击4
此处是技能击中敌人后出现的效果,这里使用的特效定义在 Z战斗受击特效表 里。
我们把
0#add_eft#M火魔弹2#cast_pos#3:0,2500#0#type:2;dmg:[%stat:s_魔法攻击%]*3;hit:1000;blk:-1000;attack_type:900;eft:火焰受击4
复制到技能编辑器的 发动成功栏里,然后再次点击载入按钮,重新加载技能:
可以看到,火球击中敌人后成功冒出了伤害数值,并且出现了相应的受击特效!
那么,第一个技能就大功告成了。不要忘记把技能命令复制到EXCEL表格里哦。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

6

主题

665

帖子

690

积分

超级玩家

Rank: 5Rank: 5

贡献度
6
金元
6659
积分
690
精华
0
注册时间
2012-12-1
硬硬的板凳
发表于 2020-10-5 20:02 | 只看该作者
变身类技能咋做?
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|咖绿茵|求知网|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2024-4-24 03:15 , Processed in 0.105247 second(s), 18 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表