本帖最后由 黑暗路西法 于 2025-9-23 20:10 编辑  
 
《关于我在游戏里加了114个总计能让收入提升514%的技能之后积累的经验》 
众所周知,在战团原版里这个界面和战斗中按backspace弹出的battle可能是最有存在感的两个界面,接下来我会在这里逐句解析一下里面的功能和修改位置 
可以就地修改的内容包含:无效税收判定、工厂收入判定、工厂生产物资判定、工厂收入清零判定、玩家作为雇佣兵的酬金判定、税收判定、关税判定、部队工资判定、守军工资判定 
如果你想了解原理进行更细致的改造,可以逐行看解析,如果你只想改收入数值,看粗体字就可以了 
这个报告作为“结算”唤出的位置位于simple trigger中 
 
 
搜索 
#Pay day. 
下面那个就是 
 
  #Pay day. 
  (24 * 7, 
   [ 
     (assign, "$g_presentation_lines_to_display_begin", 0), 
     (assign, "$g_presentation_lines_to_display_end", 15), 
     (assign, "$g_apply_budget_report_to_gold", 1), 
     (try_begin), 
       (eq, "$g_infinite_camping", 0), 
       (start_presentation, "prsnt_budget_report"), 
     (try_end), 
    ]), 
 
 
"$g_apply_budget_report_to_gold"这个全局变量是用于判断是否真正进行金钱计算的,在prsnt运行一次之后这个全局变量会被设为0,直到下周再次触发这个simple trigger为止 
 
 
是不是看着快吐了,待我细细道来 
 
 
  ("budget_report", 0, mesh_load_window, 
   [(ti_on_presentation_load, 
     [(presentation_set_duration, 999999), 
      (set_fixed_point_multiplier, 1000), 
       
      (create_mesh_overlay, reg1, "mesh_pic_payment"),##这个是右下角那张透明背景的图标,是的孩子们这张图不是焊界面上的,如果想删改可以随时动 
      (position_set_x, pos1, 800), 
      (position_set_y, pos1, 800), 
      (overlay_set_size, reg1, pos1), 
      (position_set_x, pos1, 170), 
      (position_set_y, pos1, 0), 
      (overlay_set_position, reg1, pos1), 
       
      (create_text_overlay, reg1, "str_weekly_budget", tf_center_justify),##这个是标题文本 
      (position_set_x, pos1, 1500), 
      (position_set_y, pos1, 1500), 
      (overlay_set_size, reg1, pos1), 
      (position_set_x, pos1, 260), 
      (position_set_y, pos1, 650), 
      (overlay_set_position, reg1, pos1), 
 
      (str_clear, s0),##清空s0的文本 
      (create_text_overlay, "$g_presentation_obj_bugdet_report_container", s0, tf_scrollable_style_2),##这个是最重要的,也就是左边那个大份列表 
     ##不会做滑动框的同学们可以学一下,创造一个没有文本的可滑动textoverlay,设定位置和area size(区域xy大小)之后set_container_overlay就能创造一个可滑动区域了,往里面塞什么都行,不用的时候设为-1就行 
      (position_set_x, pos1, 0), 
      (position_set_y, pos1, 100), 
      (overlay_set_position, "$g_presentation_obj_bugdet_report_container", pos1), 
      (position_set_x, pos1, 505), 
      (position_set_y, pos1, 500), 
      (overlay_set_area_size, "$g_presentation_obj_bugdet_report_container", pos1), 
      (set_container_overlay, "$g_presentation_obj_bugdet_report_container"),##设为存储区域 
 
      (game_get_reduce_campaign_ai, ":reduce_campaign_ai"),     ##获取战略ai水平,战略ai对游戏的影响存在于方方面面  
      (try_begin), 
        (eq, ":reduce_campaign_ai", 0), #hard ##0、1、2对应困难、普通、简单 
        (assign, ":num_centers_needed_for_efficiency_loss", 2),##对应“玩家在拥有多少个封地的情况下会触发无效税收” 
        (assign, ":tax_efficiency_loss_ratio_per_center", 5),##对应“玩家触发无效税收之后,每个多出的封地会导致总税收降低多少百分比” 
      (else_try),   
        (eq, ":reduce_campaign_ai", 1), #medium 
        (assign, ":num_centers_needed_for_efficiency_loss", 4), 
        (assign, ":tax_efficiency_loss_ratio_per_center", 4), 
      (else_try),   
        (eq, ":reduce_campaign_ai", 2), #easy 
        (assign, ":num_centers_needed_for_efficiency_loss", 6), 
        (assign, ":tax_efficiency_loss_ratio_per_center", 3), 
      (try_end),   
##例如困难难度下就是,玩家有两个以上封地的情况下(城镇算两个封地),每多出一个封地会让所有封地的税收和关税减少5%,最多降低65%,所以有需要的情况下修改上面两个局部变量就可以了 
      (assign, ":num_lines", 0),##总行数 
      (assign, ":num_owned_center_values_for_tax_efficiency", 0),##能收税的据点数 
      (assign, ":all_centers_accumulated_total", 0),##总收入(包括工厂) 
      (assign, ":all_centers_accumulated_taxes_and_rents", 0),##总税收和关税 
      (try_for_range, ":center_no", centers_begin, centers_end),           
            (try_begin), 
                  (party_slot_ge, ":center_no", slot_center_player_enterprise, 1),                   
                  (val_add, ":num_lines", 1),##城镇算两个封地 
            (try_end),           
           
        (party_slot_eq, ":center_no", slot_town_lord, "trp_player"),##这一段是判断一共有多少行的,也就是一开始界面里的y轴起多高,界面制作经典用例属于是 
        (val_add, ":num_lines", 1), 
        (val_add, ":num_owned_center_values_for_tax_efficiency", 1), 
        (try_begin), 
          (is_between, ":center_no", towns_begin, towns_end), 
          (val_add, ":num_lines", 1), 
          (val_add, ":num_owned_center_values_for_tax_efficiency", 1), 
        (try_end), 
      (try_end), 
      (try_begin), 
        (gt, "$players_kingdom", 0), 
        (neq, "$players_kingdom", "fac_player_supporters_faction"), 
        (neq, "$players_kingdom", "fac_player_faction"), 
        (eq, "$player_has_homage", 0), 
        (val_add, ":num_lines", 1), 
      (try_end), 
      (try_begin),       
        (gt, ":num_owned_center_values_for_tax_efficiency", ":num_centers_needed_for_efficiency_loss"), 
      #gt accumulated total is ignored 如果从这里开始拥有的封地多于触发无效税收的封地,加一行记录无效税收 
        (val_add, ":num_lines", 1), 
      (try_end), 
      (try_for_parties, ":party_no"),##有点神经,不打算改范围的话可以改成tryforrange,p_main_party,castles_end或者直接用walled_centers_end随意,不过如果你打算制作要玩家掏钱的巡逻队或村庄驻军等机制,也可以在这里加上判定 
        (assign, ":garrison_troop", 0), 
        (try_begin), 
          (this_or_next|party_slot_eq, ":party_no", slot_party_type, spt_town), 
          (party_slot_eq, ":party_no", slot_party_type, spt_castle), 
          (party_slot_eq, ":party_no", slot_town_lord, "trp_player"), 
          (assign, ":garrison_troop", 1), 
        (else_try), 
          (this_or_next|party_slot_eq, ":party_no", slot_party_type, spt_town), 
          (party_slot_eq, ":party_no", slot_party_type, spt_castle), 
          (neg|party_slot_ge, ":party_no", slot_town_lord, 1), #unassigned 
          (store_faction_of_party, ":center_faction", ":party_no"), 
          (eq, ":center_faction", "fac_player_supporters_faction"), 
          (faction_slot_eq, "fac_player_supporters_faction", slot_faction_leader, "trp_player"),##玩家阵营的无主封地也是玩家掏钱 
          (assign, ":garrison_troop", 1),                   
        (try_end), 
                 
        (this_or_next|eq, ":party_no", "p_main_party"), 
        (eq, ":garrison_troop", 1), 
        (val_add, ":num_lines", 1), #include empty towns/castles  每有一个需要计算工资的部队,加一行 
      (try_end), 
      (try_begin), 
        (gt, "$g_player_debt_to_party_members", 0), 
        (val_add, ":num_lines", 2), #include new debt line 
      (try_end), 
      (val_add, ":num_lines", 3), 
      (store_mul, ":cur_y", 27, ":num_lines"), 
      (assign, ":net_change", 0), #this is the amount added 
      (try_for_range, ":center_no", centers_begin, centers_end),        ##计算收入 
                #Enterprise  计算工厂收入 
        (try_begin), 
                  (party_get_slot, ":enterprise_output", ":center_no", slot_center_player_enterprise), 
                  (gt, ":enterprise_output", 1), 
                  (neg|party_slot_ge, ":center_no", slot_center_player_enterprise_days_until_complete, 1),##如果工厂还没建好或者没有就不触发这段 
                  (str_store_party_name, s0, ":center_no"), 
                   
                  (call_script, "script_process_player_enterprise", ":enterprise_output", ":center_no"),##工厂收入脚本计算 
                  (assign, ":net_profit", reg0),##这个是收入 
                  (assign, ":price_of_single_output", reg4),##每个产品的单价 
                  (assign, ":price_of_single_input", reg5),##每个原料的单价 
                  (assign, ":price_of_secondary_input", reg10),##如果是二级产品,原料的原料的单价 
                   
                  (store_sub, ":town_order", ":center_no", towns_begin), 
                  (store_add, ":craftsman_troop", ":town_order", "trp_town_1_master_craftsman"),##获取城镇的"工匠大师",也是存物品的工具人 
 
                  (item_get_slot, ":outputs_added_to_market", ":enterprise_output", slot_item_output_per_run),##获取每周成品的输出数量,具体在item_info这个脚本里改 
                  (assign, ":outputs_added_to_warehouse", 0), 
                   
                  #Enterprise impact of outputs 
                  (try_begin), 
                    #output placed in inventory: deduct selling price and add one good 
                        (party_slot_eq, ":center_no", slot_center_player_enterprise_production_order, 1),##如果玩家要求“将所有生产的货物留下自己卖”的话,会计算工匠大师的剩余物品栏数量,这个slot在dialog里搜索可以找到 
                         
                        #Count empty slots 
                        (assign, ":empty_slots", 0), 
                        (troop_get_inventory_capacity, ":total_capacity", ":craftsman_troop"), 
                        (try_for_range, ":capacity_iterator", 0, ":total_capacity"), 
                                (troop_get_inventory_slot, ":slot", ":craftsman_troop", ":capacity_iterator"), 
                                (lt, ":slot", 1), 
                                (val_add, ":empty_slots", 1), 
                        (try_end), 
                         
                        (assign, ":outputs_added_to_warehouse", ":outputs_added_to_market"), 
                        (val_min, ":outputs_added_to_warehouse",  ":empty_slots"), 
                        (gt, ":outputs_added_to_warehouse", 0), 
                         
                        (store_mul, ":cancelled_sales", ":price_of_single_output", ":outputs_added_to_warehouse"), 
                        (val_sub, ":net_profit", ":cancelled_sales"), 
                        (val_sub, ":outputs_added_to_market", ":outputs_added_to_warehouse"),##因为玩家爱拿工厂当箱子用,所以这里计算一下如果玩家要保存产品的话,需要卖掉多少溢出商品 
                  (try_end), 
                   
                  #If the transaction is for real, and not just a budget check 
                  (try_begin), 
                    (eq, "$g_apply_budget_report_to_gold", 1),##全局变量,如果这次界面是通过simple trigger进入的正式计算 
                        (troop_add_items, ":craftsman_troop", ":enterprise_output", ":outputs_added_to_warehouse"),##把每周产出的商品塞给工匠带师,如果上面那个slot设置为0的话就不会塞东西 
 
                        #Affect prices by outputs added to market  因为你往市场里卖东西了,所以市场里的对应产品降价 
                        (store_sub, ":item_slot_no", ":enterprise_output", trade_goods_begin), 
                        (val_add, ":item_slot_no", slot_town_trade_good_prices_begin), 
                        (party_get_slot, ":current_index", ":center_no", ":item_slot_no"),                         
                        (store_mul, ":impact_on_price", ":outputs_added_to_market", 15), 
                        (val_sub, ":current_index", ":impact_on_price"), 
                        (party_set_slot, ":center_no", ":item_slot_no",":current_index"),                         
                                                 
                        (gt, "$cheat_mode", 0), 
                        (str_store_troop_name, s3, ":craftsman_troop"), 
                        (assign, reg3, ":outputs_added_to_warehouse"), 
                        (display_message, "@{!}DEBUG -- Adding {reg3} items to {s3}"), 
                  (try_end), 
                   
                  #Enterprise impact of outputs 
                  (item_get_slot, ":inputs_taken_from_market", ":enterprise_output", slot_item_input_number),                   
                  (try_begin), 
                        (item_slot_ge, ":enterprise_output", slot_item_secondary_raw_material, 1),##有些东西生产需要原料,比如面包需要谷物,具体数值和默认成本原料费也在item_info脚本里 
                        (assign, ":2ary_inputs_taken_from_market", ":inputs_taken_from_market"), 
                  (else_try), 
                       (assign, ":2ary_inputs_taken_from_market", 0),##找不到就设为0 
                  (try_end), 
                   
                  (assign, ":inputs_taken_from_warehouse", 0), 
                  (assign, ":2ary_inputs_taken_from_warehouse", 0), 
                   
                  (try_begin), 
                    #input present in inventory: reimburse for input cost and remove one good 
                        (troop_get_inventory_capacity, ":total_capacity", ":craftsman_troop"),##因为可以往仓库里放原料,所以计算有多少个能拿去用的原料 
                        (try_for_range, ":capacity_iterator", 0, ":total_capacity"),##这里有一段格式抽象的已注释内容被我删了,是用于计算吃过的原材料能不能拿去加工,因为那一段被注释掉了所以现在你拿吃剩一个的葡萄橄榄造出来的商品数量还是不变的 
                                (troop_get_inventory_slot, ":item_in_slot", ":craftsman_troop", ":capacity_iterator"), 
                         
                                (lt, ":inputs_taken_from_warehouse", ":inputs_taken_from_market"), 
                                (item_slot_eq, ":enterprise_output", slot_item_primary_raw_material, ":item_in_slot"), 
                                 
                                (val_add, ":inputs_taken_from_warehouse", 1), 
                        (else_try),         
                                (lt, ":2ary_inputs_taken_from_warehouse", ":2ary_inputs_taken_from_market"), 
                                (item_slot_eq, ":enterprise_output", slot_item_secondary_raw_material, ":item_in_slot"), 
                                (val_add, ":2ary_inputs_taken_from_warehouse", 1), 
                        (try_end), 
                   
                    (try_begin),##这一段是计算如果厂房里有东西,那么减少从市场里买入原材料的成本(直接表现为增加收入) 
                                (gt, ":inputs_taken_from_warehouse", 0), 
                                (val_sub, ":inputs_taken_from_market", ":inputs_taken_from_warehouse"), 
                                (store_mul, ":savings_from_warehoused_inputs",        ":price_of_single_input", ":inputs_taken_from_warehouse"), 
                                (val_add, ":net_profit", ":savings_from_warehoused_inputs"), 
                        (try_end),         
                    (try_begin),##如果是二级产品,计算玩家自备原材料影响 
                                (gt, ":2ary_inputs_taken_from_warehouse", 0), 
                                (val_sub, ":2ary_inputs_taken_from_market", ":2ary_inputs_taken_from_warehouse"), 
                                (assign, ":savings_from_warehoused_inputs",        ":price_of_secondary_input"), 
                                (val_add, ":net_profit", ":savings_from_warehoused_inputs"), 
                    (try_end),                                         
                  (try_end), 
                   
                  #If the transaction is for real, and not just a budget check 
                  (try_begin), 
                    (eq, "$g_apply_budget_report_to_gold", 1),##全局变量,如果这次界面是通过simple trigger进入的正式计算 
                        (item_get_slot, ":raw_material", ":enterprise_output", slot_item_primary_raw_material), 
                        (troop_remove_items, ":craftsman_troop", ":raw_material", ":inputs_taken_from_warehouse"),##从带师包里收走原材料 
                        (item_get_slot, ":secondary_raw_material", ":enterprise_output", slot_item_secondary_raw_material), 
                        (troop_remove_items, ":craftsman_troop", ":secondary_raw_material", ":2ary_inputs_taken_from_warehouse"),##从带师包里收走原材料 
                         
                        #Affect prices by intputs added to market  市场里的原材料涨价 
                        (store_sub, ":item_slot_no", ":raw_material", trade_goods_begin), 
                        (val_add, ":item_slot_no", slot_town_trade_good_prices_begin), 
                        (party_get_slot, ":current_index", ":center_no", ":item_slot_no"),                         
                        (store_mul, ":impact_on_price", ":outputs_added_to_market", 15), 
                        (val_add, ":current_index", ":impact_on_price"), 
                        (party_set_slot, ":center_no", ":item_slot_no",":current_index"),                         
                         
                        (try_begin), 
                                (gt, ":2ary_inputs_taken_from_market", 0), 
                                (store_sub, ":item_slot_no", ":secondary_raw_material", trade_goods_begin), 
                                (val_add, ":item_slot_no", slot_town_trade_good_prices_begin), 
                                (party_get_slot, ":current_index", ":center_no", ":item_slot_no"),                         
                                (val_add, ":current_index", 15), 
                                (party_set_slot, ":center_no", ":item_slot_no",":current_index"),                         
                        (try_end), 
                  (try_end),                   
                                     
                  (call_script, "script_get_enterprise_name", ":enterprise_output"), 
                  (str_store_string, s5, reg0), 
                   
          (create_text_overlay, reg1, "str_enterprise_s5_at_s0", 0), 
          (position_set_x, pos1, 900), 
          (position_set_y, pos1, 900), 
          (overlay_set_size, reg1, pos1), 
          (position_set_x, pos1, 25), 
          (position_set_y, pos1, ":cur_y"), 
          (overlay_set_position, reg1, pos1), 
          #如果要修改工厂收入,除了直接改对应物品的slot_item_output_per_run(生产数)和slot_item_input_number(原材料需求数)之外,百分比计算在这里直接动":net_profit"这个局部变量就可以了 
          (assign, reg0, ":net_profit"), 
                   
                  #Enterprise revenue strings  计算工厂的收入文本 
          (try_begin), 
                           (store_faction_of_party, ":faction_no", ":center_no"), 
                    (store_relation, ":relation", ":faction_no", "$players_kingdom"),##没收判定,如果和玩家国家的关系小于0,则会没收所有收入,如果想通过某种方式修改该机制或者让新功能绕过该机制就改这里 
                    (lt, ":relation", 0), 
                    (assign, reg0, 0),  
                    (assign, ":net_profit", 0),  
                   (create_text_overlay, reg1, "str_under_sequestration", tf_right_align|tf_single_line), 
                   (overlay_set_color, reg1, 0xFF0000),                   
           (else_try), 
                   (ge, reg0, 0), ##如果收入高于0,颜色为绿色,否则为红色 
                   (create_text_overlay, reg1, "@{!}{reg0}", tf_right_align|tf_single_line), 
                   (overlay_set_color, reg1, 0x00AA00), 
          (else_try), 
                  (create_text_overlay, reg1, "@{!}{reg0}", tf_right_align|tf_single_line), 
                  (overlay_set_color, reg1, 0xFF0000), 
          (try_end), 
                   
          (val_add, ":all_centers_accumulated_total", ":net_profit"), 
          (val_add, ":net_change", ":net_profit"),                   
                   
          (position_set_x, pos1, 900), 
          (position_set_y, pos1, 900), 
          (overlay_set_size, reg1, pos1), 
          (position_set_x, pos1, 500), 
          (position_set_y, pos1, ":cur_y"), 
          (overlay_set_position, reg1, pos1), 
          (val_sub, ":cur_y", 27), 
        (try_end), 
 
                #Enterprise ends, taxes begin  下面开始计算关税和税收 
        (party_slot_eq, ":center_no", slot_town_lord, "trp_player"), 
        (party_get_slot, ":accumulated_rents", ":center_no", slot_center_accumulated_rents),##获取税收slot 
        (party_get_slot, ":accumulated_tariffs", ":center_no", slot_center_accumulated_tariffs),##获取关税slot  这两个slot平时都是在simple trigger里计算的 
##如果你要对税收和关税加料的话,应该在这里加,因为在这下面加会影响计算总收入,税收改":accumulated_rents",关税改":accumulated_tariffs" 
                 
        (store_add, ":accumulated_total", ":accumulated_rents", ":accumulated_tariffs"),##这个是总收入 
        (val_add, ":all_centers_accumulated_total", ":accumulated_total"), 
        (val_add, ":all_centers_accumulated_taxes_and_rents", ":accumulated_total"), 
        (val_add, ":net_change", ":accumulated_total"), 
        (str_store_party_name, s0, ":center_no"), 
        (create_text_overlay, reg1, "str_rents_from_s0", 0), 
        (position_set_x, pos1, 900), 
        (position_set_y, pos1, 900), 
        (overlay_set_size, reg1, pos1), 
        (position_set_x, pos1, 25), 
        (position_set_y, pos1, ":cur_y"), 
        (overlay_set_position, reg1, pos1), 
        (try_begin),##收入文本变化,没收入就写个无 
          (gt, ":accumulated_rents", 0), 
          (assign, reg0, ":accumulated_rents"), 
          (create_text_overlay, reg1, "@{!}{reg0}", tf_right_align|tf_single_line), 
          (overlay_set_color, reg1, 0x00AA00), 
        (else_try), 
          (create_text_overlay, reg1, "@None", tf_right_align|tf_single_line), 
        (try_end), 
        (position_set_x, pos1, 900), 
        (position_set_y, pos1, 900), 
        (overlay_set_size, reg1, pos1), 
        (position_set_x, pos1, 500), 
        (position_set_y, pos1, ":cur_y"), 
        (overlay_set_position, reg1, pos1), 
        (val_sub, ":cur_y", 27), 
                 
        (try_begin), 
          (is_between, ":center_no", towns_begin, towns_end),##只有城市才计算关税,如果你改了这个设定记得这里也要修改一下 
          (create_text_overlay, reg1, "str_tariffs_from_s0", 0), 
          (position_set_x, pos1, 900), 
          (position_set_y, pos1, 900), 
          (overlay_set_size, reg1, pos1), 
          (position_set_x, pos1, 25), 
          (position_set_y, pos1, ":cur_y"), 
          (overlay_set_position, reg1, pos1), 
          (try_begin), 
            (gt, ":accumulated_tariffs", 0), 
            (assign, reg0, ":accumulated_tariffs"), 
            (create_text_overlay, reg1, "@{!}{reg0}", tf_right_align|tf_single_line), 
            (overlay_set_color, reg1, 0x00AA00), 
          (else_try), 
            (create_text_overlay, reg1, "@None", tf_right_align|tf_single_line), 
          (try_end), 
          (position_set_x, pos1, 900), 
          (position_set_y, pos1, 900), 
          (overlay_set_size, reg1, pos1), 
          (position_set_x, pos1, 500), 
          (position_set_y, pos1, ":cur_y"), 
          (overlay_set_position, reg1, pos1), 
          (val_sub, ":cur_y", 27), 
        (try_end),                                                                 
      (try_end), 
##玩家作为佣兵的收入修改 
      (try_begin), 
        (gt, "$players_kingdom", 0), 
        (neq, "$players_kingdom", "fac_player_supporters_faction"), 
        (neq, "$players_kingdom", "fac_player_faction"), 
        (eq, "$player_has_homage", 0), 
        (str_store_faction_name, s0, "$players_kingdom"), 
        (create_text_overlay, reg1, "str_mercenary_payment_from_s0", 0), 
        (position_set_x, pos1, 900), 
        (position_set_y, pos1, 900), 
        (overlay_set_size, reg1, pos1), 
        (position_set_x, pos1, 25), 
        (position_set_y, pos1, ":cur_y"), 
        (overlay_set_position, reg1, pos1), 
        (call_script, "script_party_calculate_strength", "p_main_party", 0),##这个脚本就是坐镇值,要改坐镇值也需要动这里 
##这里是玩家作为雇佣兵情况下,雇佣兵工资的计算方法,为玩家部队坐镇值的两倍+30块,如果你的mod修改了坐镇值或拉高了属性,可以直接改这里 
        (assign, ":offer_value", reg0), 
        (val_div, ":offer_value", 2), 
        (val_add, ":offer_value", 30), 
        (call_script, "script_round_value", ":offer_value"), 
        (val_add, ":net_change", reg0), 
        (create_text_overlay, reg1, "@{!}{reg0}", tf_right_align|tf_single_line), 
        (position_set_x, pos1, 900), 
        (position_set_y, pos1, 900), 
        (overlay_set_size, reg1, pos1), 
        (overlay_set_color, reg1, 0x00AA00), 
        (position_set_x, pos1, 500), 
        (position_set_y, pos1, ":cur_y"), 
        (overlay_set_position, reg1, pos1), 
        (val_sub, ":cur_y", 27), 
      (try_end), 
       
##无效税收修改,如果你准备进一步修改无效税收,就需要动这里 
      (try_begin), 
        (gt, ":num_owned_center_values_for_tax_efficiency", ":num_centers_needed_for_efficiency_loss"),##如果拥有的领地大于无效税收触发阈值 
        (gt, ":all_centers_accumulated_total", 0), 
        (store_sub, ":ratio_lost", ":num_owned_center_values_for_tax_efficiency", ":num_centers_needed_for_efficiency_loss"),##计算超出的部分 
        (val_mul, ":ratio_lost", ":tax_efficiency_loss_ratio_per_center"),##每超出一个,乘以对应参数 
        (val_min, ":ratio_lost", 65),##最多扣除65%的税收, 
                 
        #(store_mul, ":tax_lost", ":all_centers_accumulated_total", ":ratio_lost"), 
        (store_mul, ":tax_lost", ":all_centers_accumulated_taxes_and_rents", ":ratio_lost"), 
        (val_div, ":tax_lost", 100), 
        (val_sub, ":net_change", ":tax_lost"), 
        (create_text_overlay, reg1, "str_loss_due_to_tax_inefficiency", 0), 
        (position_set_x, pos1, 25), 
        (position_set_y, pos1, ":cur_y"), 
        (overlay_set_position, reg1, pos1), 
        (position_set_x, pos1, 900), 
        (position_set_y, pos1, 900), 
        (overlay_set_size, reg1, pos1), 
        (store_mul, reg0, ":tax_lost", -1), 
        (create_text_overlay, reg1, "@{!}{reg0}", tf_right_align|tf_single_line), 
        (position_set_x, pos1, 900), 
        (position_set_y, pos1, 900), 
        (overlay_set_size, reg1, pos1), 
        (overlay_set_color, reg1, 0xFF0000), 
        (position_set_x, pos1, 500), 
        (position_set_y, pos1, ":cur_y"), 
        (overlay_set_position, reg1, pos1), 
        (val_sub, ":cur_y", 27), 
      (try_end), 
 
      (try_for_parties, ":party_no"),##计算每个部队工资,和之前吐槽的一样,如果你修改了机制,记得在这里加范围 
        (assign, ":garrison_troop", 0),##默认不会计算工资 
        (try_begin), 
          (this_or_next|party_slot_eq, ":party_no", slot_party_type, spt_town),##如果是城市、城堡,计算工资 
          (party_slot_eq, ":party_no", slot_party_type, spt_castle), 
          (party_slot_eq, ":party_no", slot_town_lord, "trp_player"), 
          (assign, ":garrison_troop", 1), 
        (else_try),   
          (this_or_next|party_slot_eq, ":party_no", slot_party_type, spt_town),##如果是城市、城堡而且是玩家自立阵营的 
          (party_slot_eq, ":party_no", slot_party_type, spt_castle), 
          (neg|party_slot_ge, ":party_no", slot_town_lord, 1), #unassigned 
          (store_faction_of_party, ":center_faction", ":party_no"), 
          (eq, ":center_faction", "fac_player_supporters_faction"), 
          (faction_slot_eq, "fac_player_supporters_faction", slot_faction_leader, "trp_player"),##这里提醒一下,实际上玩家给“复国者”打工的时候也是“玩家自立阵营”,所以判断玩家是不是君主还需要过一遍slot_faction_leader 
          (assign, ":garrison_troop", 1),                           
        (try_end), 
                 
        (this_or_next|eq, ":party_no", "p_main_party"), 
        (eq, ":garrison_troop", 1),##如果是玩家本队或需要计算工资的情况下,开始计算 
        (assign, ":total_wage", 0), 
        (party_get_num_companion_stacks, ":num_stacks", ":party_no"), 
        (try_for_range, ":i_stack", 0, ":num_stacks"), 
          (party_stack_get_troop_id, ":stack_troop", ":party_no", ":i_stack"), 
          (party_stack_get_size, ":stack_size", ":party_no", ":i_stack"), 
          (call_script, "script_game_get_troop_wage", ":stack_troop", ":party_no"),##挨stack顺序过工资结算脚本 
          (assign, ":cur_wage", reg0), 
          (val_mul, ":cur_wage", ":stack_size"), 
##如果准备根据特定情况修改兵种工资的话,修改这里(比如xx兵种在自立情况下作为守军时价格降低) 
          (val_add, ":total_wage", ":cur_wage"), 
        (try_end), 
        (try_begin), 
          (eq, ":garrison_troop", 1),##如果是需要计算工资的情况下,工资减半,也就是说如果你要计算巡逻队的情况下可以考虑把上面的eq改成ge,然后这里用一堆eq判断情况 
          (val_div, ":total_wage", 2), #Half payment for garrisons 
        (else_try), 
          (eq, ":party_no", "p_main_party"),##玩家部队的家里蹲奖励,在simple trigger里搜索g_cur_week_half_daily_wage_payments全局变量,可以看到是连续在城里蹲着的情况下,每天6小时判断一次现在蹲没蹲,如果是刚进去蹲的话就是x+6小时算今天蹲过,一直蹲就是一次成功,让本周工资降低1/14,每周蹲满七天玩家部队工资也是半价 
          (store_sub, ":total_payment_ratio", 14, "$g_cur_week_half_daily_wage_payments"), #between 0 and 7 
          (val_mul, ":total_wage", ":total_payment_ratio"), 
          (val_div, ":total_wage", 14), 
        (try_end), 
##如果想根据条件改变最终部队工资的话,建议在这里修改":total_wage" 
 
##        (gt, ":total_wage", 0), 
        (val_mul, ":total_wage", -1), 
        (val_add, ":net_change", ":total_wage"), 
        (str_store_party_name, s0, ":party_no"), 
        (try_begin), 
          (eq, ":party_no", "p_main_party"), 
          (str_store_string, s0, "str_s0s_party"), 
        (try_end), 
        (create_text_overlay, reg1, "str_wages_for_s0", 0), 
        (position_set_x, pos1, 900), 
        (position_set_y, pos1, 900), 
        (overlay_set_size, reg1, pos1), 
        (position_set_x, pos1, 25), 
        (position_set_y, pos1, ":cur_y"), 
        (overlay_set_position, reg1, pos1), 
        (try_begin), 
          (lt, ":total_wage", 0), 
          (assign, reg0, ":total_wage"), 
          (create_text_overlay, reg1, "@{!}{reg0}", tf_right_align|tf_single_line), 
          (overlay_set_color, reg1, 0xFF0000), 
        (else_try), 
          (create_text_overlay, reg1, "@None", tf_right_align|tf_single_line), 
        (try_end), 
        (position_set_x, pos1, 900), 
        (position_set_y, pos1, 900), 
        (overlay_set_size, reg1, pos1), 
        (position_set_x, pos1, 500), 
        (position_set_y, pos1, ":cur_y"), 
        (overlay_set_position, reg1, pos1), 
        (val_sub, ":cur_y", 27), 
      (try_end), 
##欠债判定, "$g_player_debt_to_party_members"这个全局变量是之前欠的债务 
      (try_begin), 
        (gt, "$g_player_debt_to_party_members", 0), 
        (val_sub, ":net_change", "$g_player_debt_to_party_members"), 
        (create_text_overlay, reg1, "str_earlier_debts", 0), 
        (position_set_x, pos1, 900), 
        (position_set_y, pos1, 900), 
        (overlay_set_size, reg1, pos1), 
        (position_set_x, pos1, 25), 
        (position_set_y, pos1, ":cur_y"), 
        (overlay_set_position, reg1, pos1), 
        (store_mul, reg0, "$g_player_debt_to_party_members", -1), 
        (create_text_overlay, reg1, "@{!}{reg0}", tf_right_align|tf_single_line), 
        (position_set_x, pos1, 900), 
        (position_set_y, pos1, 900), 
        (overlay_set_size, reg1, pos1), 
        (overlay_set_color, reg1, 0xFF0000), 
        (position_set_x, pos1, 500), 
        (position_set_y, pos1, ":cur_y"), 
        (overlay_set_position, reg1, pos1), 
        (val_sub, ":cur_y", 27), 
      (try_end), 
      (create_mesh_overlay, reg1, "mesh_white_plane"), 
      (overlay_set_color, reg1, 0x000000), 
      (position_set_x, pos1, 24000), 
      (position_set_y, pos1, 50), 
      (overlay_set_size, reg1, pos1), 
      (position_set_x, pos1, 25), 
      (store_add, ":line_y", ":cur_y", 25), 
      (position_set_y, pos1, ":line_y"), 
      (overlay_set_position, reg1, pos1), 
      (create_text_overlay, reg1, "str_net_change", 0), 
      (position_set_x, pos1, 900), 
      (position_set_y, pos1, 900), 
      (overlay_set_size, reg1, pos1), 
      (position_set_x, pos1, 25), 
      (position_set_y, pos1, ":cur_y"), 
      (overlay_set_position, reg1, pos1), 
      (assign, reg0, ":net_change"), 
      (create_text_overlay, reg1, "@{!}{reg0}", tf_right_align|tf_single_line), 
      (position_set_x, pos1, 900), 
      (position_set_y, pos1, 900), 
      (overlay_set_size, reg1, pos1), 
      (try_begin), 
        (gt, reg0, 0), 
        (overlay_set_color, reg1, 0x00AA00), 
      (else_try), 
        (lt, reg0, 0), 
        (overlay_set_color, reg1, 0xFF0000), 
      (try_end), 
      (position_set_x, pos1, 500), 
      (position_set_y, pos1, ":cur_y"), 
      (overlay_set_position, reg1, pos1), 
      (val_sub, ":cur_y", 27), 
      (create_text_overlay, reg1, "str_earlier_wealth", 0), 
      (position_set_x, pos1, 900), 
      (position_set_y, pos1, 900), 
      (overlay_set_size, reg1, pos1), 
      (position_set_x, pos1, 25), 
      (position_set_y, pos1, ":cur_y"), 
      (overlay_set_position, reg1, pos1), 
      (store_troop_gold, ":player_wealth", "trp_player"), 
      (assign, reg0, ":player_wealth"), 
      (create_text_overlay, reg1, "@{!}{reg0}", tf_right_align|tf_single_line), 
      (position_set_x, pos1, 900), 
      (position_set_y, pos1, 900), 
      (overlay_set_size, reg1, pos1), 
      (position_set_x, pos1, 500), 
      (position_set_y, pos1, ":cur_y"), 
      (overlay_set_position, reg1, pos1), 
      (val_sub, ":cur_y", 27), 
      (val_mul, ":net_change", -1), 
      (try_begin), 
        (ge, ":player_wealth", ":net_change"), 
        (assign, ":player_wealth_dif", ":net_change"), 
        (assign, ":player_new_debt_to_party_members", 0), 
      (else_try), 
        (assign, ":player_wealth_dif", ":player_wealth"), 
        (store_sub, ":player_new_debt_to_party_members", ":net_change", ":player_wealth"), 
      (try_end), 
      (create_text_overlay, reg1, "str_new_wealth", 0), 
      (position_set_x, pos1, 900), 
      (position_set_y, pos1, 900), 
      (overlay_set_size, reg1, pos1), 
      (position_set_x, pos1, 25), 
      (position_set_y, pos1, ":cur_y"), 
      (overlay_set_position, reg1, pos1), 
      (store_sub, reg0, ":player_wealth", ":player_wealth_dif"), 
      (create_text_overlay, reg1, "@{!}{reg0}", tf_right_align|tf_single_line), 
      (position_set_x, pos1, 900), 
      (position_set_y, pos1, 900), 
      (overlay_set_size, reg1, pos1), 
      (position_set_x, pos1, 500), 
      (position_set_y, pos1, ":cur_y"), 
      (overlay_set_position, reg1, pos1), 
      (val_sub, ":cur_y", 27), 
 
      (try_begin),##玩家有债务的情况下,修改负债文本 
        (gt, ":player_new_debt_to_party_members", 0), 
        (create_text_overlay, reg1, "str_new_debts", 0), 
        (position_set_x, pos1, 900), 
        (position_set_y, pos1, 900), 
        (overlay_set_size, reg1, pos1), 
        (position_set_x, pos1, 25), 
        (position_set_y, pos1, ":cur_y"), 
        (overlay_set_position, reg1, pos1), 
        (assign, reg0, ":player_new_debt_to_party_members"), 
        (create_text_overlay, reg1, "@{!}{reg0}", tf_right_align|tf_single_line), 
        (position_set_x, pos1, 900), 
        (position_set_y, pos1, 900), 
        (overlay_set_size, reg1, pos1), 
        (position_set_x, pos1, 500), 
        (position_set_y, pos1, ":cur_y"), 
        (overlay_set_position, reg1, pos1), 
        (val_sub, ":cur_y", 27), 
        (neq, "$g_apply_budget_report_to_gold", 0), 
        (call_script, "script_objectionable_action", tmt_egalitarian, "str_men_unpaid"), 
      (try_end), 
 
      (set_container_overlay, -1), 
 
      (create_button_overlay, "$g_presentation_obj_budget_report_1", "@Continue..."), 
      (position_set_x, pos1, 225), 
      (position_set_y, pos1, 60), 
      (overlay_set_position, "$g_presentation_obj_budget_report_1", pos1), 
 
      (try_begin),##全局变量,如果这次界面是通过simple trigger进入的正式计算 
        (eq, "$g_apply_budget_report_to_gold", 1), 
        (assign, "$g_player_debt_to_party_members", ":player_new_debt_to_party_members"),##g_player_debt_to_party_members这个全局变量代表负债,负债判定可以通过这个全局变量判断(想搞高丽贷也可以在触发器里加这个值) 
        (try_begin), 
          (gt, ":player_wealth_dif", 0), 
          (troop_remove_gold, "trp_player", ":player_wealth_dif"), 
        (else_try), 
          (val_mul, ":player_wealth_dif", -1), 
          (troop_add_gold, "trp_player", ":player_wealth_dif"), 
        (try_end), 
        (try_for_range, ":center_no", centers_begin, centers_end), 
          (party_slot_eq, ":center_no", slot_town_lord, "trp_player"), 
          (party_set_slot, ":center_no", slot_center_accumulated_rents, 0), 
          (party_set_slot, ":center_no", slot_center_accumulated_tariffs, 0), 
        (try_end), 
        (assign, "$g_cur_week_half_daily_wage_payments", 0),#重置每周半价计算 
      (try_end), 
      ]), 
    (ti_on_presentation_event_state_change, 
     [(store_trigger_param_1, ":object"), 
      (try_begin), 
        (eq, ":object", "$g_presentation_obj_budget_report_1"), 
        (presentation_set_duration, 0), 
      (try_end), 
      ]), 
    ]), 
 
 | 
  
 
 
 
 
 
 |