骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[功能与代码] 【OSP】战团简单的入侵代码

[复制链接]

13

主题

83

回帖

144

积分

见习骑士

Rank: 3

UID
3304622
第纳尔
615
精华
0
互助
19
荣誉
2
贡献
0
魅力
123
注册时间
2021-12-28
鲜花(26) 鸡蛋(0)
发表于 2022-11-9 22:33:10 | 显示全部楼层 |阅读模式
本帖最后由 杰喵喵 于 2022-11-10 21:59 编辑

代码思路,定时器设定到一定天数,激活入侵阵营,在特定地图坐标创建阵营的领主队伍。战团代码本身代码,当阵营非激活情况下,领主会叛变,同时没有据点的阵营的领主会进入失去目标状态。因此代码需要做到,1.修改原来代码让非激活阵营领主不叛变,同时不在地图上创建非激活阵营领主;2.给入侵阵营设置隐秘的据点,在入侵的时候变成正常据点。3.入侵的时候在特定地图坐标创建阵营的领主队伍,并且添加部队。
1.首先创建阵营与入侵阵营隐秘据点代码这里省略。module_script中"游戏开始"初始化阵营,设置国王等,中间部分代码省略!!!。
  1. #script_game_start:
  2.   # This script is called when a new game is started
  3.   # INPUT: none
  4.   ("game_start",
  5.    [

  6.       
  7.       
  8.      (faction_set_slot, "fac_kingdom_undead",  slot_faction_state, sfs_inactive),#入侵阵营状态为失能
  9.      (party_set_flags, "p_castle_51", pf_disabled, 1),#入侵阵营的隐藏城堡 设置无效状态
  10.      (party_set_flags, "p_castle_52", pf_disabled, 1),#入侵阵营的隐藏城堡 设置无效状态
  11.      
  12.     ]),
复制代码

