zx8838054 发表于 2009-7-14 19:11

大炮大炮。。

想让大炮更牛么。。。想让大炮当男子汉使么??全民手动修改保证每问题。!!!!!


1.代码?改CANNONSCannons_init.c就可以了
2. rCannon.ReloadTime是装弹时间,改的越小装的越快.

zx8838054 发表于 2009-7-14 19:14

顺便转点。。辛苦找到的资料。。。
<英文版沉船之城作弊模式-开始>

鄙人和沉船吧"中国战神"先生在研究了一下午沉船之城英文版后,终于发现了如何开启作弊模式,此作弊模式异常强大而且震撼请谨慎使用

下面是开启作弊模式的过程:
首先,打开ENGINE.INI文件把其中的DEBUGWINDOW=0改为=1
其次,进入X:Age of Pirates 2Program找到_mod_on_off.h文件,将其中的这句"#define MOD_BETTATESTMODE                        "off"// On -DEV version; Test - TST ver; Off - relize"中带引号的OFF改为ON
最后进入游戏点击键盘F11开启作弊模式,还有F4毽是瞬移谨慎使用

</英文版沉船之城作弊模式-结束>

然后找到游戏安装目录X:Age of Pirates 2 City of Abandoned ShipsProgram下的seadogs.c文件,用UltraEdit打开查找如下语句:
                  // 镱 F11 恹琨忄弪 铌眍 铗豚澉桕?
                  if (MOD_BETTATESTMODE == "On" || MOD_BETTATESTMODE == "Test")
                  {
                     LaunchDebuderMenu();
                  }
将其替换为:
                  // 镱 F11 恹琨忄弪 铌眍 铗豚澉桕?
                  //if (MOD_BETTATESTMODE == "On" || MOD_BETTATESTMODE == "Test")
                  //{
                     LaunchDebuderMenu();
                  //}
就是在if、{、}开头处添加//
保存退出,进入游戏,F11键可以顺利使用了,同理F5、F7、F10等键亦可如此修改变为可用。
附上修改好的seadogs.c文件,下载直接替换亦可。



修改说明:
F1,主角+5W錢
F2,不會用。。。
F3,顯示當前地圖ID,非常好用的功能,任意門必備。。。
F4,按了沒看見加技能啊。。。
F5,+35點屬性技能(武器熟練?反正就是那個)
F6, 來自遙遠時空的散彈槍+義大利重劍+頂級望遠鏡+man-o-war(滿水手,彈藥武器2000)+聲望(有單獨加的)+這個不知道啥意思
特別提醒:本功能疑似強制替換主角當前船隻,所以如果你正在乘著稀有船隻耍帥。。。請記得寄存先。。。
F7,似乎是使國家任務直接進入下一環
F8,直接進入酒館
F9,風力(風速?)9.5
F10,無敵模式ON/OFF
F11,加豬腳聲望
F12,全部國家賞金+50(難道是通緝自己?有興趣的試試。。。)
F13,疑似大地圖遇敵ON/OFF
F14,散彈槍模式ON/OFF
F15,改變國家之間關系(為啥我咋按都是西班牙和英國。。。)
F16,遊戲時間過5天
F17,等高人來翻譯了。。。
F18,隱藏用戶介面ON/OFF,截圖很漂亮
F19,小弟用F5,不過你本身F5加滿小弟都是100來投奔你的。。。
F20,加幾個技能。。。貌似是固定的幾個,沒注意是不是扣技能點。。。不過有比沒有的好。。。先按這個再加點好了。。。
F21,開啟Gold Fleet?(黃金艦隊?運金船隊?),不曉得啥用,等高人
F22,Ascold info,完全不明白了。。。
F23,豬腳獲得各國的許可證
F24,各國貿易許可30天
F25,重新載入場景
F26,無
F27,無
F28,不明白,FD是啥?To start FD to Map...
F29,各國你的人頭-50賞金。。。
F30,遊戲過20天

機器貓任意門:與F11窗口最上方對話框輸入
MapID,reload,reload1_back(示例是飛到沉船島的)
Pirates_Shipyard,reload,reload1_back//百慕大改裝廠
Pearl_town_1,reload,reload1_back//交詛咒珍珠的地方
Havana_town/Santiago_town //我選的是西班牙大叔。。。

以上方法嚴重影響遊戲樂趣,使用前請三思。另外特別提醒飛去敵對城市前最好記得去公海換旗子,是的,海上也能飛。。。

zx8838054 发表于 2009-7-14 19:15

还有~~~消灭穷人任务:
荷兰西印度公司代表               奥 利 弗 特 拉 斯 特


弃船之城需要查找的人名:
海军上将                                  查 德 卡 帕

反目成仇任务起始人                        罗 杰 尔 哈 格

反目成仇后续                              李 图 尔 斯

酒鬼泰勒任务起始人                        李 图 尔 斯 (或直接找泰勒本人)
(得到简单钥匙的途径之一)

酒鬼泰勒任务后续                        埃 莉 斯 泰 勒
                                          马 克 西 姆 泰 勒

典狱长                                    加 百 列 德 埃 克 希 姆 斯

酒鬼泰勒后续                              吉 莱 斯 巴 茹

银行(谣言中的巫师)                      奥 古 斯 都 勃 拉 姆 斯

商店老板(地图)                                           埃 里 克 约 斯 特

酒馆老板(弃船之城任务后续)                         希 尔 布 伦 纳   

酒馆吧女                                  阿 尔 莫 杜 莱 恩

埃斯梅拉达号任务起始人                  佩 德 罗 霍 塔 杜

神父                                    帕 德 里 安 吉 尔

争风吃醋任务起始人                        多 米 尼 克 雷 格 罗
(另一条得到简单钥匙的途径)

狱卒                                    托 马 斯 博 伊 勒
   
木匠                                    安 德 列 拉 包 尔

老妇人                                    塞 西 莉 加 拉 德

