骑马与砍杀中文站论坛

标题: 战场延续功能 [打印本页]

作者: 野蛮人y    时间: 2021-8-13 23:38
标题: 战场延续功能
本帖最后由 野蛮人y 于 2024-8-4 23:38 编辑

战场延续功能:原战团主角倒下即败退出战场,更改胜负条件,直到最后一个友军倒下才败;

1.添加死亡视角摄像   by MadVader http://forums.taleworlds.com/index.php/topic,134460.0.html中文站转载地址http://bbs.mountblade.com.cn/thread-485769-1-1.html 转载者Brotherdragon
在mission_templates.py前面定义4个摄像功能触发器
      common_init_deathcam=()
      common_start_deathcam= ()
      common_move_deathcam= ()
      common_rotate_deathcam= ()

2.主角倒下即退出战场部分更改成如下battle_continuate=(),在mission_templates.py前面定义触发器,
battle_continuate =(
      1, 4, ti_once, [(main_hero_fallen)],  
          [
                    (assign, "$pin_player_fallen", 1),
                (assign, ":allynum", 0),
                (assign, ":enemynum", 0),
                (get_player_agent_no, ":playagent"),
                (agent_get_team, ":ally_team", ":playagent"),
        (try_for_agents,":cur_agent"),
             (agent_is_alive, ":cur_agent"),
             (agent_is_human, ":cur_agent"),
             (agent_get_team, ":agent_team", ":cur_agent"),
                         (try_begin),
                                (teams_are_enemies, ":agent_team", ":ally_team"),
                                (val_add, ":enemynum", 1),
             (else_try),
                                (val_add, ":allynum", 1),
                         (try_end),
        (try_end),
                                                  
            (try_begin),
                      (eq,":allynum",0),                #all death or wounded
                      (gt,":enemynum",0),              
                      (assign,"$g_battle_continuation",0),                #all death or wounded
                      (assign,"$g_battle_result",-1),                ##战场友军为零输
                          (set_mission_result,-1),
                          (call_script, "script_count_mission_casualties_from_agents"),
                          (call_script, "script_custom_battle_end"),
                          (finish_mission),
                        (else_try),                        
                          (ge,":allynum",1), ##还有友军
                          (gt,":enemynum",0),
                          (assign, "$g_battle_continuation", 1),                #战场继续
              (question_box,"str_do_you_want_to_retreat"),
                          (store_trigger_param_1,":answer"),
              (eq,":answer",0),
                          
                          (str_store_string, s5, "str_retreat"),
              (call_script, "script_simulate_retreat", 10, 20, 1),
                      (assign, "$g_battle_result", 0),
                          (set_mission_result,-1),
              (call_script, "script_count_mission_casualties_from_agents"),
                          (finish_mission),
                        (else_try),        
                      (gt,":allynum",0),                #all death or wounded
                      (eq,":enemynum",0),  
                          (assign,"$g_battle_result",1),                ##战场敌军为零胜
                        (try_end),
              ]
        )

3.把原判败条件注释掉custom_battle_check_defeat_condition更改为如下,每5秒检测一次
#################Yeoman##################
custom_battle_check_defeat_condition = (
  5, 0, 0,
  [
    (main_hero_fallen),        
                (assign, ":allynum", 0),
                (assign, ":enemynum", 0),
                (get_player_agent_no, ":playagent"),
                (agent_get_team, ":ally_team", ":playagent"),
        (try_for_agents,":cur_agent"),
             (agent_is_alive, ":cur_agent"),
             (agent_is_human, ":cur_agent"),
             (agent_get_team, ":agent_team", ":cur_agent"),
                         (try_begin),
                                (teams_are_enemies, ":agent_team", ":ally_team"),
                                (val_add, ":enemynum", 1),
             (else_try),
                                (val_add, ":allynum", 1),
                         (try_end),
        (try_end),
                  (try_begin),
                        (eq, ":allynum", 0),##友军全死伤
                        (assign,"$g_battle_continuation",0),##结束战场 输
                        (assign,"$g_battle_result",-1),
        (else_try),
                        (ge, ":allynum", 1),##还有存活友军
                        (ge, ":enemynum", 1),##还有存活敌军
                        (assign,"$g_battle_continuation",1),# 战场继续
                        (assign,"$g_battle_result",0),                #胜负未定               
                (else_try),        
                        (ge, ":allynum", 1),
                        (eq, ":enemynum", 0),##敌军全死伤 胜
                        (assign, "$g_battle_won",1),
                        (assign, "$g_battle_result", 1),               
                        (display_message,"str_msg_battle_won"),
                        (set_mission_result,1),
                (try_end),        
        
        
    ],
  [
                (neq,"$g_battle_result",0),                     
                (call_script, "script_count_mission_casualties_from_agents"),
                (call_script, "script_custom_battle_end"),
                (finish_mission,0),               
    ])
