加勒比海盗2修改文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《海盗时代:加勒比传说》是《加勒比海盗》的第二版。
强烈建议:修改前备份原文件!
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(merce) + 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[1]); //Blaze Sharp
= XI_ConvertString("Blaze");
(这个以下是男主角部分)
......................
ch.model = "devlin"; --人物代码,可以换成其他人物形像来玩.
....................
ch.skill.freeskill = 100; ---这是修改后的技能点数,
ch.perks.freepoints = 100; ---这是修改后的能力点数,
..............
ch.rank = 8200; ---这是修改后的开始级别,数值必须要比前面的指挥官的等级数大一些,上万可能出错.
................
ch.money = "9999990"; --这是修改后的金钱,多了好像就出错了.
..............
= "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[2]);
= 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是这条战列舰的代码,就是在前面加入开始拥有的船支.
= "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; ---最少船员数,改成2后,表示只有两个船员时,也能开船.
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;
= "caliber92";
rCannon.picture = "cannons13";
rCannon.Sound = "fort_cannon_fire";
rCannon.ReloadTime = 40; -----(修改后的数据)装填时间,越小越快。
rCannon.Cost = 2000;
rCannon.Weight = 160;
........................
4,指挥官修改
4.1 把女主角召收为指挥官
下面是Hermisky 找出的代码,可以把女主角召收为指挥官(士官),我在这里一并加入,代码可以换成其他MM的代码,但在战斗中MM动作就僵化了,游戏中只有女主角有打斗动作,所以暂时只好先用女主角的代码了。
这样修改后,以后也只能召收一个模型了。
不过hehua22 说,召收三个MM任命为士官后存盘退出,再把原文件覆盖回去,LOAD后,女主角还在身边,酒馆里再召人,原来的男海盗又可以召了,女主角也还混在其间,我没试过。
G:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales\Program\scripts\utils.c
查找:
sResult = sBody+sPrefix+iNumber;
characters[iChar].model = sRes
ult;
FaceMaker(&characters[iChar]);
改成:
sResult = sBody+sPrefix+iNumber;
characters[iChar].model = sResult;
if(sType == "pofficer")
{
characters[iChar].model = "beatrice";
}
FaceMaker(&characters[iChar]);
中间加粗部分是插入的新代码。其中后面的 "beatrice";就是模型代码。女主角的代码是 "beatrice"; 和 "beatriceA"; 两种。
再查找:
if(isLock == 1)
{
characters[iChar].characterlock = 1;
}
if(iSex == MAN)
{
characters[iChar].sex = "man";
characters[iChar].model.animation = "man";
characters[iChar].model.height = 1.80
}
else
{
characters[iChar].sex = "woman";
characters[iChar].model.animation = "towngirl";
characters[iChar].model.height = 1.70
改成:(加粗体是插入的新代码)
if(isLock == 1)
{
characters[iChar].characterlock = 1;
}
if(sModel == "pofficer")
{
characters[iChar].sex = "woman";
characters[iChar].model.animation = "woman";
characters[iChar].model.height = 1.75
}
else
if(iSex == MAN)
{
characters[iChar].sex = "man";
characters[iChar].model.animation = "man";
characters[iChar].model.height = 1.80
}
else
{
characters[iChar].sex = "woman";
characters[iChar].model.animation = "towngirl";
characters[iChar].model.height = 1.70
4.2 指挥官名字的女性化修改:
G:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales\Program\landencounters\LandEnc_init.c
查找:
LandEncounters[n].id = "ENC_OFFICER";
..........................
LandEncounters[n].char1.model9.ani = "man";
LandEncounters[n].char1.cont = false;
LandEncounters[n].char1.pistol = false;
LandEncounters[n].char1.sword = true;
LandEncounters[n].char1.type = "sit";
LandEncounters[n].char1.Dialog = "Enc_Companion_dialog.c";
换成:
LandEncounters[n].id = "ENC_OFFICER";
LandEncounters[n].char1.modelQuantity = 19;
LandEncounters[n].char1.model1 = "whore_1";
LandEncounters[n].char1.model1.ani = "woman";
LandEncounters[n].char1.model2 = "whore_2";
LandEncounters[n].char1.model2.ani = "woman";
LandEncounters[n].char1.model3 = "whore_3";
LandEncounters[n].char1.model3.ani = "woman";
LandEncounters[n].char1.model4 = "whore_4";
LandEncounters[n].char1.model4.ani = "woman";
LandEncounters[n].char1.model5 = "whore_0";
LandEncounters[n].char1.model5.ani = "woman";
LandEncounters[n].char1.model6 = "girl_1";
LandEncounters[n].char1.model6.ani = "woman";
LandEncounters[n].char1.model7 = "girl_2";
LandEncounters[n].char1.model7.ani = "woman";
LandEncounters[n].char1.model8 = "girl_3";
LandEncounters[n].char1.model8.ani = "woman";
LandEncounters[n].char1.model9 = "girl_4";
LandEncounters[n].char1.model9.ani = "woman";
LandEncounters[n].char1.model10 = "girl_5";
LandEncounters[n].char1.model10.ani = "woman";
LandEncounters[n].char1.model11 = "girl_6";
LandEncounters[n].char1.model11.ani = "woman";
LandEn
counters[n].char1.model12 = "girl_7";
LandEncounters[n].char1.model12.ani = "woman";
LandEncounters[n].char1.model13 = "girl_8";
LandEncounters[n].char1.model13.ani = "woman";
LandEncounters[n].char1.model14 = "towngirl2_1";
LandEncounters[n].char1.model14.ani = "woman";
LandEncounters[n].char1.model15 = "towngirl3";
LandEncounters[n].char1.model15.ani = "woman";
LandEncounters[n].char1.model16 = "towngirl3_1";
LandEncounters[n].char1.model16.ani = "woman";
LandEncounters[n].char1.model17 = "towngirl4";
LandEncounters[n].char1.model17.ani = "woman";
LandEncounters[n].char1.model18 = "towngirl5";
LandEncounters[n].char1.model18.ani = "woman";
LandEncounters[n].char1.model19 = "towngirl6";
LandEncounters[n].char1.model19.ani = "woman";
LandEncounters[n].char1.cont = false;
LandEncounters[n].char1.pistol = false;
LandEncounters[n].char1.sword = true;
LandEncounters[n].char1.type = "sit";
LandEncounters[n].char1.Dialog = "Enc_Companion_dialog.c";
另:和指挥官对话时变成MM的声音:
G:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales\Program\scripts\officers.c
查找:
characters[iChar].dialog.filename = "Officer_dialog.c";
characters[iChar].greeting = "officer_common_" + (rand(3) + 1);
改成:
characters[iChar].dialog.filename = "Officer_dialog.c";
characters[iChar].greeting = "officer_common_1";
把一个MM的声音拷贝到G:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales\RESOURCE\Sounds\Voice\English 目录下,覆盖原来的officer_common_1.wav文件。
4.3 指挥官等级修改
记事本打开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 = 6015; ----------不要大于主角的等级数。
注意:召收的指挥官等级和主角的等级,以及前面修改的指挥官开始时的等级相关联。
5,让小贩出售所有武器物品
打开G:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales\Program\scripts\utils.c
安装MOD后同理。查找:
void GiveItemToTrader(aref ch)
.............................
{
}
void PlaceCharacter(aref ch, string group, string stype)
注意第一句
void GiveItemToTrader(aref ch)
与最后一句
void PlaceCharacter(aref ch, string group, string stype) 之间。
换成:
void GiveItemToTrader(aref ch)
{
int irand;
DeleteAttribute(ch, "items");
TakeNItems(ch,"blade1", Rand(1)+1);
TakeNItems(ch,"blade2", Rand(1)+1);
TakeNItems(ch,"blade3", Rand(1)+1);
TakeNItems(ch,"blade4", Rand(1)+1);
TakeNItems(ch,"blade5", Rand(1)+1);
TakeNItems(c
h,"blade6", Rand(1)+1);
TakeNItems(ch,"blade7", Rand(1)+1);
TakeNItems(ch,"blade8", Rand(1)+1);
TakeNItems(ch,"blade9", Rand(1)+1);
TakeNItems(ch,"blade10", Rand(1)+1);
TakeNItems(ch,"blade11", Rand(1)+1);
TakeNItems(ch,"blade12", Rand(1)+1);
TakeNItems(ch,"blade13", Rand(1)+1);
TakeNItems(ch,"blade14", Rand(1)+1);
TakeNItems(ch,"blade15", Rand(1)+1);
TakeNItems(ch,"blade16", Rand(1)+1);
TakeNItems(ch,"blade17", Rand(1)+1);
TakeNItems(ch,"blade18", Rand(1)+1);
TakeNItems(ch,"gun1", Rand(1)+1);
TakeNItems(ch,"gun2", Rand(1)+1);
TakeNItems(ch,"gun3", Rand(1)+1);
TakeNItems(ch,"gun4", Rand(1)+1);
TakeNItems(ch,"gun5", Rand(1)+1);
TakeNItems(ch,"gun6", Rand(1)+1);
TakeNItems(ch,"gun7", Rand(1)+1);
TakeNItems(ch,"spyglass1", Rand(1)+1);
TakeNItems(ch,"spyglass2", Rand(1)+1);
TakeNItems(ch,"spyglass3", Rand(1)+1);
TakeNItems(ch,"spyglass4", Rand(1)+1);
TakeNItems(ch,"spyglass5", Rand(1)+1);
}
void PlaceCharacter(aref ch, string group, string stype)
修改原理就是把原来文件中的 if 条件语句都取掉,不再有等级等条件的限定。这样的修改 不再像第一次的修改那样在向小贩购买时有几秒的停顿。
其中:Rand(1)里面的1表示每次出售的数量,可以改为比如Rand(5),让每次出售的数量为5。
配合下面的修改,把绝壁剑的使用等级和伤害数据改大后,再买上后发放给你的随从指挥官,这样他们就一剑杀敌了。
6,佩剑属性修改:
记事本打开G:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales0000\Program\items\initItems.c
查找:
makeref(itm,Items[n]);
itm.id = "blade17"; ————游戏中最好的佩剑,名叫“绝壁”???
itm.groupID = BLADE_ITEM_TYPE;
= "itmname_blade17";
itm.describe = "itmdescr_blade17";
itm.folder = "items";
itm.model = "blade8";
itm.picIndex = 9;
itm.picTexture = "WEAPONS";
itm.price = 5000; ————价格
itm.dmg_min = 23.0; ————最小伤害值,改个几百。
itm.dmg_max = 28.0; ————最大伤害值,改个几百。
itm.miss = 4.0;
itm.piercing = 20; ————突破概率(%),修改不超过100。
itm.block = 20; ————阻挡概率(%),修改不超过100。
itm.minlevel = 10; ————最小使用等级(级别低的话不能佩戴),配合随从等级的修改,改为5000,防止敌人也用。
itm.rare = 2; ————发现概率(%),游戏中出现的概率
itm.uniq = 1;
itm.param.time = 0.1;
itm.param.colorstart = argb(64, 64, 64, 64);
itm.param.colorend = argb(0, 32, 32, 32);
n++;
另:武器的名字在G:\Program Files\Star Interactive\Age of Pi
rates - Caribbean Tales0000\RESOURCE\INI\texts\english\ItemsDescribe.txt里,
把佩剑和枪的名字改成自己喜欢的名字。
6.2 人物名字汉化
记事本打开G:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales\Program\characters\english\Characters_names.c ,
这个文件里按国家分了段落,分别是:
// English --英国
// Holland --荷兰
// French --法国
// Spain --西班牙
每个国家下面又有三个段,分别是:
// man names --男人名
// women names --女人名
// families --家族名
人物名字太多,这里以修改游戏中MM的名字为例:
查找以下字符:
// women names
n = 0;
n = AddStr2Array(&sEnWomenNames, n, "Adelina,Alicia,Alison,Amanda,Amelia,Amy,Anne,Astrid,Audrey,Aurelia,Aurora,Avis");
n = AddStr2Array(&sEnWomenNames, n, "Bella,Camilla,Cecilia,Celia,Clare,Claudia,Diana,Edith,Eloise,Emily,Emma");
.................
特别注意每条引号里的名字个数,不是随意添加个数的,必须和原来的名字数目相等,每个名字用逗号分割开,如上面两条中,第一条里有12个,第二条有11个.可以改成以下内容:
// women names
n = 0;
n = AddStr2Array(&sFrWomenNames, n, "张曼玉,刘嘉铃,林青霞,杨恭如,伊能静,黄奕,李小璐,孙俪,赵薇,周迅,马伊俐,王菲");
n = AddStr2Array(&sFrWomenNames, n, "萧蔷,胡慧中,王祖贤,李嘉欣,关之琳,王菲,曹颖,范冰冰,林青霞,李美凤,巩俐");
........................
文件共有四处// women names,所以最好把文件里四处MM的名字都改成中文.
游戏中非主角人物的名字是随机分配的,所以改了以后,你也不知道这些名字倒底用在谁的身上,也许王菲在酒吧里正在做女招待?或者你所召收的指挥官其中有个叫刘德华?
修改好后,把这个文件分别保存在characters目录下的english文件夹中,覆,盖,原,文,件,即可.若不行就再其他几个文件夹中的同名文件。
english (英国) ---汉化用的文件夹。
french (法国)
german (德国)
italian (意大利)
spanish (西班牙)
西方人名的格式是姓在后,名在前,
// families 字段下面是各个国家的姓,和名字组合在一起,所以这样修改后,前面是中文名字,后面还有英文字符的姓.有点儿美中不中,所以最好是把// families字段里面的姓都删除掉,只留下逗号.
后面附有只留下逗号的//families 字段文件附件,其他男性名字和女性名字自己再修改。
7,分辨率修改
记事本打开G:\Program Files\Star Interactive\Age of Pirates - Caribbean Tales\engine.ini文件,这是配置文件,查找
screen_x = 800 ----这是你原来所调的分辨率值
screen_y = 600 ----这是你原来所调的分辨率值
修改为:
screen_x = 1280 -----
这里的数字参照你当前显卡的设置
screen_y = 1024 ------这里的数字参照你当前显卡的设置
保存文件。
运行游戏时不要点击config.exe,点击engine.exe。
如果之前在config.exe中已经把fullscreen Mode (全屏模式)对勾去掉。这样修改后,虽然不是在全屏模式,但游戏画面照样占满屏幕。