机械师                                    亨 利 克 范 戴 克

各船女主人                              埃 莉 斯 泰 勒
                                          奥 雷 利 伯 提 纳
                                          李 图 尔 斯
                                          埃 丽 萨 卡 尔 沃

运送物资                                  费 利 克 斯 曼 多 扎
                                          帕 布 罗 巴 拉 德 斯

副官                                    约 翰 沃 克 曼

zx8838054 发表于 2009-7-14 19:15

超级修改


我玩腻了,最后把有人提到重大疏忽修正下,要是彼得剧情沉船、飞百慕大落下船的有劳您再下一次,或者重装一次游戏把做过的改动复原:

1、主角舰队舰数增至10艘(仅限于劫船时用,且不要停靠在另一侧为敌对港口的狭窄小岛),俘虏副官数增至40个;
2、增加人物负重能力,负重perk改为增加100;
3、副官获得经验速度与主角相等,加了perk后为主角2倍;
4、主角初始能力全10,提升初始技能(可修满个人特技,舰船特技请靠副官解决),起始资金为5000000,起始地点固定为百慕大;
5、起始船只改为用于抢海狼号的7级快艇;
6、修复英文版下的阿兹台克任务对话bug;
7、副官装备界面下可为其更换装备;
8、大幅减少食物和朗姆酒的消耗,减少水手和副官的薪水,减少提升士气所需的金钱数量,增加老鼠磨牙后提供的技能经验值数;
9、在岸上过夜时水手经验不减,航海时水手炮术和肉搏能力也会缓慢增加,超载时不减士气;
10、非剧情特殊副官能力全10(不影响普通副官和敌人);
11、大幅提高商店图腾的出现几率,商店不再出售除了武器、图腾、地图、药品、弹药、水晶骷髅以外的其它个人物品;
12、船厂出售超2、超3、超4等数据随机的特殊船,且数据固定为RP最好(可能性无限接近于零)时能够随出的数据;
13、特殊船最大炮口径全部提高到42(鬼船除外),最大炮口径32以上的船都可以随出42的炮;
14、帆布、船板、朗姆酒改为以10为单位买卖;
15、彼德剧情中不会被没收武器,结束时抢到的船改为用于抢海狼号的7级快艇;
16、默认开启作弊模式,F10键为特殊副官状态,F11键为debug窗口(汉化版可用);
17、大幅提高酒馆可招募的水手数;
18、百慕大船厂改炮上限提高到42磅,且所有改造项目可无限改造(直至数据BT到溢出为止……);
19、新增作弊键,F5键切换无敌状态,insert键直飞百慕大;
20、可利用RESOURCEINItextsrussianPsHero.txt文件新增特殊副官,格式与HeroDescribe.txt一样,已有一个示例亨利摩根大大(汉化版可用)。

改游戏比玩游戏有趣多了。

友情提醒:修改代码文件请使用16进制编辑器,个人推荐UltraEdit。

=======================咱是又长又粗的分割线============================

按顺序来,首先是Programcharacters目录,想必大家都研究透了,就权当照顾下新人吧

characters.h文件定义了一些与角色属性有关的数值和字符串,字符串不能碰,咱可以动动数值

#define PASSENGERS_MAX      64
#define PRISONER_MAX      40
#define COMPANION_MAX      10

懂英语的显然可以看出这是定义乘客数(一般也就是副官)最大值、囚禁舰长数最大值和舰队舰长数(包括主角)最大值,改成想要的值就行了。

#define SKILL_MAX         100
#define SPECIAL_MAX         10

以上分别是技能和属性点的最大值,如果光改实际值不改这个上限是没用的,另外注意技能和属性点不要改太大,否则在游戏的算法引用时会出错,例如把天赋弄到40主角就会像赛亚人一样不管做什么都会升级。

-------------咱是又细又短的分割线----------------

RPGUtilite.c应该是大部分人修改的起点了,涉及人物数值的生成,所以咱们主要是改里面的公式。HP和EN的算法是公用的就别改了,想割草还不如改把神兵出来。嘛,先看这句

int GetCharacterSkillSimple(ref _refCharacter, string skillName)

下面有n行形似

skillN = skillN + SetCharacterSkillByItem(_refCharacter, skillName, SKILL_FORTUNE, "jewelry9",1);

的代码,这是物品的属性加成,SKILL_FORTUNE是技能名,可以去characters.h里找,jewelry9是物品代码,到ProgramITEMS目录下翻吧,1则是加成值(在游戏中实际加成会×10),显然,这个物品是小十字架

int GetShipClassNavySkill(int shipClass)

开船要的航海技能点数,下面的needSkill全=0的话你就可以一开始操MOW了

void AddCharacterExpToSkill(ref _chref, string _skill, float _addValue)

定义经验的获取率,注释officers下面的代码就决定了军官们可以从主角那里揩到多少油水,形如

AddCharacterExpToSkill(GetCharacter(cn), _skill, _addValue * 2);

要多少看着办吧,注意if (CheckCharacterPerk(_chref, "SharedExperience"))下的三句是在有共享经验技能时的揩油率,再下来三句才是正常情况下的

int GetMaxItemsWeight(ref _chref)

这个可谓人尽皆知了,定义人物负重,虽然是公用的不过给敌人加负重也没啥影响

if (IsCharacterPerkOn(_chref, "Grus")) iBonus = 100;

定义负重perk

iBonus = iBonus + CHAR_ITEMS_WEIGHT + GetCharacterSPECIALSimple(_chref, SPECIAL_S)*(GetCharacterSPECIALSimple(_chref, SPECIAL_E) + 75 - MOD_SKILL_ENEMY_RATE);

定义基础负重,最简单的改法就是动那个数字了

void initNewMainCharacter()

主要角色简称主角的定义

