骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[求助] 求助一个关于阵营触发器

[复制链接]

19

主题

108

回帖

48

积分

扈从

Rank: 2Rank: 2

UID
3084588
第纳尔
13
精华
0
互助
2
荣誉
0
贡献
0
魅力
0
注册时间
2019-6-29
鲜花(5) 鸡蛋(0)
发表于 2023-9-5 20:07:12 | 显示全部楼层 |阅读模式
本帖最后由 咸鱼圣代 于 2023-9-5 20:06 编辑

用魔球,我学着创建了一个会随机刷新的不法之徒大军来攻城,但是如果真的把城打下来了再进入这个不法之徒阵营的城市就会出bug。
所以我在指定攻城行为的触发器下面加了一点东西来希望大军攻城成功之后会城市阵营会自动变回攻城前原来的阵营。
只是我不太清楚该怎么实现,没能做到,

请问各位有没有什么办法可以把被不法之徒攻下来的城直接换回成原来的阵营?
这是我东拼西凑的触发器。

(store_random_party_of_template,":var_0","pt_looter_raiding_party"),
(store_random_in_range,":var_2","p_town_1","p_town_1"),
(party_set_ai_behavior,":var_0",ai_bhvr_attack_party),
(party_set_ai_object,":var_0",":var_2"),
(store_faction_of_party,":var_4",":var_2"),
(try_begin),
    (eq,":var_4","fac_outlaws"),
    (1232,":var_0"),
    (party_set_faction,":var_2",":var_4"),
(try_end),



###移除队伍
remove_party = 1232 # (remove_party,<party_id>),

因为魔球好像不能直接读这个操作所以我直接上了操作号。
1.png

攻城目标只有萨格斯是因为我还在做测试,这样方便看结果。

29

主题

751

回帖

574

积分

骑士

Rank: 4Rank: 4

UID
3322408
第纳尔
1748
精华
0
互助
68
荣誉
0
贡献
0
魅力
6
注册时间
2022-2-3
鲜花(57) 鸡蛋(0)
发表于 2023-9-5 20:12:10 来自手机 | 显示全部楼层
你自己写的“设置(部队)局部变量2所属阵营为(部队)局部变量4”,把这话删了不就不会变了?来自: Android客户端

19

主题

108

回帖

48

积分

扈从

Rank: 2Rank: 2

UID
3084588
第纳尔
13
精华
0
互助
2
荣誉
0
贡献
0
魅力
0
注册时间
2019-6-29
鲜花(5) 鸡蛋(0)
 楼主| 发表于 2023-9-5 21:01:17 | 显示全部楼层
112233lyh 发表于 2023-9-5 20:12
你自己写的“设置(部队)局部变量2所属阵营为(部队)局部变量4”,把这话删了不就不会变了? ...

不是这样的,不法之徒的部队打下来的城市就会变成不法之徒阵营所属,这个是游戏自带的,并不是我的代码造成的。
比如萨格斯是诺德城市,那我希望能在不法之徒攻城成功之后直接把阵营从不法之徒变回诺德,这样就能避免进入不法之徒的城市触发bug,比如城堡守卫和监狱守卫全部被换成玩家的这种情况。

(store_faction_of_party,":var_4",":var_2"), 的意思是把局部变量2的阵营储存起来指定为局部变量4,这样就可以对局部变量4也就是局部变量2的阵营进行检测和操作。
比如下面当局部变量4(局部变量2的阵营)被检测为不法之徒的时候自动移除之前刷新的攻城大军,这部分成功了,
但是我猜测在城市变成不法之徒所属的时候局部变量4也随着局部变量2的阵营一道自动变成了不法之徒,所以虽然检测到局部变量4为不法之徒阵营的时候消除攻城大军这个操作成功了,但是将局部变量2(被攻的城)的阵营重新指定为之前的局部变量4的时候却因为局部变量4的阵营一道跟着变为不法之徒所以重新指定一遍也还是不法之徒。
现在我搞不懂的地方是怎么才能把之前的原阵营储存起来,然后重新指定给局部变量2。

19

主题

108

回帖

48

积分

扈从

Rank: 2Rank: 2

UID
3084588
第纳尔
13
精华
0
互助
2
荣誉
0
贡献
0
魅力
0
注册时间
2019-6-29
鲜花(5) 鸡蛋(0)
 楼主| 发表于 2023-9-5 21:11:45 | 显示全部楼层
112233lyh 发表于 2023-9-5 20:12
你自己写的“设置(部队)局部变量2所属阵营为(部队)局部变量4”,把这话删了不就不会变了? ...