####################Y#################   
上面还有个判胜条件把玩家倒下那句注释掉:
custom_battle_check_victory_condition = (
  1, 60, ti_once,
  [
    (store_mission_timer_a,reg(1)),
    (ge,reg(1),10),
    (all_enemies_defeated, 2),
    # (neg|main_hero_fallen, 0), ##战场延续主角伤敌全死也是胜     

4.在战斗场景引用前面定义好的摄像功能、主角倒下胜负判定(这个不要应该也可以,就为了弹出个菜单要不要继续观战)、5秒胜负判定条件,
以野战场景为例, "lead_charge",mtf_battle_mode|mtf_synch_inventory,charge,  注释掉主角倒下即退出战场
      # (1, 4, ti_once, [(main_hero_fallen)],
          # [
              # (assign, "$pin_player_fallen", 1),
              # (str_store_string, s5, "str_retreat"),
              # (call_script, "script_simulate_retreat", 10, 20, 1),
              # (assign, "$g_battle_result", -1),
              # (set_mission_result,-1),
              # (call_script, "script_count_mission_casualties_from_agents"),
              # (finish_mission,0)]),

更改为如下:
        ##############Yeoman#############
      common_init_deathcam,
      common_start_deathcam,
      common_move_deathcam,
      common_rotate_deathcam,
      battle_continuate,         
      custom_battle_check_defeat_condition,

    ################Y################        






作者: 15653910782    时间: 2021-8-14 09:36
本帖最后由 15653910782 于 2021-8-14 13:19 编辑

奈何本人没文化,一句卧槽行天下,大佬nb
作者: NEW_SHIT    时间: 2021-8-14 11:03
本帖最后由 NEW_SHIT 于 2021-8-14 16:20 编辑

前排~
作者: NEW_SHIT    时间: 2021-8-14 17:55
呼叫楼主,编译时他说不认识:allynum与:enemynum这两个词。。
作者: 西岸丰    时间: 2022-4-27 14:11
大佬能给个战团原版的补丁吗,加进去以后一直没生效,求求了
作者: 西岸丰    时间: 2022-4-28 16:42
西岸丰 发表于 2022-4-27 14:11
大佬能给个战团原版的补丁吗,加进去以后一直没生效,求求了

解决了(凑字。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。)
作者: ggfgfgf    时间: 2022-8-29 21:10
可以延续,但是不能操控摄像机。。。
作者: ggfgfgf    时间: 2022-10-2 12:10
本帖最后由 ggfgfgf 于 2024-7-30 12:06 编辑
ggfgfgf 发表于 2022-8-29 21:10
可以延续,但是不能操控摄像机。。。

[strike]可以了,[/strike]个鸡毛,代码逻辑有问题
作者: lyklyk    时间: 2023-9-13 10:49
火钳刘明
作者: false幻境    时间: 2023-9-15 13:49
显示warning g_battle_contiu........是怎么回事
作者: 88978799    时间: 2024-7-29 16:57
大佬要是能做个补丁就太好了
作者: ggfgfgf    时间: 2024-7-30 12:07
你这逻辑有问题,输的时候不能结束战斗,卡死在mission里了




欢迎光临 骑马与砍杀中文站论坛 (https://bbs.mountblade.com.cn/) Powered by Discuz! X3.4