2.在module_simple_ttrigger中 "个人领主政治算计" 1061行中代码进行修改,参考我修改好的部分
  1. #Individual lord political calculations
  2.     #Check for lords without fiefs, auto-defections, etc
  3.     (0.5,        
  4.      [
  5.         (val_add, "$g_lord_long_term_count", 1),
  6.         (try_begin),
  7.           (neg|is_between, "$g_lord_long_term_count", "trp_kingdom_heroes_including_player_begin", active_npcs_end),
  8.           (assign, "$g_lord_long_term_count", "trp_kingdom_heroes_including_player_begin"),
  9.         (try_end),

  10.         (assign, ":troop_no", "$g_lord_long_term_count"),
  11.         
  12.         (try_begin),
  13.           (eq, ":troop_no", "trp_kingdom_heroes_including_player_begin"),        
  14.           (assign, ":troop_no", "trp_player"),
  15.         (try_end),

  16.         (try_begin),
  17.           (eq, "$cheat_mode", 1),
  18.           (str_store_troop_name, s9, ":troop_no"),
  19.           (display_message, "@{!}DEBUG -- Doing political calculations for {s9}"),
  20.         (try_end),
  21.         
  22.         #Penalty for no fief
  23.         (try_begin),
  24.           (troop_slot_eq, ":troop_no", slot_troop_occupation, slto_kingdom_hero),
  25.           (neq, ":troop_no", "trp_player"),
  26.                   
  27.           (assign, ":fief_found", -1),
  28.           (try_for_range, ":center", centers_begin, centers_end),
  29.             (party_slot_eq, ":center", slot_town_lord, ":troop_no"),
  30.             (assign, ":fief_found", ":center"),
  31.           (try_end),
  32.                
  33.           (try_begin),
  34.             (eq, ":fief_found", -1),
  35.                                                 
  36.             (store_faction_of_troop, ":original_faction", ":troop_no"),
  37.             (faction_get_slot, ":faction_leader", ":original_faction", slot_faction_leader),
  38.             (troop_get_slot, ":troop_reputation", ":troop_no", slot_lord_reputation_type),
  39.                         
  40.             (try_begin),
  41.               (neq, ":faction_leader", ":troop_no"),
  42.               (try_begin),
  43.                 (this_or_next|eq, ":troop_reputation", lrep_quarrelsome),
  44.                 (this_or_next|eq, ":troop_reputation", lrep_selfrighteous),
  45.                 (this_or_next|eq, ":troop_reputation", lrep_cunning),
  46.                 (eq, ":troop_reputation", lrep_debauched),
  47.                 (call_script, "script_troop_change_relation_with_troop", ":troop_no", ":faction_leader", -4),
  48.                 (val_add, "$total_no_fief_changes", -4),
  49.               (else_try),
  50.                 (eq, ":troop_reputation", lrep_martial),
  51.                 (call_script, "script_troop_change_relation_with_troop", ":troop_no", ":faction_leader", -2),
  52.                 (val_add, "$total_no_fief_changes", -2),
  53.               (try_end),
  54.             (try_end),
  55.           (try_end),
  56.         (try_end),        
  57.                
  58.         #Auto-indictment or defection
  59.         (try_begin),
  60.           (this_or_next|troop_slot_eq, ":troop_no", slot_troop_occupation, slto_kingdom_hero),
  61.           (eq, ":troop_no", "trp_player"),               
  62.           (try_begin),
  63.             (eq, ":troop_no", "trp_player"),
  64.             (assign, ":faction", "$players_kingdom"),
  65.           (else_try),
  66.             (store_faction_of_troop, ":faction", ":troop_no"),
  67.           (try_end),

  68.           (faction_get_slot, ":faction_leader", ":faction", slot_faction_leader),
  69.           (neq, ":troop_no", ":faction_leader"),
  70.                         
  71.           #I don't know why these are necessary, but they appear to be
  72.           (neg|is_between, ":troop_no", "trp_kingdom_1_lord", "trp_knight_1_1"),
  73.           (neg|is_between, ":troop_no", pretenders_begin, pretenders_end),
  74.                   
  75.                   (assign, ":num_centers", 0),                  
  76.                   (try_for_range,":cur_center", walled_centers_begin, walled_centers_end),                    
  77.                     (store_faction_of_party, ":faction_of_center", ":cur_center"),
  78.                         (eq, ":faction_of_center", ":faction"),                        
  79.                         (val_add, ":num_centers", 1),
  80.                   (try_end),

  81.                   #we are counting num_centers to allow defection although there is high relation between faction leader and troop.
  82.                   #but this rule should not applied for player's faction and player_supporters_faction so thats why here 1 is added to num_centers in that case.
  83.                   (try_begin),
  84.                     (this_or_next|eq, ":faction", "$players_kingdom"),
  85.                         (eq, ":faction", "fac_player_supporters_faction"),
  86.                         (val_add, ":num_centers", 1),
  87.                   (try_end),
  88.                         
  89.           (call_script, "script_troop_get_relation_with_troop", ":troop_no", ":faction_leader"),
  90.           (this_or_next|le, reg0, -90), #was -75
  91.                   (eq, ":num_centers", 0), #if there is no walled centers that faction has defection happens 100%.

  92.           (call_script, "script_cf_troop_can_intrigue", ":troop_no", 0), #Should include battle, prisoner, in a castle with others
  93.           (store_random_in_range, ":who_moves_first", 0, 2),
  94.                         
  95.           (try_begin),
  96.             (this_or_next|eq, ":num_centers", 0), #Thanks Caba`drin & Osviux
  97.             (neq, ":who_moves_first", 0),
  98.             (neq, ":troop_no", "trp_player"),
  99.                                 
  100.                         #do a defection
  101.                         (try_begin),
  102.                           (neq, ":num_centers", 0),
  103.                           (assign, "$g_give_advantage_to_original_faction", 1),
  104.                         (try_end),
  105.                         #(assign, "$g_give_advantage_to_original_faction", 1),
  106.         
  107.                         (store_faction_of_troop, ":orig_faction", ":troop_no"),
  108.             #################修改非激活阵营不开启领主叛逃-开始#############################################
  109.             (try_begin),
  110.                 (neg|faction_slot_eq, ":orig_faction", slot_faction_state, sfs_inactive),
  111.                 (call_script, "script_lord_find_alternative_faction", ":troop_no"),
  112.                 (assign, ":new_faction", reg0),                        
  113.                 (assign, "$g_give_advantage_to_original_faction", 0),
  114.             (else_try),
  115.                 (assign, ":new_faction", ":orig_faction"),
  116.             (try_end),
  117.              #################修改非激活阵营-结束#############################################
  118.             
  119.                         (try_begin),
  120.                           (neq, ":new_faction", ":orig_faction"),                          
  121.             
  122.               (is_between, ":new_faction", kingdoms_begin, kingdoms_end),
  123.               (str_store_troop_name_link, s1, ":troop_no"),
  124.               (str_store_faction_name_link, s2, ":new_faction"),        
  125.               (str_store_faction_name_link, s3, ":faction"),
  126.               (call_script, "script_change_troop_faction", ":troop_no", ":new_faction"),
  127.               (try_begin),
  128.                 (ge, "$cheat_mode", 1),
  129.                 (str_store_troop_name, s4, ":troop_no"),
  130.                 (display_message, "@{!}DEBUG - {s4} faction changed in defection"),
  131.               (try_end),        
  132.               (troop_get_type, reg4, ":troop_no"),
  133.               (str_store_string, s4, "str_lord_defects_ordinary"),
  134.               (display_log_message, "@{!}{s4}"),
  135.               (try_begin),
  136.                 (eq, "$cheat_mode", 1),
  137.                 (this_or_next|eq, ":new_faction", "$players_kingdom"),
  138.                 (eq, ":faction", "$players_kingdom"),
  139.                 (call_script, "script_add_notification_menu", "mnu_notification_lord_defects", ":troop_no", ":faction"),
  140.               (try_end),                                
  141.                         (try_end),
  142.           (else_try),        
  143.             (neq, ":faction_leader", "trp_player"),
  144.                         (call_script, "script_troop_get_relation_with_troop", ":troop_no", ":faction_leader"),
  145.                         (le, reg0, -50), #was -75
  146.             (call_script, "script_indict_lord_for_treason", ":troop_no", ":faction"),
  147.           (try_end),                  
  148.         (else_try),  #Take a stand on an issue
  149.           (neq, ":troop_no", "trp_player"),
  150.           (store_faction_of_troop, ":faction", ":troop_no"),
  151.           (faction_slot_ge, ":faction", slot_faction_political_issue, 1),
  152.           #This bit of complication is needed for savegame compatibility -- if zero is in the slot, they'll choose anyway                        
  153.           (neg|troop_slot_ge, ":troop_no", slot_troop_stance_on_faction_issue, 1),
  154.           (this_or_next|troop_slot_eq, ":troop_no", slot_troop_stance_on_faction_issue, -1),
  155.           (neq, "$players_kingdom", ":faction"),
  156.           (troop_slot_eq, ":troop_no", slot_troop_occupation, slto_kingdom_hero),
  157.           (call_script, "script_npc_decision_checklist_take_stand_on_issue", ":troop_no"),
  158.           (troop_set_slot, ":troop_no", slot_troop_stance_on_faction_issue, reg0),
  159.         (try_end),

  160.         (try_for_range, ":active_npc", active_npcs_begin, active_npcs_end),
  161.           (call_script, "script_troop_get_relation_with_troop", ":troop_no", ":active_npc"),
  162.           (lt, reg0, 0),
  163.           (assign, ":relation", reg0),
  164.           (store_sub, ":chance_of_convergence", 0, ":relation"),
  165.           (store_random_in_range, ":random", 0, 300),
  166.           (lt, ":random", ":chance_of_convergence"),
  167.           (call_script, "script_troop_change_relation_with_troop", ":troop_no", ":active_npc", 1),
  168.           (val_add, "$total_relation_changes_through_convergence", 1),
  169.         (try_end),                                
  170.         ]),