case "Adventurer":
SetSPECIAL(ch, 10,10,10,10,10,10,10);
SetCharacterPerk(pchar, "HPPlus");
SetCharacterPerk(pchar, "EnergyPlus");
break;

adventurer就是职业名了,除了可以用SetSPECIAL改属性值外,还可以用SetCharacterPerk加特技,这个方法的麻烦之处在于要选择相应职业,要么就把海盗和商人一并改了,所以咱们可以换用下面这个

ch.skill.freeskill   = 0;
ch.Skill.FreeSPECIAL = 0;

可自由分配的技能点和属性点数,咱进游戏里手动加,再下来

pchar.Ship.Type = GenerateShip(SHIP_WAR_TARTANE, 0);

一开始用什么船,可以去ProgramShips下找,顺便这句是船的生成语句,遍布各个代码文件,跟上面那个SetSPECIAL和SetCharacterPerk一样几乎到处都是,还有如果你足够恶趣味可以把0改成1,你的船就是赃物了……对于狂派而言还有个问题,船的数据是随机生成的,咱想开鱼雷快艇咋办?那就在下面添加

ref rRealShip = GetRealShip(sti(pchar.Ship.Type));
rRealShip.MaxCaliber = 42;
rRealShip.MaxCrew    = 500;
rRealShip.OptCrew    = 350;
rRealShip.Capacity   = 50000;
rRealShip.HP         = 5000;
rRealShip.WindAgainstSpeed = 50.0;
rRealShip.SpeedRate         = 50.0;
rRealShip.TurnRate   = 200.0;
rRealShip.Price      = 500;

好了,鱼雷艇生成完毕,然后咱再改改起始物品就可以上路了

void initMainCharacterItem()

定义角色持有物品

case "Adventurer":
SetSelfSkill(pchar, 5, 5, 5, 5, 100);
SetShipSkill(pchar, 30, 50, 70, 60, 20, 80, 100, 90, 100);
GiveItem2Character(Pchar, "Blade10");
GiveItem2Character(Pchar, "pistol2");
TakenItems(Pchar, "potion1", 13);
TakenItems(Pchar, "potion2", 1);
TakeNItems(Pchar, "bullet", 15);
TakenItems(Pchar, "jewelry9", 1);
GiveItem2Character(Pchar, "Spyglass2");
pchar.money = 5000000;
break;

SetSelfSkill和SetShipSkill是直接定义角色技能值,这些语句其实放哪里都行,不用太拘泥于原函数是干嘛的,咱又不是程序员。GiveItem2Character和TakenItems都是加物品,区别只是加1个和加n个,最后的money就不用说了吧?好,没有啥追求的话到这里就可以开始爽了,去开始新游戏吧。

=======================咱是又长又粗的分割线============================

不过想用彼得同学的人就会发现上面的一些起始阶段的修改会被干掉,5000000没多久就会直接被城管们打劫掉,快艇也不知道沉到哪个角落里了,所以咱还得对彼得同学特殊照顾下,打开ProgramQuestsreaction_functions.c然后找到

void Blood_StartGame(string qName)

这里就是彼得同学的那段小插曲了,让咱们往下看

RemoveCharacterEquip(pchar, BLADE_ITEM_TYPE);
RemoveCharacterEquip(pchar, GUN_ITEM_TYPE);
RemoveCharacterEquip(pchar, SPYGLASS_ITEM_TYPE);
RemoveCharacterEquip(pchar, PATENT_ITEM_TYPE);
RemoveCharacterEquip(pchar, CIRASS_ITEM_TYPE);
RemoveCharacterEquip(pchar, MAPS_ITEM_TYPE);
DeleteAttribute(Pchar, "items");
DeleteAttribute(Pchar, "ship");
DeleteAttribute(Pchar, "ShipSails.gerald_name");
Pchar.ship.type = SHIP_NOTUSED;

汗,大部分修改都给干掉了,前两句是黑装备的常用语句,要是你在其它地方发现某人/尸体的装备蒸发了,不妨搜索这个人的名字,然后看看周围的代码是否有这两句话,而SHIP_NOTUSED就是指主角没船可开,这是黑主角船的常用方法,那直接在这里改?很不幸,后面城管还要黑你一次,所以改这里用处不大,咱们再往下

void CapBloodLineInit(string qName)

好,城管动手了,彼得被洗后用

int n= FindLocation("Bridgetown_town");
locations.reload.l3.close_for_night = false;

扔到了巴巴多斯,接下来

void CapBloodLine_firstEnterHome

黄毛进屋了,那在这里加物品就没人黑了吧?可惜啊,城管是无处不在的

void TakeBlades(string qName)

虽然他们不会关心一个奴隶的钱包有多鼓,但武器是绝对不能拿的,如果你想带着武器在巴巴多斯乱跑的话,可以用//把函数的所有语句给注释掉,就像这样

//sld = GetCharacter(NPC_GenerateCharacter("SolderTakeBlades", "sold_eng_"+(rand(7)+1), "man", "man", 10, ENGLAND, 0, false));

上面这条语句这样处理过后就不起作用了,其余的也可以如法炮制,有了长剑后面救金毛时就容易多了。接下来解决船的问题,如果你上面仔细看过一遍代码,就会发现ProgramDIALOGSrussianQuestCapBloodLineBishop.c这个文件经常被调用,咱们打开来研究研究,搜索SHIP_ARABELLA,可以找到几条造船代码,而这条

Pchar.Ship.Type = GenerateShip(SHIP_ARABELLA, true);

就是彼得同学的,在代码里pchar通常指代主角,所以搜索结果有n条时可以结合这点来判断是哪条。

=======================咱是又长又粗的分割线============================

现在船和钱都有了,该着手解决水手的问题,但是刚开始RP不好城市刷的水手太少的话会需要不少时间来回买人,人多了消耗上来了又要来回买粮食买酒,这帮家伙还狮子大开口成天要钱,最该死的是超载减士气,不理它又有哗变的危险,因此,让咱们祭起16进制编辑器杀向Programscripts目录吧。先看crew.c,一上来没几行

