找回密码
 加入帝国

QQ登录

只需一步,快速开始

查看: 3698|回复: 2

[教程文章] [代码]科技列表和建造列表基本概念

[复制链接]
发表于 2009-8-16 19:55:31 | 显示全部楼层 |阅读模式
[代码]科技列表和建造列表基本概念


转载自西亚加拉宇宙载具改装中心的建造与研究脚本制作
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
创造科技
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
作者:CQD

创造科技
1.简介
2.档案结构
3.研究
 3.1 总论
 3.2 研究栏位
4.建造
 4.1 总论
 4.2 建造栏位
5.实作
 5.1 创造研究项目
 5.2 创造建造项目
6.声明

1.简介
这份文件解释如何去使用建造和研究的脚本(script).这两个脚本里面描述了建造,研究,和升级的一切项目
2.档案结构  
每个种族都有自己的脚本集(script set).在万舰二安装目录下的:
Data\Scripts\Building and Research\
资料夹中,每个种族的目录中都有两个档案,build.lua和research.lua

3.研究
3.1 总论
研究档案其实是一个大表格,里面每个该种族能够研究的项目都各自有着自己的次表格.每个研究项目都有几个核心栏位,也有一些选择性的项目,用来指定升级的资讯.升级系统是研究系统的一部分,指定了要升级哪些船以及升级的种类
3.2 研究栏位 Name (必需) 研究项目的名称.检查研究项目以及建造项目的相依性时会使用这个名字.
RequiredResearch (必需) 研究此项科技所需要的前置科技.你可以用布林运算(Boolean operation)来产生复杂的相依关系.运算符号有:“&”(and),“|”(or),“!”(negation).你也可以使用括号.
RequiredSubSystems (必需) 研究此项科技时所需要有的子系统.在这里使用的名称是子系统的typeString而不是子系统的本身的名字,所以应该要使用 “AdvancedFighterProduction”,而不是“Hgn_AdvancedFighterProduction”.可以利用布林运算来产生复杂的相依关系.
Cost (必需) 研究项目所需要的RU
Time (必需) 当只有一个研究子系统时研究这项科技所需要的时间,单位为秒.如果有不只一个研究设施的话研究速度会加快.
DisplayedName (必需) 在使用介面上所显示的名称
DisplayPriority (必需) 在使用介面上会依照这个数字来排列研究项目.数字较小的会显示在比较上面
Description (必需) 研究项目的叙述,会显示在使用介面上
UpgradeType 此项研究所带来的升级类别,其值可以是Modifier(修正量)或Ability(能力)
TargetType 因为这项研究而受惠的单位类型.其值为AllShips(玩家舰队中的所有单位),Family(某个指定的attack family,例如护卫舰),或是Ship(某种特定的船舰,例如离子炮舰)
TargetName 指定研究所影响的目标.这个参数对于Allship来说不需要,对于Family来说会是某个attack family的名称.而对于Ship来说就会是某一个单位的名称,例如Hgn_Scout(西加拉的侦察机)
UpgradeName 研究后会变更的数值或是能力.细节请看HW2_MultipliersAndAbilitiesHowTo.doc(译注:RDN释出的文件里面并没有这一份)
Upgradevalue 对于Modifer来说,这个值乘上要改变的数值就是新数值.对于Ability来说0表示取消掉某项能力,1表示启动某项能力
(译注:在释出版本的游戏中的research.lua中,UpgradeType = Ability的研究项目都没有Upgradevalue的参数)


4.建造
4.1 总论
研究档案其实是一个大表格,里面每个该种族能够研究的项目都各自有着自己的次表格.造价和建造时间并不包含在里面,这两样资讯记载在每个单位各自的.ship(船只单位)或是.subs(子系统)文件中

4.2 建造栏位 Type Ship(船只单位)或是SubSystem(子系统)
ThingToBuild 所要建造的项目的名称.例如Hgn_Scout(西加拉侦察机)或是Hgn_AdvancedFighterProduction(某个子系统,正式游戏中没这个东西)
RequiredResearch 建造此单位所需要的前置科技.你可以用布林运算(Boolean operation)来产生复杂的相依关系.运算符号有:“&”(and),“|”(or),“!”(negation).你也可以使用括号.  
RequiredShipSubSystems 建造此单位所需要有的子系统.在这里使用的名称是子系统的typeString而不是子系统的本身的名字,所以应该要使用 “AdvancedFighterProduction”,而不是“Hgn_AdvancedFighterProduction”.可以利用布林运算来产生复杂的相依关系.
DisplayPriority 在使用介面上会依照这个数字来排列建造项目.数字较小的会显示在比较上面
DisplayedName 在使用介面上所显示的名称
Descr5.实作
5.1 创造研究项目
创造新的科技是很有趣的!这个例子告诉你如何增加新的研究项目到Vaygr的科技树中.

