骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 6314|回复: 10

[版主推荐] 领主实际属性与设定属性不一致的原因

[复制链接]

949

主题

1万

回帖

1万

积分

侯爵[超级版主]

枢机主教

Rank: 8Rank: 8Rank: 8Rank: 8

UID
45575
第纳尔
41708
精华
20
互助
1060
荣誉
584
贡献
1796
魅力
1700
注册时间
2007-10-24

骑砍中文站APP会员勋章元老骑士勋章原版正版勋章战团正版勋章火与剑正版勋章拿破仑正版勋章维京征服正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之大无畏勋章[杰出会员高级活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之侠义勋章[杰出会员高级互助勋章]骑士美德之谦恭勋章[杰出会员财富勋章]骑士美德之公正勋章[杰出会员高级财富勋章]骑士美德之忠诚勋章[杰出会员精华勋章]骑士美德之正义勋章[杰出会员荣誉勋章]骑士美德之荣耀勋章[杰出会员高级荣誉勋章]骑士美德之圣洁勋章[杰出会员高级精华勋章]杰出汉化小组成员勋章骑士美德之慷慨勋章骑士荣誉之原版汉化勋章骑士荣誉之战团汉化勋章骑士美德之高贵勋章骑士美德之奉献勋章汉匈决战正版勋章

鲜花(2609) 鸡蛋(8)
发表于 2016-10-15 18:45:04 | 显示全部楼层 |阅读模式
本帖最后由 rubik 于 2016-10-16 01:42 编辑

答案是:年龄。  游戏开始的时候,游戏的家族系统就会随机分配领主,夫人之间的关系,比如父子,配偶,子女,亲戚之类的关系,然后自动设定领主(包括夫人)的年龄。 问题就出在领主的年龄上。

先打开module_scripts.py,找到“init_troop_age”,这个就是设定年龄的。

        ("init_troop_age",
        [
        (store_script_param, ":troop_no", 1),
        (store_script_param, ":age", 2), #minimum 20
        
        (try_begin),
                (gt, ":age", 20),
                (troop_set_slot, ":troop_no", slot_troop_age, 20),
        (else_try),
                (troop_set_slot, ":troop_no", slot_troop_age, ":age"),
        (try_end),
        
        (store_sub, ":years_to_age", ":age", 20),
    (troop_set_age, ":troop_no", 0),
        
        (try_begin),
                (gt, ":years_to_age", 0),
                (try_for_range, ":unused", 0, ":years_to_age"),
                        (call_script, "script_age_troop_one_year", ":troop_no"),
                (try_end),
        (try_end),        
               
        ]),

看下来,也没有发现什么问题。那就继续看它引用的script,即age_troop_one_year。
        #This is probably unnecessarily complicated, but can support a multi-generational mod
        ("age_troop_one_year",
    [
        (store_script_param, ":troop_no", 1),

        (troop_get_type, ":is_female", ":troop_no"),
        
        (troop_get_slot, ":age", ":troop_no", slot_troop_age),
        (troop_get_slot, ":appearance", ":troop_no", slot_troop_age_appearance),
        
        (val_add, ":age", 1),
        (store_random_in_range, ":addition", 1, 5),

        (try_begin),
                (eq, ":is_female", 1),
#                (val_add, ":addition", 2), #the women's age slider seems to produce less change than the male one - commented out: makes women look too old.
        (try_end),
        
        (val_add, ":appearance", ":addition"),
        (try_begin),
                (gt, ":age", 45),
                (store_attribute_level, ":strength", ":troop_no", ca_strength),
                (store_attribute_level, ":agility", ":troop_no", ca_agility),
                (store_random_in_range, ":random", 0, 50), #2% loss brings it down to about 36% by age 90, but of course can be counteracted by new level gain
                (try_begin),
                        (lt, ":random", ":strength"),
                        (troop_raise_attribute, ":troop_no", ca_strength, -1),
                (try_end),
                (try_begin),
                        (lt, ":random", ":agility"),
                        (troop_raise_attribute, ":troop_no", ca_agility, -1),
                (try_end),
        (try_end),

        (val_clamp, ":appearance", 1, 100),
        
        (troop_set_slot, ":troop_no", slot_troop_age, ":age"),
        (troop_set_slot, ":troop_no", slot_troop_age_appearance, ":appearance"),
        (troop_set_age, ":troop_no", ":appearance"),
        ]),

问题的症结已经很明显展现出来了,领主的岁数大于45的时候,力量和敏捷可能会随机-1,具体的看代码里的条件。关键问题在于,age_troop_one_year不止执行一次,而是(领主年龄-20)次。 领主年龄小于等于45岁的时候,没什么问题。 大于45岁的时候,每执行一次age_troop_one_year,力量和敏捷就有可能会-1。比如某个领主50岁,则有5次机会使得力量和敏捷-1。

力量和敏捷是分开判定的,可能每次两者都-1,可能只有一者-1,也有可能两者都不-1。

总体来说,只有力量和敏捷受了影响,智力和魅力不受影响。 敏捷降低,影响不大,而力量降低则影响很大,很多盔甲和武器都是要求力量的,力量小了领主就装备不上。 于是就会看到有的领主上了战场,盔甲穿不上,就穿便装。武器拿不了,就空手上阵的。

评分

参与人数 1第纳尔 +100 互助 +1 贡献 +5 收起 理由
蛋清 + 100 + 1 + 5 感谢发表经验文章!

查看全部评分

鲜花鸡蛋

古月一江  在2016-11-1 09:09  送朵鲜花  并说:原来领主五十年退休啊。
蛋清  在2016-10-15 23:01  送朵鲜花  并说:交学费
达尔克内斯  在2016-10-15 19:59  送朵鲜花  并说:引以为鉴。
rubik

949

主题

1万

回帖

1万

积分

侯爵[超级版主]

枢机主教

Rank: 8Rank: 8Rank: 8Rank: 8

UID
45575
第纳尔
41708
精华
20
互助
1060
荣誉
584
贡献
1796
魅力
1700
注册时间
2007-10-24

骑砍中文站APP会员勋章元老骑士勋章原版正版勋章战团正版勋章火与剑正版勋章拿破仑正版勋章维京征服正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之大无畏勋章[杰出会员高级活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之侠义勋章[杰出会员高级互助勋章]骑士美德之谦恭勋章[杰出会员财富勋章]骑士美德之公正勋章[杰出会员高级财富勋章]骑士美德之忠诚勋章[杰出会员精华勋章]骑士美德之正义勋章[杰出会员荣誉勋章]骑士美德之荣耀勋章[杰出会员高级荣誉勋章]骑士美德之圣洁勋章[杰出会员高级精华勋章]杰出汉化小组成员勋章骑士美德之慷慨勋章骑士荣誉之原版汉化勋章骑士荣誉之战团汉化勋章骑士美德之高贵勋章骑士美德之奉献勋章汉匈决战正版勋章

鲜花(2609) 鸡蛋(8)
 楼主| 发表于 2016-10-15 18:55:45 | 显示全部楼层
本帖最后由 rubik 于 2016-10-15 22:49 编辑

具体的例子看这个帖子:
http://bbs.mountblade.com.cn/thread-470724-1-1.html
比较极端,某个领主的力量被扣得只剩6点了。 第一是因为年龄大,第二是运气太背,每次随机的时候都扣了力量,扣了10次力量。

那个帖子里板凳和报纸上的代码都可以作废了。因为我当时并没有搞清楚是什么原因,以为是属性总和不变,几个属性随机分配。现在看来不是,而是智力和魅力没变,力量和敏捷随机减少。不要急着注释相关的代码,毕竟人超过一定岁数,力量和敏捷下降也是很正常的事情。我们要做的是避免降得太离谱了。 至于怎么降低随机减力量和敏捷的影响,可以在age_troop_one_year里加一些限制,比如力量降低到多少,就不能再降了。敏捷方面可以不管。

我的做法是,力量和敏捷,一次只判定一种,避免力量和敏捷同时降低。而且这种判定有偏向,1/3的机会判定为力量,2/3判定为敏捷。判定为某一种之后,再结合原有的条件,决定是否-1。 一般领主都是15~20点力量,随机数的范围是0-50,降属性的几率为30%~40%。
rubik

18

主题

1129

回帖

344

积分

见习骑士

Rank: 3

UID
70724
第纳尔
6110
精华
0
互助
0
荣誉
0
贡献
0
魅力
3
注册时间
2008-3-14
鲜花(3) 鸡蛋(0)
发表于 2016-10-15 22:42:28 | 显示全部楼层
领主的力量属性应该不算太低,现在游戏中力量好像就15的要求以领主的属性应该不会低于这个数吧

949

主题

1万

回帖

1万

积分

侯爵[超级版主]

枢机主教

Rank: 8Rank: 8Rank: 8Rank: 8

UID
45575
第纳尔
41708
精华
20
互助
1060
荣誉
584
贡献
1796
魅力
1700
注册时间
2007-10-24

骑砍中文站APP会员勋章元老骑士勋章原版正版勋章战团正版勋章火与剑正版勋章拿破仑正版勋章维京征服正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之大无畏勋章[杰出会员高级活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之侠义勋章[杰出会员高级互助勋章]骑士美德之谦恭勋章[杰出会员财富勋章]骑士美德之公正勋章[杰出会员高级财富勋章]骑士美德之忠诚勋章[杰出会员精华勋章]骑士美德之正义勋章[杰出会员荣誉勋章]骑士美德之荣耀勋章[杰出会员高级荣誉勋章]骑士美德之圣洁勋章[杰出会员高级精华勋章]杰出汉化小组成员勋章骑士美德之慷慨勋章骑士荣誉之原版汉化勋章骑士荣誉之战团汉化勋章骑士美德之高贵勋章骑士美德之奉献勋章汉匈决战正版勋章

鲜花(2609) 鸡蛋(8)
 楼主| 发表于 2016-10-15 22:46:06 | 显示全部楼层
本帖最后由 rubik 于 2016-10-15 22:47 编辑
sunary100 发表于 2016-10-15 22:42
领主的力量属性应该不算太低,现在游戏中力量好像就15的要求以领主的属性应该不会低于这个数吧

你没看完全文吧。 开局的时候,游戏会根据领主的年龄,随机降低力量和敏捷。沙发那个帖子里就有例子,我亲自遇到,有个年纪大的领主从16力量,被扣得只剩6力量。
rubik

18

主题

1129

回帖

344

积分

见习骑士

Rank: 3

UID
70724
第纳尔
6110
精华
0
互助
0
荣誉
0
贡献
0
魅力
3
注册时间
2008-3-14
鲜花(3) 鸡蛋(0)
发表于 2016-10-15 22:55:39 | 显示全部楼层
rubik 发表于 2016-10-15 22:46
你没看完全文吧。 开局的时候,游戏会根据领主的年龄,随机降低力量和敏捷。沙发那个帖子里就有例子,我亲 ...

我看全了,只是没有想到会扣那么多

7

主题

4177

回帖

1298

积分

骑士长

Rank: 5Rank: 5Rank: 5

UID
1622393
第纳尔
545
精华
0
互助
4
荣誉
2
贡献
0
魅力
45
注册时间
2013-10-23

骑士美德之英勇勋章[杰出会员活跃勋章]骑砍中文站微博会员勋章骑砍中文站微信会员勋章汉匈决战正版勋章

鲜花(165) 鸡蛋(8)
发表于 2016-10-16 13:24:51 | 显示全部楼层
这扣的太可怕了

65

主题

668

回帖

225

积分

见习骑士

Rank: 3

UID
1410429
第纳尔
4041
精华
0
互助
1
荣誉
0
贡献
0
魅力
13
注册时间
2013-6-13
鲜花(30) 鸡蛋(0)
发表于 2016-11-1 09:33:33 | 显示全部楼层
我的做法是,力量和敏捷,一次只判定一种,避免力量和敏捷同时降低。而且这种判定有偏向,1/3的机会判定为力量,2/3判定为敏捷。判定为某一种之后,再结合原有的条件,决定是否-1。 一般领主都是15~20点力量,随机数的范围是0-50,降属性的几率为30%~40%。

我感觉
(store_random_in_range, ":random", 0, 50), 改成
(store_random_in_range, ":random", 10, 50), 即可。

168

主题

1815

回帖

1165

积分

贵族[MOD作者]

中级术士

Rank: 7Rank: 7Rank: 7

UID
69266
第纳尔
3592
精华
1
互助
46
荣誉
24
贡献
0
魅力
144
注册时间
2008-2-28

骑砍中文站APP会员勋章有生之年勋章元老骑士勋章战团正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]

QQ
鲜花(401) 鸡蛋(0)
发表于 2016-11-12 19:50:00 | 显示全部楼层
又学会一招!!!

30

主题

4338

回帖

1350

积分

骑士长

Rank: 5Rank: 5Rank: 5

UID
2513873
第纳尔
10582
精华
0
互助
8
荣誉
0
贡献
0
魅力
140
注册时间
2015-5-11

汉匈决战正版勋章元老骑士勋章

鲜花(432) 鸡蛋(3)
发表于 2016-11-12 22:14:42 | 显示全部楼层
前段时间学习mod制作基础时候看的那个教程里面有写到设定的兵种会随机加其赋予等级-1的技能点,但是我在游戏里新建了一个npc,却和py代码里设定的一样的属性和技能点,一直好奇为什么原作者会写这个注意,今天看到这样的研究感到很有意思。
收藏了,以后慢慢看,很久远前的一份讲spot的还没看完呢。
支持楼主,加油。

99

主题

2581

回帖

1084

积分

骑士

Rank: 4Rank: 4

UID
445330
第纳尔
8125
精华
0
互助
30
荣誉
13
贡献
0
魅力
35
注册时间
2011-6-6

汉匈决战正版勋章

鲜花(125) 鸡蛋(5)
发表于 2016-11-30 23:23:21 | 显示全部楼层
貌似有子女的领主年龄普遍偏大啊,最大的开局就有六十多岁,无子女的领主也有可能开局就三十多岁了
《异域忠魂:满江红之卡拉迪亚》V1.441 http://bbs.mountblade.com.cn/thread-2047583-1-2.html

5

主题

787

回帖

243

积分

见习骑士

自由骑士
战团ID:PlanesWalker

Rank: 3

UID
1038
第纳尔
1393
精华
0
互助
1
荣誉
0
贡献
0
魅力
2
注册时间
2007-1-11

元老骑士勋章原版正版勋章战团正版勋章火与剑正版勋章拿破仑正版勋章维京征服正版勋章汉匈决战正版勋章霸主正版勋章

QQ
鲜花(75) 鸡蛋(1)
发表于 2016-11-30 23:38:08 | 显示全部楼层
原来骑砍的年龄还是有用处的啊
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-12-28 03:56 , Processed in 0.143647 second(s), 33 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表