骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[求助] 求助PY语法问题

[复制链接]

10

主题

81

回帖

77

积分

扈从

Rank: 2Rank: 2

UID
3096100
第纳尔
937
精华
0
互助
6
荣誉
2
贡献
10
魅力
249
注册时间
2019-8-16
QQ
鲜花(25) 鸡蛋(0)
发表于 2021-1-8 23:40:00 | 显示全部楼层 |阅读模式
[trp_officials_caravan,"start", [
                                                                  (quest_slot_eq, "qst_escort_officials_caravan", slot_quest_current_state,1),
                                  (eq,"$g_encountered_party","p_town_4"),
                                  (store_distance_to_party_from_party, ":dist","p_town_4" ,"pt_officials_caravan"),
                                  (lt,":dist",200),
                                 ],
   "XXX", "close_window",[(assign, "$g_leave_encounter", 1)]],
我要达到的效果是带领officials_caravan去苏诺(town_4),然后通过这个判断有没有到达,到了的话就输出XXX作为对话内容。
这么写到底对不对?为啥死活不肯出对话?而且对话完了officials_caravan消失的功能也做不出来,求助~~~~~~~~~~~~~~~~~

顺便,谁有如何制作任务的教程?能否贴下网址?

4

主题

286

回帖

87

积分

扈从

Rank: 2Rank: 2

UID
2823925
第纳尔
2286
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2017-4-9

汉匈决战正版勋章

鲜花(3) 鸡蛋(0)
发表于 2021-1-9 18:25:29 | 显示全部楼层
对于你这段代码,我的个人建议有两点:
1:start这个条件不一定适用于大地图上触发的对话
2:如果你要“带领”的对象是在玩家队伍中的话,可以仿照战团里npc到达家乡时的对话或者护送被绑架的女孩到达城镇时的对话
     如果你要表达的“带领”的对象是不在玩家队伍中,而是单独一支队伍的话,可以仿照战团里护送商队任务完成时触发的对话

多看看战团的代码能对水平提升有挺大帮助的

鲜花鸡蛋

但愿海波平  在2021-1-9 20:28  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

10

主题

81

回帖

77

积分

扈从

Rank: 2Rank: 2

UID
3096100
第纳尔
937
精华
0
互助
6
荣誉
2
贡献
10
魅力
249
注册时间
2019-8-16
QQ
鲜花(25) 鸡蛋(0)
 楼主| 发表于 2021-1-10 11:27:53 | 显示全部楼层
本帖最后由 gamemi 于 2021-1-10 11:58 编辑
莲花elan 发表于 2021-1-9 18:25
对于你这段代码,我的个人建议有两点:
1:start这个条件不一定适用于大地图上触发的对话
2:如果你要“ ...

1. 我觉得start应该是没问题的,因为实际上是对话过的,而且对话的内容是我自己预设的,没作用主要是条件判断语句的问题,我觉得应该是这样。
[trp_officials_caravan,"start", [(quest_slot_eq, "qst_escort_officials_caravan", slot_quest_current_state, 1),],
   " Thanks.", "close_window",[]],
因为这段语句就好好的实现功能了,如果是start的问题,这句应该也出不来才对的。
2. 我就是复制的带商队的那个代码块,然后自己修改的来着。
(quest_get_slot, ":quest_target_center", "qst_escort_merchant_caravan", slot_quest_target_center),
    (set_spawn_radius, 1),
    (spawn_around_party,"$g_encountered_party","pt_merchant_caravan"),
    (assign, ":quest_target_party", reg0),
    (party_set_ai_behavior, ":quest_target_party", ai_bhvr_track_party),
    (party_set_ai_object, ":quest_target_party", "p_main_party"),
    (party_set_flags, ":quest_target_party", pf_default_behavior, 0),
    (quest_set_slot, "qst_escort_merchant_caravan", slot_quest_target_party, ":quest_target_party"),
    (quest_set_slot, "qst_escort_merchant_caravan", slot_quest_current_state, 1),
    (str_store_party_name_link, s8, ":quest_target_center"),
    (setup_quest_text, "qst_escort_merchant_caravan"),
    (str_store_string, s2, "@Escort the merchant caravan to the town of {s8}."),
    (call_script, "script_start_quest", "qst_escort_merchant_caravan", "$g_talk_troop"),


