骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[原创] 【风云三国修改】生子/生女/孩子相关综合解析

[复制链接]

27

主题

65

回帖

103

积分

见习骑士

Rank: 3

UID
3174756
第纳尔
327
精华
0
互助
15
荣誉
0
贡献
0
魅力
190
注册时间
2020-4-23
鲜花(3) 鸡蛋(0)
发表于 2024-2-20 22:02:35 | 显示全部楼层 |阅读模式
本帖最后由 nmsnb111 于 2024-2-21 13:39 编辑

引路总结贴,更多修改:【风云三国修改】TXT修改总结



风云三国生子的功能在多个文件中都有涉及啊,本次修改讲解了生子条件限制、生子数量限制、与配偶关系提升、生子时间花费、配偶怀孕几率、不限第一位小妾均可生女、孩子/子女快速成长/成年等等——由于儿子和女儿在代码中仅存在一个实体,所以是不能够同时存在多个儿子/女儿的,新的儿子/女儿成年时,所有与这个兵种相关的属性,包括部队、封地、角色关系等等均会合并到后出现的儿子/女儿身上


我们首先来看\Mount&Blade Warband\Modules\【MOD副本】风云三国司马奉先版(2024.2.10)\conversation.txt这个文件,共有两段对话:

dlga_spouse_talk:spouse_born_children 69631 2326  7 540 3 144115188075855987 30 360287970189639680 2211 1 1224979098644774912 1073741855 2 1224979098644774912 720575940379279418 31 2 1224979098644774912 720575940379280064 2273 0 1 3 936748722493063670 144115188075855987 360287970189639680 30 2 72057594037927936 0 Anyway,_that_is_the_content_of_our_larder.  2725  0 NO_VOICEOVER

其中,
灰色操作块用于判断对话者是否是(玩家)配偶
橙色操作块用于判断当前场景是否是家(自建城池/铜雀台)
紫色操作块用于判断当前时间是否是夜晚
绿色操作块用于判断玩家与当前对话者(配偶)的关系是否大于或等于0(不为负)
删除其中的条件判断操作块,同时注意修改条件判断操作块个数即可删除对应生子条件

dlga_spouse_born_children:close_window 4095 2725  0 Anyway,_that_is_the_content_of_our_larder.  6  27 1 3 936748722493063439 144115188075855987 10 1030 3 8 5 0 4 0 540 3 360287970189639680 30 144115188075855987 2147484208 3 360287970189640210 18 -5 4 0 2136 3 1224979098644774912 0 5 31 2 1224979098644774912 3 500 3 360287970189640210 166 432345564227567617 500 3 360287970189640210 164 360287970189639680 500 3 360287970189640210 18 -5 1106 1 1585267068834416483 3 0 5 0 540 3 360287970189639680 167 144115188075855987 2147484208 3 360287970189640211 18 -5 4 0 2136 3 1224979098644774912 0 5 31 2 1224979098644774912 3 500 3 360287970189640211 166 432345564227567617 500 3 360287970189640211 164 360287970189639680 500 3 360287970189640211 18 -5 1106 1 1585267068834416484 3 0 3 0 2133 2 144115188075856081 1 1907 0 NO_VOICEOVER

这段操作列表中,
绿色操作块意为提高玩家与当前对话者(配偶)的关系10点
青色操作块意为休息时间为8小时,流逝速度为5倍
此两个操作块被生子和生女的功能共用

第一个表示尝试开始的语句4 0 第一个(实际上中间嵌套了一层尝试)表示尝试结束的语句3 0 与妻子生儿子的代码部分
灰色操作块1再次判断对话者是否是妻子
蓝色操作块1用于判定儿子年龄是否小于-5,实际上配合后续代码是做有无儿子的判定条件,我现在看来把-5改为一个很大的正值即可无限生子,但是有可能在此段代码或者其他文件中还有相关代码再控制,只改这一段可能会出现诸多BUG,等有时间再整合起来看
粉色操作块意为将变量0赋值为0到5(不含上限)中的随机值;红色操作块用于判断变量0是否为3故每次生子仅有1/5的几率成功——0改为35改为4即可实现百发百中、一发入魂
中间一段操作块意为将儿子放在玩家部?队中,并且设置为平民;实际上就是实现儿子处于婴儿状态的效果
蓝色操作块2将儿子年龄设置为-5,配合之前代码则设定了不能重复生子
浅黄操作块为展示妻子怀孕消息