ChangeCrewExp(chr, "Sailors", -1);
ChangeCrewExp(chr, "Cannoners", -1);
ChangeCrewExp(chr, "Soldiers", -1);

ChangeCrewExp是更改水手的经验值,后面的数字就是变动的值,在crew.c里用得很频繁。结合前面的语句可以知道这里定义的是主角在岸上happy时水手们也发懒降经验,下来

int GetMoneyForOfficer(ref Npchar)

副官问你要钱了,咱们可以把

return MOD_SKILL_ENEMY_RATE*4*sum;

除以某个数字减他们的薪水,例如

return MOD_SKILL_ENEMY_RATE*4*sum / 100;

让他们打白工,同样的在

int GetSalaryForShip(ref chref)

里也可以动同样的手脚

return nPaymentQ;

甚至可以更残忍些,改成

return 0;

让他们打白工,再下来还有句类似的

int GetCharacterRaiseCrewMoraleMoney(ref chr)

提升士气要多少钱,一并return 0算了……

void UpdateCrewInColonies()

城镇开始刷水手了,想研究的可以去看看算法,不想看的改这句

rTown.Ship.crew.quantity = nNeedCrew;

就是城镇刷出的水手数,改完了数量咱们来改质量

switch (sti(rTown.nation))

下面为每个势力的水手设置了初始经验值,由最后的三个公式算出最终实际值,博派的可以DIY一把,狂派的看公式下面的三个ChangeCrewExp(),咱别麻烦了,直接加到100了事

int GetCrewPriceForTavern(string sColony)

招水手时要多少钱,继续return 0吧,抠门也要抠得大气点。

-------------咱是又细又短的分割线----------------

处理完水手,就来解决吃饭问题,打开food.c,头三句

#define FOOD_BY_CREW       10.0
#define FOOD_BY_SLAVES   20.0
#define FOOD_BY_PASSENGERS 10.0

一单位食物可以养多少水手、奴隶和副官,改完这里基本上后面就没什么事了,想超载的看这句

if (crew > GetOptCrewQuantity(chref))
{
    AddCrewMorale(chref, -(1+rand(3)));
}

超载时改变水手的士气,其中rand(3)是随机生成0到3中的一个数,常用的伪随机数生成函数,你可以BT点改成正数,只要处于超载状态,不用给他们酒喝也能涨士气。最后解决些小麻烦,打开utils.c,找到

void GiveItemToTrader(aref ch)

看见下面一堆的rand()了么?这里就是商人刷的物品,尽情地BT一把吧。再来打开ProgramSTOREinitGoods.c,商品的定义

Goods.Name                = "Knippels";   //名称
Goods.Cost                = 26;    //价格
Goods.Weight                = 2;    //重量,注意是一包,也就是货物界面点一下单箭头变动的量
Goods.Units                = 20;//一包有几个单位的货物
Goods.SpeedV0      = 0.9;
Goods.DamageHull = 1.5;    //炮弹特有,对船体伤害
Goods.DamageRig      = 9.0;//同上,对帆
Goods.DamageCrew = 0.3;      //同上,对人
Goods.AfraidWater = 0;
Goods.type                = TRADE_TYPE_AMMUNITION;
Goods.canbecontraband      = 0;

Units是最推荐改的,尤其是船帆船板和朗姆酒,用量超多居然要一个一个点,对于有单手玩游戏癖的人而言巨不爽。

=======================咱是又长又粗的分割线============================

要改船的请搜索老帖,要添加新船(包括模型和图片)的请研究造船大大搬运来的黑珍珠。




游戏说明:

首先我要说的是:

老毛子做的游戏太闹心了!

一开始我随便选了个人物进游戏,在船上短暂的指导之后就把我扔岸上了,没有任务没有第一步该干什么 - 什么也没有.当场我就傻了,感觉这游戏怎么一上来就通关了?直接free roaming了?后来上网查攻略才知道英国Peter还是有点剧情的,然后重新开打.没成想有攻略在手这游戏打的也极其不顺畅,好多东西都不知道怎么弄,于是又边打边在中外网站上搜索各种资料,终于磕磕碰碰的进入半上手状态.

鉴于这游戏没游戏内帮助(我估计它的说明书得和圣经一样厚,不然没人知道这游戏怎么玩),然后设计的又稀奇古怪,我把我搜索和摸索出来的东西荟萃一下,放在这个帖子里,希望对新手有些帮助.

本集锦以问答的方式,把游戏中大部分疑难操作和任务指出.大任务的攻略,例如"蓝鸟"号系列任务我在这里就不提及了,请有需要的朋友自行搜索.

最后希望各位老手一起来添砖加瓦,帮帮我等这些新手,省的我们东搜西找了!

zx8838054 发表于 2009-7-14 19:16

新手知识

超级修改


我玩腻了,最后把有人提到重大疏忽修正下,要是彼得剧情沉船、飞百慕大落下船的有劳您再下一次,或者重装一次游戏把做过的改动复原:

