我玩腻了,最后把有人提到重大疏忽修正下,要是彼得剧情沉船、飞百慕大落下船的有劳您再下一次,或者重装一次游戏把做过的改动复原:
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就不用说了吧?好,没有啥追求的话到这里就可以开始爽了,去开始新游戏吧。