Ok, thank you:)
By the way - I wonder how can I completely disable cavalry on the map? I found out that adding flag sf_no_horses simply disables horses for players, but cavalry is available and bots ride horses.
(try_for_range, ":cur_ai_troop", multiplayer_ai_troops_begin, multiplayer_ai_troops_end),
(store_troop_faction, ":ai_troop_faction", ":cur_ai_troop"),
(eq, ":ai_troop_faction", ":team_faction"),
(val_add, ":num_ai_troops", 1),
(try_end),
For Cavalry I think use the mm_spawn_restrictions to block player cav and if bots still play as cav edit this part of multiplayer_server_spawn_bots in mission templates to to look once for 'mm_spawn_restriction = 1 (no cav)' and therefore inf only units and second for 'Cav allowed' which below code is kept same (you might be able to use $g_horses_are_avaliable instead not sure)Code(try_for_range, ":cur_ai_troop", multiplayer_ai_troops_begin, multiplayer_ai_troops_end),
(store_troop_faction, ":ai_troop_faction", ":cur_ai_troop"),
(eq, ":ai_troop_faction", ":team_faction"),
(val_add, ":num_ai_troops", 1),
(try_end),
(try_begin),
CURRENT MAP IS INFANTRY_MAP_1
(try_for_range, ":cur_ai_troop", LIST OF INFANTRY UINITS),
(store_troop_faction, ":ai_troop_faction", ":cur_ai_troop"),
(eq, ":ai_troop_faction", ":team_faction"),
(val_add, ":num_ai_troops", 1),
(try_end),
(else_try),
(try_for_range, ":cur_ai_troop", multiplayer_ai_troops_begin, multiplayer_ai_troops_end),
(store_troop_faction, ":ai_troop_faction", ":cur_ai_troop"),
(eq, ":ai_troop_faction", ":team_faction"),
(val_add, ":num_ai_troops", 1),
(try_end),
Code(try_begin),
CURRENT MAP IS INFANTRY_MAP_1
(try_for_range, ":cur_ai_troop", LIST OF INFANTRY UINITS),
(store_troop_faction, ":ai_troop_faction", ":cur_ai_troop"),
(eq, ":ai_troop_faction", ":team_faction"),
(val_add, ":num_ai_troops", 1),
(else_try),
(try_for_range, ":cur_ai_troop", multiplayer_ai_troops_begin, multiplayer_ai_troops_end),
(store_troop_faction, ":ai_troop_faction", ":cur_ai_troop"),
(eq, ":ai_troop_faction", ":team_faction"),
(val_add, ":num_ai_troops", 1),
(try_end),
(call_script, "script_multiplayer_find_bot_troop_and_group_for_spawn", ":selected_team", ":look_only_actives"),
(assign, ":selected_troop", reg0),
(assign, ":selected_group", reg1),
(team_get_faction, ":team_faction", ":selected_team"),
(assign, ":num_ai_troops", 0),
(store_current_scene, ":cur_scene"), #my new script
(try_begin),
(eq, ":cur_scene", "scn_assault_on_malakoff_test"), #if map is my new map
(eq, "$g_multiplayer_game_type", multiplayer_game_type_team_deathmatch),#and gamemode is deathmatch
(try_for_range, ":cur_ai_troop", multiplayer_ai_troops_begin, multiplayer_ai_troops_end),#troops which can be spawned
(neg|tf_mounted, ":cur_ai_troop"), #but not troops with flag "tf_mounted"
(store_troop_faction, ":ai_troop_faction", ":cur_ai_troop"),
(eq, ":ai_troop_faction", ":team_faction"),
(val_add, ":num_ai_troops", 1),
(try_end),
(else_try),
(try_for_range, ":cur_ai_troop", multiplayer_ai_troops_begin, multiplayer_ai_troops_end), [color=green]#original script[/color]
(store_troop_faction, ":ai_troop_faction", ":cur_ai_troop"),
(eq, ":ai_troop_faction", ":team_faction"),
(val_add, ":num_ai_troops", 1),
(try_end),
(call_script, "script_multiplayer_find_bot_troop_and_group_for_spawn", ":selected_team", ":look_only_actives"),
(assign, ":selected_troop", reg0),
(assign, ":selected_group", reg1),
(team_get_faction, ":team_faction", ":selected_team"),
(assign, ":num_ai_troops", 0),
(store_current_scene, ":cur_scene"),
(try_begin),
(eq, ":cur_scene", "scn_assault_on_malakoff_test"),
(eq, "$g_multiplayer_game_type", multiplayer_game_type_team_deathmatch),
(try_for_range, ":cur_ai_troop", multiplayer_ai_troops_begin, multiplayer_ai_troops_end),
(neg|troop_select_type_cavalry, ":cur_ai_troop"), #exclude troop type cavalry
(store_troop_faction, ":ai_troop_faction", ":cur_ai_troop"),
(eq, ":ai_troop_faction", ":team_faction"),
(val_add, ":num_ai_troops", 1),
(try_end),
(else_try),
(try_for_range, ":cur_ai_troop", multiplayer_ai_troops_begin, multiplayer_ai_troops_end),
(store_troop_faction, ":ai_troop_faction", ":cur_ai_troop"),
(eq, ":ai_troop_faction", ":team_faction"),
(val_add, ":num_ai_troops", 1),
(try_end),
multiplayer_ai_troops_begin = "trp_british_infantry_ai"
multiplayer_ai_troops_end = multiplayer_troops_begin
multiplayer_ai_british_infantry_begin = "trp_british_infantry_ai"
multiplayer_ai_british_infantry_end = "trp_british_hussar_ai"
multiplayer_ai_french_infantry_begin = "trp_french_infantry_ai"
multiplayer_ai_french_infantry_end = "trp_french_hussar_ai"
multiplayer_ai_prussian_infantry_begin = "trp_prussian_infantry_ai"
multiplayer_ai_prussian_infantry_end = "trp_prussian_dragoon_ai"
multiplayer_ai_russian_infantry_begin = "trp_russian_foot_guard_ai"
multiplayer_ai_russian_infantry_end = "trp_russian_hussar_ai"
multiplayer_ai_austrian_infantry_begin = "trp_austrian_infantry_ai"
multiplayer_ai_austrian_infantry_end = "trp_austrian_hussar_ai"
multiplayer_ai_rhine_infantry_begin = "trp_rhine_infantry_bavaria_ai"
multiplayer_ai_rhine_infantry_end = "trp_rhine_mounted_jaeger_ai"
(call_script, "script_multiplayer_find_bot_troop_and_group_for_spawn", ":selected_team", ":look_only_actives"),
(assign, ":selected_troop", reg0),
(assign, ":selected_group", reg1),
(team_get_faction, ":team_faction", ":selected_team"),
(assign, ":num_ai_troops", 0),
(store_current_scene, ":cur_scene"),
(try_begin),
(eq, ":cur_scene", "scn_assault_on_malakoff_test"),
(eq, "$g_multiplayer_game_type", multiplayer_game_type_team_deathmatch),
(try_for_range, ":cur_ai_troop", multiplayer_ai_british_infantry_begin, multiplayer_ai_british_infantry_end),
(try_for_range, ":cur_ai_troop", multiplayer_ai_french_infantry_begin, multiplayer_ai_french_infantry_end),
(try_for_range, ":cur_ai_troop", multiplayer_ai_russian_infantry_begin, multiplayer_ai_russian_infantry_end),
(try_for_range, ":cur_ai_troop", multiplayer_ai_prussian_infantry_begin, multiplayer_ai_prussian_infantry_end),
(try_for_range, ":cur_ai_troop", multiplayer_ai_austrian_infantry_begin, multiplayer_ai_austrian_infantry_end),
(try_for_range, ":cur_ai_troop", multiplayer_ai_rhine_infantry_begin, multiplayer_ai_rhine_infantry_end),
(store_troop_faction, ":ai_troop_faction", ":cur_ai_troop"),
(eq, ":ai_troop_faction", ":team_faction"),
(val_add, ":num_ai_troops", 1),
(try_end),
(else_try),
(try_for_range, ":cur_ai_troop", multiplayer_ai_troops_begin, multiplayer_ai_troops_end),
(store_troop_faction, ":ai_troop_faction", ":cur_ai_troop"),
(eq, ":ai_troop_faction", ":team_faction"),
(val_add, ":num_ai_troops", 1),
(try_end),
# script_multiplayer_find_bot_troop_and_group_for_spawn
# Input: arg1 = team_no
# Output: reg0 = troop_id, reg1 = group_id
("multiplayer_find_bot_troop_and_group_for_spawn",
[
(store_script_param, ":team_no", 1),
(store_script_param, ":look_only_actives", 2),
(call_script, "script_multiplayer_find_player_leader_for_bot", ":team_no", ":look_only_actives"),
(assign, ":leader_player", reg0),
(assign, ":available_troops_in_faction", 0),
(assign, ":available_troops_to_spawn", 0),
(team_get_faction, ":team_faction_no", ":team_no"),
(store_current_scene, ":cur_scene"),
(try_begin),
(eq, ":cur_scene", "scn_assault_on_malakoff_test"), #place here list of maps where you want infantry-only combat.
(eq, "$g_multiplayer_game_type", multiplayer_game_type_team_deathmatch), #place here names of gamemodes
(try_for_range, ":troop_no", multiplayer_ai_troops_begin, multiplayer_ai_troops_end),
(neg|tf_mounted, ":troop_no"), #condition - no mounted units
(store_troop_faction, ":troop_faction", ":troop_no"),
(eq, ":troop_faction", ":team_faction_no"),
(store_add, ":wanted_slot", slot_player_bot_type_1_wanted, ":available_troops_in_faction"),
(val_add, ":available_troops_in_faction", 1),
(try_begin),
(this_or_next|lt, ":leader_player", 0),
(player_slot_ge, ":leader_player", ":wanted_slot", 1),
(val_add, ":available_troops_to_spawn", 1),
(try_end),
(try_end),
(assign, ":available_troops_in_faction", 0),
(store_random_in_range, ":random_troop_index", 0, ":available_troops_to_spawn"),
(assign, ":end_cond", multiplayer_ai_troops_end),
(try_for_range, ":troop_no", multiplayer_ai_troops_begin, ":end_cond"),
(store_troop_faction, ":troop_faction", ":troop_no"),
(eq, ":troop_faction", ":team_faction_no"),
(store_add, ":wanted_slot", slot_player_bot_type_1_wanted, ":available_troops_in_faction"),
(val_add, ":available_troops_in_faction", 1),
(this_or_next|lt, ":leader_player", 0),
(player_slot_ge, ":leader_player", ":wanted_slot", 1),
(val_sub, ":random_troop_index", 1),
(lt, ":random_troop_index", 0),
(assign, ":end_cond", 0),
(assign, ":selected_troop", ":troop_no"),
(try_end),
(assign, reg0, ":selected_troop"),
(assign, reg1, ":leader_player"),
(else_try),
(try_for_range, ":troop_no", multiplayer_ai_troops_begin, multiplayer_ai_troops_end),
(store_troop_faction, ":troop_faction", ":troop_no"),
(eq, ":troop_faction", ":team_faction_no"),
(store_add, ":wanted_slot", slot_player_bot_type_1_wanted, ":available_troops_in_faction"),
(val_add, ":available_troops_in_faction", 1),
(try_begin),
(this_or_next|lt, ":leader_player", 0),
(player_slot_ge, ":leader_player", ":wanted_slot", 1),
(val_add, ":available_troops_to_spawn", 1),
(try_end),
(try_end),
(assign, ":available_troops_in_faction", 0),
(store_random_in_range, ":random_troop_index", 0, ":available_troops_to_spawn"),
(assign, ":end_cond", multiplayer_ai_troops_end),
(try_for_range, ":troop_no", multiplayer_ai_troops_begin, ":end_cond"),
(store_troop_faction, ":troop_faction", ":troop_no"),
(eq, ":troop_faction", ":team_faction_no"),
(store_add, ":wanted_slot", slot_player_bot_type_1_wanted, ":available_troops_in_faction"),
(val_add, ":available_troops_in_faction", 1),
(this_or_next|lt, ":leader_player", 0),
(player_slot_ge, ":leader_player", ":wanted_slot", 1),
(val_sub, ":random_troop_index", 1),
(lt, ":random_troop_index", 0),
(assign, ":end_cond", 0),
(assign, ":selected_troop", ":troop_no"),
(try_end),
(assign, reg0, ":selected_troop"),
(assign, reg1, ":leader_player"),
(try_end),
]),