1、主角舰队舰数增至10艘(仅限于劫船时用,且不要停靠在另一侧为敌对港口的狭窄小岛),俘虏副官数增至40个;
2、增加人物负重能力,负重perk改为增加100;
3、副官获得经验速度与主角相等,加了perk后为主角2倍;
4、主角初始能力全10,提升初始技能(可修满个人特技,舰船特技请靠副官解决),起始资金为5000000,起始地点固定为百慕大;
5、起始船只改为用于抢海狼号的7级快艇;
6、修复英文版下的阿兹台克任务对话bug;
7、副官装备界面下可为其更换装备;
8、大幅减少食物和朗姆酒的消耗,减少水手和副官的薪水,减少提升士气所需的金钱数量,增加老鼠磨牙后提供的技能经验值数;
9、在岸上过夜时水手经验不减,航海时水手炮术和肉搏能力也会缓慢增加,超载时不减士气;
10、非剧情特殊副官能力全10(不影响普通副官和敌人);
11、大幅提高商店图腾的出现几率,商店不再出售除了武器、图腾、地图、药品、弹药、水晶骷髅以外的其它个人物品;
12、船厂出售超2、超3、超4等数据随机的特殊船,且数据固定为RP最好(可能性无限接近于零)时能够随出的数据;
13、特殊船最大炮口径全部提高到42(鬼船除外),最大炮口径32以上的船都可以随出42的炮;
14、帆布、船板、朗姆酒改为以10为单位买卖;
15、彼德剧情中不会被没收武器,结束时抢到的船改为用于抢海狼号的7级快艇;
16、默认开启作弊模式,F10键为特殊副官状态,F11键为debug窗口(汉化版可用);
17、大幅提高酒馆可招募的水手数;
18、百慕大船厂改炮上限提高到42磅,且所有改造项目可无限改造(直至数据BT到溢出为止……);
19、新增作弊键,F5键切换无敌状态,insert键直飞百慕大;
20、可利用RESOURCEINItextsrussianPsHero.txt文件新增特殊副官,格式与HeroDescribe.txt一样,已有一个示例亨利摩根大大(汉化版可用)。

改游戏比玩游戏有趣多了。

友情提醒:修改代码文件请使用16进制编辑器,个人推荐UltraEdit。

=======================咱是又长又粗的分割线============================

按顺序来,首先是Programcharacters目录,想必大家都研究透了,就权当照顾下新人吧

characters.h文件定义了一些与角色属性有关的数值和字符串,字符串不能碰,咱可以动动数值

#define PASSENGERS_MAX      64
#define PRISONER_MAX      40
#define COMPANION_MAX      10

懂英语的显然可以看出这是定义乘客数(一般也就是副官)最大值、囚禁舰长数最大值和舰队舰长数(包括主角)最大值,改成想要的值就行了。

#define SKILL_MAX         100
#define SPECIAL_MAX         10

以上分别是技能和属性点的最大值,如果光改实际值不改这个上限是没用的,另外注意技能和属性点不要改太大,否则在游戏的算法引用时会出错,例如把天赋弄到40主角就会像赛亚人一样不管做什么都会升级。

-------------咱是又细又短的分割线----------------

RPGUtilite.c应该是大部分人修改的起点了,涉及人物数值的生成,所以咱们主要是改里面的公式。HP和EN的算法是公用的就别改了,想割草还不如改把神兵出来。嘛,先看这句

int GetCharacterSkillSimple(ref _refCharacter, string skillName)

下面有n行形似

skillN = skillN + SetCharacterSkillByItem(_refCharacter, skillName, SKILL_FORTUNE, "jewelry9",1);

的代码,这是物品的属性加成,SKILL_FORTUNE是技能名,可以去characters.h里找,jewelry9是物品代码,到ProgramITEMS目录下翻吧,1则是加成值(在游戏中实际加成会×10),显然,这个物品是小十字架

int GetShipClassNavySkill(int shipClass)

开船要的航海技能点数,下面的needSkill全=0的话你就可以一开始操MOW了

void AddCharacterExpToSkill(ref _chref, string _skill, float _addValue)

定义经验的获取率,注释officers下面的代码就决定了军官们可以从主角那里揩到多少油水,形如

AddCharacterExpToSkill(GetCharacter(cn), _skill, _addValue * 2);

要多少看着办吧,注意if (CheckCharacterPerk(_chref, "SharedExperience"))下的三句是在有共享经验技能时的揩油率,再下来三句才是正常情况下的

int GetMaxItemsWeight(ref _chref)

这个可谓人尽皆知了,定义人物负重,虽然是公用的不过给敌人加负重也没啥影响

if (IsCharacterPerkOn(_chref, "Grus")) iBonus = 100;

定义负重perk

iBonus = iBonus + CHAR_ITEMS_WEIGHT + GetCharacterSPECIALSimple(_chref, SPECIAL_S)*(GetCharacterSPECIALSimple(_chref, SPECIAL_E) + 75 - MOD_SKILL_ENEMY_RATE);

定义基础负重,最简单的改法就是动那个数字了

void initNewMainCharacter()

主要角色简称主角的定义

case "Adventurer":
SetSPECIAL(ch, 10,10,10,10,10,10,10);
SetCharacterPerk(pchar, "HPPlus");
SetCharacterPerk(pchar, "EnergyPlus");
break;

adventurer就是职业名了,除了可以用SetSPECIAL改属性值外,还可以用SetCharacterPerk加特技,这个方法的麻烦之处在于要选择相应职业,要么就把海盗和商人一并改了,所以咱们可以换用下面这个

ch.skill.freeskill   = 0;
ch.Skill.FreeSPECIAL = 0;

可自由分配的技能点和属性点数,咱进游戏里手动加,再下来

pchar.Ship.Type = GenerateShip(SHIP_WAR_TARTANE, 0);

一开始用什么船,可以去ProgramShips下找,顺便这句是船的生成语句,遍布各个代码文件,跟上面那个SetSPECIAL和SetCharacterPerk一样几乎到处都是,还有如果你足够恶趣味可以把0改成1,你的船就是赃物了……对于狂派而言还有个问题,船的数据是随机生成的,咱想开鱼雷快艇咋办?那就在下面添加

ref rRealShip = GetRealShip(sti(pchar.Ship.Type));
rRealShip.MaxCaliber = 42;
rRealShip.MaxCrew    = 500;
rRealShip.OptCrew    = 350;
rRealShip.Capacity   = 50000;
rRealShip.HP         = 5000;
rRealShip.WindAgainstSpeed = 50.0;
rRealShip.SpeedRate         = 50.0;
rRealShip.TurnRate   = 200.0;
rRealShip.Price      = 500;