第一个表示尝试分支的语句5 0 第二个(实际上中间嵌套了一层尝试)表示结束的语句3 0 与小妾生女儿的代码部分
灰色操作块2再次判断对话者是否是小妾(不,按综合攻略上的说法应该要求是第一个小妾,那么去除这行应该?是会让所有小妾都能生女儿?但是之前看到的代码小妾和妻子都是不做区分的啊.....)——没问题,删掉这个操作块就能让所有小妾都可以生女儿
天蓝操作块2用于判定女儿年龄是否小于-5
粉色操作块意为将变量0赋值为0到5(不含上限)中的随机值;红色操作块用于判断变量0是否为3故每次生女仅有1/5的几率成功——5改为13改为0即或者其他类似的改法都是同样的效果;也可以改动这三个值来实现概率控制
中间一段操作块意为将女儿放在玩家部?队中,并且设置为平民;实际上就是实现女儿处于婴儿状态的效果
天蓝操作块2将女儿年龄设置为-5,配合之前代码则设定了不能重复生女;那么我个人感觉修改这部分跟改前面的条件应该是一样的
浅黄操作块为展示小妾怀孕消息
第三个结束语句3 0 后的操作块意为离开城镇(指回到大地图)


实际上,生子和生女代码逻辑完全相同(应该说当然了,又何必做两个功能)



改好的代码在这里:

dlga_spouse_talk:spouse_born_children 69631 2326  1 540 3 144115188075855987 30 360287970189639680 Anyway,_that_is_the_content_of_our_larder.  2725  0 NO_VOICEOVER

dlga_spouse_born_children:close_window 4095 2725  0 Anyway,_that_is_the_content_of_our_larder.  6  26 1 3 936748722493063439 144115188075855987 25 1030 3 2 5 0 4 0 540 3 360287970189639680 30 144115188075855987 2147484208 3 360287970189640210 18 99 4 0 2136 3 1224979098644774912 3 4 31 2 1224979098644774912 3 500 3 360287970189640210 166 432345564227567617 500 3 360287970189640210 164 360287970189639680 500 3 360287970189640210 18 -5 1106 1 1585267068834416483 3 0 5 0 2147484208 3 360287970189640211 18 99 4 0 2136 3 1224979098644774912 3 4 31 2 1224979098644774912 3 500 3 360287970189640211 166 432345564227567617 500 3 360287970189640211 164 360287970189639680 500 3 360287970189640211 18 -5 1106 1 1585267068834416484 3 0 3 0 2133 2 144115188075856081 1 1907 0 NO_VOICEOVER

评分

参与人数 1第纳尔 +10 互助 +1 魅力 +10 收起 理由
Aomine Daiki + 10 + 1 + 10 文章不错,继续努力!

查看全部评分

贴吧:就是xD  感觉大家好像都不太看主页啊,我把总结都贴在每一贴顶端好了

27

主题

65

回帖

103

积分

见习骑士

Rank: 3

UID
3174756
第纳尔
327
精华
0
互助
15
荣誉
0
贡献
0
魅力
190
注册时间
2020-4-23
鲜花(3) 鸡蛋(0)
 楼主| 发表于 2024-2-20 23:02:48 | 显示全部楼层
本帖最后由 nmsnb111 于 2024-2-21 13:42 编辑

然后看\Mount&Blade Warband\Modules\【MOD副本】风云三国司马奉先版(2024.2.10)\trigger.txt这个文件:

24.000000 0.000000 0.000000  2 560 3 360287970189640210 18 -5 2147484208 3 360287970189640210 18 0  13 520 3 1224979098644774912 360287970189640210 18 2105 2 1224979098644774912 1 500 3 360287970189640210 18 1224979098644774912 4 0 30 2 1224979098644774912 0 1550 2 360287970189640210 432345564227567673 2060 1 864691128455135497 5 0 2106 2 1224979098644774912 -5 2107 2 1224979098644774912 2 2133 2 72057594037927995 1224979098644774912 1106 1 1585267068834416315 3 0

触发器的代码还是第一次用到,这里也一并讲一下
24.000000 0.000000 0.000000是指触发器的检测时间为24小时,即每天检测一次,没有延迟时间,没有重启时间;那么对应到风云三国里一天是一个月,也就是儿子一个月就执行一次以下操作
第一个双空格后的2指示了判断的操作块共有2个,第二个双空格后的13指示了执行的操作块共有13个;在魔球修改器中分别称为激发条件和激发结果
之前看到过有人说tongyi了孩子都不成年,那么把这个触发器的24.000000改小即可实现以倍减的小时数让孩子增长1岁