复制代码
3.在module_simple_ttrigger中"王国英雄从囚禁中释放后重生英雄队伍"
  1. # Respawn hero party after kingdom hero is released from captivity.
  2.   (48,
  3.    [
  4.        (try_for_range, ":troop_no", active_npcs_begin, active_npcs_end),
  5.          (troop_slot_eq, ":troop_no", slot_troop_occupation, slto_kingdom_hero),

  6.          (str_store_troop_name, s1, ":troop_no"),
  7.       
  8.          (neg|troop_slot_ge, ":troop_no", slot_troop_prisoner_of_party, 0),
  9.          (neg|troop_slot_ge, ":troop_no", slot_troop_leaded_party, 1),

  10.          (store_troop_faction, ":cur_faction", ":troop_no"),
  11.          (try_begin),
  12.            (eq, ":cur_faction", "fac_outlaws"), #Do nothing
  13.          ####################无效阵营不工作#########
  14.          (else_try),
  15.            (faction_slot_eq, ":cur_faction", slot_faction_state, sfs_inactive),#Do nothing
  16.          ###########################################
  17.          (else_try),         
  18.            (try_begin),
  19.              (eq, "$cheat_mode", 2),
  20.              (str_store_troop_name, s4, ":troop_no"),
  21.              (display_message, "str_debug__attempting_to_spawn_s4"),
  22.            (try_end),
  23.            
  24.            (call_script, "script_cf_select_random_walled_center_with_faction_and_owner_priority_no_siege", ":cur_faction", ":troop_no"),#Can fail
  25.            (assign, ":center_no", reg0),

  26.            (try_begin),
  27.              (eq, "$cheat_mode", 2),            
  28.              (str_store_party_name, s7, ":center_no"),
  29.                          (str_store_troop_name, s0, ":troop_no"),
  30.              (display_message, "str_debug__s0_is_spawning_around_party__s7"),
  31.            (try_end),
  32.       
  33.            (call_script, "script_create_kingdom_hero_party", ":troop_no", ":center_no"),

  34.                    (try_begin),
  35.                      (eq, "$g_there_is_no_avaliable_centers", 0),
  36.              (party_attach_to_party, "$pout_party", ":center_no"),
  37.            (try_end),
  38.            
  39.            #new
  40.            #(troop_get_slot, ":party_no", ":troop_no", slot_troop_leaded_party),
  41.                    #(call_script, "script_npc_decision_checklist_party_ai", ":troop_no"), #This handles AI for both marshal and other parties               
  42.                    #(call_script, "script_party_set_ai_state", ":party_no", reg0, reg1),
  43.                    #new end

  44.            (troop_get_slot, ":party_no", ":troop_no", slot_troop_leaded_party),
  45.            (call_script, "script_party_set_ai_state", ":party_no", spai_holding_center, ":center_no"),           
  46.            
  47.          (else_try),
  48.            (neg|faction_slot_eq, ":cur_faction", slot_faction_state, sfs_active),
  49.            (try_begin),
  50.              (is_between, ":troop_no", kings_begin, kings_end),
  51.              (troop_set_slot, ":troop_no", slot_troop_change_to_faction, "fac_commoners"),
  52.            (else_try),
  53.              (store_random_in_range, ":random_no", 0, 100),
  54.              (lt, ":random_no", 10),
  55.              (call_script, "script_cf_get_random_active_faction_except_player_faction_and_faction", ":cur_faction"),
  56.              (troop_set_slot, ":troop_no", slot_troop_change_to_faction, reg0),
  57.            (try_end),
  58.          (try_end),
  59.        (try_end),
  60.     ]),
