性别保密
UID77784
库银 枚
好友
积分66
阅读权限95
在线时间 小时
最后登录1970-1-1
注册时间2012-1-8
|
逻辑符的使用
一些修改资料-- 逻辑符的使用
提供一些修改资料,对大家,尤其是光明圣骑可
宇文寒闭关复习,他托我发几个东西上去,对只做系统修改的MOD来说可能有些参考价值。实际上这些东西是做柱子3.0的时候摸索出的,后来写的总结。他觉得可能有的朋友想做些复杂的系统设定时能有些参考。下面发上来,一共三个,原文引用。对了,忘了说了,光明圣骑士,你可以多看看http://forums.totalwar.org/vb/forumdisplay.php?f=72 这里的东西。
文章一
export_descr_builings.txt文档中的“and or not ”的使用原则
以前我写过这个原则,不过当时没有开始3.0补给线的设定,所以有些认识是有问题的,那个原则不要再看了,这是更新的内容。
而且在实际的设定过程中还发现了一些问题,暂时不太清楚是怎么回事,我会在后面说的
一、可以使用的条件
在export_descr_buildings.txt里修建建筑和征募部队可以增加条件限制,并可以使用and, or, not连接条件。
可以增加的条件有:
factions
building_present_min_level
resource
hidden_resource
marian_reforms
这5种条件可以以任意的顺序重复使用。
二、“and,or,not”的使用原则
1。stables requires factions { spain, carthage, egypt, pontus, macedon, thrace, seleucid, slave, }
2。recruit "carthaginian cavalry" 0 requires factions { spain, }
可以看到这样的语句总是这样的结构:建筑或征募部队+requires+条件。条件被分成两部分,紧跟在requires后
的条件是首要条件,再靠后的条件是附加条件。两者识别、运算方式不同。
另外requires+条件并非只能用在recruit和建筑级别名称后面,recruits_exp_bonus,population_bonus等等这些后面
都可以用,大家可以自己试一试。
首要条件是从“requires”开始到首次出现“and”结束的中间的条件语句,如 ……requires A or B or C and D and E
这一句里“A or B or C”是首要条件。附加条件是首要条件后的所有条件,上面一句里的附加条件是“D and E”。再比如
……requires A and B or C,这里“A”是首要条件,“B or C”是附加条件。首要条件与附加条件间总是“与”的关系,
即 (首要条件)and(附加条件)。
附加条件内部逻辑运算并非遵循通常的逻辑优先顺序,它遵循“从后向前,两两运算”的关系。举例说明如下:
……requires A or B and C or D and E or F and G
首先将首要条件“A or B”分离出来暂且放在一边,附加条件是“C or D and E or F and G”。这个附加条件的
运算逻辑按照“从后向前,两两运算”的原则相当于“C or (D and (E or (F and G)))”,不论逻辑词是什么,系统
总是这么运算。再如附加条件是“H and I or J or K and L or M and N”,那么相当于“H and (I or (J or (K and (L or (M and N)))))”。
关于“not”,系统总把紧跟“not”的条件看作一个整体来处理,即“not”的运算优先度最高。举例说明如下:
……requires A or B and C or D and E or not F and G
分离首要条件“A or B”,附加条件里的“not F”是一个整体,因此附加条件的运算逻辑是“C or (D and (E or ((not F) and G)))”。
再如 ……requires A or not B or C and D or E and not F
首要条件“A or (not B) or C”,附加条件“D or (E and (not F))”。
再次强调首要条件和附加条件间总是“and”的关系。“……requires A or B and C or D and E or not F and G”的
关系就是“(A or B) and (C or (D and (E or ((not F) and G))))”
三、独立性
我不知道该怎么表达这个现象,暂且叫“独立性”,说明如下。
1、unit独立性
在某一兵营的征募列表中有一个unit(包括刺客,间谍,外交官,船只等等只要可以recruit的都是unit)比如A,假设B国家
和C国家都可以征募A,希望对B国家而言需要马略改革才能征募A,而对C国家而言需要铁资源才可以征募A,那么可以在征募列表中这样写:
recruit "A" 0 requires factions { B, } and marian_reforms
recruit "A" 0 requires factions { C, } and resource iron
虽然是同一个单位A,但它们之间完全独立,按照各自的条件去执行,互不干扰。
再如D国家可以征募A单位,准备设定两种不同的征募情况,希望在马略改革之前征募0经验的A,马略改革之后征募3经验的A,则可如下:
recruit "A" 0 requires factions { D, } and not marian_reforms
recruit "A" 3 requires factions { D, } and marian_reforms
对于同一个国家的同一个兵种,如果设定了几种不同的征募情况,一般几种条件应该互斥。条件间重叠的情况我没有测试过,可以简单的测试一下,比如
recruit "A" 0 requires factions { D, }
recruit "A" 3 requires factions { D, }
看看这样设定兵营是否出现两个A单位,一个0经验,一个3经验;还是只出现一个最高经验的。不过一般情况下条件要互斥,不要出现这种情况,设定时要注意。
2、building独立性
export_descr_buildings.txt里最多可以有64种建筑,每种建筑以自己所在的语句块为单位相互独立,即使出现两个有同样名称、
同样升级过程、同样建造费用和同样功能的建筑,他们之间也是完全独立的,系统把它们看成是两个建筑而不是一个。这一点在设定3.0以前我也没有发现,一开始设置3.0的补给线进入了误区。
一开始设定3.0的补给线的时候,一直以为系统是根据建筑的名字来区分它们的。以为两个建筑,如果名字相同就是同一个建筑。后来发现不对,同样名字的建筑也是两个不同的建筑。假设A和B两个建筑的名称相同,都有5级,每级的名称也相同,但具体每一级的征募功能不一样,那么当A建筑的第一级修建好以后,那么以后只会升级到A建筑内的更高级别,绝对不会因为B建筑的名称和每一级的名称与A一样而升级为B建筑的某一级。在设定中不要出现两个建筑名称相同,这会有很多问题,也不要希望给两个建筑相同的名称来实现什么特殊的设定。
四、各种问题
1、使用“not building_present_min_level”这个条件后会导致建筑在升级树里看不到,就像3.0里有补给线的地图那样,不过可以建造而且功能正常。
2、港口里的船队征募语句要保证是0经验的,否则会跳出。可以使用recruits_exp_bonus,但不要在recruit语句里加经验,要保证recruit语句里的经验是0。
3、在铁匠铺里征募的单位不要加“and building_present_min_level”条件,否则会跳出。曾经觉得某些铁匠铺里征募战车不合理,所以增加了需要马房的条件,结果跳出。
4、有时增加了隐藏资源或者新的条件,重新生成了map.rwm文件后有问题,比如某些地图出现可以建造两个兵营,有些地图隐藏资源限制失效,总之有各种问题,具体原因我不清楚。从一开始设定3.0的时候就有这样的问题,不过在3.0发布的时候我做了各种方式的调整保证没有问题了。但第二次修正的时候生成的map.rwm没有做太多测试,后来发现了很多类似的问题,非常的莫名奇妙。export_descr_buildings.txt里的语句肯定是正确的,但就是不知道为什么会出现这样那样的问题。以第二次修正为例,增加了如意大利,赫克里斯,亚马逊等隐藏资源,但后来玩家反映似乎这些资源不但失效而且影响了兵种的正常征募,但我检查过条件语句并没有问题。3.0发布前的设置中就存在类似问题,我的解决办法就是调整一下descr_regions.txt里城市资源的顺序,或者在不影响export_descr_buildings.txt里相关条件的逻辑的前提下调整条件的顺序,基本可以恢复正常,至于原因我也不清楚。另外一个线索是,descr_regions.txt和descr_regions_and_settlement_name_lookup.txt里地区和城市名称的顺序一致性很有可能会影响到这个地图里各种条件的正常运作。descr_regions.txt里每个城市是一段语句,而且第一句是地区的名字,第二句是城市的名字。那么descr_regions_and_settlement_name_lookup.txt里的地区城市名称表要按照descr_regions.txt里从上向下的顺序先把所有的地区名字顺序写下来,所有地区名称写完后再按照descr_regions.txt里从上向下的顺序把所有的城市名字顺序写下来。原来希腊联盟小地图存在一些可以修建双兵营的奇怪问题,按照上述方法调整后就没有问题了,我怀疑其他地图的这两个文件可能也有些问题,最好每个地图都按我说的方法重新写一个descr_regions_and_settlement_name_lookup.txt,然后再生成新的map.rwm。实在不行我建议在3.0未修正版本的基础上覆盖第一次修正,然后把第二次修正中调整兵种参数和修正的亚马逊模型的内容选出来覆盖进去就行了,第二次修正里的export_descr_buildings.txt还有maps文件就不要用了,但你们要调整export_descr_buildings.txt里罗马的部队征募,保证马改后罗马可征募单位最多不要超过32个,包括间谍,外交官,刺客和最多的5种船只在内。
5、为了防止出现各种奇怪的问题,在条件限制比较多的情况下最好能遵循如下顺序:要有一个factions条件在最开头,后面接其它条件,在保证逻辑正确的情况下同类型的条件尽量放在一起。
文章二
3.0的特殊补给线
3.0的补给线原来打算划分得更细致一些,可能5个,但实际上如果采用了快速建造功能来简化补给线,就没有办法设定那么多的文化圈,下面详述。
所谓快速建造/升级功能,就是当攻下的城市满足这样的条件:
存在其它文化圈种类的兵营(可以有多种他类兵营并存)
不存在自己文化圈的兵营
他类文化圈的兵营的最高级别高于2级
在这样的城市中新建并且升级自己的兵营都比普通的过程要快,花的钱也要少。当自己兵营的级别升级到原来已有的他类文化兵营的最高级别时,快速建造/升级的过程就结束进入正常升级过程。比如城市中有多个他类兵营并存,但存在其中最高级别的是3级,那么新建造的自身文化圈兵营就会在升级到3级的过程中加速,当达到3级继续升到更高级时就恢复正常。
但实际还要考虑其他的情况,比如当攻下的城市中已经存在自己文化圈的兵营应当如何处理,如果存在自己文化圈的兵营和他类文化圈兵营并存又怎么处理。比如攻下的城市中存在两个不同的他类文化圈兵营,其中最高级别的是3级;并且存在一个自己文化圈的兵营,为2级;从道理上讲这种情况应该允许已存在的自身文化圈兵营可以快速升级到3级兵营,然后再进入正常升级过程,但实际上实现这种快速升级功能的系统设定本身没有办法这么完美,不能做到这点。实际的情况是如果攻下的城市中存在了自身文化圈的兵营,那么将只能按照这个兵营的设定继续升级。像上面说的那种情况,或者在现有自身的2级兵营上继续升级,升级过程按这个兵营本身的设定进行;或者可以拆除这个兵营,那么就可以建造一个快速建造的兵营了(因为有他类高级兵营)。
具体的设定方法可以看一看3.0的export_descr_buildings文件,因为内容比较多,我只说一下原理。基本的想法是针对同一个文化圈设定好几个兵营,比如对于文明国家文化圈,可以设定5个兵营,1个基本兵营,4个加速兵营。当城市中的所有他类兵营(当然也可以没有他类兵营)都低于2级并且没有自身文化圈的其他4个兵营(注意这个很重要,要排除掉本文化圈的其他几个兵营,保证一个城市里只能建造一个自身文化圈兵营,语句export_descr_buildings里可以看到)时可以建造基本兵营;当所有他类兵营的级别中最高级的为2级,那么可以建造第一种快速兵营,这种兵营在升级到2级的过程中为加速状态,然后恢复正常;......后面依此类推。在export_descr_buildings里可以看得很清楚,由于快速兵营的条件是需要其他文化圈的兵营,因此不能首先拆除城市中已经存在的其他文化圈的兵营,否则将失去建造快速建造兵营的条件,至少要保留已经存在的他类文化兵营中级别最高的那个。当然也不需要一直保留,只要自己的第一级兵营修建好,就可以拆除所有其他种类兵营了,它们会造成文化差异。因为一旦自己的兵营建好第一级,以后就会在这个基础上升级,包括升级的回合数和花费都会按export_descr_buildings设定的这个兵营的参数运作。具体的兵营条件设定看一看export_descr_buildings,结合“and or not”的规则想很容易明白,虽然条件语句比较长但逻辑结构简单,比马匹资源限制简单得多。
这种设定方式给一个文化圈要设定多个兵营,所以文化圈的数目不能过多。另外补给线需要新增兵营,算是新增建筑,要在settlement_plan里增加相关的内容,具体方法就是查找原有settlement_plan里各种兵营所在的部分,照原有句式把新增建筑加进去就可以
再说一下3.0里怎样让几个地图有不同的功能。只要给不同的地图增加隐藏资源来控制就行,3.0的export_descr_buildings里留了类似原版的通用兵营,这种兵营只在原版地图里使用,方法是给这种通用兵营增加隐藏资源,3.0里叫vanilla,需要这种隐藏资源才能修建这样的通用兵营。然后给原版地图的descr_regions里的所有地区都增加vanilla资源,其他的图则不要加;相反的,给那些补给线兵营增加需要隐藏资源mod的限制,给其他地图的所有地区增加mod资源,原版地图不要加。这样原版地图就没有补给线的限制建造通用兵营,其他地图则有补给线。
增加条件限制首先要思考基本的逻辑结构,然后在保证逻辑正确的情况下,按照游戏本身的“and or not”规则去写条件语句。
文章三
3.0的骑兵限制
考虑and or not的规律,不能像通常那样来设计,而且没有办法使用括号来使得某两个条件先结合起来运算,需要用逻辑等效。首先确定要达成的目标如下:
1、单位限制
重骑兵、重战车:需要隐藏资源良马(warhorses)
轻骑兵、轻战车:需要隐藏资源普通马匹(horses),当然如果一个地区有良马的话也可以征募轻骑兵和轻战车的。
骆驼类骑兵:需要资源骆驼(camels)
象类骑兵:需要资源象(elephants)
2、建筑限制
骑兵兵营也要有相应的骑兵资源才可修建,如果不这样做对电脑来说就不公平,电脑会在一个不能招募任何骑兵的地区仍然修建骑兵兵营因为它没有办法知道哪里该修建马房哪里不该。具体针对到某个国家,增加的限制条件要依据这个国家可以征募的骑兵兵种类型,如seleucid,它可以征募马匹类骑兵和象类骑兵,那么建造骑兵兵营的限制条件即“and hidden_resource horses or hidden_resource warhorses or resource elephants”,其它依此类推。需要依据可征募骑兵兵种对国家分类:
1.只能征募马匹类骑兵的国家:罗马三家族及元老院,所有的蛮族(spain,britons,germans,gauls,dacia,scythia),希腊城邦,马其顿,色雷斯,本都
2.可以征募马匹类和骆驼类骑兵的国家:努米底亚,埃及,亚美尼亚
3.可以征募马匹类和象类骑兵的国家:塞琉西
4.可以征募马匹类、骆驼类和象类骑兵的国家:帕提亚,迦太基(迦太基原本不可征募骆驼,3.0中新增一种骆驼骑兵)
记住这4中分类,后面要经常提到用到。
另外说一个技巧性的东西,在设置普通马匹和良马资源的时候,应该在所有有良马资源的地区也都放置普通马匹资源。这样做有两个好处,第一,如果独立区分这两种资源,在有良马的地方仅仅设置良马资源,在有普通马匹的地方仅仅放置普通马匹资源,那么轻骑兵轻战车的征募条件要写成“and hidden_resource horses or hidden_reource warhorses”;相反如果在凡是有良马资源的地方也设置普通马匹资源,那条件会简化为“and hidden_resource horses”;第二,相应的建造马房的限制条件也会变得简单一些,比如seleucid,建造骑兵兵营的限制就可以简化为“and hidden_resource horses or resource elephants”
达成以上目标还要将补给线结合起来考虑,以目前的柱子3.0为例,最终确定骑兵的补给线文化圈为:1.文明国家(罗马三家及元老院,希腊城邦,色雷斯,马其顿,塞琉西);2.蛮族国家(所有的蛮族国家);3.北非及东方诸国(迦太基,努米底亚,埃及,本都,亚美尼亚,帕提亚)。确定这样的文化圈有很多原因,首先是因为为了实现步兵兵营拥有特殊的加速建造功能占用了过多的建筑,export_descr_buildings里允许的总的建筑数目是64个,所剩无几,只能给骑兵设定这样一种补给线范围,数目比较少;其次是为保证增
加符合要求的限制条件,也就是说考虑“and or not”的规律以及要达成的骑兵限制的目标,补给线的文化圈是不能随便分配的,分在某个文化圈内的国家必须满足一定的条件,否则没有办法增加符合要求的限制条件(至少我的能力如此),现在说明如下:
所有国家按照上面的4种分类,在同一个骑兵补给线文化圈中,允许的情况有:a.单一型,文化圈中完全是以上分类中的某一种,比如3.0中的蛮族文化圈,其中所有的国家都属于第1类国家;b.混合型,并非所有的混合情况都可以,允许的混合情况有1和2、1和3、1和4、1和2和4、1和3和4、2和4、3和4。说得更明确一些,混合存在的情况要求条件之间绝对包含。比如1和2和4,2是征募马和骆驼,包含1(1是征募马),4是征募马和骆驼和象,包含了2。因此2和3是不能并存的,这两个之间不存在包含关系。之所以存在这样的要求,是因为目前我找到的最佳的逻辑等效方法要求这样。
根据以上所说,可以看到3.0里的骑兵补给线中,文明国家属于1和3混合,蛮族国家属于单一的1类,北非及东方诸国属于1和2和4混合。现在可以清楚的知道为什么要给迦太基增加一种骆驼骑兵,如果不增加这个,迦太基属于3类,这样这个文化圈就变成了1和2和3和4的混合,而2和3是不能并存的,没办法只能新增骆驼骑兵给迦太基了。当然重新调整补给线划分也可以解决问题,不过因为自己觉得目前的补给线划分从道理上讲还算比较合理,也算简化了补给线(数目只有3个),而且步兵和弓兵兵营的补给线也是这样划分的,为了保持一致,所以保持了目前的补给线划分而通过给迦太基增加一种骆驼骑兵来解决问题。
现在具体说一说逻辑等效的问题。以北非及东方诸国为例,建筑限制要达到如下目标:
本都:hidden_resource horses
努米底亚,亚美尼亚,埃及:hidden_resource horses or resource camels
帕提亚,迦太基:hidden_resource horses or resource camels or resource elephants
按照正常的逻辑方式应该设定为:
......requires (factions { pontus, } and hidden_resource horses) or (factions { numidia, armenia, egypt, } and hidden_resource horses or resource camels)) or (factions { parthia, carthage, } and (hidden_resource horses or resource camels or resource elephants)) 小括号括起来的部分先运算,各部分之间是“或”的关系
但因为这个游戏“and or not”的使用规则非常规,而且也不允许小括号结合运算,所以要用其他方式来等效上面的逻辑。
略去等效过程,可以证明,以上的逻辑等效于下面的方式:
......requires factions { pontus, numidia, armenia, egypt, parthia, carthage, } and hidden_resource horses or factions { numidia, armenia, egypt, parthia, carthage, } and resource camels or factions { parthia, carthage, } and resource elephants
这里需要把这几个国家按照可征募兵种分类如下:
可征募马匹类骑兵的国家:本都,努米底亚,亚美尼亚,埃及,帕提亚,迦太基
可征募马匹类和骆驼类骑兵的国家:努米底亚,亚美尼亚,埃及,帕提亚,迦太基
可征募马匹类、骆驼类和象类骑兵的国家:帕提亚,迦太基
这个分类对于逻辑等效很重要
等效的基本结构就是“国家群1 and 资源限制1 or 国家群2 and 资源限制2......”。最前面的国家群是上面分类中国家数目最多的群,然后紧跟这个群的限制;后面的群则是国家数目少一些的群,再紧跟相应的群限制;后面类推。注意资源限制当前面出现了某个限制后,后面就不要再出现了,比如上面的例子中第一个国家群后的条件中有hidden_resource horses,后面就不用再出现了,只要写出新增的限制就行。再有就是资源限制可能不仅仅是一个,比如第一个国家群如果是3类和4类的混合,那么限制就是and hidden_resource horses or resource elephants
再举个例子,比如设定了一个补给线文化圈,是2类和4类国家的混合,包括埃及,亚美尼亚,帕提亚这三个国家。
先按照可征募兵种对国家分类
可征募马匹类骑兵和骆驼类骑兵的国家:埃及,亚美尼亚,帕提亚(因为不存在只能征募马匹类骑兵的国家,所以没必要把马匹单独列出来)
可征募马匹类、骆驼类和象类骑兵的国家:帕提亚
这样就可以写成:......requires factions { egypt, armenia, parthia, } and hidden_resource horses or resource camels or factions { parthia, } and resource elephants。
基本方法如上,还有一点相关的说明。
增加某种资源可以选择增加一种hidden_resource或者改动一种现有的resource。resource只能更改模型和价值,不能新增,hidden_resource则可以。选择hidden_resource要方便一些,不需要定位,只要在descr_regions里某个地区资源队列里加入隐藏资源,
删除原有的map.rwm,进入游戏载入相应地图重新生成map.rwm即可,缺点是地图上看不到;如果利用现有的resource,比如现在的3.0中将原有的pig改为了马的模型,可以利用这个把它作为普通马匹资源,上面所有的hidden_resource horses就要改成resource pigs,优点是因为需要定位放置在地图上,所以可以很方便的看见,而且不需要重新生成map.rwm,在descr_strat.txt的资源列表里定位好以后相应功能可以立即见效,缺点就在于定位比较麻烦,不能定位在高山,河流,海边等地方,最好用地图编辑器来做。这次3.0没用直接用pigs,而是用新增的hidden_resource horses,主要是为了方便,如果当时临时决定要给欧洲称霸也增加马匹资源限制,可以暂时不要定位比较快地做好,pigs仅仅作为地图上方便地显示那个省有马匹资源的手段,时间宽裕就做(比如神秘东方),没有时间就不做,用别的方法来显示骑兵信息(比如文字的方式,下面要说)
在data\text里相应地图的汉字名称文档中,可以在地区的名字(注意是地区的名字而不是城市的名字,否则城市的名字后面会多一长
串文字很不好看,而地区的名字一般是不显示的)后面用这种格式增加骑兵信息:
“亚雷提恩 \n骑兵资源:良马”
要先空几格,再加入“\n”,这样在大地图上鼠标放在某个区域点右键,看到的就是“亚雷提恩 骑兵资源:良马”,这里“\n”不能起作用,不会换行的,所以只有空开。而当鼠标放在左下角的地图雷达上的时候,看到的是:
“亚雷提恩
骑兵资源:良马”
这里空格不起作用,“\n”会起作用。
替换原模型教程!
替换原模型
我们今天替换的是东罗马的弓箭骑兵,在兵种属性文件export_descr_unit里查找Hippo Toxotai,如下:
type hippo toxotai
dictionary hippo_toxotai ; Hippo-toxotai
category cavalry
class heavy
voice_type Medium_1
soldier hippo_toxotai, 18, 6, 1
mount elephant african cataphract
mount_effect horse +4, chariot +8, camel +2
attributes sea_faring, can_run_amok, frighten_foot, frighten_mounted, can_swim
formation 7, 11, 13,16, 1, square
stat_health 1, 12
stat_pri 8, 3, arrow, 130, 500, missile, archery, piercing, none, 15 ,0.5
stat_pri_attr no
stat_sec 5, 8, no, 0, 0, melee, other, blunt, none, 15 ,0.5
stat_sec_attr area, ap, launching
stat_pri_armour 6, 6, 0, metal
stat_sec_armour 3, 2, flesh
stat_heat 1
stat_ground 0, 1, -6, -1
stat_mental 9, normal, untrained
stat_charge_dist 40
stat_fire_delay 0
stat_food 60, 300
stat_cost 0, 179, 39, 10, 20, 179
ownership empire_east, empire_east_rebels
这个属性是我修改之后的属性,并非原版,我用来说明就是了。
soldier hippo_toxotai, 18, 6, 1
是兵种模型,即hippo_toxotai就是东罗马弓骑兵模型,然后我们在descr_model_battle文本里找hippo_toxotai,发现如下:
"type hippo_toxotai
;--------------------------------------
skeleton fs_forest_elephant_rider(注意,这个动作是我改成战象弓骑兵的动作,不是原动作,在这里作为例子罢了。)
indiv_range 40
texture empire_east, bi/data/models_unit/textures/BI_unit_hippo_toxotai_empire_east.tga
texture empire_east_rebels, bi/data/models_unit/textures/BI_unit_hippo_toxotai_empire_east_rebels.tga
model_flexi bi/data/models_unit/BI_unit_hippo_toxotai_lod1.cas, 15
model_flexi bi/data/models_unit/BI_unit_hippo_toxotai_lod2.cas, 30
model_flexi bi/data/models_unit/BI_unit_hippo_toxotai_lod3.cas, 40
model_flexi bi/data/models_unit/BI_unit_hippo_toxotai_lod4.cas, max
;model_sprite 60.0, data/sprites/romans_julii_roman_peasant_sprite.spr
model_sprite empire_east_rebels, 60.0, bi/data/sprites/empire_east_rebels_hippo_toxotai_sprite.spr
model_sprite empire_east, 60.0, bi/data/sprites/empire_east_hippo_toxotai_sprite.spr
model_tri 400, 0.5f, 0.5f, 0.5f"
"texture empire_east, bi/data/models_unit/textures/BI_unit_hippo_toxotai_empire_east.tga"这是皮肤名字及所在文件位置,
"model_flexi bi/data/models_unit/BI_unit_hippo_toxotai_lod1.cas, 15
model_flexi bi/data/models_unit/BI_unit_hippo_toxotai_lod2.cas, 30
model_flexi bi/data/models_unit/BI_unit_hippo_toxotai_lod3.cas, 40
model_flexi bi/data/models_unit/BI_unit_hippo_toxotai_lod4.cas, max"
这是模型名字以及所在文件夹位置。
如果替换模型就直接把新模型改成对应的名字就行了,我们的新模型是叫23,皮肤较叫24,我们替换东罗马模型,把23改成BI_unit_hippo_toxotai_lod1.cas
BI_unit_hippo_toxotai_lod2.cas
BI_unit_hippo_toxotai_lod3.cas
BI_unit_hippo_toxotai_lod4.cas
然后替换掉原来模型文件夹的原模型,
把24改成BI_unit_hippo_toxotai_empire_east.tga.dds,替换原来的皮肤,如果属性不变,就直接进入游戏。
如果变了,还要改动作和属性。
接着我们要改属性。我们把新模型之后的兵种改为战象弓骑兵。
也就是如上的东罗马弓骑兵属性,就是改成战象的属性,把某些动作skeleton fs_forest_elephant_rider改成这个就行了。
小城管变骑兵最简单修改法
首先打开DATA/EXPORT_DESCR_UNITS 找到城镇民兵Town Watch用下面数据替换原数据
type roman city militia
dictionary roman_city_militia ; Town Watch
category cavalry
class light
voice_type Light_1
soldier roman_city_militia, 27, 0, 1
mount light horse
mount_effect elephant -8, camel -4
attributes sea_faring, hide_forest, hardy
formation 1.5, 4, 3, 6, 4, square, wedge
stat_health 1, 0
stat_pri 6, 5, no, 0, 0, melee, simple, piercing, spear, 25 ,1
stat_pri_attr no
stat_sec 0, 0, no, 0, 0, no, no, no, none, 25 ,1
stat_sec_attr no
stat_pri_armour 3, 5, 4, leather
stat_sec_armour 0, 0, flesh
stat_heat 1
stat_ground 0, 0, -6, 0
stat_mental 4, normal, trained
stat_charge_dist 40
stat_fire_delay 0
stat_food 60, 300
stat_cost 1, 420, 110, 50, 70, 420
ownership roman
然后打开DATA/descr_model_battle.txt查找roman_city_militia用下面数据替换原数据
type roman_city_militia
; combat spear
skeleton fs_hc_spearman
indiv_range 40
texture romans_julii,
data/models_unit/textures/unit_roman_city_militia_julii.tga
texture romans_brutii,
data/models_unit/textures/unit_roman_city_militia_brutii.tga
texture romans_scipii,
data/models_unit/textures/unit_roman_city_militia_scipii.tga
texture romans_senate,
data/models_unit/textures/unit_roman_city_militia_senate.tga
texture slave, data/models_unit/textures/unit_roman_city_militia_rebel.tga
model_flexi data/models_unit/roman_city_militia_high.cas, 15
model_flexi data/models_unit/roman_city_militia_med.cas, 30
model_flexi data/models_unit/roman_city_militia_low.cas, 40
model_flexi data/models_unit/roman_city_militia_lowest.cas, max
model_sprite slave, 60.0, data/sprites/slave_roman_city_militia_sprite.spr
model_sprite romans_senate, 60.0,
data/sprites/romans_senate_roman_city_militia_sprite.spr
model_sprite romans_scipii, 60.0,
data/sprites/romans_scipii_roman_city_militia_sprite.spr
model_sprite romans_brutii, 60.0,
data/sprites/romans_brutii_roman_city_militia_sprite.spr
model_sprite romans_julii, 60.0, data/sprites/romans_julii_roman_city_militia_sprite.spr
model_tri 400, 0.5f, 0.5f, 0.5f
这个方法最简单 但是步兵小城管就没了,如果需要 可惜新生成 小城管骑兵 就是步骤麻烦些。
(记住备份修改文件)一定注意格式
小议建筑的添加和修改
全战出了这麽多年了,大家对他的修改应当很熟悉了,不过对建筑的修改却没什麽人给出过系统的方法,虽然什麽无敌神殿之类的多如牛毛,
不过提供者说的云山雾罩,使用者用的莫名其妙,在下就通过这边文章给一个系统的修改方法。
修改用到的文件
\Data下
descr_ui_buildings.txt
export_descr_buildings.txt
export_descr_buildings_enums.txt
\Data\text下
export_buildings.txt
现在我们正式开始
修改神殿很流行,那我们就先来添加一个新神殿。
1。编辑建筑属性
像一般的修改一样,先打开export_descr_buildings.txt
这个文件裏包含了所有建筑的属性
在文件的末尾添加如下代码
building temple_of_wing_dark
{
levels temple_of_wing_dark_shrine temple_of_wing_dark_temple temple_of_wing_dark_large_temple
temple_of_wing_dark_awesome_temple temple_of_wing_dark_pantheon
{
temple_of_wing_dark_shrine requires factions { carthage, }
{
capability
{
}
construction 1
cost 400
settlement_min town
upgrades
{
temple_of_wing_dark_temple
}
}
temple_of_wing_dark_temple requires factions { parthia, carthage, }
{
capability
{
}
construction 2
cost 800
settlement_min large_town
upgrades
{
temple_of_wing_dark_large_temple
}
}
temple_of_wing_dark_large_temple requires factions { parthia, carthage, }
{
capability
{
}
construction 3
cost 1600
settlement_min city
upgrades
{
temple_of_wing_dark_awesome_temple
}
}
temple_of_wing_dark_awesome_temple requires factions { carthage, }
{
capability
{
}
construction 5
cost 3200
settlement_min large_city
upgrades
{
temple_of_wing_dark_pantheon
}
}
temple_of_wing_dark_pantheon requires factions { carthage, }
{
capability
{
}
construction 6
cost 6400
settlement_min huge_city
upgrades
{
}
}
}
plugins
{
}
}
这段代码可以从任何一个原有的神殿的代码上考,下面进行讲解
building temple_of_wing_dark
这一行的很直观,建筑 wing_dark的庙宇,注意,wing_dark是神殿的名字,而temple_of_则关系到之一建筑的种类,也就关系到之一建筑的模
型,比如如果改成barracks,则是添加了一种兵营
levels temple_of_wing_dark_shrine temple_of_wing_dark_temple temple_of_wing_dark_large_temple
temple_of_wing_dark_awesome_temple temple_of_wing_dark_pantheon
这一行说的是建筑的等级,也就是说等级从temple_of_wing_dark_shrine一直到temple_of_wing_dark_pantheon。
在下面则是对这几种等级的描述
temple_of_wing_dark_shrine requires factions { carthage, }
神坛,并且需要是加泰基才能造
{
capability
下面是建筑的能力,下面会详细讲
{
}
construction 1
建筑回合
cost 400
费用
settlement_min town
需要城市规模
upgrades
{
temple_of_wing_dark_temple
可以升级成 temple_of_wing_dark_temple
}
}
下面几种等级也全一样
详细讲一下建筑的能力
建筑的能力共有如下几种
wall_level 4
城墙等级
tower_level 2
塔楼等级
gate_defences 2
gate_strength 2
这两个一个是城门的防御,一个是攻击,就是泼油什麽的
trade_fleet 1
贸易舰队等级
farming_level 1
农业等级
mine_resource 4
埰矿等级
road_level 2
公路等级
stage_games 1
斗兽表演
3。添加解说
然後,打开text/export_buildings.txt,添加各种解说,
{temple_of_wing_dark_shrine}暗翼之神神殿-神坛
{temple_of_wing_dark_shrine_desc}
这座神坛献给高贵的暗翼之神\n他英俊萧飒,玉树临风,风流倜傥,是所有帅哥的守护者。\n他的理念是让所有人知道比他帅人的都没有好下
场!!\n\n当城邑的规模及重要性成长时,神坛可以加以改建。
{temple_of_wing_dark_shrine_desc_short}
伟大的暗翼之神的神坛\n无知的人快来拜吧。
{temple_of_wing_dark_temple}暗翼之神神殿-神殿
{temple_of_wing_dark_temple_desc}
这座神殿献给高贵的暗翼之神\n他英俊萧飒,玉树临风,风流倜傥,是所有帅哥的守护者。\n他的理念是让所有人知道比他帅人的都没有好下
场!!\n\n当城邑的规模及重要性成长时,神殿可以加以改建。
{temple_of_wing_dark_temple_desc_short}
伟大的暗翼之神的神殿\n无知的人快来拜吧。
{temple_of_wing_dark_large_temple}暗翼之神神殿-大神殿
{temple_of_wing_dark_large_temple_desc}
这座大神殿献给高贵的暗翼之神\n他英俊萧飒,玉树临风,风流倜傥,是所有帅哥的守护者。\n他的理念是让所有人知道比他帅人的都没有好下场!!\n\n当城邑的规模及重要性成长时,大神殿可以加以改建。
{temple_of_wing_dark_large_temple_desc_short}
伟大的暗翼之神的神殿\n无知的人快来拜吧。
{temple_of_wing_dark_awesome_temple}暗翼之神神殿-巨神殿
{temple_of_wing_dark_awesome_temple_desc}
这座巨神殿献给高贵的暗翼之神\n他英俊萧飒,玉树临风,风流倜傥,是所有帅哥的守护者。\n他的理念是让所有人知道比他帅人的都没有好
下场!!\n\n当城邑的规模及重要性成长时,巨神殿可以加以改建。
{temple_of_wing_dark_awesome_temple_desc_short}
伟大的暗翼之神的巨神殿\n无知的人快来拜吧。
{temple_of_wing_dark_pantheon}暗翼之神神殿-万神殿
{temple_of_wing_dark_pantheon_desc}
这座万神殿献给高贵的暗翼之神\n他英俊萧飒,玉树临风,风流倜傥,是所有帅哥的守护者。\n他的理念是让所有人知道比他帅人的都没有好
下场!!\n\n当城邑的规模及重要性成长时,万神殿也不可以加以改建。
{temple_of_wing_dark_pantheon_desc_short}
伟大的暗翼之神的万神殿\n无知的人快来拜吧。
如果仔细研究源文件的话可以发现原来的神殿的解说大都是如
[#PLACEHOLDER DEFAULT Base description for building and effects#]
[#Short Description PLACEHOLDER DEFAULT text#]之类的
这是为了各个派系对同一神庙的不同称呼准备的,这时的截获则写道temple_of_wing_dark_shrine_barbarian_desc_short之列的地方,barbarian得地方可以写不同的派系
到此,神庙成功加入游戏中,但进入游戏就会发现,神庙的图片位置现实的是一个古怪的兵营图片,无法忍受的话可以到\Data\UI文件夹,进
4。添加图片
入相应的派系的建筑文件夹,譬如\Data\UI\CARTHAGINIAN\BUILDINGS,没有得自己新建吧做一张77*61的tag图像放在裏面,文件名如下
#CARTHAGINIAN_SHRINE.TGA,CARTHAGINIAN是派系名称,SHRINE是建筑名称,如果是其他的直接用名字,神庙的话只要写神庙的後缀就行了
同样,做一张359*161的放裏面,命名为#CARTHAGINIAN_SHRINE_CONSTRUCTED.TGA,规则与上面的类似,只是要加_CONSTRUCTED後缀。然後进入
\Data\UI\CARTHAGINIAN\BUILDINGS\CONSTRUCTION文件夹,做一张63*50的,命名为#CARTHAGINIAN_SHRINE.TGA,规则同上,同样,每个等级都
要做一张
如果你添加的是道路什麽的建筑,那麽大功告成,如果做的是神庙,则还要盖一个文件
进入descr_ui_buildings.txt
在最後添加(注意,在}裏面)
temple_of_wing_dark_shrine shrine
temple_of_wing_dark_temple temple
temple_of_wing_dark_large_temple large_temple
temple_of_wing_dark_awesome_temple awesome_temple
temple_of_wing_dark_pantheon pantheon
这是在注册各种神庙所属的等级,你可能已经发现了,同一拍戏的所有神庙的图片都一样,就由此来,神庙一共只有五类shrine,temple,
large_temple,awesome_temple,pantheon
如此,添加建筑成功
2。注册建筑及解说
打开export_descr_buildings_enums,在最後添加
temple_of_wing_dark_shrine
temple_of_wing_dark_shrine_desc
temple_of_wing_dark_shrine_desc_short
temple_of_wing_dark_temple
temple_of_wing_dark_temple_desc
temple_of_wing_dark_temple_desc_short
temple_of_wing_dark_large_temple
temple_of_wing_dark_large_temple_desc
temple_of_wing_dark_large_temple_desc_short
temple_of_wing_dark_awesome_temple
temple_of_wing_dark_awesome_temple_desc
temple_of_wing_dark_awesome_temple_desc_short
temple_of_wing_dark_pantheon
temple_of_wing_dark_pantheon_desc
temple_of_wing_dark_pantheon_desc_short
则注册了新建的这五等神庙及其对应解说
agent spy 0 requires factions { barbarian, }
可以招的非战斗人员,这一句是招间谍,requires factions { barbarian, }是说必须是野蛮人
recruit "barb chariot light briton" 0 requires factions { britons, }
可以招的战斗人员,这一句是招barb chariot light briton,requires factions { britons, }是说必须是不列颠,注意者必须要有哪个兵种的支持
另外加 hidden_resource 城市名 后缀是说必须要有城市才能招,譬如著名的斯巴达就是recruit "greek hoplite spartan" 0 requires factions { greek_cities, } and hidden_resource sparta
加 hidden_resource 资源名 后缀是说必须要有资源才能招,譬如
recruit "carthaginian elephant forest" 0 requires factions { carthage, } and resource elephants
weapon_simple 1
weapon_bladed 1
weapon_missile 1
armour 1
recruits_exp_bonus bonus 1
各种武器加成和等级加成
population_loyalty_bonus bonus 100
happiness_bonus bonus 100
population_growth_bonus bonus 10
population_health_bonus bonus 100
law_bonus bonus 100
trade_base_income_bonus bonus 5 requires factions { ct_carthage, }
最後,所有bt神殿都会有的人口,健康什麽的加成
所有这些能力可以一并用上,也就是说,你可以造一条马路就有石头城墙,能招刺客什麽的
到此,成功新建一种神庙,然後还要把这种神庙加入游戏
2。注册建筑及解说
打开export_descr_buildings_enums,在最後添加
temple_of_wing_dark_shrine
temple_of_wing_dark_shrine_desc
temple_of_wing_dark_shrine_desc_short
temple_of_wing_dark_temple
temple_of_wing_dark_temple_desc
temple_of_wing_dark_temple_desc_short
temple_of_wing_dark_large_temple
temple_of_wing_dark_large_temple_desc
temple_of_wing_dark_large_temple_desc_short
temple_of_wing_dark_awesome_temple
temple_of_wing_dark_awesome_temple_desc
temple_of_wing_dark_awesome_temple_desc_short
temple_of_wing_dark_pantheon
temple_of_wing_dark_pantheon_desc
temple_of_wing_dark_pantheon_desc_short
则注册了新建的这五等神庙及其对应解说
修改罗马的建筑的方法
1、安装3Dmax5.0或以上版本,然后运行插件,就是那个导入导出*.cas的插件。
2、用Xpak解压罗马packs文件夹下面的所有×.pak文件。这时就会在Rome - Total War\Data\ 下出现 “ITEMS”文件夹,里面全部是*.item文件。这个就是罗马所有的建筑模型。对应的贴图在Rome - Total War\Data\models_building\TEXTURES下
3、用3dmax插件导入刚才的某个.item文件。我们可以在max中看见他是由一个组合的模型构成的。比如[LOD_1],[LOD_2],[LOD_3],[LOD_4]........这个就是说明该建筑是由4个lod级别的模型构成的。有些建筑是2个,有些是3个lod。
4、很重要的一点,建筑模型的item文件不是由3dmax插件导出的,是由游戏自动生成的。所以我们只需要设定好对应的几个同文件名的cas文件即可。比如由4个lod级别构成的建筑模型我们就应该在Rome - Total War\Data\models_building\文件夹中生成4个cas文件。
举例,“aaa.item” ,那么对应4个cas文件名应该为 aaa_high.cas,aaa_med.cas,aaa_low.cas,aaa_lowest.cas.
5、我们只要在3dmax中正确设置好了这4个模型,就可以导出了生成这4个cas文件了。注意:_high代表最精细的建筑模型。_lowest最粗造的。
6、建立好这4个文件以后,删除ITEMS”文件夹中的aaa.item.然后运行游戏,你就会发现战场或城市里面的建筑被替换成的你的模型。 |
评分
-
查看全部评分
|