====== Conversation ====== ====Finished product==== {{ :developer_center:developer_editor:script:202408242050.mp4 |}} ==== UI Design ==== {{ :developer_center:developer_editor:script:202408242050_1_.mp4?800 |}} ====Script ==== local next_button = nil local previous_button = nil local text_element = nil local text_process = nil local uiid = nil local first_content_process = nil local number_of_content = nil local content_1 = nil local content_2 = nil local content_3 = nil local click = 0 function button(e) if e.uielement == next_button then click = click + 1 elseif e.uielement == previous_button then click = click - 1 end if click < 1 then click = 1 elseif click > number_of_content then click = number_of_content end Customui:setText(e.eventobjid, uiid, text_process, first_content_process .. " (".. click.. "/".. number_of_content .. ")") if click == 1 then Customui:setText(e.eventobjid, uiid, text_element, content_1) elseif click == 2 then Customui:setText(e.eventobjid, uiid, text_element, content_2) elseif click == 3 then Customui:setText(e.eventobjid, uiid, text_element, content_3) end end ScriptSupportEvent:registerEvent("UI.Button.Click", button) ==== Explanation ==== ===Variables === {{:developer_center:developer_editor:script:screenshot_1724666304.png?nolink|}} //**click**// variable: is initialized to 0 and is used to keep track of the current position or index of the content being displayed. === Handle when clicked on next button or previous button === if e.uielement == next_button then click = click + 1 elseif e.uielement == previous_button then click = click - 1 end * In case the //**uielement**// in the event object //**e**// matches //**next_button**//, the //**click**// variable is incremented by 1. * Provided that matches //**previous_button**//, the //**click**// variable is decremented by 1. * This logic updates the //**click**// variable to reflect the user's navigation through the content. ====Ensuring click Stays Within Valid Bounds==== if click < 1 then click = 1 elseif click > number_of_content then click = number_of_content end * On conditional that //**click**// becomes less than 1, it is set back to 1 to prevent the index from going out of range. * If click exceeds the value of **//number_of_content//**, it is set to **//number_of_content//**, ensuring it doesn't go beyond the last content. ==== Updating the process==== Customui:setText(e.eventobjid, uiid, text_process, first_content_process .. " (".. click.. "/".. number_of_content .. ")") When the player click on the next or previous button, the text's going to update ====Displaying the Corresponding Content ==== if click == 1 then Customui:setText(e.eventobjid, uiid, text_element, content_1) elseif click == 2 then Customui:setText(e.eventobjid, uiid, text_element, content_2) elseif click == 3 then Customui:setText(e.eventobjid, uiid, text_element, content_3) end * If //**click**// == 1, it updates the text_element with //**content_1**//. * If //**click**// == 2, it updates the text_element with **//content_2//**. * If //**click**// == 3, it updates the text_element with **//content_3//**. This ensures that the correct content is displayed based on the current value of **//click//**. === Registering the Button Click Event=== ScriptSupportEvent:registerEvent("UI.Button.Click", button) This means that whenever a button in the UI is clicked, the **//button//** function will be triggered, allowing it to process the event and update the UI accordingly. ---- If you have any questions about Developer Tools, feel free to join our official discord server [[https://discord.gg/NVRZHBChBt|Mini World Global DEV discord]]