强烈建议:修改前备份原文件!
1,开始等级,技能等修改
用记事本打开x:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales\Program\characters\characters_init.c文件,
查找以下字符:
for(n=0; n
{
makeref(ch,Characters[n]);
//DeleteAttribute(ch,"act");
DeleteAttribute(ch,"");
(这个以下是开始在船上工作的人员,以后召收的指挥官属性修改在后面)
................
ch.skill.freeskill = 100; ---这是修改后的技能点数,
ch.perks.freepoints = 100; ---这是修改后的能力点数,
................
ch.rank = 8001; ---这是修改后的开始级别,和以后要召收的指挥官等级有关联,不要大于主角的等级数.
指挥官的开始等级修改后,把以下字段删除掉:
ch.rank = sti(ch.skill.Leadership) + sti(ch.skill.Fencing) + sti(ch.skill.Gun) + sti(ch.skill.Sailing) + sti(ch.skill.Accuracy) + sti(ch.skill.Cannons) + sti(ch.skill.Grappling) + sti(ch.skill.Repair) + sti(ch.skill.Defence) + sti(ch.skill.Commerce) + sti(ch.skill.Sneak) - 13;
(各种技能的开始值不用修改了,因为修改技能点数后,再手动加上去就可以了.)
以下是开始时在你船上的工作人员,原来都是-1表示没有,1表示你自己,2是女主角,不要添1,3以后是其他人.
ch.Fellows.Passengers.boatswain = "2";
ch.Fellows.Passengers.navigator = "3";
ch.Fellows.Passengers.doctor = "4";
ch.Fellows.Passengers.cannoner = "5";
ch.Fellows.Passengers.treasurer = "6";
ch.Fellows.Passengers.carpenter = "7";
....................
makeref(ch,Characters); //Blaze Sharp
ch.name = XI_ConvertString("Blaze");
(这个以下是男主角部分)
......................
ch.model = "devlin"; --人物代码,可以换成其他人物形像来玩.
....................
ch.skill.freeskill = 100; ---这是修改后的技能点数,
ch.perks.freepoints = 100; ---这是修改后的能力点数,
..............
ch.rank = 8200; ---这是修改后的开始级别,数值必须要比前面的指挥官的等级数大一些,上万可能出错.
................
ch.money = "9999990"; --这是修改后的金钱,多了好像就出错了.
..............
ch.Ship.Name = "Quicksilver"; --船的名字.改成喜欢的中文名字.
ch.Ship.Type = GenerateShip(SHIP_LUGGER, 1); --这是开始的船,一条小破船.
改成:
ch.Ship.Type = GenerateShip(SHIP_BATTLESHIP, 1);
其中括号里的SHIP_BATTLESHIP是战列舰的代码,表示你一开始就用了战列舰,你还可以在X:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales\Program\ships\Ships_init.c 文件里修改这条战舰的其他属性.
GiveItem2Character(ch, "blade1"); ---------------开始时的佩剑,改为blade17,游戏中的好剑“绝壁”
EquipCharacterByItem(ch, "blade1"); ------------- 同上
GiveItem2Character(ch, "gun1"); ------------- 开始时的佩枪,改为gun7,
EquipCharacterByItem(ch, "gun1"); -------------同上
GiveItem2Character(ch, "spyglass1"); -------------开始时的望远镜,改为spyglass4
EquipCharacterByItem(ch, "spyglass1"); -------------同上
...............
makeref(ch,Characters);
ch.name = XI_ConvertString("Beatrice");
(这个以下是女主角部分,修改和男主角一样,不再重复)
2,船支属性修改
按照以下的修改,游戏中可能会遇到这样无敌的敌方船支,如果非要改一条自己专用的船,具体作法就是船的数据,比如船体和船帆的耐久度,航行速度等在内存中修改(方法见关于修改《沉船》的帖子)。至于火炮类型和最大口径以及船员数,可以还用以下方法来修改,因为电脑可能还没有升级这些。
用记事本打开X:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales\Program\ships\Ships_init.c 文件,在这个文件里可以修改游戏里各种类型的船的容量,船体的血值,帆的血值,最大船员数,装载的火炮类型和数量,以及航速和转速等.
以战列舰为例,以下数据是修改后的结果.需要修改的地方加以说明.
///////////////////////////////////////////////////////////////////////////
/// Battleship
///////////////////////////////////////////////////////////////////////////
makeref(refShip,ShipsTypes[SHIP_BATTLESHIP]); ----SHIP_BATTLESHIP是这条战列舰的代码,就是在前面加入开始拥有的船支.
refShip.Name = "Battleship";
refship.Soundtype = "lineship";
refShip.Class = 1;
refShip.Cannon = CANNON_NAME_MORTAR; ----可以升级到迫击炮,在Cannons_init.c 火炮文件里有各种火炮的数据和代码.
refShip.MaxCaliber = 92; ----可升级的最大口径.这里的数字参考Cannons_init.c 文件里的相关数据,不是自己乱改.
refShip.Weight = Tonnes2CWT(893000); --承重量
refShip.Capacity = 885500; ---船舱容量
refShip.CannonsQuantity = 180; --可装的火炮数量
refShip.rcannon = 80; --以下四项是左右舷和前后火炮配置,数量加起来等于总数量.
refShip.lcannon = 80;
refShip.fcannon = 8;
refShip.bcannon = 22;
refShip.MaxCrew = 800; ---最多船员数,效果不太明显
refShip.MinCrew = 180;
refShip.BoardingCrew = 900; --参加甲板战的人,抢船时用到,多一些
refShip.GunnerCrew = 650; --枪手,参加陆战的人.攻城参战人员,
refShip.CannonerCrew = 360; --炮手,是大炮数量的2陪.
refShip.SailorCrew = 800; --水手数,和refShip.MaxCrew = 800相等.
refShip.SpeedRate = 123.4; ---航速,太大没意思
refShip.TurnRate = 312.0; --转变速度, 太大没意思
refShip.Price = 3000000; --出售价格,
refShip.HP = 996700; --船体血值
refShip.SP = 99100; --船帆血值
refShip.AbordageLocation = "Boarding Deck_01";
refship.Type.Merchant = true; --船厂是否出售该船.
refship.Type.War = true;
...........
另:安装MOD-Supermod后,游戏中船坞可以买到任何船支。
3,火炮属性修改
用记事本打开x:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales\Program\cannons\Cannons_init.c 在这个文件里可以修改某种火炮的装填时间等.
在这里主要是修改炮弹的装填时间,以下是以迫击炮为例,因为在战列舰修改里把迫击炮作为战列舰的最大配置类型:
makeref(rCannon,Cannon[CANNON_TYPE_MORTAR]);
rCannon.type = CANNON_NAME_MORTAR; --等号后面是迫击炮代码,可以加到上面Ships_init.c文件里某种船的里面
rCannon.caliber = 92;
rCannon.name = "caliber92";
rCannon.picture = "cannons13";
rCannon.Sound = "fort_cannon_fire";
rCannon.ReloadTime = 40; -----装填时间,修改后的数据.
rCannon.Cost = 2000;
rCannon.Weight = 160;
........................
4,召收的指挥官修改
本来想把指挥官改成MM,但在游戏里这些指挥官不像在1代里那样跟随主角战斗,所以就放弃了.
记事本打开G:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales\Program\scripts\utils.c ,
查找以下字符:
if (CharacterType == OFFICER)
{
characters[iChar].type = WARRIOR;
//LAi_NPC_Equip(&characters[iChar], sti(characters
[iChar].rank), true, false);
if(sti(characters[iChar].rank) > 15)
{
characters[iChar].rank = 15;
}
}
修改 characters[iChar].rank = 15;
为:
characters[iChar].rank = 8015; ----------不要大于主角的等级数。
注意:召收的指挥官等级和主角的等级,以及前面修改的指挥官开始时的等级相关联。
5,让小贩出售所有武器物品
打开G:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales\Program\scripts\utils.c
查找
void GiveItemToTrader(aref ch)
{
int irand;
DeleteAttribute(ch, "items");
TakeNItems(ch,"blade1", Rand(1)+1);
TakeNItems(ch,"gun1", Rand(1)+1);
int iChance = 0;
float fLuck = GetSummonSkillFromName(pchar, SKILL_SNEAK);
fLuck = fLuck * (1.0 + (0.5 * iGameArcade));
for(int i = 0; i < ITEMS_QUANTITY, i++)
{
if(!CheckAttribute(&Items, "groupID"))
{
continue;
}
if(Items.groupID == SABERGUN_ITEM_TYPE)
{
continue;
}
if(!CheckAttribute(&Items, "rare"))
{
continue;
}
if(CheckAttribute(&Items, "uniq") && sti(items.uniq) != 0)
{
continue;
}
if(items.groupID == BLADE_ITEM_TYPE || items.groupID == GUN_ITEM_TYPE || items.groupID == SPYGLASS_ITEM_TYPE)
{
if(stf(items.rare) < 10.0)
{
continue;
}
if(CheckAttribute(&items, "minlevel"))
{
if(sti(items.minlevel) > sti(pchar.rank) + 3)
{
continue;
}
}
iChance = rand(100); //蝮?怦?镳噔桦
标签:内存,加勒比海,海盗