====== Solve Password Script ====== ==== Finished Product ==== {{ :developer_center:developer_editor:script:202408091531_2_.mp4 |}} ==== Create features ==== === Create a block when clicked will show the UI === {{ :developer_center:developer_editor:script:202408091531.mp4?800 |}} === Design UI === {{ :developer_center:developer_editor:script:202408091531_1_.mp4?800 |}} ====Script ==== local treasure_block_id = nil ---- Replace your block id here local uiid = nil ---- Replace your UI ID here local number_1_ = nil ---- Replace 1st number here (password 1) local number_2_ = nil ---- Replace 2nd number here (password 2) local number_3_ = nil ---- Replace 3rd number here (password 3) local button_1 = nil ---- Replace the ID of first button here local button_2 = nil ---- Replace the ID of second button here local button_3 = nil ---- Replace the ID of third button here local number0 = "10266" local number1 = "10267" local number2 = "10268" local number3 = "10269" local number4 = "10270" local number5 = "10271" local number6 = "10272" local number7 = "10273" local number8 = "10274" local number9 = "10275" -------------Don't edit anything below------------- function click_to_treasure_block(e) if e.blockid == treasure_block_id then Player:openUIView(e.eventobjid, uiid) end end ScriptSupportEvent:registerEvent("Player.ClickBlock", click_to_treasure_block) local click_time_of_button_1 = 0 function number_1(e) if e.uielement == button_1 then click_time_of_button_1 = click_time_of_button_1 + 1 if click_time_of_button_1 == 10 then click_time_of_button_1 = 0 end end if click_time_of_button_1 == 0 then Customui:setTexture(e.eventobjid, uiid, button_1, number0) elseif click_time_of_button_1 == 1 then Customui:setTexture(e.eventobjid, uiid, button_1, number1) elseif click_time_of_button_1 == 2 then Customui:setTexture(e.eventobjid, uiid, button_1, number2) elseif click_time_of_button_1 == 3 then Customui:setTexture(e.eventobjid, uiid, button_1, number3) elseif click_time_of_button_1 == 4 then Customui:setTexture(e.eventobjid, uiid, button_1, number4) elseif click_time_of_button_1 == 5 then Customui:setTexture(e.eventobjid, uiid, button_1, number5) elseif click_time_of_button_1 == 6 then Customui:setTexture(e.eventobjid, uiid, button_1, number6) elseif click_time_of_button_1 == 7 then Customui:setTexture(e.eventobjid, uiid, button_1, number7) elseif click_time_of_button_1 == 8 then Customui:setTexture(e.eventobjid, uiid, button_1, number8) elseif click_time_of_button_1 == 9 then Customui:setTexture(e.eventobjid, uiid, button_1, number9) end if number_1_ == click_time_of_button_1 and number_2_ == click_time_of_button_2 and number_3_ == click_time_of_button_3 then Player:notifyGameInfo2Self(e.eventobjid, "you solved the password correctly") end end ScriptSupportEvent:registerEvent("UI.Button.Click", number_1) local click_time_of_button_2 = 0 function number_2(e) if e.uielement == button_2 then click_time_of_button_2 = click_time_of_button_2 + 1 if click_time_of_button_2 == 10 then click_time_of_button_2 = 0 end end if click_time_of_button_2 == 0 then Customui:setTexture(e.eventobjid, uiid, button_2, number0) elseif click_time_of_button_2 == 1 then Customui:setTexture(e.eventobjid, uiid, button_2, number1) elseif click_time_of_button_2 == 2 then Customui:setTexture(e.eventobjid, uiid, button_2, number2) elseif click_time_of_button_2 == 3 then Customui:setTexture(e.eventobjid, uiid, button_2, number3) elseif click_time_of_button_2 == 4 then Customui:setTexture(e.eventobjid, uiid, button_2, number4) elseif click_time_of_button_2 == 5 then Customui:setTexture(e.eventobjid, uiid, button_2, number5) elseif click_time_of_button_2 == 6 then Customui:setTexture(e.eventobjid, uiid, button_2, number6) elseif click_time_of_button_2 == 7 then Customui:setTexture(e.eventobjid, uiid, button_2, number7) elseif click_time_of_button_2 == 8 then Customui:setTexture(e.eventobjid, uiid, button_2, number8) elseif click_time_of_button_2 == 9 then Customui:setTexture(e.eventobjid, uiid, button_2, number9) end if number_1_ == click_time_of_button_1 and number_2_ == click_time_of_button_2 and number_3_ == click_time_of_button_3 then Player:notifyGameInfo2Self(e.eventobjid, "you solved the password correctly") end end ScriptSupportEvent:registerEvent("UI.Button.Click", number_2) local click_time_of_button_3 = 0 function number_3(e) if e.uielement == button_3 then click_time_of_button_3 = click_time_of_button_3 + 1 if click_time_of_button_3 == 10 then click_time_of_button_3 = 0 end end if click_time_of_button_3 == 0 then Customui:setTexture(e.eventobjid, uiid, button_3, number0) elseif click_time_of_button_3 == 1 then Customui:setTexture(e.eventobjid, uiid, button_3, number1) elseif click_time_of_button_3 == 2 then Customui:setTexture(e.eventobjid, uiid, button_3, number2) elseif click_time_of_button_3 == 3 then Customui:setTexture(e.eventobjid, uiid, button_3, number3) elseif click_time_of_button_3 == 4 then Customui:setTexture(e.eventobjid, uiid, button_3, number4) elseif click_time_of_button_3 == 5 then Customui:setTexture(e.eventobjid, uiid, button_3, number5) elseif click_time_of_button_3 == 6 then Customui:setTexture(e.eventobjid, uiid, button_3, number6) elseif click_time_of_button_3 == 7 then Customui:setTexture(e.eventobjid, uiid, button_3, number7) elseif click_time_of_button_3 == 8 then Customui:setTexture(e.eventobjid, uiid, button_3, number8) elseif click_time_of_button_3 == 9 then Customui:setTexture(e.eventobjid, uiid, button_3, number9) end if number_1_ == click_time_of_button_1 and number_2_ == click_time_of_button_2 and number_3_ == click_time_of_button_3 then Player:notifyGameInfo2Self(e.eventobjid, "you solved the password correctly") end end ScriptSupportEvent:registerEvent("UI.Button.Click", number_3) ====Explanation==== === Variable Declarations === local treasure_block_id = nil local uiid = nil local number_1_ = nil local number_2_ = nil local number_3_ = nil local button_1 = nil local button_2 = nil local button_3 = nil * These variables are placeholders for IDs of blocks, UI elements, and buttons in the game. * **treasure_block_id**: The ID of the block that triggers the UI. * **uiid**: ID of the UI that will be opened when interacting with the block. * **number_1_, number_2_, number_3_:** The three numbers that make up the correct password. **number_1_** is the first number of the password; **number_2_** is the second number of the password; and **number_3_** is the third number of the password. * **button_1**, **button_2**, **button_3**: IDs of the buttons in the UI that the player will click to enter the password. ===Number Texture IDs=== local number0 = "10266" local number1 = "10267" local number2 = "10268" local number3 = "10269" local number4 = "10270" local number5 = "10271" local number6 = "10272" local number7 = "10273" local number8 = "10274" local number9 = "10275" These variables represent texture IDs for the digits 0-9. They are used to update the UI buttons to display the corresponding numbers. === Click Event on the Treasure Block === function click_to_treasure_block(e) if e.blockid == treasure_block_id then Player:openUIView(e.eventobjid, uiid) end end ScriptSupportEvent:registerEvent("Player.ClickBlock", click_to_treasure_block) When the player clicks on the block with ID **//treasure_block_id//**, the UI with ID //**uiid**// is opened. **//ScriptSupportEvent:registerEvent//** registers the **//click_to_treasure_block//** function to handle the block click event. === Button 1 Handling === local click_time_of_button_1 = 0 function number_1(e) if e.uielement == button_1 then click_time_of_button_1 = click_time_of_button_1 + 1 if click_time_of_button_1 == 10 then click_time_of_button_1 = 0 end end -- Update button texture based on the number if click_time_of_button_1 == 0 then Customui:setTexture(e.eventobjid, uiid, button_1, number0) elseif click_time_of_button_1 == 1 then Customui:setTexture(e.eventobjid, uiid, button_1, number1) ----- etc. (similar code for numbers 2 to 9) end if number_1_ == click_time_of_button_1 and number_2_ == click_time_of_button_2 and number_3_ == click_time_of_button_3 then Player:notifyGameInfo2Self(e.eventobjid, "you solved the password correctly") end end ScriptSupportEvent:registerEvent("UI.Button.Click", number_1) * **//click_time_of_button_1//** keeps track of how many times //**button_1**// is clicked. * Each time **//button_1//** is clicked, its associated number is incremented. After 9, it wraps back to 0. * **//Customui:setTexture//** updates the button's texture to display the corresponding number. * The code checks if all three buttons (**//button_1//**, **//button_2//**, and **//button_3//**) match the correct password. If they do, a success message is displayed. === Button 2 and 3 is the same === === Password Check === if number_1_ == click_time_of_button_1 and number_2_ == click_time_of_button_2 and number_3_ == click_time_of_button_3 then Player:notifyGameInfo2Self(e.eventobjid, "you solved the password correctly") end * For each button, the code compares the current number with the correct number in the password (**//number_1_//**, //**number_2_**//, //**number_3_**//). * If all three numbers match, the player is notified that the password is correct. ---- 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]]