本帖最后由 黑暗路西法 于 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),
]),
]),
|
|