回复 11# 的帖子
我想创造新的骷髅,但为什么不能用?
首先介绍将要用到的.txt文件:
1、Pettype.txt
2、States.txt
3、Monprop.txt
4、Monstats.txt
5、Monstats2.txt
6、Skills.txt
7、Skilldesc.txt
第一件事情是打开pettype.txt来新建一个你要的新宝宝。(召唤兽昵称宝宝)
新建一行并且为宝宝命名,暂且让我们给它起名为earthelemental吧。
切记:这个名字以及我们后面提到的要在skills.txt文件的pettype栏里面用到的名字都是刚才填入的全名,而不是它的idx值。
接下来,在idx栏填入紧接着上一行增大1的值。如果你不想对召唤兽有任何限制,请把group栏留空。否则的话,在group里面填写一个数字,这个数字表示与这个召唤兽一起召唤出的怪物的数量限制。Base max: 不清楚是干什么用的,但是所有的召唤都把这一栏填0。把 warp 设为 1, 我相信,这将使宝宝自动跟上你,如果你走得太远。Range: 又不知道!可能是允许宝宝远程攻击。可是以我的经验,这个值没有效果。接下来,将partysend, unsummon, and automap 栏设为1。在name 栏中输入你想调用的名字串。字串在 patchstring中定义。这个名字将显示在屏幕左上方宝宝的头像下面。drawhp 设置成1 表示在宝宝头像上会出现生命值的条。icontype: 如果设置成1的话,左上角只有宝宝的图标;如果设置成2,则既有图标又有宝宝的数量。所以,如果你只允许召唤一只,那么用1;召唤多只,用2。石魔和Druid召唤的藤都使用3。baseicon 表示你召唤的宝宝的图标的名称,换句话就是宝宝用什么样子的图标显示在屏幕左上角。mclass1, 2 and 3 和 micon1, 2 and 3 栏都是用来把不同的几种怪物定义为同一种宝宝的。使用monstats 文件中的id值填入 for mclass 和micon代表的图标名称。这些将在宝宝被召唤出来后显示在屏幕上方。确认一下,在行末一格中有一个0。
第二步,打开states.txt。这个文件中,我将给你演示如何改变一个怪的颜色,以便能一眼就认出。
复制任意一行到这个文件底部。我认为复制哪一行没多大关系,但是你可以找一行字少的,因为我只使用colorprI 和 colorshift两列。但首先,你要对这个新的行重新命名,并且按顺序在id栏填写序号。这个序号是你在修改后面提到的几个txt文件时需要的。在 colorpri里面填入一个大一点的数字,例如我用的是70,这一栏决定哪个States行将拥有超过其他行的优先权。如果你发现有哪一行的 colorprI 值超过了70,那么那一行将显示而不是这个新的行。如果它小于70那么这一行的效果将保留。此种情况仅在两行都被激活的状态下才有效。接着,将light-r, light-g ,light-b 都设置成255。Colorshift: Paul Siramy给出了一个链接,说明了这栏数值的效果。你可以根据自己的喜好选择效果对应的数字填进去。我把图放在本文末尾了。当你选好你喜欢的颜色后,确保行末尾一个中有个 0 然后保存states.txt。在此要说明是 Acromatic Aria告诉我这个改变颜色的方法的。
第三步,打开monprop.txt。
在末尾新建一行,并命名。为方便起见,我们继续使用 earthelemental 作为名字。你需要记住这个名字!下一步,看到prop, chance, par, min, max 列了吗?照下面的改写:Prop: state,Chance: 让它空着,Par: 填一个你喜欢的state名,还记得我们刚才改的state文件吗?min:1,max:1,确认你所做的将在normal, nightmare, hell三个难度中生效。monprop 也用来赋予召唤兽技能。正如 kingpin提到的那样:
prop chance par min max
crush 100 0 100 100
这样的设置的效果是给你的召唤兽100% 几率的crushing blow(压碎性打击?我记得中文版是这样翻译的)感谢 kingpin!确保末尾的eol栏中有个 0 然后保存monprop.txt.
第四步:打开monstats.txt。
新增一行。找到你想召唤的怪物的行。我们用thornhulk1做例子,复制这一行的内容到我们新建的行中。把id改成earthelemental,然后hcldx设置成从上到下顺序的下一个数字。不改变 baseid 的内容,删除nextinclass里面的内容。所有的召唤兽translvl都填 0,我们的修改也不例外。根据vendanna的理论,这列数据定义了特定怪物的皮肤。目前仍然不知道这个数字具体的含义,需要进一步测试。NameStr 表示这个怪物的名字。也就是当你把鼠标移到它身上时,屏幕顶部生命条上显示的名字。填'myminion'。译者深深的不赞同这种做法,原因后面你就会明白。把earthelemental填入MonStatsEx栏。这个名字是你马上将会涉及的monstats2中的一行的名字。在monprop栏,填写你在monprop中用到的那个名字,也就是earthelemental。我们要用修改后的颜色。montype栏完全可以保持不动。至于AI,填NecroPet对于物理攻击来非常的好用。另外我还发现了一个AI值能够让宝宝产生远程攻击效果。填入archers后,宝宝可以冲向敌人,然后放箭。几乎可以肯定code是怪物种类的代号。而 enabled栏必须填1。将mingrp和maxgrp都设置成1。你可以提高宝宝走和跑的速度,通过修改velocity的值,但是Vendanna发贴说,如果你使用的AI不包含跑的动画,那么run和walk的值应该相等,否则,宝宝会时常“消失”一阵子。我也遇到了,还正在疑惑是什么造成了这个现象呢!感谢Vendanna!我所有的宝宝rarity值都设置为 0. 把与等级level有关的值删除。保持sounds栏,除非你希望更改它们。跳过后面的一串数字。我没有改它们,但必须指出的是它们与AI有关。在align, intown, opendoors, nevercount里面填1。
接下来的几个统计数字你可以随便乱填,看你喜欢要多少resistances, hp, drain, cold effects, ac,以及crit,表示critical hit的几率。再过几列,你可以添加元素伤害 elemental types只要你喜欢。别忘了删除所有的reasureclasses信息。行末尾的 0永远不能丢。
打开monstats2.txt。
简单地复制thornhulk1行到底部新建的行里面,把name栏改成earthelemental。我没有做其他任何修改。Kingpin的帖子告诉我,如果你在monstats.txt里面新建了一个怪物,那么monstats2.txt里面建一个相同的怪物是必须的。保存monstats2.txt的改动。
接下来打开skills.txt。底部新建一行,随便找一个召唤技能复制粘贴进去。我用了Druid的召唤老熊。Summon Grizzly更改name为earthelemental并且按顺序设置id的值。你需要一个dru角色。earthelemental这个名字还将要在后面提到的skilldesc文件里面出现。我保持了srvdofunc栏的119,并且保持了后面连续若干列的空白状态,一直到passivestat1 栏。在passivestat里面你可以有许多许多的效果和运算的表达式可供选择。我将用到的是一个最简单的。我将给予earthelemental 宝宝enhanced damage 25%能力并且每升一级再+ 5%。在passivestat1中,填入damagepercent。填ln12到passivecalc1里面。这个简单的表达式含义为:参数1+(lvl*参数2)。我的工作全部完成! 如果你需要,可以加更多。把summon和pettype设置为earthelemental。
Petmax 可以有好几种填法。直接填一个数字,没有问题。表达式也行,我要用的是 "min(lvl,par3)"。这表示你的宝宝数量每级增加一只,而又不超过par3当中设置的值。例如,我用了 "min(lvl,par3)"并且把par 3的值设置成5。在技能等级为1时可以召唤一个宝宝,2级时2个,5级时5个,然后就再也不增多了。你可以给宝宝一些技能,但我可以告诉你,我设置的技能一个也没有起作用。现在,找到stsound列. 大约在往后三分之一总长的位置。把它设置为druid_summon,enhanceable设为 1 ,attackrank设为0, 如同我看到的其他召唤兽的设置。为了测试的方便,reqlvl(学习技能时角色的等级) 设置为1。并且删除了reqskills的内容。把mana设置成5同样时为了测试方便。再往后少许,可以看到calc1栏以及相关的desc栏,紧跟着是calc2和又一个desc。我不能准确的指出它们的具体含义,但我推断对于召唤兽而言,第一个calc应该填入生命值的信息。Calc2填ulvl. 表示宝宝的级别。如果你想在一个表达式当中使用召唤宝宝这个技能的级别作为参数,请使用ulvl而不要使用lvl。我把calc3和4空着。你可以随便扩展calc栏的内容。只要你明白它们的作用。我也觉得它们是在计算你从协同效应synnergies中间获得的被动技能,但我同样不确定。在param1填25然后在param2填5. (25 +5/lvl) Param3填5.记住,这时你能召唤的最大宝宝数量。你在5级的时候达到这个极限。我没有给出更多的算式,因此这就是param段的全部内容了。你可以自由设置tohit和tohit/lvl栏,当然,damages也随你便。我在min里填30,max 50,lvl's 1, 2, 3, 4, 5 表示minlv1-5和maxlvl1-5。接着填写你要的元素伤害。文件elemtype.txt中定义了你可能用到的所有代码。
记住,你所写入的所有的技能和加成以及元素伤害必须在仔细编辑了skilldesc.txt 文件后才能正确显示。通过看考其他技能的参数,你可以明白,StrSkill #表示的是什么,但是通常,我们会用到我们自己制作的字串来显示这个效果。(还记得前面我提到的不赞成这种做法吗?)最后一格写 0 保存 skills.txt。
打开skilldesc.txt在底部建一新行。
这是最后一项工作了,我没有复制任何东西进去。命名它为earthelemental设置你希望它出现在哪一个技能页上。我画了一幅图,在后面。帮你定位。我把它放在召唤技能页上,页码为1。Skillrow 填1,skillcolumn 也填1;这表示,新技能将出现在左上角。把listrow设置成1,listpool设置成0,然后把iconcell设置成58。当然也可以是你喜欢的其他值。这里的数字表示技能图标,遗憾的是只能用0~58的偶数,并且一定会和已有技能重复。在str name, short和long以及alt我分别用了earth, earth1, earth2, earth3 并保持StrSkill3不变。它负责显示 'mana cost:'跳到descline1列,填入2。2代表如下格式 "desctexta" + calculation "desctextb"。在Desctxta中,填入StrSkill4代表 "Enhanced Damage:" Desctxtb中填SrSkill23表示"percent" ;在Desccalca中填ln12以符合我们在skills.txt里面设置的算式。这将显示增强伤害的百分比。下面跳到Descline6列,因为游戏中的显示顺序和这里的描述顺序相反,因此它将显示在最前面。Descline6:填5;Desctexta:填earthys (又一个我们即将创建的字串。) Desccalca:填"min(lvl,par3)" 同样是要与我们在skills.txt里的设置相符。Descline5: 13 (我认为这将使游戏显示宝宝的生命值) 。这里不需要任何文字text和算式calcs来显示生命值,除非你用了增加最大生命+maxlife%这个属性。在那种情况下,你需要输入一个公式在栏desccalca1中以便计算实际的生命值。当然,也有其他的字串可以用来显示实际的生命值。你要做的就是找另外一个有额外生命加成的技能,研究它的desctexta和b。Descline4:填9(这将显示召唤兽的攻击伤害值)Desccalca: 填ln12。我不是很确定,但我认为这样将增加显示的召唤兽伤害值的比例。至于Desc2line是显示与等级无关的特殊技能的,而我们的earthelemental没有。至于 desc3lines是协同加成效应的,我们造的宝宝也没有。虽然没有,但这两个desc的设置跟前面的那个一模一样。如果你足够仔细地研究了其他技能的描述,你会找到已经存在的字串来显示你想要的表达,或者你也可以自己造字串。最后一步,写上0表示结束并且保存退出skilldesc.txt。
该做的都差不多了,事后的完善工作,就是添加你前面调用过的,而实际并不存在的字串们。
myminion: An ally of the druid
earth: Earth Elemental
earth1: Being from the elemental planes
earth2: Summons an elemental being to aid you in combat
earth3: Earth Elemental
earthys: Elementals:
别说你不会添加字串!!!
这就行了!把你改好的.txt文件们放到/excel文件夹里去吧。加参数进游戏测试吧。
这个添加字串该怎么弄?
[ 本帖最后由 mike385776 于 2013-7-31 14:45 编辑 ]