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

注册 登录

QQ登录

只需一步,快速开始

查看: 5300|回复: 11
打印 上一主题 下一主题

[分享] mod制作进阶---effects和bonus value的使用

[复制链接]

206

主题

2523

帖子

5839

积分

创意工坊

Rank: 11Rank: 11Rank: 11Rank: 11

贡献度
424
金元
41231
积分
5839
精华
2
注册时间
2009-6-20
跳转到指定楼层
主题
发表于 2017-7-8 15:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 a75799 于 2017-7-8 18:24 编辑

选择effects和bonus value来讲,一是因为它们使用起来非常灵活,并具有完美的兼容性与强大的功能,二是很难有mod系统的涉及到这里面所有的内容。
所以,如果你已经能够看懂别人的mod,又希望更进一步做出相对精致而炫酷的东西来,那么这篇帖子会对你有帮助。
本贴的主旨不是把近3000个effects的效果一一翻译出来,而是让大家对effect、bonus value与游戏机制的关联有一个全面的了解,从而能够在mod制作中对它们进行灵活的运用。


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
本贴为个人原创,3dm首发,欢迎转载传阅。至于是否注明出处或作者,i really dont care。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


1. 两者的关系
effect可以通过不同的途径对战役进行影响,但具体影响的内容一般总是由bonus value决定。
P.S:通过脚本生效的effect(wh_dlc07_effect_remove_bad_traits等)不由bonus value定义,但我并不打算讲脚本,所以这部分不会涉及。



2. bonus value对effect进行定义的方式
打开PFM,找到campaign_bonus_value
以此开头的我建议大家先浏览一遍。
我这里做一个简单的介绍:
battle_context是与开始战斗时的状态有关的(如闪击、对阵特定势力、进攻方、防御方、丛林作战、地下作战、各种军队姿态--劫掠、伏击、围城等等),这类文件的内容多数无法更改,只能调用(能够更改的部分也通常没有更改、新建的必要),所以这部分你只需要看一遍大概了解effect可以通过哪些战斗开始时的状态生效即可。

下面的ids包含了所有可以对effect进行定义bonus value key,不同的文件适应不同的情况,例如我们用得最多的basic就包含了常规状态下战役地图中所有能够使用的bonus value。


在看过这边的内容之后,往下翻,找到effect_bonus_value与junctions相关的内容。
这部分负责将bonus value与effect关联起来,属于重点需要掌握的部分。
仔细观察会发现junction与上面的ids通常都是相互对应的。例如campaign_bonus_value_ids_basic对应effect_bonus_value_basic_junction,表示当你希望通过basic_junction来为一个effect指定效果时,只能使用ids_basic中的key,它不包含的key将无法生效。

在了解这些之后,effect与bonus value的关系就应该清楚了。


3.实例
下面我会详细说明如何从确定bonus value到定义effect来建立一个激活火焰伤害、魔法伤害、不溃与免疫疲劳特性、致盲附魔并解锁火球魔法的effect,以此来让大家了解新建effect的意义和具体流程

首先在effect中新建一个key。例如13131
icon是图标,priority为在ui上的排序(-1意味着后台效果,不在ui上显示),category表示在ui上的类型,value good决定该effect是增益还是减益(对实际效果没有影响)。
非后台效果需要有相关的文本描述(text-db-effects),否则将是一片空白。

下面一步步来:
激活火焰伤害
unit_flaming_attack_mod
可以通过basic、battle contexts、unit sets三种方式添加。
也就是说这个bonus value可以作为基础全局设置,或者针对特定战斗情况和特定单位。
P.S:根据单位生效的部分有几个表,但除了unit sets之外如unit records、unit class并没有实装,我也不建议大家去用它们,因为很可能根本无效或出现各种bug。而且它们在理论上能够实现的功能通过unit sets也一样可以,没必要做无用功。
P.S2:根据unit set生效的方式是通过effect_bonus_value_ids_unit_sets,这个比较特殊一点。

激活魔法伤害
unit_is_magical

只存在于basic中。

