现在船和钱都有了,该着手解决水手的问题,但是刚开始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[GOOD_KNIPPELS].Name                = "Knippels";   //名称
Goods[GOOD_KNIPPELS].Cost                = 26;    //价格
Goods[GOOD_KNIPPELS].Weight                = 2;    //重量,注意是一包,也就是货物界面点一下单箭头变动的量
Goods[GOOD_KNIPPELS].Units                = 20;  //一包有几个单位的货物
Goods[GOOD_KNIPPELS].SpeedV0        = 0.9;
Goods[GOOD_KNIPPELS].DamageHull = 1.5;    //炮弹特有,对船体伤害
Goods[GOOD_KNIPPELS].DamageRig        = 9.0;  //同上,对帆
Goods[GOOD_KNIPPELS].DamageCrew = 0.3;        //同上,对人
Goods[GOOD_KNIPPELS].AfraidWater = 0;
Goods[GOOD_KNIPPELS].type                = TRADE_TYPE_AMMUNITION;
Goods[GOOD_KNIPPELS].canbecontraband        = 0;

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