好了,鱼雷艇生成完毕,然后咱再改改起始物品就可以上路了

void initMainCharacterItem()

定义角色持有物品

case "Adventurer":
SetSelfSkill(pchar, 5, 5, 5, 5, 100);
SetShipSkill(pchar, 30, 50, 70, 60, 20, 80, 100, 90, 100);
GiveItem2Character(Pchar, "Blade10");
GiveItem2Character(Pchar, "pistol2");
TakenItems(Pchar, "potion1", 13);
TakenItems(Pchar, "potion2", 1);
TakeNItems(Pchar, "bullet", 15);
TakenItems(Pchar, "jewelry9", 1);
GiveItem2Character(Pchar, "Spyglass2");
pchar.money = 5000000;
break;

SetSelfSkill和SetShipSkill是直接定义角色技能值,这些语句其实放哪里都行,不用太拘泥于原函数是干嘛的,咱又不是程序员。GiveItem2Character和TakenItems都是加物品,区别只是加1个和加n个,最后的money就不用说了吧?好,没有啥追求的话到这里就可以开始爽了,去开始新游戏吧。

=======================咱是又长又粗的分割线============================

不过想用彼得同学的人就会发现上面的一些起始阶段的修改会被干掉,5000000没多久就会直接被城管们打劫掉,快艇也不知道沉到哪个角落里了,所以咱还得对彼得同学特殊照顾下,打开ProgramQuestsreaction_functions.c然后找到

void Blood_StartGame(string qName)

这里就是彼得同学的那段小插曲了,让咱们往下看

RemoveCharacterEquip(pchar, BLADE_ITEM_TYPE);
RemoveCharacterEquip(pchar, GUN_ITEM_TYPE);
RemoveCharacterEquip(pchar, SPYGLASS_ITEM_TYPE);
RemoveCharacterEquip(pchar, PATENT_ITEM_TYPE);
RemoveCharacterEquip(pchar, CIRASS_ITEM_TYPE);
RemoveCharacterEquip(pchar, MAPS_ITEM_TYPE);
DeleteAttribute(Pchar, "items");
DeleteAttribute(Pchar, "ship");
DeleteAttribute(Pchar, "ShipSails.gerald_name");
Pchar.ship.type = SHIP_NOTUSED;

汗,大部分修改都给干掉了,前两句是黑装备的常用语句,要是你在其它地方发现某人/尸体的装备蒸发了,不妨搜索这个人的名字,然后看看周围的代码是否有这两句话,而SHIP_NOTUSED就是指主角没船可开,这是黑主角船的常用方法,那直接在这里改?很不幸,后面城管还要黑你一次,所以改这里用处不大,咱们再往下

void CapBloodLineInit(string qName)

好,城管动手了,彼得被洗后用

int n= FindLocation("Bridgetown_town");
locations.reload.l3.close_for_night = false;

扔到了巴巴多斯,接下来

void CapBloodLine_firstEnterHome

黄毛进屋了,那在这里加物品就没人黑了吧?可惜啊,城管是无处不在的

void TakeBlades(string qName)

虽然他们不会关心一个奴隶的钱包有多鼓,但武器是绝对不能拿的,如果你想带着武器在巴巴多斯乱跑的话,可以用//把函数的所有语句给注释掉,就像这样

//sld = GetCharacter(NPC_GenerateCharacter("SolderTakeBlades", "sold_eng_"+(rand(7)+1), "man", "man", 10, ENGLAND, 0, false));

上面这条语句这样处理过后就不起作用了,其余的也可以如法炮制,有了长剑后面救金毛时就容易多了。接下来解决船的问题,如果你上面仔细看过一遍代码,就会发现ProgramDIALOGSrussianQuestCapBloodLineBishop.c这个文件经常被调用,咱们打开来研究研究,搜索SHIP_ARABELLA,可以找到几条造船代码,而这条

Pchar.Ship.Type = GenerateShip(SHIP_ARABELLA, true);

就是彼得同学的,在代码里pchar通常指代主角,所以搜索结果有n条时可以结合这点来判断是哪条。

=======================咱是又长又粗的分割线============================

现在船和钱都有了,该着手解决水手的问题,但是刚开始RP不好城市刷的水手太少的话会需要不少时间来回买人,人多了消耗上来了又要来回买粮食买酒,这帮家伙还狮子大开口成天要钱,最该死的是超载减士气,不理它又有哗变的危险,因此,让咱们祭起16进制编辑器杀向Programscripts目录吧。先看crew.c,一上来没几行

ChangeCrewExp(chr, "Sailors", -1);
ChangeCrewExp(chr, "Cannoners", -1);
ChangeCrewExp(chr, "Soldiers", -1);

ChangeCrewExp是更改水手的经验值,后面的数字就是变动的值,在crew.c里用得很频繁。结合前面的语句可以知道这里定义的是主角在岸上happy时水手们也发懒降经验,下来

int GetMoneyForOfficer(ref Npchar)

副官问你要钱了,咱们可以把

return MOD_SKILL_ENEMY_RATE*4*sum;

除以某个数字减他们的薪水,例如

return MOD_SKILL_ENEMY_RATE*4*sum / 100;

让他们打白工,同样的在

int GetSalaryForShip(ref chref)

里也可以动同样的手脚

return nPaymentQ;

甚至可以更残忍些,改成

return 0;

让他们打白工,再下来还有句类似的

int GetCharacterRaiseCrewMoraleMoney(ref chr)

提升士气要多少钱,一并return 0算了……

void UpdateCrewInColonies()

城镇开始刷水手了,想研究的可以去看看算法,不想看的改这句

rTown.Ship.crew.quantity = nNeedCrew;

就是城镇刷出的水手数,改完了数量咱们来改质量

switch (sti(rTown.nation))