红色的两个操作块是用于判断儿子年龄是否大于等于-5而小于0的,这两个操作块实现了儿子处于“婴儿”阶段的时间为5个月
粉色操作块以为获取儿子的年龄为变量0,将变量0加1,将变量0赋值给儿子年龄,用于实现儿子过月增长一岁(快速增长)——修改这里的1应该也能加速孩子的成年
尝试开始语句4 0 之后到尝试分支语句5 0之前的语句分别为
粉色操作块用于判断变量0即儿子年龄是否大于0
设置为离开状态(指势力灭亡后君主离开、不再出现也无法寻找的那个状态)
跳出菜单“玩家有儿子了”
尝试分支语句5 0 之后到尝试结束语句3 0 为止的语句分别为(这需要上方尝试开始语句中的第一条判断操作块儿子年龄大于等于0不满足,即当儿子年龄小于0时,则执行以下操作):
变量0减-5(也就是+5);变量0乘2;将寄存器59赋值为变量0
展示消息“怀孕”


我不是很明白为什么要这样写,看起来应该是为了防止儿子的年龄计算出现错误
但是如果触发器这样写,我们结合刚刚在conversation.txt的内容来看:
儿子出生时年龄设定为-5→触发器第一次触发→变量0=儿子年龄=-5,变量0=变量0+1=-4,儿子年龄=变量0=-4;(变量0小于0)变量0=变量0+5=1,变量0=变量0×2=2,寄存器59=变量0=2
但是第一次触发器的结束并没有把这个变量0赋值给儿子年龄啊,主要我也找不到寄存器59有什么用
第一次触发后儿子年龄为-4→触发器第一次触发→变量0=儿子年龄=-4,变量0=变量0+1=-3,儿子年龄=变量0=-3;(变量0小于0)变量0=变量0+5=2,变量0=变量0×2=4,寄存器59=变量0=4
. . . . . .
总之肯定是有用的,但是我还需要多实测一下才能确定后半段的作用
后半段的作用是在左下角以消息展示妻子/小妾怀孕的月数,游戏中每过一天会增加2个月,这也对应了代码中的×2


24.000000 0.000000 0.000000  2 560 3 360287970189640211 18 -5 2147484208 3 360287970189640211 18 0  13 520 3 1224979098644774912 360287970189640211 18 2105 2 1224979098644774912 1 500 3 360287970189640211 18 1224979098644774912 4 0 30 2 1224979098644774912 0 1550 2 360287970189640211 432345564227567673 2060 1 864691128455135485 5 0 2106 2 1224979098644774912 -5 2107 2 1224979098644774912 2 2133 2 72057594037927995 1224979098644774912 1106 1 1585267068834416315 3 0

那么女儿这部分跟儿子那部分还是完全一样的,就不再复制黏贴了(排版有够累)
生子生女的触发器写在了triggers.txt而不是simple_triggers.txt,说明这个功能做得还是相当相当早的





还是得总结一下:

因为触发器本身有个触发条件,我感觉改触发器时间应该只能让孩子度过婴儿期


要改的太多了,我直接贴改好的代码再简单解释一下吧
0.500000 0.000000 0.000000  2 560 3 360287970189640210 18 -5 2147484208 3 360287970189640210 18 15 14 520 3 1224979098644774912 360287970189640210 18 2105 2 1224979098644774912 1 500 3 360287970189640210 18 1224979098644774912 4 0 31 2 1224979098644774912 0 1550 2 360287970189640210 432345564227567673 2060 1 864691128455135497 5 0 2147483678 2 1224979098644774912 0 2106 2 1224979098644774912 -5 2107 2 1224979098644774912 2 2133 2 72057594037927995 1224979098644774912 1106 1 1585267068834416315 3 0

这是两段代码,上面的是儿子的,下面的是女儿的——他们两个本来很多内容就是分开写的,比如触发器这边就是

0.500000 0.000000 0.000000  2 560 3 360287970189640211 18 -5 2147484208 3 360287970189640211 18 15 14 520 3 1224979098644774912 360287970189640211 18 2105 2 1224979098644774912 1 500 3 360287970189640211 18 1224979098644774912 4 0 31 2 1224979098644774912 0 1550 2 360287970189640211 432345564227567673 2060 1 864691128455135498 5 0 2147483678 2 1224979098644774912 0 2106 2 1224979098644774912 -5 2107 2 1224979098644774912 2 2133 2 72057594037927995 1224979098644774912 1106 1 1585267068834416315 3 0