复制代码
4.在module_ttrigger中写入代码,激活入侵阵营,创建国王与领主部队,领主部队代码省略,隐藏城堡激活,给予国王。
  1.   
  2.     (1, 24*50, ti_once,
  3.     [],
  4.     [

  5.        (faction_set_slot,"fac_kingdom_undead",slot_faction_state,sfs_active),

  6.        (call_script, "script_appoint_faction_marshall", "fac_kingdom_undead", "trp_kingdom_undead_lord"),
  7.       
  8.        (call_script, "script_create_kingdom_hero_party", "trp_kingdom_undead_lord", "p_town_6"),#国王NPC
  9.        (try_for_range,":party_template","pt_kingdom_undead_reinforcements_inite_a","pt_kingdom_undead_reinforcements_inite_d"),
  10.            (party_add_template, "$pout_party", ":party_template"),
  11.        (try_end),
  12.        (party_add_members,"$pout_party","trp_undead_knight_a",40),
  13.        (party_add_members,"$pout_party","trp_undead_ogre",10),

  14.      (party_set_flags, "p_castle_51", pf_disabled, 0),
  15.           (call_script, "script_give_center_to_lord", "p_castle_51",  "trp_kingdom_undead_lord", 0),
  16.      (try_for_range,":party_template","pt_living_dead_army_reinforcements_a","pt_living_dead_army_reinforcements_d"),
  17.         (party_add_template, "p_castle_51", ":party_template"),
  18.      (try_end),

  19.     ],
  20.     ),
