骑马与砍杀中文站论坛

用户名  找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

帖子
购买CDKEY 衣谷三国
查看: 1801|回复: 0

[功能与代码] 【战团】使执行完任务等待归队的NPC按离队顺序归队

[复制链接]

8

主题

29

回帖

21

积分

随仆

Rank: 1

UID
3713555
第纳尔
115
精华
0
互助
0
荣誉
1
贡献
0
魅力
202
注册时间
2024-11-10
鲜花(7) 鸡蛋(0)
发表于 2024-12-10 20:28:54 | 显示全部楼层 |阅读模式
本帖最后由 AntiN0m1 于 2024-12-28 18:54 编辑

大家是否遇到过这种情况:单刷时每招一个NPC就让他出去宣传或收集情报,回来了再把他送出去。时间久了就会发现,执行完任务归队的NPC总是任务列表最后的三四个人,其他人就没回来过。你再想让排在前面的人去做宣传,或者想等一个特定的NPC归队先给他练级,只能先把后面的NPC留在队里几天。

造成这种情况的原因是什么呢?我们先看一个每小时1次的简单触发器,在module_simple_triggers.py中找到以下代码:


(点击展开 / 收起)



可以看到,在# Rejoining party这一段控制着NPC的归队。有一个关键的全局变量$npc_to_rejoin_party,这是准备归队的NPC的id。
触发归队对话后,在module_dialogs.py里会有(assign, "$npc_to_rejoin_party", 0)将其清零。我们需要找到它是在哪设置的。
打开module_triggers.py找到以下冷却时间为1天的触发器:


(点击展开 / 收起)



可以看到,每循环一个NPC,如果他能归队,就会把$npc_to_rejoin_party设置成他,如此以来id越靠后的NPC就会优先归队。又因为触发器每天只触发1次,所以NPC一多,前面的人还没回来,后面的人就又回来了。
原因找到了,现在该如何解决呢?自然会想到记录NPC离队的顺序,我选择用部队记录,把NPC按顺序加入一个记录部队,归队时让记录部队的第一个NPC回来然后删掉。具体实现方法我给出2种。


方法1:


第一步:在module_parties.py里创建一个记录部队,以那些用于计算的部队为模板,如"temp_casualties",和它们放在一起,也就是"zendar"的上面:
("npcs_on_missions","{!}npcs_on_missions",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(1,1),[]),


第二步:在NPC外出执行任务时把他加入记录部队,这个在原版战团中比较简单,只在module_dialogs.py中有3处:

1.宣传统治权:[anyone,"member_kingsupport_4", [略],
2.收集情报:[anyone,"member_intelgathering_4", [略],
3.派遣使者:[anyone|plyr, "minister_diplomatic_dispatch_confirm",[], "Yes, do that", "minister_pretalk",[略],
只需要在[略]中找到:
(remove_member_from_party, <代表NPC的id的变量>, "p_main_party"),
在下面加上以下一句即可:
(party_add_members, "p_npcs_on_missions", <代表NPC的id的变量>, 1),
这种方法略显繁琐,而且每个mod可能不同。你如果不喜欢可以看方法2。



第三步:设置$npc_to_rejoin_party。在module_triggers.py的那段代码中作如下修改:


(点击展开 / 收起)



第四步:在NPC触发归队对话的时候从记录部队把他删掉。在module_simple_triggers.py的那段代码中插入###(((方法1)))这一句:


(点击展开 / 收起)



方法2:


第一步:与方法1相同,作为区别名字改一下:
("npcs_days_on_mission_0","{!}npcs_days_on_mission_0",pf_disabled, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(1,1),[]),


第二步:在任务天数减为0时将NPC加入记录部队,然后设置$npc_to_rejoin_party。在module_triggers.py的那段代码中作如下修改:


(点击展开 / 收起)


第三步:与方法1第四步相同。在module_simple_triggers.py的那段代码中插入###(((方法2)))这一句:


(点击展开 / 收起)



总结:
方法1可以严格区分任意NPC离队的顺序,但有点繁琐,适合强迫症。方法2不能区分任务天数在同一天减为0的NPC顺序,会将其按照id正序排列。但两者在实战中几乎没有区别,都能达到目的。我更推荐方法2,改的地方少,方便查错。
对于不开源的mod,方法2似乎可以用于魔球修改,我不太了解,欢迎熟悉魔球的大佬补充。

您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2025-3-25 01:30 , Processed in 0.073230 second(s), 18 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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