下面为每个势力的水手设置了初始经验值,由最后的三个公式算出最终实际值,博派的可以DIY一把,狂派的看公式下面的三个ChangeCrewExp(),咱别麻烦了,直接加到100了事

int GetCrewPriceForTavern(string sColony)

招水手时要多少钱,继续return 0吧,抠门也要抠得大气点。

-------------咱是又细又短的分割线----------------

处理完水手,就来解决吃饭问题,打开food.c,头三句

#define FOOD_BY_CREW       10.0
#define FOOD_BY_SLAVES   20.0
#define FOOD_BY_PASSENGERS 10.0

一单位食物可以养多少水手、奴隶和副官,改完这里基本上后面就没什么事了,想超载的看这句

if (crew > GetOptCrewQuantity(chref))
{
    AddCrewMorale(chref, -(1+rand(3)));
}

超载时改变水手的士气,其中rand(3)是随机生成0到3中的一个数,常用的伪随机数生成函数,你可以BT点改成正数,只要处于超载状态,不用给他们酒喝也能涨士气。最后解决些小麻烦,打开utils.c,找到

void GiveItemToTrader(aref ch)

看见下面一堆的rand()了么?这里就是商人刷的物品,尽情地BT一把吧。再来打开ProgramSTOREinitGoods.c,商品的定义

Goods.Name                = "Knippels";   //名称
Goods.Cost                = 26;    //价格
Goods.Weight                = 2;    //重量,注意是一包,也就是货物界面点一下单箭头变动的量
Goods.Units                = 20;//一包有几个单位的货物
Goods.SpeedV0      = 0.9;
Goods.DamageHull = 1.5;    //炮弹特有,对船体伤害
Goods.DamageRig      = 9.0;//同上,对帆
Goods.DamageCrew = 0.3;      //同上,对人
Goods.AfraidWater = 0;
Goods.type                = TRADE_TYPE_AMMUNITION;
Goods.canbecontraband      = 0;

Units是最推荐改的,尤其是船帆船板和朗姆酒,用量超多居然要一个一个点,对于有单手玩游戏癖的人而言巨不爽。

=======================咱是又长又粗的分割线============================

要改船的请搜索老帖,要添加新船(包括模型和图片)的请研究造船大大搬运来的黑珍珠。




游戏说明:

首先我要说的是:

老毛子做的游戏太闹心了!

一开始我随便选了个人物进游戏,在船上短暂的指导之后就把我扔岸上了,没有任务没有第一步该干什么 - 什么也没有.当场我就傻了,感觉这游戏怎么一上来就通关了?直接free roaming了?后来上网查攻略才知道英国Peter还是有点剧情的,然后重新开打.没成想有攻略在手这游戏打的也极其不顺畅,好多东西都不知道怎么弄,于是又边打边在中外网站上搜索各种资料,终于磕磕碰碰的进入半上手状态.

鉴于这游戏没游戏内帮助(我估计它的说明书得和圣经一样厚,不然没人知道这游戏怎么玩),然后设计的又稀奇古怪,我把我搜索和摸索出来的东西荟萃一下,放在这个帖子里,希望对新手有些帮助.

本集锦以问答的方式,把游戏中大部分疑难操作和任务指出.大任务的攻略,例如"蓝鸟"号系列任务我在这里就不提及了,请有需要的朋友自行搜索.

最后希望各位老手一起来添砖加瓦,帮帮我等这些新手,省的我们东搜西找了!

zx8838054 发表于 2009-7-14 19:17

谜语答案~~~~~~~
全部共74题及答案如下:

1、穿过船艏上帆,并与支索间互相连接的帆索叫做什么?
软帆帆眼绳

2、在海上航行时,保持食物新鲜非常困难。哪种面食只要储存环境干燥,就能够有效保存经年。
硬面饼

3、安装在木杆上的筒刷,可以用于清扫火炮炮膛中的残余火药,它的名字是什么?
通条
注:所有中文问题及相关答案均来自左贤王汉化文本
4、在船体外部吃水线上方,用于保护外部船体的加固木条叫做什么?
防擦板

5、外部包有皮革的绳索,用于将船艏斜桁或横桁与桅柱或上桅系住,它叫什么名字?
桁索

6、把两根绳索和另外一根细索绞在一起,这种动作叫做什么?
缠扎

7、帆船艏部的外侧由防水壁组成的凸起物叫什么?
撞角

8、船体中支撑甲板的横向木料,与舰船框架两边相连并为船体提供侧向强度,这种木料被称为什么?
横梁

9、古代划桨战舰,舰身有两排桨,这种战舰叫什么?
双排桨战船

10、船舶甲板上用于固定绳索的木质短柱叫什么?
缆柱

11、船艏斜桁上能够连接挂有横帆的横桁的小型桅杆叫做什么?
撑杆帆桁

12、船艏斜桁下的船帆叫做什么?
遮帆
注:所有中文问题及相关答案均来自左贤王汉化文本
13、舰船上一端固定的水平横杆叫做什么?提示:通常用于在水面上悬挂船帆,保持缆索分离,以及悬挂小艇。
滑车挂杆

14、桅杆中,顶桅向上延伸的部分叫什么?
顶上桅

15、能够将横桁绕水平舵转动的缆索叫做什么?
转桁索

16、通过水平轴向转动吊起船锚和货物的机械叫做什么?
起锚绞盘

17、舰船火炮发射时会有后坐力,用于削弱后坐力的缆索叫做什么?
炮索

18、说出一种与主帆直接系连的辅助帆名。
罩帆

19、帆船顺风航行时,将横帆向船艏拉紧的缆索叫做什么?
船艏缆

20、位于顶桅横衍和顶上桅横衍之间,从甲板向上数第三块桅帆叫什么?
顶上桅帆

21、在标准缆具中,将桅杆与船舷连接的粗缆叫做什么?
支索

22、将船艏斜桁与桅柱系紧的缆索叫做什么?
艏桁索
注:所有中文问题及相关答案均来自左贤王汉化文本
23、舰船在浅水区使用的辅助锚叫做什么?
小锚

