Somebody said:In that case, it's unnecessary. Didn't read through the top part of this tutorial, but I've always had one planar mesh + two materials.
Thank you for the confirmation. I never make any heraldic before, so I find that this tutorial is very helpful. Thank you, Von Krieglitz.
Only 2 things that confuse me : 1st is unused meshes that explained by somebody, and 2nd is what numbers on "heraldic_XXX" tableau do.
For the 2nd, I finally make some script to help doing trial and error in the numbers setting.
What's need :
- heraldics items, completed with textures and codes like the tutorial do.
- Paper and pen to make notes.
Steps :
- Make heraldics items like the tutorial steps, only we use variable (reg) for the constants on the tableau like this :
Code:
("heraldic_XXX", 0, "sample_heraldic_XXX_banner", 512, 512, 0, 0, 0, 0,
[
(store_script_param, ":banner_mesh", 1),
(set_fixed_point_multiplier, 100),
(store_sub, ":background_slot", ":banner_mesh", arms_meshes_begin), #banner_meshes_begin),
(troop_get_slot, ":background_color", "trp_banner_background_color_array", ":background_slot"),
(cur_tableau_set_background_color, ":background_color"),
(init_position, pos1),
(cur_tableau_add_mesh_with_vertex_color, "mesh_heraldic_armor_bg", pos1, reg21, 100, ":background_color"),
(init_position, pos1),
(position_set_x, pos1, reg22),
(position_set_y, pos1, reg23),
(position_set_z, pos1, reg24),
(cur_tableau_add_mesh, ":banner_mesh", pos1, reg25, 0),
(init_position, pos1),
(position_set_z, pos1, reg26),
(cur_tableau_add_mesh, "tableau_mesh_heraldic_XXX_banner", pos1, 0, 0),
(cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),
]),
Then create a presentation :
Code:
#Heraldic Test
("heraldic_test", 0, mesh_load_window,
[(ti_on_presentation_load,
[(set_fixed_point_multiplier, 1000),
# Initializations
(init_position, pos1), (init_position, pos2),
(try_begin),
(eq, reg30, 0),
(assign, reg21, 200), (assign, reg22, -10), (assign, reg23, 160), (assign, reg24, 50), (assign, reg25, 113), (assign, reg26, 100),
(try_end),
# Tittles
(position_set_y, pos1, 700), (position_set_x, pos1, 500), # Tittle Position
(position_set_x, pos2, 2000), (position_set_y, pos2, 2000), # Tittle Size
(create_text_overlay, reg2, "@Heraldic Test", tf_center_justify),
(overlay_set_size, reg2, pos2), (overlay_set_position, reg2, pos1),
# Up/Down Buttons
(position_set_x, pos1, 350),
(position_set_y, pos1, 600),
(create_game_button_overlay, "$g_presentation_obj_1", "@<", tf_center_justify),
(overlay_set_position, "$g_presentation_obj_1", pos1),
(position_set_y, pos1, 500),
(create_game_button_overlay, "$g_presentation_obj_2", "@<", tf_center_justify),
(overlay_set_position, "$g_presentation_obj_2", pos1),
(position_set_y, pos1, 400),
(create_game_button_overlay, "$g_presentation_obj_3", "@<", tf_center_justify),
(overlay_set_position, "$g_presentation_obj_3", pos1),
(position_set_y, pos1, 300),
(create_game_button_overlay, "$g_presentation_obj_4", "@<", tf_center_justify),
(overlay_set_position, "$g_presentation_obj_4", pos1),
(position_set_y, pos1, 200),
(create_game_button_overlay, "$g_presentation_obj_5", "@<", tf_center_justify),
(overlay_set_position, "$g_presentation_obj_5", pos1),
(position_set_y, pos1, 100),
(create_game_button_overlay, "$g_presentation_obj_6", "@<", tf_center_justify),
(overlay_set_position, "$g_presentation_obj_6", pos1),
(position_set_x, pos1, 700),
(position_set_y, pos1, 600),
(create_game_button_overlay, "$g_presentation_obj_11", "@>", tf_center_justify),
(overlay_set_position, "$g_presentation_obj_11", pos1),
(position_set_y, pos1, 500),
(create_game_button_overlay, "$g_presentation_obj_12", "@>", tf_center_justify),
(overlay_set_position, "$g_presentation_obj_12", pos1),
(position_set_y, pos1, 400),
(create_game_button_overlay, "$g_presentation_obj_13", "@>", tf_center_justify),
(overlay_set_position, "$g_presentation_obj_13", pos1),
(position_set_y, pos1, 300),
(create_game_button_overlay, "$g_presentation_obj_14", "@>", tf_center_justify),
(overlay_set_position, "$g_presentation_obj_14", pos1),
(position_set_y, pos1, 200),
(create_game_button_overlay, "$g_presentation_obj_15", "@>", tf_center_justify),
(overlay_set_position, "$g_presentation_obj_15", pos1),
(position_set_y, pos1, 100),
(create_game_button_overlay, "$g_presentation_obj_16", "@>", tf_center_justify),
(overlay_set_position, "$g_presentation_obj_16", pos1),
#Texts
(position_set_x, pos2, 1000),(position_set_y, pos2, 1000),
(position_set_x, pos1, 500),
(position_set_y, pos1, 600),
(create_text_overlay, reg2, "@Scale 1 :", tf_right_align),
(overlay_set_size, reg2, pos2), (overlay_set_position, reg2, pos1),
(position_set_y, pos1, 500),
(create_text_overlay, reg2, "@Pos X :", tf_right_align),
(overlay_set_size, reg2, pos2), (overlay_set_position, reg2, pos1),
(position_set_y, pos1, 400),
(create_text_overlay, reg2, "@Pos Y :", tf_right_align),
(overlay_set_size, reg2, pos2), (overlay_set_position, reg2, pos1),
(position_set_y, pos1, 300),
(create_text_overlay, reg2, "@Pos Z :", tf_right_align),
(overlay_set_size, reg2, pos2), (overlay_set_position, reg2, pos1),
(position_set_y, pos1, 200),
(create_text_overlay, reg2, "@Scale 2 :", tf_right_align),
(overlay_set_size, reg2, pos2), (overlay_set_position, reg2, pos1),
(position_set_y, pos1, 100),
(create_text_overlay, reg2, "@Scale 3 :", tf_right_align),
(overlay_set_size, reg2, pos2), (overlay_set_position, reg2, pos1),
(position_set_x, pos1, 600),
(position_set_y, pos1, 600),
(create_text_overlay, "$g_presentation_obj_21", "@{reg21}", tf_right_align),
(overlay_set_size, "$g_presentation_obj_21", pos2), (overlay_set_position, "$g_presentation_obj_21", pos1),
(position_set_y, pos1, 500),
(create_text_overlay, "$g_presentation_obj_22", "@{reg22}", tf_right_align),
(overlay_set_size, "$g_presentation_obj_22", pos2), (overlay_set_position, "$g_presentation_obj_22", pos1),
(position_set_y, pos1, 400),
(create_text_overlay, "$g_presentation_obj_23", "@{reg23}", tf_right_align),
(overlay_set_size, "$g_presentation_obj_23", pos2), (overlay_set_position, "$g_presentation_obj_23", pos1),
(position_set_y, pos1, 300),
(create_text_overlay, "$g_presentation_obj_24", "@{reg24}", tf_right_align),
(overlay_set_size, "$g_presentation_obj_24", pos2), (overlay_set_position, "$g_presentation_obj_24", pos1),
(position_set_y, pos1, 200),
(create_text_overlay, "$g_presentation_obj_25", "@{reg25}", tf_right_align),
(overlay_set_size, "$g_presentation_obj_25", pos2), (overlay_set_position, "$g_presentation_obj_25", pos1),
(position_set_y, pos1, 100),
(create_text_overlay, "$g_presentation_obj_26", "@{reg26}", tf_right_align),
(overlay_set_size, "$g_presentation_obj_26", pos2), (overlay_set_position, "$g_presentation_obj_26", pos1),
# Buttons
(position_set_y, pos1, 25), (position_set_x, pos1, 900),
(create_game_button_overlay, "$g_presentation_obj_7", @OK", tf_center_justify), # OK Button
(overlay_set_position, "$g_presentation_obj_7", pos1),
(position_move_x, pos1, -16),
(create_game_button_overlay, "$g_presentation_obj_8", "@Close", tf_center_justify), # CLOSE Button
(overlay_set_position, "$g_presentation_obj_8", pos1),
(presentation_set_duration, 999999), ]),
(ti_on_presentation_event_state_change,
[(store_trigger_param_1, ":object"),
#(store_trigger_param_2, ":value"),
(set_fixed_point_multiplier, 1000),
(try_begin),
(eq, ":object", "$g_presentation_obj_8"),
(assign, reg30, 2),
(presentation_set_duration, 0),
(jump_to_menu, "mnu_test_heraldic"),
(else_try),
(eq, ":object", "$g_presentation_obj_7"),
(assign, reg30, 1),
(presentation_set_duration, 0),
(jump_to_menu, "mnu_test_heraldic"),
(else_try),
(eq, ":object", "$g_presentation_obj_1"),
(val_sub, reg21, 10),
(try_begin),
(key_is_down, key_left_shift),
(val_add, reg21, 9),
(try_end),
(overlay_set_text, "$g_presentation_obj_21", "@{reg21}"),
(else_try),
(eq, ":object", "$g_presentation_obj_2"),
(val_sub, reg22, 10),
(try_begin),
(key_is_down, key_left_shift),
(val_add, reg22, 9),
(try_end),
(overlay_set_text, "$g_presentation_obj_22", "@{reg22}"),
(else_try),
(eq, ":object", "$g_presentation_obj_3"),
(val_sub, reg23, 10),
(try_begin),
(key_is_down, key_left_shift),
(val_add, reg23, 9),
(try_end),
(overlay_set_text, "$g_presentation_obj_23", "@{reg23}"),
(else_try),
(eq, ":object", "$g_presentation_obj_4"),
(val_sub, reg24, 10),
(try_begin),
(key_is_down, key_left_shift),
(val_add, reg24, 9),
(try_end),
(overlay_set_text, "$g_presentation_obj_24", "@{reg24}"),
(else_try),
(eq, ":object", "$g_presentation_obj_5"),
(val_sub, reg25, 10),
(try_begin),
(key_is_down, key_left_shift),
(val_add, reg25, 9),
(try_end),
(overlay_set_text, "$g_presentation_obj_25", "@{reg25}"),
(else_try),
(eq, ":object", "$g_presentation_obj_6"),
(val_sub, reg26, 10),
(try_begin),
(key_is_down, key_left_shift),
(val_add, reg26, 9),
(try_end),
(overlay_set_text, "$g_presentation_obj_26", "@{reg26}"),
(else_try),
(eq, ":object", "$g_presentation_obj_11"),
(val_add, reg21, 10),
(try_begin),
(key_is_down, key_left_shift),
(val_sub, reg21, 9),
(try_end),
(overlay_set_text, "$g_presentation_obj_21", "@{reg21}"),
(else_try),
(eq, ":object", "$g_presentation_obj_12"),
(val_add, reg22, 10),
(try_begin),
(key_is_down, key_left_shift),
(val_sub, reg22, 9),
(try_end),
(overlay_set_text, "$g_presentation_obj_22", "@{reg22}"),
(else_try),
(eq, ":object", "$g_presentation_obj_13"),
(val_add, reg23, 10),
(try_begin),
(key_is_down, key_left_shift),
(val_sub, reg23, 9),
(try_end),
(overlay_set_text, "$g_presentation_obj_23", "@{reg23}"),
(else_try),
(eq, ":object", "$g_presentation_obj_14"),
(val_add, reg24, 10),
(try_begin),
(key_is_down, key_left_shift),
(val_sub, reg24, 9),
(try_end),
(overlay_set_text, "$g_presentation_obj_24", "@{reg24}"),
(else_try),
(eq, ":object", "$g_presentation_obj_15"),
(val_add, reg25, 10),
(try_begin),
(key_is_down, key_left_shift),
(val_sub, reg25, 9),
(try_end),
(overlay_set_text, "$g_presentation_obj_25", "@{reg25}"),
(else_try),
(eq, ":object", "$g_presentation_obj_16"),
(val_add, reg26, 10),
(try_begin),
(key_is_down, key_left_shift),
(val_sub, reg26, 9),
(try_end),
(overlay_set_text, "$g_presentation_obj_26", "@{reg26}"),
(try_end), ]), ]),
a mission template :
Code:
(
"heraldic_test",0,-1,
"You start training.",
[(0,mtef_visitor_source,0,aif_start_alarmed,0,[]), ],
[(ti_before_mission_start, 0, 0, [], [(set_rain, 1,100), (set_fog_distance, 10)]),
(ti_tab_pressed, 0, 0, [], [(assign, reg30, 3), (finish_mission,0)]),
(ti_inventory_key_pressed, 0, 0, [(set_trigger_result,1),], []), ],
),
Code:
("test_heraldic",0,"Heraldic Test","none",
[(try_begin),
(eq, reg30, 1),
(modify_visitors_at_site,"scn_tutorial_training_ground"),
(reset_visitors, 0),
(set_player_troop, "trp_player"),
(set_visitor,0,"trp_player"),
(set_jump_mission,"mt_heraldic_test"),
(jump_to_scene,"scn_tutorial_training_ground"),
(change_screen_mission),
(else_try),
(eq, reg30, 2),
(jump_to_menu, "mnu_module_test"),
(else_try),
(eq, reg30, 3),
(start_presentation, "prsnt_heraldic_test"),
(try_end), ],
[("setting",[], "Setting", [(start_presentation, "prsnt_heraldic_test"), ]),
("back", [], "Back.", [(jump_to_menu, "mnu_camp"), ]), ]),
and an option on camp menu to call the menu :
Code:
("her", [], "Heraldic Test.", [(assign, reg30, 0), (jump_to_menu, "mnu_test_heraldic"), ]),
How to use :
1. Give all your heraldic items to the player at game start scrpit.
2. Start a new game
3. Camp, and call the menu
4. Set the parameters, and press OK, and try to wear any heraldic item.
5. Press TAB to quit. You can do re-setting the params and press OK to try the heraldic items or press CLOSE to quit.
6. If you're happy with the looks of the heraldics item, note the setting params.
7. base on the notes, change reg21 to reg26 on the tableau with constants from the note for any heraldic items.
8. Delete this menu and the presentation for you don't need them anymore.
Almost forget : To add/subtract the constant by one instead of ten, hold left shift key when click the buttons.