{     
3 Name = “MissileCorvette“,
4 RequiredResearch = ““,
RequiredShipSubSystems = “Research & CorvetteProduction“,
5 Cost = 750,
Time = 40,
6 DisplayedName = “Missile Corvette Technology“,
7 DisplayPriority = 2,
8 Description = “Researching this technology will allow you to build Missile Corvettes“,
9 TargetName = “vgr_missilecorvette“,
10 Icon = Icon_Tech,
11 ShortDisplayedName = “Missile Corvette“
}     

开启Homeworld2/Data/Scripts/Vaygr/Research.lua
决定你要加入什么科技.以这里来说让我们增加一项建造Vaygr飞弹攻击艇的必要条件.
给这个科技一个名字,让我们叫他“MissileCorvette”.这个名字可以在research.lua和build.lua中交替使用
给这个科技一些前置需求.如果你希望这项科技不需要前置研究就能取得,将其留空.在我们的例子中,玩家需要Research和CorvetteProduction(研究和攻击艇生产)模组.
利用下面的符号来创造更复杂的相依关系,也可以使用括号.例如
| = or
& = and
! = not
给这个科技成本以及时间.例子中的MissileCorvette科技需要花费750 RU以及40秒来研究
DisplayedName会显示在说明文字的标题列
DisplayPriority用来决定项目在使用介面上的顺序,数字较小的会显示在比较上面.如果有两个科技的DisplayPriority相同并且同时都能够被研究,则只有其中一个会显示出来.
Description的文字是说明视窗的内容
可以利用\Homeworld2\data\Locale\English\buildresearch.dat,然后加入你想参考的对应文字,并且在前面加一个“$”,来达成介面的区域化(例如改成不同的语言,或是使用不同的惯用语法)
例如你想参照到buildresearch.dat中的line 7035的话,打入“Description = $7035”
有许多方式可以用来将说明视窗文字作排版.下面是几个例子:
〈b〉Description:〈/b〉会在说明文字中显示成“Description”(粗体字)
/n可以用来断行,帮助你做文字分段
TargetName是在UI上显示的科技名称
图示(icon)用来告诉使用者这项科技的作用
你可以藉由加入新的图案以及位在research.lua最上方的参照来增加新的图示.Icon_Tech参考到其他档案的方法是:
Icon_Tech = “data:ui/newui/research/icons/tech.mres“
最后一项你必须增加的是ShortDisplayedName(科技的简名).这一栏会显示在研究管理视窗中,长度不能超过14个字元.
5.2 创造建造项目

{     
3 Type = Ship
4 ThingToBuild = “Vgr_LaserCorvette“,
5 RequiredResearch = “CorvetteLaser“,
6 RequiredShipSubSystems = “CorvetteProduction“,
7 DisplayPriority = 105,
8 DisplayedName = “$7140“,
9 Description = “$7141“,
}     

开启Homeworld2/Data/Scripts/Vaygr/Build.lua
决定你要让玩家能够建造什么东西.以这里来说让我们想像我们要增加雷射攻击艇到游戏中.
首先你要描述这个单位的类型,可以是Ship或者Subsystem.以这里来说是一艘船(Ship)
接下来要填入把你想建造的东西.这个名字应该要和利用shiptuning.xls所输出的船只档案名字相同
给他一些前置科技.本例中雷射攻击艇需要corvettelaser科技,这个已经在research.lua中定义.
接下来加入建造船只需要的子系统.攻击艇需要CorvetteProduction
CorvetteProduction是在subsytemtuning.xls所能找到的typestring.可以好几个子系统共用相同的typestring
DisplayPriority用来决定项目在使用介面上的顺序,数字较小的会显示在比较上面.
以上面的例子来说有区域化的文字,可以在下列位置找到:
Homeworld2\data\Locale\English\buildresearch.dat
“DisplayedName = $7140 ”会在建造管理视窗中显示“Laser Corvette”
以上面的例子来说有区域化的文字,可以在下列位置找到:
Homeworld2\data\Locale\English\buildresearch.dat
“DisplayedName = $7141 ”会在说明视窗中显示
Description: Anti-Capital Ship Corvette Squadron.
Strong vs: Frigates, Capital Ships
Weak vs: Corvettes, Capital Ships
Prerequisites: Corvette Facility, Research Module and Corvette Laser
Research

6.声明
本文件主要是翻译自Relic Developers Network所释出的“HW2_BuildandResearchScripting.pdf“.
原始文件版权为Relic所有.翻译者为西加拉宇宙载具改装中心的CQD.iption 建造项目的叙述,会显示在使用介面上。
回复

使用道具 举报

发表于 2009-11-26 06:40:43 | 显示全部楼层
受教了~我研究研究看看,有問題再提問!!~[s:132]
回复

使用道具 举报

发表于 2010-8-12 17:27:16 | 显示全部楼层
晕。。。不过看明白了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入帝国

本版积分规则

Archiver|手机版|小黑屋|泰坦帝国

GMT+8, 2024-3-29 08:38 , Processed in 0.112081 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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