战团由于引擎局限,玩家会被ai挡住,砍2 则会让路
以下受@武安apk43 的mod启发写的小功能,py代码实现
module_misson_templates.py中开头定义
添加
evade_ai = (
0.5, 0, 0,
[
(set_fixed_point_multiplier, 100),
(get_player_agent_no,":agent"),
(agent_get_speed, pos14, ":agent"),
(position_get_y, ":speed", pos14),
(position_get_x, ":speed_x", pos14),
(val_max, ":speed", ":speed_x"),
(lt,":speed",150),
(agent_get_animation,":ani",":agent",0),
# (assign,reg1,":ani"),
# (display_message,"@{reg1}"),
(this_or_next|eq,":ani",26),
(this_or_next|eq,":ani",27),
(this_or_next|eq,":ani",63),
(this_or_next|eq,":ani",69),
(this_or_next|eq,":ani",33),
(this_or_next|eq,":ani",39),
(this_or_next|eq,":ani",93),
(this_or_next|eq,":ani",96),
(this_or_next|eq,":ani",81),
(this_or_next|eq,":ani",75),
(eq,":ani",45),
(agent_get_position,pos15,":agent"),
(position_get_x, ":x", pos15),
(position_get_y, ":y", pos15),
(position_get_z, ":z", pos15),
(try_for_agents,":agent_no", pos15, 50),
(agent_is_alive,":agent_no"),
(agent_is_human,":agent_no"),
(agent_is_ally,":agent_no"),
(agent_get_combat_state, ":state", ":agent_no"),
(neq, ":state", cs_guard),
(neq, ":state", cs_swing),
(agent_get_position,pos16,":agent_no"),
(position_get_x, ":tx", pos16),
(position_get_y, ":ty", pos16),
(position_set_z_to_ground_level, pos16),
(position_get_z, ":tz", pos16),
(val_sub,":tx",":x"),
(val_sub,":ty",":y"),
(val_sub,":z",":tz"),
(val_abs,":z"),
(try_begin),
(lt,":z",50),
(val_div,":tx",5),
(val_div,":ty",5),
(position_move_x,pos16,":tx",1),
(position_move_y,pos16,":ty",1),
# (agent_force_rethink,":agent"),
# (agent_set_scripted_destination, ":agent_no", pos16, 1),
(agent_set_position, ":agent_no", pos16, 1, 0),
# (agent_set_animation,":agent_no",27,1),
(try_end),
(try_end),
],[
])
在你需要的战场触发器中添加:
evade_ai,
这里以野战(lead_charge)为例
(
"lead_charge",mtf_battle_mode|mtf_synch_inventory,charge,
"You lead your men to battle.",
[
(1,mtef_defenders|mtef_team_0,0,aif_start_alarmed,12,[]),
(0,mtef_defenders|mtef_team_0,0,aif_start_alarmed,0,[]),
(4,mtef_attackers|mtef_team_1,0,aif_start_alarmed,12,[]),
(4,mtef_attackers|mtef_team_1,0,aif_start_alarmed,0,[]),
],
[
(ti_on_agent_spawn, 0, 0, [],
[
(store_trigger_param_1, ":agent_no"),
(call_script, "script_agent_reassign_team", ":agent_no"),
(assign, ":initial_courage_score", 5000),
............
evade_ai, #新增代码
common_battle_order_panel,
common_battle_order_panel_tick,
],
),
另外这个功能不太自然,希望汽油们能给点建议优化一下
|