注册 | 登录

游侠NETSHOW论坛





查看: 5788|回复: 7
打印 上一主题 下一主题

[原创] 被打残的请入,彻底解决健康度问题 [复制链接]

帖子
646
精华
0
积分
334
金钱
1222
荣誉
1
人气
0
评议
0
跳转到指定楼层
楼主
发表于 2009-5-31 23:01:49 |显示全部楼层 |倒序浏览
最近看到很多人因为角色受伤过多maxhealth下降导致无法恢复健康度,据说是可以找老鸨接任务恢复的,但是以前俄文版我反复尝试把跟老鸨每句话都翻译了也没成功过,英文版我没去尝试,因为没遇到maxhealth下降的情况。如果遇到了这个问题,又不介意修改源码解决的话可以用如下方法:
Microsoft AppLocale俄文方式启动记事本(或者UltraEdit,似乎主要是换行的问题)打开\Age of Pirates 2\Program\characters\RPGUtilite.c
找到这个邪恶D函数
void SetNewDayHealthMax()
{
    ref mainChr = GetMainCharacter();

    float maxhp = stf(mainChr.chr_ai.hp_max);
    float damg  = stf(mainChr.Health.weekDamg);

    mainChr.Health.weekDamg = 0.0;

    if (damg > (maxhp * 3.5))
    {
        AddCharacterMaxHealth(mainChr, -1);
    }
}

改为


void SetNewDayHealthMax()
{
    ref mainChr = GetMainCharacter();

    float maxhp = stf(mainChr.chr_ai.hp_max);
    float damg  = stf(mainChr.Health.weekDamg);

    mainChr.Health.weekDamg = 0.0;

    AddCharacterMaxHealth(mainChr, 60);

}


从此每当新的一天开始主角的最大健康度将恢复到最大值60,当然,你仍然需要通过各种途径恢复主角的健康度实时值。
这种修改不需要重新开档,但需要重新启动游戏

原始健康度恢复速度:
如果你有medic能力,那么在大地图上恢复速度为2健康度/天,非大地图为1健康度/天;如无medic那么以上速度分别为1健康度/天,0.5健康度/天
如果你当天受到最大hp的2/3以上的伤害,那么第二天你的健康度不升反降,减少的数值也根据是否有medic和受伤害大小而定
如果去妓院,恢复速度为5健康度/次

根据源代码,不修改情况下恢复健康度最大值的任务应该是教堂NightGuard任务,条件似乎是必须遭遇战斗

[ 本帖最后由 wizardslay 于 2009-6-1 00:56 编辑 ]
已有 1 人评分金钱 收起 理由
sun1129 + 10 + 1 文章不错,继续努力!

总评分: 金钱 + 10  + 1   查看全部评分

使用道具 举报

帖子
646
精华
0
积分
334
金钱
1222
荣誉
1
人气
0
评议
0
沙发
发表于 2009-5-31 23:42:32 |显示全部楼层
不需要,重新开启游戏即可
如果不熟悉沉船的数据结构用GM8修改健康度确实比较麻烦,英文版提供了源代码,这样GM8基本可以扔掉咯

使用道具 举报

帖子
646
精华
0
积分
334
金钱
1222
荣誉
1
人气
0
评议
0
板凳
发表于 2009-6-1 00:50:19 |显示全部楼层
什么叫怎么涨回来的....
根据源代码,如果你有medic能力,那么如果在大地图上恢复速度为2健康度/天,非大地图为1健康度/天;如无medic那么以上速度分别为1健康度/天,0.5健康度/天
如果你当天受到最大hp的2/3以上的伤害,那么第二天你的健康度不升反降,减少的数值也根据是否有medic和受伤害大小而定
如果去妓院,恢复速度为5健康度/次
我又查了下代码,健康度最大值跟妓院和老鸨应该没关系,应该是教堂某任务完成后加的。很可能是“夜间守卫任务”,有相应存档的同学可以测试一下。

使用道具 举报

帖子
646
精华
0
积分
334
金钱
1222
荣誉
1
人气
0
评议
0
地板
发表于 2009-6-1 07:37:53 |显示全部楼层
你是在最大健康度下降以后做的吗?

使用道具 举报

帖子
646
精华
0
积分
334
金钱
1222
荣誉
1
人气
0
评议
0
5#
发表于 2009-6-1 08:34:42 |显示全部楼层
大家可以自行查一下对话文件
恢复最大健康度有两种情况,一种就是NightGuard事件,结果加2点健康上限,对话是
"Our Father, ",
", mentioned that you stood the night watch in our church.",
"In addition, it's in my power to diminish your sins before ",

另一事件是healthAdd_4事件,如果主角金钱大于10W则扣掉10W加4点健康上限,相关对话为:
"Padre.",
"Father.",
"Hundred thousand in gold would be a sufficient payment for the miracle of healing.",
"How much?! You are insane. I'll pay such a sum once I rob a few churches.",
"That's too much for me. Looks like it's true -- money can't buy health.",
"I agree!",

[ 本帖最后由 wizardslay 于 2009-6-1 09:51 编辑 ]

使用道具 举报

帖子
646
精华
0
积分
334
金钱
1222
荣誉
1
人气
0
评议
0
6#
发表于 2009-6-1 09:50:54 |显示全部楼层
很可能是下降了你没发现,因为健康度下降不一定导致属性降低,健康等级的算法是
健康等级=取整((健康度+9)/10);
所以健康度低于51的时候,健康等级才会为5,也就是所有属性降一,只要健康度大于等于51,健康等级为6,那么属性不受影响
这些事件的引发顺序是,"First time"-->"node_3"-->"work"-->"healthAdd_1"-->"healthAdd_2"-->"healthAdd_3"-->"healthAdd_4"-->"healthAdd_5",扣钱和"miracle healing"都是在里完成的。
BTW:我没学过C语言,对C语言语法不是很肯定,有可能部分理解错误
一个条件是健康等级低于6金钱大于10W,另一个条件不清楚变量的含义但是似乎不太重要,有空结合游戏再研究研究....

[ 本帖最后由 wizardslay 于 2009-6-1 09:52 编辑 ]

使用道具 举报

帖子
646
精华
0
积分
334
金钱
1222
荣誉
1
人气
0
评议
0
7#
发表于 2009-6-1 10:25:36 |显示全部楼层
对的,每天受伤别超过3.5倍的最大hp就一点事都没有了
健康等级掉了也照样回复...

使用道具 举报

帖子
646
精华
0
积分
334
金钱
1222
荣誉
1
人气
0
评议
0
8#
发表于 2009-6-1 16:36:21 |显示全部楼层
没错,0点划分.............

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2025-8-12 08:30 , Processed in 0.444935 second(s), 15 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到