Хочу поднять эту давно забытую тему для тех кто хочет поиграть в этот забавный мод!
Во время битвы нажатием кнопок (юниты - "<" ">" и герои - "N" "M" )выбирается любой юнит на карте, будь то враг, или союзник, и нажатием клавишы "O" якобы переселяемся в данного персонажа и начинаем доигрывать за него.
Конечно это все прикольно, но начинаетя надоедать , когда воюешь против своих или себя!
Поэтому я долго копаясь и изучая данный мод нашел на него модульку, и изменил некоторые моменты
1. Выбирать можно только после убийства очень тяжелого ранения своего перса
2. Выбирать можно только свой отряд.
3. Убрал лишние кнопки на геров и юнитов , сделал общий выбор
4. Этот код можно внедрить в любой мод Warbanda
Добавлено: 09 Июля, 2012, 22:42
1. открываем module_mission_templates.py
и после строчки
pilgrim_disguise = [itm_pilgrim_hood,itm_pilgrim_disguise,itm_practice_staff, itm_throwing_daggers]
af_castle_lord = af_override_horse | af_override_weapons| af_require_civilian
добавляем это
##############################################################################
###############################################################################
## ##
## Dmod Changes Begin ##
## ##
###############################################################################
###############################################################################
dmod_valkyrie_follow_troop = (0, 0, 0,[(eq, "$dmod_move_camera", 2), (main_hero_fallen),
(agent_get_position, 1, "$dmod_current_agent"),
(get_player_agent_no, ":player_agent"),
(agent_set_position, ":player_agent", 1),
],[])
dmod_valkyrie_move_camera = (0, 2, 2.1,[(eq, "$dmod_move_camera", 1), (main_hero_fallen),
(agent_get_position, 2, "$dmod_current_agent"),
(position_move_z, 2, 300),
(mission_cam_set_mode,1),
(mission_cam_set_position, 2),
(position_move_z, 2, 600),
(mission_cam_animate_to_position, 2, 1000),
],[
(mission_cam_set_mode, 0, 1000, 1),
(assign, "$dmod_move_camera", 2),
])
dmod_valkyrie_help = (0, 0, 0,[(key_clicked, key_h), (main_hero_fallen),
(try_begin),
(eq, "$dmod_help_message_active", 0),
(assign, "$dmod_help_message_active", 1),
(tutorial_message, "@DMod Valkyrie Mode Controls ^^H : Toggle Help Text ^M : Select Next Troop ^N : Select Previous Troop ^> : Select Next Hero ^< : Select Previous Hero ^O : Possess or Abandon Avatar"),
(else_try),
(tutorial_message, "@ "),
(assign, "$dmod_help_message_active", 0),
(try_end),
], [])
dmod_valkyrie_troop_selecting_n = (0, 0, 0,[(key_clicked, key_n), (main_hero_fallen),
(call_script, "script_dmod_cycle_backwards", 1),
], [])
dmod_valkyrie_troop_selecting_p = (0, 0, 0,[(key_clicked, key_m), (main_hero_fallen),
(call_script, "script_dmod_cycle_forwards", 1),
], [])
dmod_valkyrie_hero_selecting_n = (0, 0, 0,[(key_clicked, key_comma), (main_hero_fallen),
(call_script, "script_dmod_cycle_backwards", 0),
], [])
dmod_valkyrie_hero_selecting_p = (0, 0, 0,[(key_clicked, key_period), (main_hero_fallen),
(call_script, "script_dmod_cycle_forwards", 0),
], [])
dmod_valkyrie_change_avatar = (0, 0, 0,[(key_clicked, key_o),(neq, "$dmod_move_camera", 1), (main_hero_fallen),
(assign, "$dmod_question", 2),
(try_begin),
(eq, "$dmod_current_agent", -1),
(question_box,"@Abandon this troop?", "@Yes", "@No"),
(else_try),
(question_box,"@Possess this troop?", "@Yes", "@No"),
(try_end),
], [])
###############################################################################
###############################################################################
## ##
## Dmod Changes End ##
## ##
###############################################################################
###############################################################################
2. далее вот этот кусок кода
dmod_valkyrie_follow_troop,
dmod_valkyrie_move_camera,
dmod_valkyrie_help,
dmod_valkyrie_troop_selecting_n,
dmod_valkyrie_troop_selecting_p,
dmod_valkyrie_hero_selecting_n,
dmod_valkyrie_hero_selecting_p,
dmod_valkyrie_change_avatar,
добавляем в каждом темпланте("town_center", "village_center","back_alley_revolt"... и так далее везде где стоит = mtf_battle_mode =)
например:
(
"back_alley_revolt",[color=green]mtf_battle_mode[/color],charge,
"You lead your men to battle.",
[(0,mtef_team_0|mtef_use_exact_number,af_override_horse|af_override_weapons|af_override_head,aif_start_alarmed,4,[itm_quarter_staff]),
(3,mtef_visitor_source|mtef_team_1,af_override_horse,aif_start_alarmed,1,[]),
],
[
sp_shield_bash_1,
sp_shield_bash_2,
sp_shield_bash_3,
[color=green]dmod_valkyrie_follow_troop,
dmod_valkyrie_move_camera,
dmod_valkyrie_help,
dmod_valkyrie_troop_selecting_n,
dmod_valkyrie_troop_selecting_p,
dmod_valkyrie_hero_selecting_n,
dmod_valkyrie_hero_selecting_p,
dmod_valkyrie_change_avatar,[/color]
common_inventory_not_available,
common_battle_init_banner,
(ti_tab_pressed, 0, 0, [],
.....
_______________
Потом добавляем это кусок темплата в самый конец(это лишний мусор, но без него не запуститься это т механизм кода
("dmod_lead_charge_v",mtf_battle_mode,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,[]),
],[
#Testing
# (0, 0, 0,[(key_clicked, key_j),
# (call_script, "script_dmod_valkyrie_testing"),
# ], []),
#Before Start
(ti_before_mission_start, 0, 0, [],[
#Vanilla
(call_script, "script_place_player_banner_near_inventory_bms"),
(assign,"$battle_won",0),
# (assign,"$g_presentation_battle_active", 0),
(assign,"$defender_reinforcement_stage",0),
(assign,"$attacker_reinforcement_stage",0),
#DMod
(assign, "$dmod_help_message_active", 0),
(assign, "$dmod_current_avatar_troop", "trp_player"),
(assign, "$dmod_current_avatar_team", -1),
(assign, "$dmod_current_agent", -1),
(assign, "$dmod_move_camera", -1),
(assign, "$dmod_spawn_normal", 1),
(assign, "$dmod_spawn_team", 0),
(assign, "$dmod_original_player_team", -1),
(assign, "$dmod_new_leader", 0),
(assign, "$dmod_team_0_leader", -2),
(assign, "$dmod_team_1_leader", -2),
(assign, "$dmod_team_2_leader", -2),
(assign, "$dmod_team_3_leader", -2),
(assign, "$dmod_team_4_leader", -2),
(call_script, "script_dmod_clone_inventory", "trp_dmod_player_dummy", "trp_player", 9),
#Team 1: 0, 2
#Team 2: 1, 3
#Free Agent: 4
# -1 for enemy, 1 for friend, 0 for neutral
(team_set_relation, 0, 1, -1),
(team_set_relation, 0, 2, 1),
(team_set_relation, 0, 3, -1),
(team_set_relation, 0, 4, 0),
(team_set_relation, 1, 2, -1),
(team_set_relation, 1, 3, 1),
(team_set_relation, 1, 4, 0),
(team_set_relation, 2, 3, -1),
(team_set_relation, 2, 4, 0),
(team_set_relation, 3, 4, 0),
]),
#ti_once
(0, 0, ti_once, [], [
(call_script, "script_place_player_banner_near_inventory"),
(call_script, "script_combat_music_set_situation_with_culture"),
]),
#Common Vanilla
common_music_situation_update,
common_battle_check_friendly_kills,
common_battle_order_panel,
common_battle_order_panel_tick,
#Common Dmod
dmod_valkyrie_follow_troop,
dmod_valkyrie_move_camera,
dmod_valkyrie_help,
dmod_valkyrie_troop_selecting_n,
dmod_valkyrie_troop_selecting_p,
dmod_valkyrie_hero_selecting_n,
dmod_valkyrie_hero_selecting_p,
dmod_valkyrie_change_avatar,
#Inventory Message
(ti_inventory_key_pressed, 0, 0, [],[(display_message,"str_use_baggage_for_inventory")]),
#Battle Over Messages
(10, 0, 0, [],[(eq,"$battle_won",1),(display_message,"@The battle is over; {playername} is victorious.")]),
(10, 0, 0, [],[(eq,"$battle_won",2),(display_message,"@The battle is over; {playername} has been defeated.")]),
#Tab
(ti_tab_pressed, 0, 0, [],[
(try_begin),
(eq, "$battle_won", 0),
(assign, "$dmod_question", 1),
(question_box,"@Retreat from this battle?", "@Yes", "@No"),
(else_try),
(call_script, "script_dmod_clone_inventory", "trp_player", "trp_dmod_player_dummy", 9),
(get_player_agent_no, ":player_agent"),
(agent_set_team, ":player_agent", "$dmod_original_player_team"),
(call_script, "script_count_mission_casualties_from_agents"),
(finish_mission),
(try_end),
]),
#Question Answered
(ti_question_answered, 0, 0, [],[
#dmod_question: 1 = Quit, 2 = Possess/Abandon
(store_trigger_param_1,":answer"),
(eq,":answer",0),
(try_begin),
(eq, "$dmod_question", 1),
(call_script, "script_dmod_clone_inventory", "trp_player", "trp_dmod_player_dummy", 9),
(get_player_agent_no, ":player_agent"),
(agent_set_team, ":player_agent", "$dmod_original_player_team"),
(assign, "$pin_player_fallen", 0),
(try_begin),
(store_mission_timer_a, ":elapsed_time"),
(gt, ":elapsed_time", 20),
(str_store_string, s5, "str_retreat"),
(call_script, "script_simulate_retreat", 10, 20),
(try_end),
(call_script, "script_count_mission_casualties_from_agents"),
(finish_mission),
(else_try),
(eq, "$dmod_question", 2),
(try_begin),
(eq, "$dmod_current_agent", -1),
(call_script, "script_dmod_abandon_troop"),
(else_try),
(call_script, "script_dmod_possess_troop"),
(try_end),
(try_end),
]),
#Victory/Defeat?
(1, 60, ti_once,[
(store_mission_timer_a, reg1),
(ge,reg1,10),
(assign, ":team_0_count", 0),
(assign, ":team_1_count", 0),
(assign, ":team_2_count", 0),
(assign, ":team_3_count", 0),
(assign, ":team_4_count", 0),
(assign, ":enemy_count", 0),
(assign, ":ally_count", 0),
(try_for_agents, ":cur_agent"),
(agent_is_human, ":cur_agent"),
(agent_is_alive, ":cur_agent"),
(agent_get_team, ":cur_team", ":cur_agent"),
(try_begin),
(eq, ":cur_team", 0),
(val_add, ":team_0_count", 1),
(else_try),
(eq, ":cur_team", 1),
(val_add, ":team_1_count", 1),
(else_try),
(eq, ":cur_team", 2),
(val_add, ":team_2_count", 1),
(else_try),
(eq, ":cur_team", 3),
(val_add, ":team_3_count", 1),
(else_try),
(eq, ":cur_team", 4),
(val_add, ":team_4_count", 1),
(try_end),
(try_end),
(val_add, ":team_0_count", ":team_2_count"),
(val_add, ":team_1_count", ":team_3_count"),
(try_begin),
(teams_are_enemies, 0, 4),
(val_add, ":team_1_count", ":team_4_count"),
(else_try),
(val_add, ":team_0_count", ":team_4_count"),
(try_end),
(try_begin),
(eq, "$dmod_original_player_team", 0),
(assign, ":enemy_count", ":team_1_count"),
(assign, ":ally_count", ":team_0_count"),
(else_try),
(assign, ":enemy_count", ":team_0_count"),
(assign, ":ally_count", ":team_1_count"),
(try_end),
(try_begin),
(le, ":enemy_count", 0),
(set_mission_result,1),
(assign,"$battle_won",1),
(assign, "$g_battle_result", 1),
(display_message,"@The battle is over; {playername} is victorious."),
(call_script, "script_play_victorious_sound"),
(else_try),
(le, ":ally_count", 0),
(set_mission_result,-1),
(assign, "$battle_won", 2),
(assign, "$g_battle_result", -1),
(display_message,"@The battle is over; {playername} has been defeated."),
(assign, "$pin_player_fallen", 1),
(str_store_string, s5, "str_retreat"),
(call_script, "script_simulate_retreat", 10, 20),
(try_end),
(neq, "$battle_won", 0),
],[]),
#Agent Spawn Check
(ti_on_agent_spawn, 0, 0, [],[
(store_trigger_param_1, ":agent_no"),
(agent_is_human, ":agent_no"),
(get_player_agent_no, ":player_agent"),
(try_begin),
(eq, "$dmod_spawn_normal", 1),
(agent_get_team, "$dmod_spawn_team", ":agent_no"),
(ge, ":player_agent", 0),
(try_begin),
(eq, "$dmod_original_player_team", -1),
(agent_get_team, "$dmod_original_player_team", ":player_agent"),
(try_end),
(agent_get_party_id, ":party_no", ":agent_no"),
(agent_is_ally, ":agent_no"),
(agent_get_party_id, ":party_no", ":agent_no"),
(neq, ":party_no", "p_main_party"),
(assign, ":continue", 1),
(store_faction_of_party, ":party_faction", ":party_no"),
(try_begin),
(eq, ":party_faction", "$players_kingdom"),
(is_between, "$players_kingdom", kingdoms_begin, kingdoms_end),
(faction_slot_eq, "$players_kingdom", slot_faction_marshall, "trp_player"),
(assign, ":continue", 0),
(else_try),
(party_stack_get_troop_id, ":leader_troop_id", ":party_no", 0),
(neg|is_between, ":leader_troop_id", kings_begin, kings_end),
(assign, ":continue", 0),
(try_end),
(eq, ":continue", 1),
(agent_get_team, ":player_team", ":player_agent"),
(val_add, ":player_team", 2),
(assign, "$dmod_spawn_team", ":player_team"),
(try_end),
(agent_set_team, ":agent_no", "$dmod_spawn_team"),
(agent_set_slot, ":agent_no", 5, 0),
(try_begin),
(eq, "$dmod_new_leader", 1),
(try_begin),
(eq, "$dmod_spawn_team", 0),
(assign, "$dmod_team_0_leader", ":agent_no"),
(else_try),
(eq, "$dmod_spawn_team", 1),
(assign, "$dmod_team_1_leader", ":agent_no"),
(else_try),
(eq, "$dmod_spawn_team", 2),
(assign, "$dmod_team_2_leader", ":agent_no"),
(else_try),
(eq, "$dmod_spawn_team", 3),
(assign, "$dmod_team_3_leader", ":agent_no"),
(else_try),
(eq, "$dmod_spawn_team", 4),
(assign, "$dmod_team_4_leader", ":agent_no"),
(try_end),
(team_set_leader, 0, "$dmod_team_0_leader", 0),
(team_set_leader, 1, "$dmod_team_1_leader", 1),
(team_set_leader, 2, "$dmod_team_2_leader", 2),
(team_set_leader, 3, "$dmod_team_3_leader", 3),
(team_set_leader, 4, "$dmod_team_4_leader", 4),
(assign, "$dmod_new_leader", 0),
(try_end),
]),
#Reinforcements
(1, 0, 5, [(lt,"$defender_reinforcement_stage", "$dmod_reinforcement_waves"),
(store_mission_timer_a,":mission_time"),
(ge,":mission_time",10),
(store_normalized_team_count,":num_defenders", 0),
(lt,":num_defenders",6),
],[
(assign, "$dmod_spawn_normal", 1),
(add_reinforcements_to_entry,0,7),
(val_add,"$defender_reinforcement_stage",1),
]),
(1, 0, 5, [
(lt,"$attacker_reinforcement_stage", "$dmod_reinforcement_waves"),
(store_mission_timer_a,":mission_time"),
(ge,":mission_time",10),
(store_normalized_team_count,":num_attackers", 1),
(lt,":num_attackers",6),
],[
(assign, "$dmod_spawn_normal", 1),
(add_reinforcements_to_entry,3,7),
(val_add,"$attacker_reinforcement_stage",1),
]),
#AI Tiggers
# (0, 0, ti_once, [(store_mission_timer_a,":mission_time"),(ge,":mission_time",2)],[(call_script, "script_select_battle_tactic"),(call_script, "script_battle_tactic_init")]),
# (5, 0, 0, [(store_mission_timer_a,":mission_time"),(ge,":mission_time",3),(call_script, "script_battle_tactic_apply")], []),
]),
]
И ставится все это до последней квадратной скобки!
Ну все я спать.... завтра еще напишу
Kurt: Ну Доктор, ну блин напостил...
Доктор: Спойлер? Не, не слышал...