(quest_get_slot, ":quest_target_party", "qst_escort_merchant_caravan", slot_quest_target_party),
                                           (eq,"$g_encountered_party",":quest_target_party"),
                                           (quest_get_slot, ":quest_target_center", "qst_escort_merchant_caravan", slot_quest_target_center),
                                           (store_distance_to_party_from_party, ":dist", ":quest_target_center",":quest_target_party"),
                                           (lt,":dist",4),
                                           (quest_slot_eq, "qst_escort_merchant_caravan", slot_quest_current_state, 0),
这一段原始的代码应该是这样的。然后我修改了一下

    (set_spawn_radius, 1),       (spawn_around_party,"$g_encountered_party","pt_officials_caravan"),##呼叫跟随者
    (assign, ":quest_target_party", reg0),
    (party_set_ai_behavior, ":quest_target_party", ai_bhvr_track_party),
    (party_set_ai_object, ":quest_target_party", "p_main_party"),
    (party_set_flags, ":quest_target_party", pf_default_behavior, 0),
    (quest_set_slot, "qst_escort_officials_caravan", slot_quest_target_party, "pt_officials_caravan"),
    (quest_set_slot, "qst_escort_officials_caravan", slot_quest_current_state, 1),
    (str_store_party_name_link, s8, "p_town_4"),  
    (setup_quest_text, "qst_escort_officials_caravan"),      
    (str_store_string, s2, "@Escort the merchant caravan to the town of {s8}."),     
    (call_script, "script_start_quest", "qst_escort_officials_caravan", "$g_talk_troop"),     

[trp_officials_caravan,"start", [(quest_slot_eq, "qst_escort_officials_caravan", slot_quest_current_state, 1),],
   " Thanks.", "close_window",[]],

[trp_officials_caravan,"start", [
                                                                  (quest_slot_eq, "qst_escort_officials_caravan", slot_quest_current_state,1),
                                  (eq,"$g_encountered_party","p_town_4"),
                                  (store_distance_to_party_from_party, ":dist","p_town_4" ,"pt_officials_caravan"),
                                  (lt,":dist",200),
                                 ],
   "We can cover the rest of the way ourselves. Thanks.", "close_window",[(assign, "$g_leave_encounter", 1)]],


改成这样,不过我发现任务书上没问题,真到了执行时,一个是到了目的地也不会对话,而且也无法判断到达地方,永远只会说Thanks。可是我想让他说We can cover the rest of the way ourselves. Thanks.这句,因此我觉得可能是条件判断语句出错。
当然水平有限。

5

主题

201

回帖

122

积分

见习骑士

Rank: 3

UID
3103735
第纳尔
1596
精华
0
互助
10
荣誉
1
贡献
0
魅力
34
注册时间
2019-9-10
鲜花(32) 鸡蛋(0)
发表于 2021-1-10 14:39:27 | 显示全部楼层
两个一样的条件,会优先触发上面的。额外添加一个条件就行了。

[trp_officials_caravan,"start", [(quest_slot_eq, "qst_escort_officials_caravan", slot_quest_current_state, 1),],
   " Thanks.", "close_window",[]],

[trp_officials_caravan,"start", [
                                  (quest_slot_eq, "qst_escort_officials_caravan", slot_quest_current_state,1),
                                  (eq,"$g_encountered_party","p_town_4"),
                                  (store_distance_to_party_from_party, ":dist","p_town_4" ,"pt_officials_caravan"),
                                  (lt,":dist",200),
                                 ],
   "We can cover the rest of the way ourselves. Thanks.", "close_window",[(assign, "$g_leave_encounter", 1)]],

已退

10

主题

81

回帖

77

积分

扈从

Rank: 2Rank: 2

UID
3096100
第纳尔
937
精华
0
互助
6
荣誉
2
贡献
10
魅力
249
注册时间
2019-8-16
QQ
鲜花(25) 鸡蛋(0)
 楼主| 发表于 2021-1-10 22:03:42 | 显示全部楼层
在那悠远的苍穹 发表于 2021-1-10 14:39
两个一样的条件,会优先触发上面的。额外添加一个条件就行了。

