当前位置:百问十四>百科知识>海盗时代3(加勒比海盗2)内存修改的问题

海盗时代3(加勒比海盗2)内存修改的问题

2024-04-02 22:22:16 编辑:join 浏览量:538

海盗时代3(加勒比海盗2)内存修改的问题

强烈建议:修改前备份原文件!

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); //蝮?怦?镳噔桦

标签:内存,加勒比海,海盗

版权声明:文章由 百问十四 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.baiwen14.com/article/55221.html
热门文章