如果把那句相关的删掉以后城市也依然是不法之徒所属
mb1.png

29

主题

751

回帖

574

积分

骑士

Rank: 4Rank: 4

UID
3322408
第纳尔
1748
精华
0
互助
68
荣誉
0
贡献
0
魅力
6
注册时间
2022-2-3
鲜花(57) 鸡蛋(0)
发表于 2023-9-5 21:21:55 来自手机 | 显示全部楼层
咸鱼圣代 发表于 2023-9-5 21:01
不是这样的,不法之徒的部队打下来的城市就会变成不法之徒阵营所属,这个是游戏自带的,并不是我的代码造 ...

你看仔细点,我说的是party_set_faction那句。你都set faction了,还有什么好说的。来自: Android客户端

19

主题

108

回帖

48

积分

扈从

Rank: 2Rank: 2

UID
3084588
第纳尔
13
精华
0
互助
2
荣誉
0
贡献
0
魅力
0
注册时间
2019-6-29
鲜花(5) 鸡蛋(0)
 楼主| 发表于 2023-9-5 21:40:45 | 显示全部楼层
112233lyh 发表于 2023-9-5 21:21
你看仔细点,我说的是party_set_faction那句。你都set faction了,还有什么好说的。 ...

你好,我并没有误解你的话,截图中我测试的时候触发器只有这四句。所以你同时也能看到截图中尽管城市已经被攻陷但是大军还在,并且依然在作战,这是因为当时验证时我把局部变量4相关的所有代码全部删掉了。
(store_random_party_of_template,":var_0","pt_looter_raiding_party"),
(store_random_in_range,":var_2","p_town_1","p_town_1"),
(party_set_ai_behavior,":var_0",ai_bhvr_attack_party),
(party_set_ai_object,":var_0",":var_2"),

在没删掉前局部变量4相关代码前我使用set_faction的目的是为了把城市阵营从不法之徒重新变回诺德,而不是我的代码把城市的阵营变成了不法之徒,我的代码对游戏原本就自带的任何势力攻城之后城市阵营归属对应势力没有任何影响。
问题是如何把城市原本的阵营储存起来,在阵营改变之后用触发器重新变回去。

42

主题

94

回帖

221

积分

见习骑士

Rank: 3

UID
3199602
第纳尔
1162
精华
0
互助
36
荣誉
0
贡献
1
魅力
227
注册时间
2020-9-4
鲜花(60) 鸡蛋(0)
发表于 2023-9-5 22:37:56 | 显示全部楼层
咸鱼圣代 发表于 2023-9-5 21:40
你好,我并没有误解你的话,截图中我测试的时候触发器只有这四句。所以你同时也能看到截图中尽管城市已经 ...

既然“开始进攻”和“进攻结束”是两个时间点,那从逻辑上讲,应该分为两个触发器。
第一个触发器是你那四行设置进攻目标的,同时把被进攻目标的阵营储存起来,用store_faction_of_party(2204),存进一个全局变量。
第二个触发器则是在检测到被进攻目标已经便乘劫匪阵营时启动,读取全局变量里的faction,set回去。

评分

参与人数 1第纳尔 +10 收起 理由
幼稚园殺手 + 10 乐于助人!

查看全部评分

鲜花鸡蛋

咸鱼圣代  在2023-9-6 02:48  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

29

主题

751

回帖

574

积分

骑士

Rank: 4Rank: 4

UID
3322408
第纳尔
1748
精华
0
互助
68
荣誉
0
贡献
0
魅力
6
注册时间
2022-2-3
鲜花(57) 鸡蛋(0)
发表于 2023-9-5 23:20:26 来自手机 | 显示全部楼层
咸鱼圣代 发表于 2023-9-5 21:40
你好,我并没有误解你的话,截图中我测试的时候触发器只有这四句。所以你同时也能看到截图中尽管城市已经 ...

看了下潘得的,说实话并没有看到它额外设置阵营,也没有像上面说的那样分两步走。不排除它改了据点归属权的判定,把非国家阵营排除在外了。
关键词搜{s5} launches a surprise attack on {s6}!的快速字符串,你也可以去看看。来自: Android客户端

评分

参与人数 1第纳尔 +10 收起 理由
幼稚园殺手 + 10 乐于助人!

查看全部评分

19

主题

108

回帖

48

积分

扈从

Rank: 2Rank: 2