[trp_officials_caravan,"start", [(ques ...

所以说我是想额外加个接近某个城市的条件,比如接近p_town_4附近200米的范围内
不过语句怎么写?我复制了原版的好像不行(╯▽╰ )~~

10

主题

81

回帖

77

积分

扈从

Rank: 2Rank: 2

UID
3096100
第纳尔
937
精华
0
互助
6
荣誉
2
贡献
10
魅力
249
注册时间
2019-8-16
QQ
鲜花(25) 鸡蛋(0)
 楼主| 发表于 2021-1-10 22:06:28 | 显示全部楼层
在那悠远的苍穹 发表于 2021-1-10 14:39
两个一样的条件,会优先触发上面的。额外添加一个条件就行了。

[trp_officials_caravan,"start", [(ques ...

(eq,"$g_encountered_party","p_town_4"),
(store_distance_to_party_from_party, ":dist","p_town_4" ,"pt_officials_caravan"),
(lt,":dist",200),

而且我觉得应该是这3个语句没有发挥作用,也不知道怎么让他生效。

5

主题

201

回帖

122

积分

见习骑士

Rank: 3

UID
3103735
第纳尔
1596
精华
0
互助
10
荣誉
1
贡献
0
魅力
34
注册时间
2019-9-10
鲜花(32) 鸡蛋(0)
发表于 2021-1-11 14:38:13 | 显示全部楼层
gamemi 发表于 2021-1-10 22:06
(eq,"$g_encountered_party","p_town_4"),
(store_distance_to_party_from_party, ":dist","p_town_4" , ...

[trp_officials_caravan,"event_triggered", [
                                  (quest_slot_eq, "qst_escort_officials_caravan", slot_quest_current_state,1),
                                  (eq,"$g_encountered_party","pt_officials_caravan"),
                                  (store_distance_to_party_from_party, ":dist","p_town_4" ,"pt_officials_caravan"),
                                  (lt,":dist",200), # 200的距离大约是帕拉汶到德赫瑞姆的距离。
                                 ],
   "We can cover the rest of the way ourselves. Thanks.", "close_window",[(assign, "$g_leave_encounter", 1)]],

# 你把这段放在前面的后果就是下面写的都会略过。
[trp_officials_caravan,"event_triggered", [],
   " Thanks.", "close_window",[]],


已退

10

主题

81

回帖

77

积分

扈从

Rank: 2Rank: 2

UID
3096100
第纳尔
937
精华
0
互助
6
荣誉
2
贡献
10
魅力
249
注册时间
2019-8-16
QQ
鲜花(25) 鸡蛋(0)
 楼主| 发表于 2021-1-12 11:49:30 | 显示全部楼层
本帖最后由 gamemi 于 2021-1-12 11:51 编辑
在那悠远的苍穹 发表于 2021-1-11 14:38
[trp_officials_caravan,"event_triggered", [
                                  (quest_slot_eq, "qs ...

[trp_officials_caravan,"start", [
                                   (quest_slot_eq, "qst_escort_officials_caravan", slot_quest_current_state,1),
                                  (eq,"$g_encountered_party","pt_officials_caravan"),
                                  (store_distance_to_party_from_party, ":dist","p_town_4" ,"pt_officials_caravan"),
                                  (lt,":dist",20),
                                 ],
   "We can cover the rest of the way ourselves. Thanks.", "close_window",[(assign, "$g_leave_encounter", 1)]],
   
   [trp_officials_caravan,"start", [],
   " Thanks.", "close_window",[]],
——————————————————————————————————————
    [trp_officials_caravan,"event_triggered", [
                                   (quest_slot_eq, "qst_escort_officials_caravan", slot_quest_current_state,1),
                                  (eq,"$g_encountered_party","pt_officials_caravan"),
                                  (store_distance_to_party_from_party, ":dist","p_town_4" ,"pt_officials_caravan"),
                                  (lt,":dist",20),
                                 ],
   "We can cover the rest of the way ourselves. Thanks.", "close_window",[(assign, "$g_leave_encounter", 1)]],
   
   [trp_officials_caravan,"event_triggered", [],
   " Thanks.", "close_window",[]],
问题是这两段我都失败了,用了你的触发器后干脆给的原版预设的对话,然后用START触发还是只给Thanks。
还是说我其他地方搞的不对?

[trp_npc17|plyr,"mission1_1", [],"Sorry,I'm not interested.", "close_window",[
            (set_spawn_radius, 1),   
    (spawn_around_party,"$g_encountered_party","pt_officials_caravan"),##呼叫跟随者
    (assign, ":quest_target_party", reg0),
    (party_set_ai_behavior, ":quest_target_party", ai_bhvr_track_party),
    (party_set_ai_object, ":quest_target_party", "p_main_party"),
    (party_set_flags, ":quest_target_party", pf_default_behavior, 0),
    (quest_set_slot, "qst_escort_officials_caravan", slot_quest_target_party, "pt_officials_caravan"),
    (quest_set_slot, "qst_escort_officials_caravan", slot_quest_current_state, 1),
    (str_store_party_name_link, s8, "p_town_4"),  
    (setup_quest_text, "qst_escort_officials_caravan"),      
    (str_store_string, s2, "@Escort the merchant caravan to the town of {s8}."),     
    (call_script, "script_start_quest", "qst_escort_officials_caravan", "$g_talk_troop"),        
   
##    (call_script, "script_change_troop_renown", "trp_player", 20),      加声望
##    (call_script, "script_change_player_relation_with_troop", "trp_kingdom_1_lord", 15),    加关系
   ]],

[trp_officials_caravan,"start", [
                                                                   (quest_slot_eq, "qst_escort_officials_caravan", slot_quest_current_state,1),
                                  (eq,"$g_encountered_party","pt_officials_caravan"),
                                  (store_distance_to_party_from_party, ":dist","p_town_4" ,"pt_officials_caravan"),
                                  (lt,":dist",20),
                                 ],
   "We can cover the rest of the way ourselves. Thanks.", "close_window",[(assign, "$g_leave_encounter", 1)]],
   
   [trp_officials_caravan,"start", [],
   " Thanks.", "close_window",[]],

全部的代码,之前的对话应该不需要吧?反正也没代码块。

10

主题

81

回帖

77

积分

扈从

Rank: 2Rank: 2

UID
3096100
第纳尔
937
精华
0
互助
6
荣誉
2
贡献
10
魅力
249
注册时间
2019-8-16
QQ
鲜花(25) 鸡蛋(0)
 楼主| 发表于 2021-1-16 16:53:44 | 显示全部楼层
在那悠远的苍穹 发表于 2021-1-11 14:38
[trp_officials_caravan,"event_triggered", [
                                  (quest_slot_eq, "qs ...

虽说没能解决我的问题,不是还是谢谢你。
(store_distance_to_party_from_party,":caravan_distance_to_destination","p_town_4","$caravan_escort_party_id"),
(lt, ":caravan_distance_to_destination", 2),
(party_stack_get_troop_id, ":caravan_leader", "$caravan_escort_party_id", 0),
(party_stack_get_troop_dna, ":caravan_leader_dna", "$caravan_escort_party_id", 0),  
(start_map_conversation, ":caravan_leader", ":caravan_leader_dna"),
我是用这个把问题解决了的。
顺便,我怎么让escort_officials_caravan这个队伍消失掉呢?任务倒是结束了,可还是跟着我。
(call_script, "script_end_quest","qst_escort_officials_caravan"),
(quest_set_slot, "qst_escort_officials_caravan", slot_quest_current_state, 2),
(assign, "$escort_officials_caravan_mode", 0),
(assign, "$g_leave_encounter", 1),
(call_script, "script_change_troop_renown", "trp_player", 20),
我用的代码。

5

主题

201

回帖

122

积分

见习骑士

Rank: 3

UID
3103735
第纳尔
1596
精华
0
互助
10
荣誉
1
贡献
0
魅力
34
注册时间
2019-9-10
鲜花(32) 鸡蛋(0)
发表于 2021-1-16 19:53:11 | 显示全部楼层
gamemi 发表于 2021-1-16 16:53
虽说没能解决我的问题,不是还是谢谢你。
(store_distance_to_party_from_party,":caravan_distance_to_ ...

(remove_party,<party_id>),
已退

10

主题

81

回帖

77

积分

扈从

Rank: 2Rank: 2

UID
3096100
第纳尔
937
精华
0
互助
6
荣誉
2
贡献
10
魅力
249
注册时间
2019-8-16
QQ
鲜花(25) 鸡蛋(0)
 楼主| 发表于 2021-1-16 21:26:07 | 显示全部楼层

QQ图片20210116212505.png

还是不行,而且出来一堆红色的字。

10

主题

81

回帖

77

积分

扈从

Rank: 2Rank: 2

UID
3096100
第纳尔
937
精华
0
互助
6
荣誉
2
贡献
10
魅力
249
注册时间
2019-8-16
QQ
鲜花(25) 鸡蛋(0)
 楼主| 发表于 2021-1-16 21:59:52 | 显示全部楼层

(remove_party,"pt_officials_caravan"),
我用的这个。

22

主题

1132

回帖

456

积分

骑士

  学徒术士

Rank: 4Rank: 4

UID
2986722
第纳尔
5248
精华
0
互助
18
荣誉
2
贡献
0
魅力
24
注册时间
2018-3-3

骑砍中文站APP会员勋章霸主正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]元老骑士勋章

鲜花(86) 鸡蛋(0)
发表于 2021-1-17 12:46:27 来自手机 | 显示全部楼层
gamemi 发表于 2021-1-16 21:59
(remove_party,"pt_officials_caravan"),
我用的这个。

你的前缀有问题……remove_party这条操作后半部分要求填入部队ID,应该以“p”(party,部队)而非“pt”(party_template,部队模版)开头,比如p_main_party(玩家部队)。而你填入的是部队模版,所以被remove的部队会是和pt_officials_caravan使用相同ID的部队(如果存在的话)而非你想使其消失的部队……

10

主题

81

回帖

77

积分

扈从

Rank: 2Rank: 2

UID
3096100
第纳尔
937
精华
0
互助
6
荣誉
2
贡献
10
魅力
249
注册时间
2019-8-16
QQ
鲜花(25) 鸡蛋(0)
 楼主| 发表于 2021-1-18 15:58:57 | 显示全部楼层
本帖最后由 gamemi 于 2021-1-18 16:00 编辑
JustinZCQ 发表于 2021-1-17 12:46
你的前缀有问题……remove_party这条操作后半部分要求填入部队ID,应该以“p”(party,部队)而非“pt” ...

“p”不是用来引用城镇的吗?
("officials_caravan","officials_caravan",icon_peasant|pf_quest_party,no_menu,pt_officials_caravan, fac_commoners,escorted_merchant_personality,0,trp_player,(-90, 22 ),[(trp_officials_caravan,1,0),(trp_officials,8,0),], 155),
我把这串代码放在了最后一个城市下边,然后他就是个会跑的城市,怎么让他变成商队呢?
顺便我之前没在parties.py里设置这个队伍,今天才设的,不过怎么让他跟护送商队的那个任务一样,在我需要的时候才出现在某个城市的周边呢?现在倒是能把他删掉了,问题控制不了。
还有我一直以为parties.py里是扔城镇的了。

还有我现在呼叫他的代码,叫出来的是不知道从哪来的队伍了。

10

主题

81

回帖

77

积分

扈从

Rank: 2Rank: 2

UID
3096100
第纳尔
937
精华
0
互助
6
荣誉
2
贡献
10
魅力
249
注册时间
2019-8-16
QQ
鲜花(25) 鸡蛋(0)
 楼主| 发表于 2021-1-18 16:40:55 | 显示全部楼层
JustinZCQ 发表于 2021-1-17 12:46
你的前缀有问题……remove_party这条操作后半部分要求填入部队ID,应该以“p”(party,部队)而非“pt” ...

所以现在的问题变成了,如何呼叫P_开头的部队,而不是pt_开头的部队。还有如何让p_开头的部队跟pt_开头的部队一样,需要了再出来,不需要的时候不出来。
help me~~~~~~~~~~~~~~~

("officials_caravan","officials_caravan",icon_peasant|pf_quest_party,no_menu,trp_officials_caravan, fac_commoners,escorted_merchant_personality,ai_bhvr_track_party,0,(-90, 22 ),[(trp_officials_caravan,1,0),(trp_officials,8,0),], 155),
我估计应该是改ai_bhvr_track_party后边的那个0,因为那个是跟随对象,可如何让他变成商队,以及平时如何不出现?

10

主题

81

回帖

77

积分

扈从

Rank: 2Rank: 2

UID
3096100
第纳尔
937
精华
0
互助
6
荣誉
2
贡献
10
魅力
249
注册时间
2019-8-16
QQ
鲜花(25) 鸡蛋(0)
 楼主| 发表于 2021-1-30 22:03:44 | 显示全部楼层
JustinZCQ 发表于 2021-1-17 12:46
你的前缀有问题……remove_party这条操作后半部分要求填入部队ID,应该以“p”(party,部队)而非“pt” ...

(quest_get_slot, ":quest_target_party", "qst_escort_officials_caravan", slot_quest_target_party),
                        (remove_party, ":quest_target_party"),
最终我用了这两句解决了,主要我一直没懂quest_get_slot的用法,现在才也是似懂非懂的样子
不过好在知道了quest_get_slot和quest_set_slot都是用来给变量赋值的,就是变量的位置不同,所以开始没看懂。
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-12-28 19:39 , Processed in 0.195262 second(s), 25 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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