from ID_animations import *
Добавитьfrom header_presentations import *
]
Добавить#script_prsnt_troop_inventory
# INPUT:
# param1: troop
# param2: inventory slot size. 900 - default. Number must be a multiple of 20
# param3: right boundary. Max 1000
# param4: down boundary. Max 750
# param5: vertical container size. Max 750 - down boundary
("prsnt_troop_inventory",
[
(store_script_param, ":troop_id", 1),
(store_script_param, ":inv_slot_size", 2),
(store_script_param, ":container_pos_x", 3),
(store_script_param, ":container_pos_y", 4),
(store_script_param, ":container_size_y", 5),
(store_div, ":shift", ":inv_slot_size", 20),
(troop_get_inventory_capacity, ":capacity", ":troop_id"),
(val_sub, ":capacity", 10),
(store_mul, ":container_size_x", ":shift", 6),
(val_sub, ":container_pos_x", ":container_size_x"),
(val_sub, ":container_pos_x", 20),
(str_clear, s0),
(create_text_overlay, ":container_overlay", s0, tf_scrollable),
(position_set_x, pos1, ":container_pos_x"),
(position_set_y, pos1, ":container_pos_y"),
(overlay_set_position, ":container_overlay", pos1),
(position_set_x, pos1, ":container_size_x"),
(position_set_y, pos1, ":container_size_y"),
(overlay_set_area_size, ":container_overlay", pos1),
(assign, ":slot", "$g_number_overlays"),
(troop_set_slot, "trp_temp_array_b", ":slot", ":container_overlay"),
(val_add, ":slot", 10),
(troop_set_slot, "trp_temp_array_b", ":slot", ":inv_slot_size"),
(val_add, ":slot", 10),
(troop_set_slot, "trp_temp_array_b", ":slot", ":troop_id"),
(val_add, ":slot", 10),
(troop_set_slot, "trp_temp_array_b", ":slot", ":capacity"),
(val_add, "$g_number_overlays", 1),
(try_for_range, ":inv_slot", 0, ":capacity"),
(store_add, reg1, ":inv_slot", 10),
(create_mesh_overlay, reg0, "mesh_inv_slot"),
(overlay_set_container_overlay, reg0, ":container_overlay"),
(call_script, "script_prsnt_set_obj_pos_and_size", reg0, ":troop_id", reg1, 0, ":inv_slot_size"),
(try_end),
(try_for_range, ":inv_slot", 0, ":capacity"),
(store_add, ":real_inv_slot", ":inv_slot", 10),
(troop_get_inventory_slot, ":item_id", ":troop_id", ":real_inv_slot"),
(store_add, ":inv_slot_overlay", ":container_overlay", 1),
(val_add, ":inv_slot_overlay", ":inv_slot"),
(try_begin),
(gt, ":item_id", 0),
(create_mesh_overlay_with_item_id, reg0, ":item_id"),
(overlay_set_container_overlay, reg0, ":container_overlay"),
(troop_set_slot, "trp_temp_array_a", ":inv_slot_overlay", reg0),
(call_script, "script_prsnt_set_obj_pos_and_size", reg0, ":troop_id", ":real_inv_slot", 1, ":inv_slot_size"),
(else_try),
(troop_set_slot, "trp_temp_array_a", ":inv_slot_overlay", -1),
(try_end),
(try_end),
]),
#script_prsnt_set_obj_pos_and_size
# INPUT:
# param1: overlay
# param2: troop
# param3: inventory slot
# param4: overlay type (0 = inventory slot overlay, 1 = inventory item overlay)
# param5: inventory slot size
("prsnt_set_obj_pos_and_size",
[
(store_script_param, ":overlay", 1),
(store_script_param, ":troop", 2),
(store_script_param, ":inv_slot", 3),
(store_script_param, ":overlay_type", 4),
(store_script_param, ":overlay_size", 5),
(val_sub, ":inv_slot", 10),
(troop_get_inventory_capacity, ":capacity", ":troop"),
(val_sub, ":capacity", 10),
(try_begin),
(eq, ":overlay_type", 1),
(store_mul, ":overlay_new_size", ":overlay_size", 113),
(val_div, ":overlay_new_size", 100),
(else_try),
(assign, ":overlay_new_size", ":overlay_size"),
(try_end),
(store_div, ":shift", ":overlay_size", 20),
(store_add, ":location_in_horizontal", ":inv_slot", 3),
(val_mod, ":location_in_horizontal", 3),
(store_sub, ":location_in_vertical", ":inv_slot", ":capacity"),
(val_sub, ":location_in_vertical", 2),
(val_abs, ":location_in_vertical"),
(val_add, ":location_in_vertical", 3),
(val_div, ":location_in_vertical", 3),
(val_sub, ":location_in_vertical", 2),
(store_mul, ":pos_x", ":location_in_horizontal", ":shift"),
(val_mul, ":pos_x", 2),
(store_mul, ":pos_y", ":location_in_vertical", ":shift"),
(val_mul, ":pos_y", 2),
(try_begin),
(eq, ":overlay_type", 1),
(val_add, ":pos_x", ":shift"),
(val_add, ":pos_y", ":shift"),
(try_end),
(position_set_x, pos1, ":overlay_new_size"),
(position_set_y, pos1, ":overlay_new_size"),
(overlay_set_size, ":overlay", pos1),
(position_set_x, pos1, ":pos_x"),
(position_set_y, pos1, ":pos_y"),
(overlay_set_position, ":overlay", pos1),
(overlay_set_additional_render_height, ":overlay", 0),
]),
#script_prsnt_init_variables_and_show_item_details
# INPUT:
# param1: overlay id
# param2: mouse action (0 if mouse enters, 1 if mouse leaves)
("prsnt_init_variables_and_show_item_details",
[
(store_script_param_1, ":object"),
(store_script_param_2, ":enters_leaves"),
(try_begin),
(eq, ":enters_leaves", 0),
(try_begin),
(assign, ":continue", 0),
(try_for_range, ":array_temp_slot", 0, "$g_number_overlays"),
(troop_get_slot, ":container_overlay", "trp_temp_array_b", ":array_temp_slot"),
(eq, ":container_overlay", ":object"),
(assign, "$cur_cont", ":object"), #selected container id
(val_add, ":array_temp_slot", 10),
(troop_get_slot, "$cur_cont_inv_slot_size", "trp_temp_array_b", ":array_temp_slot"), #selected container inventory slot size
(val_add, ":array_temp_slot", 10),
(troop_get_slot, "$cur_cont_troop", "trp_temp_array_b", ":array_temp_slot"), #selected container inventory troop
(val_add, ":array_temp_slot", 10),
(troop_get_slot, "$cur_cont_cap", "trp_temp_array_b", ":array_temp_slot"), #selected container inventory capacity
(assign, ":continue", 1),
(try_end),
(eq, ":continue", 1),
(else_try),
(lt, "$g_moving_overlay", 0),
(store_add, ":end", "$cur_cont", "$cur_cont_cap"),
(val_add, ":end", 1),
(store_add, ":start", "$cur_cont", 1),
(is_between, ":object", ":start", ":end"),
(store_sub, ":inv_slot", ":object", "$cur_cont"),
(val_add, ":inv_slot", 9),
(troop_get_inventory_slot, ":item_id", "$cur_cont_troop", ":inv_slot"),
(try_begin),
(gt, ":item_id", 0),
(troop_get_inventory_slot_modifier, ":modifier", "$cur_cont_troop", ":inv_slot"),
(overlay_get_position, pos1, ":object"),
(position_get_x, ":pos_x", pos1),
(position_get_y, ":pos_y", pos1),
(store_div, ":shift", "$cur_cont_inv_slot_size", 20),
(val_add, ":pos_x", ":shift"),
(val_add, ":pos_y", ":shift"),
(position_set_x, pos1, ":pos_x"),
(position_set_y, pos1, ":pos_y"),
(show_item_details_with_modifier, ":item_id", ":modifier", pos1, 100),
(else_try),
(close_item_details),
(try_end),
(try_end),
(else_try),
(eq, ":object", "$cur_cont"),
(close_item_details),
(try_end),
]),
#script_prsnt_relocate_item
# INPUT:
# param1: overlay id
# param2: mouse button (0 left mouse button, 1 right mouse button, 2 middle mouse button)
("prsnt_relocate_item",
[
(store_script_param_1, ":object"),
(store_script_param_2, ":mouse_button"),
(try_begin),
(eq, ":mouse_button", 0),
(try_begin),
(lt, "$g_moving_overlay", 0),
(try_begin),
(neq, ":object", "$cur_cont"),
(store_add, ":end", "$cur_cont", "$cur_cont_cap"),
(val_add, ":end", 1),
(store_add, ":start", "$cur_cont", 1),
(is_between, ":object", ":start", ":end"),
(store_sub, ":inv_slot", ":object", "$cur_cont"),
(val_add, ":inv_slot", 9),
(troop_get_inventory_slot, ":item_id", "$cur_cont_troop", ":inv_slot"),
(try_begin),
(gt, ":item_id", 0),
(close_item_details),
(assign, "$g_moving_item", ":item_id"),
(troop_get_inventory_slot_modifier, "$g_moving_modifier", "$cur_cont_troop", ":inv_slot"),
(troop_set_inventory_slot, "$cur_cont_troop", ":inv_slot", -1),
(troop_get_slot, "$g_moving_overlay", "trp_temp_array_a", ":object"),
(store_mul, ":moving_overlay_size", "$cur_cont_inv_slot_size", 226),
(val_div, ":moving_overlay_size", 100),
(overlay_set_container_overlay, "$g_moving_overlay", -1),
(mouse_get_position, pos1),
(overlay_set_position, "$g_moving_overlay", pos1),
(overlay_set_additional_render_height, "$g_moving_overlay", 2),
(position_set_x, pos1, ":moving_overlay_size"),
(position_set_y, pos1, ":moving_overlay_size"),
(overlay_set_size, "$g_moving_overlay", pos1),
(try_end),
(try_end),
(else_try),
(close_item_details),
(try_begin),
(neq, ":object", "$cur_cont"),
(store_add, ":end", "$cur_cont", "$cur_cont_cap"),
(val_add, ":end", 1),
(store_add, ":start", "$cur_cont", 1),
(is_between, ":object", ":start", ":end"),
(store_sub, ":inv_slot", ":object", "$cur_cont"),
(val_add, ":inv_slot", 9),
(troop_get_inventory_slot, ":item_id", "$cur_cont_troop", ":inv_slot"),
(try_begin),
(gt, ":item_id", 0),
(troop_get_inventory_slot_modifier, ":modifier", "$cur_cont_troop", ":inv_slot"),
(troop_set_inventory_slot, "$cur_cont_troop", ":inv_slot", "$g_moving_item"),
(troop_set_inventory_slot_modifier, "$cur_cont_troop", ":inv_slot", "$g_moving_modifier"),
(troop_get_slot, ":replaced_overlay", "trp_temp_array_a", ":object"),
(troop_set_slot, "trp_temp_array_a", ":object", "$g_moving_overlay"),
(assign, "$g_moving_item", ":item_id"),
(assign, "$g_moving_modifier", ":modifier"),
(overlay_set_additional_render_height, "$g_moving_overlay", 0),
(call_script, "script_prsnt_set_obj_pos_and_size", "$g_moving_overlay", "$cur_cont_troop", ":inv_slot", 1, "$cur_cont_inv_slot_size"),
(overlay_set_container_overlay, "$g_moving_overlay", "$cur_cont"),
(assign, "$g_moving_overlay", ":replaced_overlay"),
(overlay_set_container_overlay, "$g_moving_overlay", -1),
(mouse_get_position, pos1),
(overlay_set_position, "$g_moving_overlay", pos1),
(overlay_set_additional_render_height, "$g_moving_overlay", 2),
(store_mul, ":moving_overlay_size", "$cur_cont_inv_slot_size", 226),
(val_div, ":moving_overlay_size", 100),
(position_set_x, pos1, ":moving_overlay_size"),
(position_set_y, pos1, ":moving_overlay_size"),
(overlay_set_size, "$g_moving_overlay", pos1),
(else_try),
(troop_set_inventory_slot, "$cur_cont_troop", ":inv_slot", "$g_moving_item"),
(troop_set_inventory_slot_modifier, "$cur_cont_troop", ":inv_slot", "$g_moving_modifier"),
(troop_set_slot, "trp_temp_array_a", ":object", "$g_moving_overlay"),
(overlay_set_container_overlay, "$g_moving_overlay", "$cur_cont"),
(call_script, "script_prsnt_set_obj_pos_and_size", "$g_moving_overlay", "$cur_cont_troop", ":inv_slot", 1, "$cur_cont_inv_slot_size"),
(overlay_set_additional_render_height, "$g_moving_overlay", 0),
(overlay_get_position, pos1, ":object"),
(position_get_x, ":pos_x", pos1),
(position_get_y, ":pos_y", pos1),
(store_div, ":shift", "$cur_cont_inv_slot_size", 20),
(val_add, ":pos_x", ":shift"),
(val_add, ":pos_y", ":shift"),
(position_set_x, pos1, ":pos_x"),
(position_set_y, pos1, ":pos_y"),
(show_item_details_with_modifier, "$g_moving_item", "$g_moving_modifier", pos1, 100),
(assign, "$g_moving_overlay", -1),
(assign, "$g_moving_item", -1),
(try_end),
(try_end),
(try_end),
(try_end),
]),
(set_fixed_point_multiplier, 1000),
объявить 2 переменные(assign, "$g_moving_overlay", -1),
(assign, "$g_number_overlays", 0),
После чего вызываете script_prsnt_troop_inventory столько раз, сколько панелей инвентаря вы хотите создать, указав при этом желаемые параметры создаваемой панели(call_script, "script_prsnt_troop_inventory", <параметр1>, <параметр2>, <параметр3>, <параметр4>, <параметр5>),
(try_begin),
(gt, "$g_moving_overlay", 0),
(mouse_get_position, pos1),
(overlay_set_position, "$g_moving_overlay", pos1),
(try_end),
(store_trigger_param_1, ":object"),
(store_trigger_param_2, ":enters_leaves"),
(call_script, "script_prsnt_init_variables_and_show_item_details", ":object", ":enters_leaves"),
(store_trigger_param_1, ":object"),
(store_trigger_param_2, ":mouse_button"),
(call_script, "script_prsnt_relocate_item", ":object", ":mouse_button"),
("inventory_window", 0, "inventory_window_b", 0, 0, 0, 0, 0, 0, 1, 1, 1),
а в module_presentations создав простую презентацию всего из тридцати строксколько панелей инвентаря вы хотите создать, указав при этом желаемые параметры создаваемой панелиА как можно создать панель инвентаря во всю ширину окна презентации, (не В 3 ячейки шириной, а в десять двенадцать)?