由于我们没有特殊要求,所以直接选择简便的做法,即通过basic来定义。
打开effect_bonus_value_basic_junction,添加:
13131unit_flaming_attack_mod
13131unit_is_magical



不溃与免疫疲劳特性
游戏中无法新建特性,所有特性都在unit_attribute,所以我们打开这个表,记住不溃与免疫疲劳特性的id---unbreakable、fatigue_immune。
接下来打开关联特性与effect的effect_bonus_value_unit_attribute_junctions,添加:
enable13131unbreakable
enable13131fatigue_immune


致盲附魔
致盲是一个phase,所以我们到special_ability_phases中按照它的分类(接触效果)和出现的时间(DLC内容)查找。
得到id:wh_dlc06_unit_contact_blinded。

如果你对于这种方式感到吃力,那么通过special_ability_phase_stat_effects来根据phase的效果查找也是可以的。
例如你知道致盲会减少36的近战攻击,那么在pfm中打开special_ability_phase_stat_effects下面的任意一个表,单击stat按属性排序,找到近战攻击然后看36的部分。或者单击value按值排序,找到36再看影响近战攻击的部分,直到把几个表搜索完为止。具体的话方法其实很多,这里就不一一列举了。

在得到致盲的id之后,打开关联武器附魔的effect_bonus_value_special_ability_phase_record_junctions
添加
active13131wh_dlc06_unit_contact_blinded


解锁火球魔法
首先我们确定火球的技能id,方法很多,比如unit_ablities或者unit_special_ablities。一样可以用上面说过的按分类和出现时间的方法来找。
得到id:wh_main_spell_fire_fireball
这里顺便解释一下官方命名的规则,以上面的火球来说:
wh表示战锤,main表示原版即存在的内容,spell表示法术,fire表示火系(lore),fireball是具体名称。
基本上所有命名都大同小异,只是一些比较偏的特殊简写对于英语基础较差的玩家可能会比较不友善。当然,这只是手动查询起来稍微麻烦一点,不影响使用。





确定id之后打开effect_bonus_value_unit_ability_junctions,这个负责effect与技能相关的部分。
解锁魔法的effect一定是原版就存在的,但我们的目的是要新建一个复杂的effect而不是通过添加复数effects来实现目的,所以我们不用原版的effect而是将功能添加到我们新建的13131上。
13131enablewh_main_spell_fire_fireball


至此,一个激活火焰伤害、魔法伤害、不溃与免疫疲劳特性、致盲附魔并解锁火球魔法的effect就完成了,接下来选择一种方式将其添加进游戏中即可。

P.S:既然说到了这里,不妨给大家发散一下关于技能升级的做法:
首先,新建技能1、2、3、4。代表一个技能的4个级别(但后台实际上是4个技能)。
设置4个effect(比如effect1、2、3、4),然后通过上面的effect_bonus_value_unit_ability_junctions进行如下设置:
第一个
effect1enable1


第二个enable 2 ,disable 1,
effect2enable2
effect2disable1


第三个 enable 3,disable 2,
第四个enable 4 disable3。
剩下的就是把4个技能做成你想要的样子,并确保这4个effect能够以渐进的方式获取,比如通过技能树、等级解锁之类。




4.附录--部分常用的effect添加方式
effect_bundles_to_effects_junctions
bundle是效果集,它有自己的生效方式(本文不涉及),其内容庞大,种类繁多。原版事件、种族特性等等都有相应的bundle,希望通过这些渠道添加的,可以用它来实现。
具体请参考effect_bundles和effect_bundles_to_effects_junctions。

ancillary_to_effects
道具。

character_skill_level_to_effects_junctions
角色技能树。

trait_level_effects
角色特性。

campaign_difficulty_handicap_effects
难度(可以区分玩家与AI)。

technology_effects_junction
科技。

building_effects_junction_tables
建筑。

其他的就不列举了,各位自行发掘。



最后,祝大家玩的愉快。此致敬礼blah blah blah。




回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-2 11:25 , Processed in 0.423538 second(s), 16 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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