骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索

求助PY语法问题

查看数: 5866 | 评论数: 15 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-1-8 23:40

正文摘要:

[trp_officials_caravan,"start", [                                               &nb ...

回复

gamemi 发表于 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都是用来给变量赋值的,就是变量的位置不同,所以开始没看懂。
gamemi 发表于 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,因为那个是跟随对象,可如何让他变成商队,以及平时如何不出现?
gamemi 发表于 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里是扔城镇的了。

还有我现在呼叫他的代码,叫出来的是不知道从哪来的队伍了。
JustinZCQ 发表于 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的部队(如果存在的话)而非你想使其消失的部队……
gamemi 发表于 2021-1-16 21:59:52

(remove_party,"pt_officials_caravan"),
我用的这个。
已注销09071 发表于 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>),
gamemi 发表于 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),
我用的代码。
gamemi 发表于 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",[]],

全部的代码,之前的对话应该不需要吧?反正也没代码块。
已注销09071 发表于 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",[]],


gamemi 发表于 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个语句没有发挥作用,也不知道怎么让他生效。
gamemi 发表于 2021-1-10 22:03:42
在那悠远的苍穹 发表于 2021-1-10 14:39
两个一样的条件,会优先触发上面的。额外添加一个条件就行了。

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

所以说我是想额外加个接近某个城市的条件,比如接近p_town_4附近200米的范围内
不过语句怎么写?我复制了原版的好像不行(╯▽╰ )~~
已注销09071 发表于 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)]],

gamemi 发表于 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.这句,因此我觉得可能是条件判断语句出错。
当然水平有限。

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

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

鲜花鸡蛋

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

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

GMT+8, 2025-10-24 04:32 , Processed in 0.098254 second(s), 28 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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