- 声望
- 点
- 金币
- 枚
- 银币
- 枚
- 铜币
- 枚
- 注册时间
- 2008-8-29
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2009-8-16 20:05:59
|
显示全部楼层
第三步:把守护者种族的船只放入classdef.lua文件里
你应该要下载了Evillejedi的ai和script文件,但是如果你现在没有,那么请马上下载(译者注:目前我也不知道到哪下载)。现在打开AI文件夹里的classdef.lua文件,从头到尾仔细检查它,无论何时都要保证你所加入的舰船能够完美地符合其级别。记得在每一艘船后面加上逗号。
最后的classdef.lua文件应该是这样:
******
--
-- classdef.lua
--
-- This file only contains ship classfication lists that allow the AI script writer to seperate each ship
-- into different subclasses (fighters, corvettes, anti-fighter, fast, slow,...) This is done to make it easier
-- (and faster) to refer to a ship based on its generalized properties.
--
-- Custom classes can be added at the end but have to be added in a very specific way.
--
aitrace("CPU: CLASSDEF LOADED")
-- table of all squadron class lists
squadclass = {}
-- is mothership
squadclass[eMotherShip] = {
HGN_MOTHERSHIP,
VGR_MOTHERSHIP,
VGR_MOTHERSHIP_MAKAAN,
}
-- can harvest
squadclass[eCollector] = {
HGN_RESOURCECOLLECTOR,
VGR_RESOURCECOLLECTOR,
}
-- is a good scout/explorer
squadclass[eScout] = {
HGN_SCOUT,
HGN_SUPERSCOUT,
HGN_PROBE,
HGN_PROXIMITYSENSOR,
HGN_ECMPROBE,
VGR_SCOUT,
VGR_PROBE,
VGR_PROBE_PROX,
VGR_PROBE_ECM,
KPR_ATTACKDROID,
}
-- is a refinery
squadclass[eRefinery] = {
HGN_RESOURCECONTROLLER,
VGR_RESOURCECONTROLLER,
}
-- can build ships
squadclass[eBuilder] = {
HGN_MOTHERSHIP,
HGN_CARRIER, -- will need subsystem
HGN_SHIPYARD,
VGR_MOTHERSHIP,
VGR_MOTHERSHIP_MAKAAN,
VGR_CARRIER, -- will need subsystem
VGR_SHIPYARD,
KPR_BENTUS,
KPR_DESTROYER,
}
-- can be used as a resource dropoff
squadclass[eDropOff] = {
HGN_MOTHERSHIP,
HGN_CARRIER, -- will need subsystem
HGN_SHIPYARD,
HGN_RESOURCECONTROLLER,
VGR_MOTHERSHIP,
VGR_MOTHERSHIP_MAKAAN,
VGR_CARRIER, -- will need subsystem
VGR_SHIPYARD,
VGR_RESOURCECONTROLLER,
}
-- can be used as a salvage dropoff
squadclass[eSalvageDropOff] = {
HGN_MOTHERSHIP,
HGN_CARRIER,
HGN_SHIPYARD,
VGR_MOTHERSHIP,
VGR_MOTHERSHIP_MAKAAN,
VGR_CARRIER,
VGR_SHIPYARD,
}
-- is a fighter
squadclass[eFighter] = {
HGN_INTERCEPTOR,
HGN_ATTACKBOMBER,
HGN_ATTACKBOMBERELITE,
VGR_INTERCEPTOR,
VGR_BOMBER,
VGR_LANCEFIGHTER,
KPR_ATTACKDROID,
}
-- is a corvette
squadclass[eCorvette] = {
HGN_ASSAULTCORVETTE,
HGN_PULSARCORVETTE,
HGN_MINELAYERCORVETTE,
VGR_MISSILECORVETTE,
VGR_LASERCORVETTE,
VGR_MINELAYERCORVETTE,
VGR_COMMANDCORVETTE,
KPR_MOVER,
}
-- is a frigate
squadclass[eFrigate] = {
HGN_ASSAULTFRIGATE,
HGN_DEFENSEFIELDFRIGATE,
HGN_IONCANNONFRIGATE,
HGN_MARINEFRIGATE,
HGN_MARINEFRIGATE_SOBAN,
HGN_TORPEDOFRIGATE,
HGN_TORPEDOFRIGATEELITE,
VGR_ASSAULTFRIGATE,
VGR_HEAVYMISSILEFRIGATE,
VGR_INFILTRATORFRIGATE,
}
-- can capture other ships
squadclass[eCapture] = {
HGN_MARINEFRIGATE,
HGN_MARINEFRIGATE_SOBAN,
VGR_INFILTRATORFRIGATE,
KPR_MOVER_CAPTURE,
}
-- has shields
squadclass[eShield] = {
HGN_DEFENSEFIELDFRIGATE,
}
-- is a platform
squadclass[ePlatform] = {
HGN_GUNTURRET,
HGN_IONTURRET,
VGR_WEAPONPLATFORM_GUN,
VGR_WEAPONPLATFORM_MISSILE,
VGR_HYPERSPACE_PLATFORM,
}
-- good at attacking fighters
squadclass[eAntiFighter] = {
HGN_INTERCEPTOR,
HGN_ASSAULTCORVETTE,
HGN_ASSAULTFRIGATE,
HGN_GUNTURRET,
VGR_INTERCEPTOR,
VGR_ASSAULTFRIGATE,
VGR_WEAPONPLATFORM_GUN,
KPR_ATTACKDROID,
}
-- good at killing corvettes
squadclass[eAntiCorvette] = {
HGN_PULSARCORVETTE,
HGN_TORPEDOFRIGATE,
HGN_TORPEDOFRIGATEELITE,
HGN_DESTROYER,
VGR_LANCEFIGHTER,
VGR_LAZERCORVETTE,
VGR_DESTROYER,
KPR_MOVER,
}
-- good at killing frigates
squadclass[eAntiFrigate] = {
HGN_IONTURRET,
HGN_ATTACKBOMBER,
HGN_ATTACKBOMBERELITE,
HGN_IONCANNONFRIGATE,
HGN_MARINEFRIGATE,
HGN_MARINEFRIGATE_SOBAN,
HGN_DEFENSEFIELDFRIGATE,
HGN_DESTROYER,
HGN_BATTLECRUISER,
VGR_BOMBER,
VGR_HEAVYMISSILEFRIGATE,
VGR_INFILTRATORFRIGATE,
VGR_DESTROYER,
VGR_BATTLECRUISER,
VGR_WEAPONPLATFORM_MISSILE,
KPR_DESTROYER,
}
-- is a capital ship
squadclass[eCapital] = {
HGN_CARRIER,
HGN_MOTHERSHIP,
HGN_SHIPYARD,
HGN_DESTROYER,
HGN_BATTLECRUISER,
HGN_DREADNAUGHT,
VGR_CARRIER,
VGR_MOTHERSHIP,
VGR_MOTHERSHIP_MAKAAN,
VGR_SHIPYARD,
VGR_DESTROYER,
VGR_BATTLECRUISER,
KPR_DESTROYER,
KPR_SAJUUK,
}
-- eCollector + eScout (maybe refineries - but those things are pretty tough?)
-- this is currently only used to count the number of 'military units' the player/enemy has
squadclass[eNonThreat] = {
HGN_RESOURCECOLLECTOR,
VGR_RESOURCECOLLECTOR,
HGN_RESOURCECONTROLLER,
VGR_RESOURCECONTROLLER,
HGN_CARRIER,
HGN_MOTHERSHIP,
HGN_SHIPYARD,
VGR_CARRIER,
VGR_MOTHERSHIP,
VGR_MOTHERSHIP_MAKAAN,
VGR_SHIPYARD,
KPR_BENTUS,
HGN_SCOUT,
HGN_SUPERSCOUT,
HGN_PROBE,
HGN_PROXIMITYSENSOR,
HGN_ECMPROBE,
VGR_SCOUT,
VGR_PROBE,
VGR_PROBE_PROX,
VGR_PROBE_ECM,
VGR_HYPERSPACE_PLATFORM,
}
-- is a hyperspace gate
squadclass[eHyperspaceGate] =
{
VGR_HYPERSPACE_PLATFORM
}
-- good at killing subsystems
squadclass[eSubSystemAttackers] =
{
HGN_ATTACKBOMBER,
HGN_ATTACKBOMBERELITE,
VGR_BOMBER,
}
-- non critical subsystems
squadclass[eNonCriticalSubSys] =
{
CLOAKGENERATOR,
FIRECONTROLTOWER,
HYPERSPACEINHIBITOR,
ADVANCEDARRAY,
CLOAKSENSOR
}
-- good at killing repairing collectors
squadclass[eGoodRepairAttackers] =
{
HGN_INTERCEPTOR,
HGN_ASSAULTFRIGATE,
HGN_IONCANNONFRIGATE,
HGN_DESTROYER,
HGN_BATTLECRUISER,
VGR_INTERCEPTOR,
VGR_MISSILECORVETTE,
VGR_ASSAULTFRIGATE,
VGR_DESTROYER,
VGR_BATTLECRUISER,
}
-------------------------------------------
-- CUSTOM classes
-- do not exceed eMaxUserCount(32)
eUselessShips = eMaxCount
eBattleCruiser = eMaxCount + 1
-- this number should be one greater then the highest class
sg_maxClasses = eBattleCruiser+1
-- ships that the AI should not build because they are not used properly
squadclass[ eUselessShips ] =
{
HGN_MINELAYERCORVETTE,
VGR_MINELAYERCORVETTE,
VGR_COMMANDCORVETTE,
}
-- is a battlecruiser
squadclass[eBattleCruiser] =
{
HGN_BATTLECRUISER,
VGR_BATTLECRUISER,
KPR_SAJUUK,
}
--
-- FUNCTIONS TO ADD SQUADRON TYPES TO CLASS SYSTEM
--
function FastAddToClass( tbl, classid )
for a,b in tbl do
AddToClass( b, classid )
end
end
function ClassInitialize()
for i=0, sg_maxClasses do
if (squadclass) then
FastAddToClass( squadclass, i )
end
end
-- debug: name all the classes to be displayed on screen
AddClassName( eMotherShip, "Motherships")
AddClassName( eCollector, "Collectors")
AddClassName( eDropOff, "DropOffs")
AddClassName( eFighter, "Fighters")
AddClassName( eFrigate, "Frigates")
AddClassName( eCorvette, "Corvettes")
AddClassName( eCapital, "Capital")
AddClassName( eAntiFighter, "AntiFighter")
AddClassName( eAntiCorvette, "AntiCorvette")
AddClassName( eAntiFrigate, "AntiFrigate")
AddClassName( ePlatform, "Platform")
AddClassName( eRefinery, "Refinery")
AddClassName( eHyperspaceGate, "HypGates")
AddClassName( eShield, "Shields")
AddClassName( eCapture, "Capture")
AddClassName( eSubSystemAttackers, "SubSysKillas")
AddClassName( eBattleCruiser, "BattleCruiser")
end
******
第四步:给守护者种族加入AI
这是最后的一项工作,但不是一项必要的工作,我再次要求你去取下载Eviljedi的文件。
打开cpubuild.lua文件浏览一下,是不是有点惶恐?幸运的是,我们只需要在CreateBuildDefinitions函数里加上几行就是了。
现在删除函数CreateBuildDefinitions(),包括接近函数底部的表示结束函数的end。现在把下面的内容添加到文件里:
******
function CreateBuildDefinitions()
if (s_race == Race_Hiigaran) then
kCollector = HGN_RESOURCECOLLECTOR
kRefinery = HGN_RESOURCECONTROLLER
kScout = HGN_SCOUT
kInterceptor = HGN_INTERCEPTOR
kBomber = HGN_ATTACKBOMBER
kCarrier = HGN_CARRIER
kShipYard = HGN_SHIPYARD
kDestroyer = HGN_DESTROYER
kBattleCruiser = HGN_BATTLECRUISER
elseif (s_race == Race_Vaygr) then
kCollector = VGR_RESOURCECOLLECTOR
kRefinery = VGR_RESOURCECONTROLLER
kScout = VGR_SCOUT
kInterceptor = VGR_INTERCEPTOR
kBomber = VGR_BOMBER
kCarrier = VGR_CARRIER
kShipYard = VGR_SHIPYARD
kDestroyer = VGR_DESTROYER
kBattleCruiser = VGR_BATTLECRUISER
else
kCollector = HGN_RESOURCECOLLECTOR
kRefinery = HGN_RESOURCECONTROLLER
kScout = KPR_ATTACKDROID
kInterceptor = KPR_ATTACKDROID
kBomber = KPR_MOVER
kCarrier = KPR_DESTROYER
kShipYard = KPR_DESTROYER
kDestroyer = KPR_DESTROYER
kBattleCruiser = KPR_DESTROYER
end
end
******
我们注意到,有很多的船只被用来扮演不同的角色,因此你下一步要做的就是设一个可控制的守护者种族船只的变量,然后加到这里。当然,这些都不用着急,等你运行一下这个MOD并看到守护者种族能够自己造船后,然后再做这件事。
欢迎任何的建议和补充,希望得到大家的帮助!
------------------------
译者后记:此教程虽然详细,但是还有一些细节问题没解决,
特别是加入建造列表一部分。大家要多多注意。 |
|