24、舰船火炮尾部的圆耳状物体叫做什么?
尾钮

25、拴紧并穿过支索,可以用于攀爬上桅和顶桅的细缆叫什么?
桅索梯

26、位于缆索顶端,可以用此吊起小艇、货物和其他东西的铁制器具叫做什么?
铁钩

27、艉楼提灯所在的船尾部平坦的部分叫什么?
船艉栏杆

28、将桅帆向船艏拉扯的动索叫做什么?
定位索

29、与三角帆前段相连的倾斜横桁叫做什么?
斜桁
注:所有中文问题及相关答案均来自左贤王汉化文本
30、相当于十分之一海里的长度计量单位叫做什么?


31、保存火药的小型布袋叫做什么?
火药袋

32、船艉上甲板中抬高的部分叫做什么?
后甲板

33、插入索结中防止索结收紧的尖头木桩叫做什么?
木扣

34、与从主桅到船艏斜桁的帆索相连的三角帆叫做什么?
艏三角帆

35、舰船外侧容纳锚链进出的开口叫做什么?
锚孔

36、后桅的上桅横帆叫做什么?
后顶桅帆

37、横帆外侧吊架形状的辅助桅帆叫做什么?
辅助帆
注:所有中文问题及相关答案均来自左贤王汉化文本
38、船帆边缘的柔软索具叫做什么?
帆缘索

39、依靠自身重量测量水深的物体叫做什么?
铅锤

40、使用铅锤测试水深以便绘制沿海水图的人称为什么?
舵手

41、船帆上的圆形套孔叫做什么?
帆索环

42、桅杆底部向上数第二块横帆叫做什么?
顶桅横帆

43、木制钉子叫做什么?
木钉

44、放置罗盘、船灯和沙漏等设备的木柜叫做什么?
罗经箱

45、船员在横桁上工作时脚踩的绳索叫做什么?
握索
注:所有中文问题及相关答案均来自左贤王汉化文本
46、有甲板的船上,舷墙上端的木料叫做什么?
舷边

47、横向系于船帆用于减小船帆面积的带子叫做什么?
缩帆带

48、锚链艉部用于系入缆绳的环叫做什么?
锚眼

49、与纵向桅杆相连的横向木料叫做什么?
横桁

50、与桅根相连的木台叫做什么?
踏脚

51、由下层桅柱向上延伸的部分叫什么?
顶桅

52、与支索连接,有时候为梯形的三角纵帆叫做什么?
支索帆
注:所有中文问题及相关答案均来自左贤王汉化文本
53、涂在舰船外侧防止船蛆的涂料是什么?
柏油

54、上部与斜桁相连,下部沿吊杆延伸的梯形纵帆叫做什么?
艏斜帆衍

55、由三排浆划动并配置作战撞角的古希腊战船是什么?
三排浆战船

56、由三排浆划动的古罗马战船是什么
三列桨战船

57、由船艏斜桁向外延伸的木柱叫做什么?
第二斜桅

58、用于悬挂船帆或信号旗等的绳索叫做什么?
吊索

59、上层甲板两侧的竖立侧边叫作什么?
舷墙
注:所有中文问题及相关答案均来自左贤王汉化文本
60、用于火炮垂直瞄准的柱形圆管叫做什么?
耳轴

61、船艉的上层甲板,值班驾驶员在此工作,罗经也保存在这个地方,此处叫作什么?
后甲板

62、位于船舷两侧,可以由此从前甲板走到后甲板的宽板叫做什么?
舯部

63、将船帆下缘与船舵相连,并保持船帆位置的绳索叫作什么?
缭绳

64、支撑船体的交叉木料叫做什么?
肋骨

65、用绳索在物体周围缠绕的动作叫做什么?

注:所有中文问题及相关答案均来自左贤王汉化文本
66、用于清空火炮炮膛填充物的柱形圆桶叫做什么?
渣罐

67、有两个孔,用于将不同部分桅杆紧密连接的木制连箍叫做什么
桅箍

68、有三个眼但没有滑轮,通常用于拉紧帆索或支索的圆形木块叫做什么?
三眼木饼

69、本世纪中加勒比地区出口数量最大的物资是什么?
蔗糖

70、本世纪早期加勒比地区进口数量最大的是什么?
奴隶

71、最早完成环球航行的荷兰航海家是谁?
奥利弗·范努特

72、荷兰西印度公司在1626年建立的首个贸易站点叫做什么?
新阿姆斯特丹

73、英国诗人、海盗和远洋船长,受到伊丽莎白一世青睐,建立弗吉尼亚殖民地,后于1618年被处决。此人是谁?
沃尔特·雷利爵士
注:所有中文问题及相关答案均来自左贤王汉化文本
74、最先使用骷髅旗的海盗是谁?
伊曼纽尔·威恩

zx8838054 发表于 2009-7-14 19:19

自己的沙发。。。。。。。。谁也不给。。。。。。。

春虫虫 发表于 2009-7-14 19:26

崇拜一下LZ
开始给LZ的标题吸引进来,想不到还有这么多的内容,厉害!

603717436 发表于 2009-7-25 12:14

    很复杂啊。。。

x4728x 发表于 2009-7-25 12:52

改了才知道~~~无聊透顶了~~~

love2411 发表于 2011-1-6 19:28

怎么改大炮装弹时间?????

ntliurui 发表于 2011-8-13 02:29

LZ辛苦啊,,可惜给埋没了这么久,特意顶上来给大家分享- 。 -
恩,这不是挖坟····

ntliurui 发表于 2011-8-13 02:30

看看内容,看看标题,,不得不感慨,没一个好标题确实吸引不了人啊····

建-康 发表于 2016-4-26 21:14

谢谢楼主!~
页: [1]
查看完整版本: 大炮大炮。。