将触发器的检测时间改为0.5从怀孕到起名到成年入队在游戏中应该是一共10天,如果改为别的数值则相应成反比例变化
将判断器中的年龄上限从0改为15,意味着此触发器(尤其是其中年龄加1的语句)可以触发到子女年龄为15岁为止,也就是每半天加一岁加到15岁成年
添加了一个孩子年龄小于0的条件,因为我发现不添加的话会一直报妻子怀孕到怀孕40个月(40=(15-(-5))×2
到此为止就全部修改完成了,你的孩子能够从一个胚胎在10天内迅速成年,取名的功能也不受影响!

因为代码本身的限制,如果想生多个孩子就务必要等当前后台计算的儿子/女儿到部队,放出去做领主之类的总之不能待在自己部队中再去生下一个
是没办法生多个儿子/女儿的,至少在风云三国MOD的24.2.10最新版本为止都是只能有一个儿子、一个女儿的
贴吧:就是xD  感觉大家好像都不太看主页啊,我把总结都贴在每一贴顶端好了

27

主题

65

回帖

103

积分

见习骑士

Rank: 3

UID
3174756
第纳尔
327
精华
0
互助
15
荣誉
0
贡献
0
魅力
190
注册时间
2020-4-23
鲜花(3) 鸡蛋(0)
 楼主| 发表于 2024-2-20 23:28:18 | 显示全部楼层
本帖最后由 nmsnb111 于 2024-2-21 11:56 编辑

我现在正准备试
我看这个代码应该是会因为儿子和女儿使用的变量实际上是一个,生多了可能会在实体检测上出问题,或者不知道取哪个实体的年龄做变量
如果这一层不报错,那还可能会直接让所有儿子共用一个年龄,所有女儿共用一个年龄,早生的和晚生的同步生长

唉......不会年龄后半段的代码是制作组大大原本打算实现生多个孩子用的吧......
我虽然不会写MOD,但是感觉创建NPC的时候计数生成编号,然后给个单独的ID应该还是能做?到的
先试试会怎么样好了



初步测试下来新生的儿子/女儿会把前面生的儿子/女儿顶掉啊,就是在人物菜单中把前一个儿子/女儿顶掉,总之只能有一个儿子/女儿显示在你的人物界面
还得测试一下会不会共用一个年龄,这个不知道应该怎么修改啊......
既然年龄代码的前半段是用来计算婴儿时期的,那么年龄的后半段难道是用来计算成人时期的吗?可是这个-5再×2实在看不懂啊,不知道改一下触发器的时间能不能成倍缩短成人时间
这游戏的载入是真的好慢,也是引擎太老了......



所有小妾都能生女儿的修改成功了,感觉既然看不懂后半段,我直接把它删了行不行呢
然后再改一下触发器时间,快速提升年龄?
还是有一定思路的,起来再搞



哎呦,快速成年成功了!大概只要一年到两年的时间,没有仔细记
但是没有跳出改名字的菜单,还要再修复一下



全部修好了,哈哈,详情见一楼吧
贴吧:就是xD  感觉大家好像都不太看主页啊,我把总结都贴在每一贴顶端好了

27

主题

65

回帖

103

积分

见习骑士

Rank: 3

UID
3174756
第纳尔
327
精华
0
互助
15
荣誉
0
贡献
0
魅力
190
注册时间
2020-4-23
鲜花(3) 鸡蛋(0)
 楼主| 发表于 2024-2-21 12:56:17 | 显示全部楼层
感觉大家好像都不太看主页啊,我把总结贴贴在每一贴下面好了

0

主题

39

回帖

12

积分

随仆

Rank: 1

UID
3165993
第纳尔
114
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2020-4-12
鲜花(0) 鸡蛋(0)
发表于 2024-3-13 16:24:23 | 显示全部楼层
感谢大佬教程

2

主题

36

回帖

11

积分

随仆

Rank: 1

UID
2955046
第纳尔
660
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2017-12-5

霸主正版勋章

鲜花(3) 鸡蛋(0)
发表于 6 天前 | 显示全部楼层
删了生女儿那里灰色部分540 3 360287970189639680 167 144115188075855987 进不去游戏了 弹框conversation.txt报错  不删倒是能正常进去
下的攻略说小妾都能生女儿 其实不动的话还是只要第一个能生吧 原来以为是运气问题 调成100%其实是第一个能生 其他都不能
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-4-28 12:31 , Processed in 0.114765 second(s), 24 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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