复制代码

6.该代码用于本人MOD”异教之歌“,有问题欢迎讨论,QQ群号:751831596。


评分

参与人数 1第纳尔 +20 互助 +1 魅力 +20 收起 理由
Aomine Daiki + 20 + 1 + 20 文章不错,继续努力!

查看全部评分

鲜花鸡蛋

半世尘埃  在2022-11-9 23:51  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

4

主题

124

回帖

43

积分

扈从

Rank: 2Rank: 2

UID
3206008
第纳尔
614
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2020-11-4

骑砍中文站APP会员勋章

鲜花(2) 鸡蛋(0)
发表于 2022-11-10 15:53:36 来自手机 | 显示全部楼层
6666666666来自: Android客户端

7

主题

46

回帖

36

积分

扈从

Rank: 2Rank: 2

UID
2898778
第纳尔
493
精华
0
互助
4
荣誉
0
贡献
0
魅力
5
注册时间
2017-11-25
鲜花(5) 鸡蛋(0)
发表于 2023-2-4 21:58:25 | 显示全部楼层
似乎仅仅disable阵营和城市还是会在信息栏里面出现

7

主题

46

回帖

36

积分

扈从

Rank: 2Rank: 2

UID
2898778
第纳尔
493
精华
0
互助
4
荣誉
0
贡献
0
魅力
5
注册时间
2017-11-25
鲜花(5) 鸡蛋(0)
发表于 2023-2-4 22:42:17 | 显示全部楼层
wei1786 发表于 2023-2-4 21:58
似乎仅仅disable阵营和城市还是会在信息栏里面出现

https://bbs.mountblade.com.cn/fo ... E%B2%D8%D5%F3%D3%AA
翻到了一个中文站的老帖子,还需要设定这些?
faction_set_note_available      = 1096 # (faction_set_note_available, <faction_id>, <value>), #1 = available, 0 = not available
party_set_note_available        = 1097 # (party_set_note_available, <party_id>, <value>), #1 = available, 0 = not available

13

主题

83

回帖

144

积分

见习骑士

Rank: 3

UID
3304622
第纳尔
615
精华
0
互助
19
荣誉
2
贡献
0
魅力
123
注册时间
2021-12-28
鲜花(26) 鸡蛋(0)
 楼主| 发表于 2023-2-7 21:06:56 | 显示全部楼层
wei1786 发表于 2023-2-4 22:42
https://bbs.mountblade.com.cn/forum.php?mod=viewthread&tid=225708&highlight=%D2%FE%B2%D8%D5%F3%D3% ...

应该不需要

7

主题

46

回帖

36

积分

扈从

Rank: 2Rank: 2

UID
2898778
第纳尔
493
精华
0
互助
4
荣誉
0
贡献
0
魅力
5
注册时间
2017-11-25
鲜花(5) 鸡蛋(0)
发表于 2023-2-8 09:16:24 | 显示全部楼层

我看了下,放在kingdom之间和center之间的话需要改script中game_start最后几段,不加判断条件就会在游戏开始时显示

13

主题

83

回帖

144

积分

见习骑士

Rank: 3

UID
3304622
第纳尔
615
精华
0
互助
19
荣誉
2
贡献
0
魅力
123
注册时间
2021-12-28
鲜花(26) 鸡蛋(0)
 楼主| 发表于 2023-2-8 11:37:38 | 显示全部楼层
wei1786 发表于 2023-2-8 09:16
我看了下,放在kingdom之间和center之间的话需要改script中game_start最后几段,不加判断条件就会在游戏 ...

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

本版积分规则

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

GMT+8, 2024-3-29 00:14 , Processed in 0.123051 second(s), 23 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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