UID
3084588
第纳尔
13
精华
0
互助
2
荣誉
0
贡献
0
魅力
0
注册时间
2019-6-29
鲜花(5) 鸡蛋(0)
 楼主| 发表于 2023-9-6 02:56:35 | 显示全部楼层
奥杜因阿卡托什 发表于 2023-9-5 22:37
既然“开始进攻”和“进攻结束”是两个时间点,那从逻辑上讲,应该分为两个触发器。
第一个触发器是你那 ...

非常感谢!
我开始理解这些代码的时间还很短,都没研究过全局变量这个东西。
我马上去试试。

19

主题

108

回帖

48

积分

扈从

Rank: 2Rank: 2

UID
3084588
第纳尔
13
精华
0
互助
2
荣誉
0
贡献
0
魅力
0
注册时间
2019-6-29
鲜花(5) 鸡蛋(0)
 楼主| 发表于 2023-9-6 03:20:16 | 显示全部楼层
112233lyh 发表于 2023-9-5 23:20
看了下潘得的,说实话并没有看到它额外设置阵营,也没有像上面说的那样分两步走。不排除它改了据点归属权 ...

我正在接触的mod是作者litdum大修过的外交策略,个人感觉很多东西更接近原版吧。
粗略看了一圈,暂时还没在潘德的触发器里面找到大军攻城的相关项目。感觉如果潘德能将非国家阵营排除在有权占有据点的势力之外,可能也得去其他的地方挖掘?
快速字符串我也还不懂,确实找到了一句qstr_{s5}_launches_a_surp {s5}_launches_a_surprise_attack_on_{s6}! 但是搞不懂怎么从中学习潘德的野怪攻城机制。

19

主题

108

回帖

48

积分

扈从

Rank: 2Rank: 2

UID
3084588
第纳尔
13
精华
0
互助
2
荣誉
0
贡献
0
魅力
0
注册时间
2019-6-29
鲜花(5) 鸡蛋(0)
 楼主| 发表于 2023-9-16 03:37:59 | 显示全部楼层


根据奥杜因大佬的建议我试了一下在那四行代码下面用一个store_faction_of_party来存入一个全局变量,其他都不变,但是没有成功,也许是我操作不对。不过我也在想有可能是因为这个全局变量的储存依然是实时跟进的,当城市被不法之徒攻占的时候全局变量也一道像之前的局部变量一样变成不法之徒了。

后面我的想法是多创建两个触发器,一个用来每隔二十四小时储存所有城市的阵营到全局变量,然后用另一个触发器来每时每刻检测,有不法之徒阵营的城市并即时转换为之前储存的全局变量。
只是我还不太清楚是哪里出了问题,现在只有萨哥斯能成功变回每24小时储存的全局变量,其他的城市则没有反应,被攻下之后会保持为不法之徒。
请问这是哪里做错了?

(try_for_range,":var_0","p_town_1","p_castle_1"),
(store_faction_of_party,"$var_1438",":var_0"),

1.png



(try_for_range,":var_0","p_town_1","p_castle_1"),
(store_faction_of_party,":var_1",":var_0"),
(try_begin),
    (eq,":var_1","fac_outlaws"),
    (party_set_faction,":var_0","$var_1438"),
(try_end),

2.png


23

主题

339

回帖

299

积分

见习骑士

Rank: 3

UID
3189500
第纳尔
2709
精华
0
互助
26
荣誉
6
贡献
20
魅力
437
注册时间
2020-6-13
鲜花(68) 鸡蛋(0)
发表于 2023-9-25 22:05:02 来自手机 | 显示全部楼层
最好的方法还是找到原版攻占城池后改变阵营那里的代码,排除掉野怪阵营。来自: Android客户端

评分

参与人数 1第纳尔 +5 互助 +1 魅力 +1 收起 理由
agjib + 5 + 1 + 1 乐于助人!

查看全部评分

鲜花鸡蛋

咸鱼圣代  在2023-10-9 17:30  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

19

主题

108

回帖

48

积分

扈从

Rank: 2Rank: 2

UID
3084588
第纳尔
13
精华
0
互助
2
荣誉
0
贡献
0
魅力
0
注册时间
2019-6-29
鲜花(5) 鸡蛋(0)
 楼主| 发表于 2023-10-9 17:31:21 | 显示全部楼层
武安apk43 发表于 2023-9-25 22:05
最好的方法还是找到原版攻占城池后改变阵营那里的代码,排除掉野怪阵营。 ...

谢谢解答

鲜花鸡蛋

815208129  在2023-10-10 08:59  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-12-27 12:35 , Processed in 0.159302 second(s), 27 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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