("mp_meeting", 0, mesh_load_window, [
      (ti_on_presentation_load,
      [
          (set_fixed_point_multiplier, 1000),

          # # Chat Box Background Creation
          # (create_mesh_overlay, "chat_background", "mesh_load_window"),
          # (position_set_x, pos2, 400),  # Width
          # (position_set_y, pos2, 400),  # Height
          # (overlay_set_size, "chat_background", pos2),
          # (position_set_x, pos1, 500),  # Adjust for actual placement
          # (position_set_y, pos1, 500),
          # (overlay_set_color, "chat_background", 0x000000),  # Black background
          (create_mesh_overlay, reg1, "mesh_load_window"),
         (position_set_x, pos1, 50),   # Setting position to 0 as specified
         (position_set_y, pos1, 150), # This Y position can be adjusted for your needs
         (overlay_set_position, reg1, pos1),
         (position_set_x, pos2, 600),  # Width
         (position_set_y, pos2, 600),  # Height adjusting for aesthetically pleasing proportions
         (overlay_set_size, reg1, pos2),
         (overlay_set_color, reg1, 0x000000),  # Black background

          # Chat Display
         (create_text_overlay, "backround_chat", "@CHAT ------------------------------", tf_scrollable_style_2),
         (position_set_x, pos1, 250),  # Adjust based on chat background
         (position_set_y, pos1, 310),
         (overlay_set_position, "backround_chat", pos1),
         (overlay_set_area_size, "backround_chat", 780, 430),  # Adjust width and height
         (overlay_set_color, "backround_chat", 0xFFFFFF),  # White text

          # Input Field
          (create_simple_text_box_overlay, "input_chat"),
          (position_set_x, pos1, 50),  # Adjust based on overall UI layout
          (position_set_y, pos1, 120),
          (overlay_set_position, "input_chat", pos1),
          (position_set_x, pos2, 350),  # Width of the input field
          (position_set_y, pos2, 1000),   # Height of the input field
          (overlay_set_size, "input_chat", pos2),

          # Send Message Button
          (create_game_button_overlay, "send_button", "@This is send button", tf_center_justify),
          (position_set_x, pos1, 580), # 730
          (position_set_y, pos1, 110),
          (overlay_set_position, "send_button", pos1),

          # Test Buttons to the right of the chat
          # Test Button 1
          (create_game_button_overlay, "test_button_1", "@Test 1", tf_center_justify),
          (position_set_x, pos1, 800),
          (position_set_y, pos1, 500),
          (overlay_set_position, "test_button_1", pos1),

          # Test Button 2
          (create_game_button_overlay, "test_button_2", "@Test 2", tf_center_justify),
          (position_set_x, pos1, 800),
          (position_set_y, pos1, 400),
          (overlay_set_position, "test_button_2", pos1),

          (create_text_overlay, "g_little_pos_helper", "@00,00"),
          (overlay_set_color, "g_little_pos_helper", 0xFF0000),
          (position_set_x, pos1, 40),
          (position_set_y, pos1, 690),
          (overlay_set_position, "g_little_pos_helper", pos1),

          (presentation_set_duration, 999999),
      ]),
      (ti_on_presentation_event_state_change,
      [ (store_trigger_param_1, ":object"),
          (try_begin),
              (eq, ":object", "send_button"),
              # (overlay_get_text, s1, "input_chat"),
              (neg|str_is_empty, s1),
              # Here you can include the script to display the message or send it to a server etc.
              
              # Example: Update chat display
              # This is purely illustrative and may not directly apply without additional scripts or setup:
              # (str_store_string, s2, "@Chat_text"),  # Assumed existing chat display variable
              # (str_store_string, s3, "@New_Message"),  # The new message
              # (str_store_string_concat, s2, s3),
              # (overlay_set_text, "chat_overlay_id", s2),  # Assumes an ID for the chat text overlay
              
                  (presentation_set_duration, 0),
              # Re-launch the presentation to refresh the chat display if necessary
              # (start_presentation, "mp_meeting"),
          # (else_try),
              # Handle inputs for 'input_chat', 'test_button_1', 'test_button_2', etc.
          (try_end),
      ]),
      (ti_on_presentation_run,
           [
      (set_fixed_point_multiplier, 1000),
			(mouse_get_position, pos1),
			(position_get_x, reg1, pos1),
			(position_get_y, reg2, pos1),
			(overlay_set_text, "g_little_pos_helper", "@{reg1},{reg2}"),
		  #  (set_fixed_point_multiplier, 1000),
			# (mouse_get_position, pos1),
			# (position_get_x, reg1, pos1),
			# (position_get_y, reg2, pos1),
			# (overlay_set_text, "g_little_pos_helper", "@{reg1},{reg2}"),
		   
		  #  (try_begin),
			# 	(map_free),
			# 	(presentation_set_duration, 0),
			# (else_try),
			# 	(this_or_next|key_clicked,key_escape),
			# 	(key_clicked,key_m),
			# 	(presentation_set_duration, 0),
			# (try_end),
			]),
  ]),
  
 
 Example:
  --copy header_presentations.py, header_triggers.py and ID_meshes.py to your msfiles folder for this example.
local index = game.addPrsnt({
  id = "myPrsnt",
  flags = {game.const.prsntf_read_only, game.const.prsntf_manual_end_only},
  --you can initialize an array like this, without keys - they don't matter here anyway.
  mesh = game.const.mesh_cb_ui_main,
  triggers = {
    [game.const.ti_on_presentation_load] = function ()
    --The const inside the [] declares a number key, similar to keyName = 123 for string keys.
      game.presentation_set_duration(9999999)
      local overlay = game.create_mesh_overlay(0, game.const.mesh_mp_ingame_menu)

      local position = game.pos.new()
      position.o.x = 0.3
      position.o.y = 0.3
      game.overlay_set_position(overlay, position)

      position.o.x = 0.5
      position.o.y = 0.8
      game.overlay_set_size(overlay, position)
    end
  }
})
game.start_presentation(index)

Rewrite warband module presentation script to lua using the example