uilibary
Anonymous pasteNo password2 revisionsUpdated Aug 23, 2026, 6:02 PM
1--[[2 3 4 5██╗ ██╗ ██╗███╗ ██╗ █████╗ ██╗███╗ ██╗████████╗███████╗██████╗ ███████╗ █████╗ ██████╗███████╗ ███████╗██╗ ██╗██╗████████╗███████╗6██║ ██║ ██║████╗ ██║██╔══██╗ ██║████╗ ██║╚══██╔══╝██╔════╝██╔══██╗██╔════╝██╔══██╗██╔════╝██╔════╝ ██╔════╝██║ ██║██║╚══██╔══╝██╔════╝7██║ ██║ ██║██╔██╗ ██║███████║ ██║██╔██╗ ██║ ██║ █████╗ ██████╔╝█████╗ ███████║██║ █████╗ ███████╗██║ ██║██║ ██║ █████╗ 8██║ ██║ ██║██║╚██╗██║██╔══██║ ██║██║╚██╗██║ ██║ ██╔══╝ ██╔══██╗██╔══╝ ██╔══██║██║ ██╔══╝ ╚════██║██║ ██║██║ ██║ ██╔══╝ 9███████╗╚██████╔╝██║ ╚████║██║ ██║ ██║██║ ╚████║ ██║ ███████╗██║ ██║██║ ██║ ██║╚██████╗███████╗ ███████║╚██████╔╝██║ ██║ ███████╗10╚══════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝11by d8b db d88888b d8888b. db db db .d8b. .d8888. .d88b. d88888b d888888b db d8b db .d88b. d8888b. db dD .d8888. 12 888o 88 88' 88 `8D 88 88 88 d8' `8b 88' YP .8P Y8. 88' `~~88~~' 88 I8I 88 .8P Y8. 88 `8D 88 ,8P' 88' YP 13 88V8o 88 88ooooo 88oooY' 88 88 88 88ooo88 `8bo. 88 88 88ooo 88 88 I8I 88 88 88 88oobY' 88,8P `8bo. 14 88 V8o88 88~~~~~ 88~~~b. 88 88 88 88~~~88 `Y8b. 88 88 88~~~ 88 Y8 I8I 88 88 88 88`8b 88`8b `Y8b. 15 88 V888 88. 88 8D 88b d88 88booo. 88 88 db 8D `8b d8' 88 88 `8b d8'8b d8' `8b d8' 88 `88. 88 `88. db 8D 16 VP V8P Y88888P Y8888P' ~Y8888P' Y88888P YP YP `8888Y' `Y88P' YP YP `8b8' `8d8' `Y88P' 88 YD YP YD `8888Y' 17 18 19Main Credits20 21Hunter (Nebula Softworks) | Designing And Programming | Main Developer22JustHey (Nebula Softworks) | Configurations, Bug Fixing And More! | Co Developer23Throit | Color Picker24Wally | Dragging And Certain Functions25Sirius | PCall Parsing, Notifications, Slider And Home Tab26Luna Executor | Original UI27 28 29Extra Credits / Provided Certain Elements30 31Pookie Pepelss | Bug Tester32Inori | Configuration Concept33Latte Softworks and qweery | Lucide Icons And Material Icons34kirill9655 | Loading Circle35Deity/dp4pv/x64x70 | Certain Scripting and Testing ig36 37Contributors38iPigTw | Typo Fixer, Fixed Key System!!39pushByAccident | Fixing Executor Lists40ImFloriz | Method Fixing41 42Luna Interface Suite43by Nebula Softworks44 45]]46 47local Release = "Prerelease Beta 6.1"48 49local Luna = { 50 Folder = "Luna", 51 Options = {}, 52 ThemeGradient = ColorSequence.new{ColorSequenceKeypoint.new(0.00, Color3.fromHex("#0091FF")), ColorSequenceKeypoint.new(0.50, Color3.fromHex("#0091FF")), ColorSequenceKeypoint.new(1.00, Color3.fromHex("#0091FF"))} 53}54 55local UserInputService = game:GetService("UserInputService")56local TweenService = game:GetService("TweenService")57local HttpService = game:GetService("HttpService")58local RunService = game:GetService("RunService")59local Localization = game:GetService("LocalizationService")60local Players = game:GetService("Players")61local Player = Players.LocalPlayer62local Camera = workspace.CurrentCamera63local CoreGui = game:GetService("CoreGui")64 65local isStudio66local website = "github.com/Nebula-Softworks"67 68if RunService:IsStudio() then69 isStudio = true70end71 72-- Credits To Latte Softworks And qweery for Lucide And Material Icons Respectively.73local IconModule = {74 Lucide = nil,75 Material = {76 ["perm_media"] = "http://www.roblox.com/asset/?id=6031215982";77 ["sticky_note_2"] = "http://www.roblox.com/asset/?id=6031265972";78 ["gavel"] = "http://www.roblox.com/asset/?id=6023565902";79 ["table_view"] = "http://www.roblox.com/asset/?id=6031233835";80 ["home"] = "http://www.roblox.com/asset/?id=6026568195";81 ["list"] = "http://www.roblox.com/asset/?id=6026568229";82 ["alarm_add"] = "http://www.roblox.com/asset/?id=6023426898";83 ["speaker_notes"] = "http://www.roblox.com/asset/?id=6031266001";84 ["check_circle_outline"] = "http://www.roblox.com/asset/?id=6023426909";85 ["extension"] = "http://www.roblox.com/asset/?id=6023565892";86 ["pending"] = "http://www.roblox.com/asset/?id=6031084745";87 ["pageview"] = "http://www.roblox.com/asset/?id=6031216007";88 ["group_work"] = "http://www.roblox.com/asset/?id=6023565910";89 ["zoom_in"] = "http://www.roblox.com/asset/?id=6031075573";90 ["aspect_ratio"] = "http://www.roblox.com/asset/?id=6022668895";91 ["code"] = "http://www.roblox.com/asset/?id=6022668955";92 ["3d_rotation"] = "http://www.roblox.com/asset/?id=6022668893";93 ["translate"] = "http://www.roblox.com/asset/?id=6031225812";94 ["star_rate"] = "http://www.roblox.com/asset/?id=6031265978";95 ["system_update_alt"] = "http://www.roblox.com/asset/?id=6031251515";96 ["open_with"] = "http://www.roblox.com/asset/?id=6026568265";97 ["build_circle"] = "http://www.roblox.com/asset/?id=6023426952";98 ["toc"] = "http://www.roblox.com/asset/?id=6031229341";99 ["settings_phone"] = "http://www.roblox.com/asset/?id=6031289445";100 ["open_in_full"] = "http://www.roblox.com/asset/?id=6026568245";101 ["history"] = "http://www.roblox.com/asset/?id=6026568197";102 ["accessibility_new"] = "http://www.roblox.com/asset/?id=6022668945";103 ["hourglass_disabled"] = "http://www.roblox.com/asset/?id=6026568193";104 ["line_style"] = "http://www.roblox.com/asset/?id=6026568276";105 ["account_circle"] = "http://www.roblox.com/asset/?id=6022668898";106 ["settings_cell"] = "http://www.roblox.com/asset/?id=6031280890";107 ["search_off"] = "http://www.roblox.com/asset/?id=6031260783";108 ["shop"] = "http://www.roblox.com/asset/?id=6031265983";109 ["anchor"] = "http://www.roblox.com/asset/?id=6023426906";110 ["language"] = "http://www.roblox.com/asset/?id=6026568213";111 ["settings_brightness"] = "http://www.roblox.com/asset/?id=6031280902";112 ["restore_page"] = "http://www.roblox.com/asset/?id=6031154877";113 ["chrome_reader_mode"] = "http://www.roblox.com/asset/?id=6023426912";114 ["sync_alt"] = "http://www.roblox.com/asset/?id=6031233840";115 ["book"] = "http://www.roblox.com/asset/?id=6022860343";116 ["smart_button"] = "http://www.roblox.com/asset/?id=6031265962";117 ["request_page"] = "http://www.roblox.com/asset/?id=6031154873";118 ["lock_clock"] = "http://www.roblox.com/asset/?id=6026568260";119 ["android"] = "http://www.roblox.com/asset/?id=6022668966";120 ["outgoing_mail"] = "http://www.roblox.com/asset/?id=6026568242";121 ["dynamic_form"] = "http://www.roblox.com/asset/?id=6023426970";122 ["track_changes"] = "http://www.roblox.com/asset/?id=6031225814";123 ["source"] = "http://www.roblox.com/asset/?id=6031289451";124 ["thumb_down"] = "http://www.roblox.com/asset/?id=6031229336";125 ["integration_instructions"] = "http://www.roblox.com/asset/?id=6026568214";126 ["opacity"] = "http://www.roblox.com/asset/?id=6026568295";127 ["perm_identity"] = "http://www.roblox.com/asset/?id=6031215978";128 ["view_module"] = "http://www.roblox.com/asset/?id=6031079152";129 ["perm_data_setting"] = "http://www.roblox.com/asset/?id=6031215991";130 ["assignment_turned_in"] = "http://www.roblox.com/asset/?id=6023426904";131 ["change_history"] = "http://www.roblox.com/asset/?id=6023426914";132 ["thumb_down_off_alt"] = "http://www.roblox.com/asset/?id=6031229354";133 ["text_rotation_angledown"] = "http://www.roblox.com/asset/?id=6031251513";134 ["bookmark"] = "http://www.roblox.com/asset/?id=6022852108";135 ["view_stream"] = "http://www.roblox.com/asset/?id=6031079164";136 ["remove_done"] = "http://www.roblox.com/asset/?id=6031086169";137 ["markunread_mailbox"] = "http://www.roblox.com/asset/?id=6031082531";138 ["store"] = "http://www.roblox.com/asset/?id=6031265968";139 ["text_rotation_angleup"] = "http://www.roblox.com/asset/?id=6031229337";140 ["eco"] = "http://www.roblox.com/asset/?id=6023426988";141 ["find_in_page"] = "http://www.roblox.com/asset/?id=6023426986";142 ["api"] = "http://www.roblox.com/asset/?id=6022668911";143 ["launch"] = "http://www.roblox.com/asset/?id=6026568211";144 ["text_rotation_down"] = "http://www.roblox.com/asset/?id=6031229334";145 ["flip_to_back"] = "http://www.roblox.com/asset/?id=6023565896";146 ["contact_page"] = "http://www.roblox.com/asset/?id=6022668881";147 ["preview"] = "http://www.roblox.com/asset/?id=6031260793";148 ["restore"] = "http://www.roblox.com/asset/?id=6031260800";149 ["favorite_border"] = "http://www.roblox.com/asset/?id=6023565882";150 ["assignment_late"] = "http://www.roblox.com/asset/?id=6022668880";151 ["youtube_searched_for"] = "http://www.roblox.com/asset/?id=6031075934";152 ["hourglass_full"] = "http://www.roblox.com/asset/?id=6026568190";153 ["timeline"] = "http://www.roblox.com/asset/?id=6031229350";154 ["turned_in"] = "http://www.roblox.com/asset/?id=6031225808";155 ["info"] = "http://www.roblox.com/asset/?id=6026568227";156 ["restore_from_trash"] = "http://www.roblox.com/asset/?id=6031154869";157 ["arrow_circle_down"] = "http://www.roblox.com/asset/?id=6022668877";158 ["flaky"] = "http://www.roblox.com/asset/?id=6031082523";159 ["alarm_on"] = "http://www.roblox.com/asset/?id=6023426920";160 ["swap_vertical_circle"] = "http://www.roblox.com/asset/?id=6031233839";161 ["open_in_new"] = "http://www.roblox.com/asset/?id=6026568256";162 ["watch_later"] = "http://www.roblox.com/asset/?id=6031075924";163 ["alarm_off"] = "http://www.roblox.com/asset/?id=6023426901";164 ["maximize"] = "http://www.roblox.com/asset/?id=6026568267";165 ["lock_outline"] = "http://www.roblox.com/asset/?id=6031082533";166 ["outbond"] = "http://www.roblox.com/asset/?id=6026568244";167 ["view_carousel"] = "http://www.roblox.com/asset/?id=6031251507";168 ["published_with_changes"] = "http://www.roblox.com/asset/?id=6031243328";169 ["verified_user"] = "http://www.roblox.com/asset/?id=6031225819";170 ["drag_indicator"] = "http://www.roblox.com/asset/?id=6023426962";171 ["lightbulb_outline"] = "http://www.roblox.com/asset/?id=6026568254";172 ["segment"] = "http://www.roblox.com/asset/?id=6031260773";173 ["assignment"] = "http://www.roblox.com/asset/?id=6022668882";174 ["work_outline"] = "http://www.roblox.com/asset/?id=6031075930";175 ["line_weight"] = "http://www.roblox.com/asset/?id=6026568226";176 ["dangerous"] = "http://www.roblox.com/asset/?id=6022668916";177 ["assessment"] = "http://www.roblox.com/asset/?id=6022668897";178 ["view_day"] = "http://www.roblox.com/asset/?id=6031079153";179 ["help_center"] = "http://www.roblox.com/asset/?id=6026568192";180 ["logout"] = "http://www.roblox.com/asset/?id=6031082522";181 ["event"] = "http://www.roblox.com/asset/?id=6023426959";182 ["get_app"] = "http://www.roblox.com/asset/?id=6023565889";183 ["tab"] = "http://www.roblox.com/asset/?id=6031233851";184 ["label"] = "http://www.roblox.com/asset/?id=6031082525";185 ["g_translate"] = "http://www.roblox.com/asset/?id=6031082526";186 ["view_week"] = "http://www.roblox.com/asset/?id=6031079154";187 ["view_in_ar"] = "http://www.roblox.com/asset/?id=6031079158";188 ["card_travel"] = "http://www.roblox.com/asset/?id=6023426925";189 ["lock_open"] = "http://www.roblox.com/asset/?id=6026568220";190 ["voice_over_off"] = "http://www.roblox.com/asset/?id=6031075927";191 ["app_blocking"] = "http://www.roblox.com/asset/?id=6022668952";192 ["settings_ethernet"] = "http://www.roblox.com/asset/?id=6031280883";193 ["supervised_user_circle"] = "http://www.roblox.com/asset/?id=6031289449";194 ["done_all"] = "http://www.roblox.com/asset/?id=6023426929";195 ["lightbulb"] = "http://www.roblox.com/asset/?id=6026568247";196 ["find_replace"] = "http://www.roblox.com/asset/?id=6023426979";197 ["bookmarks"] = "http://www.roblox.com/asset/?id=6023426924";198 ["today"] = "http://www.roblox.com/asset/?id=6031229352";199 ["class"] = "http://www.roblox.com/asset/?id=6022668949";200 ["supervisor_account"] = "http://www.roblox.com/asset/?id=6031251516";201 ["support"] = "http://www.roblox.com/asset/?id=6031251532";202 ["done_outline"] = "http://www.roblox.com/asset/?id=6023426936";203 ["reorder"] = "http://www.roblox.com/asset/?id=6031154868";204 ["fact_check"] = "http://www.roblox.com/asset/?id=6023426951";205 ["thumb_up"] = "http://www.roblox.com/asset/?id=6031229347";206 ["assignment_returned"] = "http://www.roblox.com/asset/?id=6023426899";207 ["card_giftcard"] = "http://www.roblox.com/asset/?id=6023426978";208 ["trending_down"] = "http://www.roblox.com/asset/?id=6031225811";209 ["settings_backup_restore"] = "http://www.roblox.com/asset/?id=6031280886";210 ["settings_voice"] = "http://www.roblox.com/asset/?id=6031265966";211 ["dns"] = "http://www.roblox.com/asset/?id=6023426958";212 ["perm_scan_wifi"] = "http://www.roblox.com/asset/?id=6031215985";213 ["plagiarism"] = "http://www.roblox.com/asset/?id=6031243320";214 ["commute"] = "http://www.roblox.com/asset/?id=6022668901";215 ["gif"] = "http://www.roblox.com/asset/?id=6031082540";216 ["work"] = "http://www.roblox.com/asset/?id=6031075939";217 ["picture_in_picture_alt"] = "http://www.roblox.com/asset/?id=6031215979";218 ["query_builder"] = "http://www.roblox.com/asset/?id=6031086183";219 ["label_off"] = "http://www.roblox.com/asset/?id=6026568209";220 ["all_out"] = "http://www.roblox.com/asset/?id=6022668876";221 ["article"] = "http://www.roblox.com/asset/?id=6022668907";222 ["shopping_basket"] = "http://www.roblox.com/asset/?id=6031265997";223 ["mark_as_unread"] = "http://www.roblox.com/asset/?id=6026568223";224 ["work_off"] = "http://www.roblox.com/asset/?id=6031075937";225 ["delete_outline"] = "http://www.roblox.com/asset/?id=6022668962";226 ["account_box"] = "http://www.roblox.com/asset/?id=6023426915";227 ["home_filled"] = "rbxassetid://9080449299";228 ["lock"] = "http://www.roblox.com/asset/?id=6026568224";229 ["perm_device_information"] = "http://www.roblox.com/asset/?id=6031215996";230 ["add_task"] = "http://www.roblox.com/asset/?id=6022668912";231 ["text_rotate_up"] = "http://www.roblox.com/asset/?id=6031251526";232 ["swipe"] = "http://www.roblox.com/asset/?id=6031233863";233 ["eject"] = "http://www.roblox.com/asset/?id=6023426930";234 ["mediation"] = "http://www.roblox.com/asset/?id=6026568249";235 ["label_important_outline"] = "http://www.roblox.com/asset/?id=6026568199";236 ["settings_remote"] = "http://www.roblox.com/asset/?id=6031289442";237 ["history_toggle_off"] = "http://www.roblox.com/asset/?id=6026568196";238 ["invert_colors"] = "http://www.roblox.com/asset/?id=6026568253";239 ["visibility_off"] = "http://www.roblox.com/asset/?id=6031075929";240 ["addchart"] = "http://www.roblox.com/asset/?id=6023426905";241 ["cancel_schedule_send"] = "http://www.roblox.com/asset/?id=6022668963";242 ["loyalty"] = "http://www.roblox.com/asset/?id=6026568237";243 ["speaker_notes_off"] = "http://www.roblox.com/asset/?id=6031265965";244 ["online_prediction"] = "http://www.roblox.com/asset/?id=6026568239";245 ["remove_shopping_cart"] = "http://www.roblox.com/asset/?id=6031260778";246 ["text_rotate_vertical"] = "http://www.roblox.com/asset/?id=6031251518";247 ["visibility"] = "http://www.roblox.com/asset/?id=6031075931";248 ["add_to_drive"] = "http://www.roblox.com/asset/?id=6022860335";249 ["accessible"] = "http://www.roblox.com/asset/?id=6022668902";250 ["bookmark_border"] = "http://www.roblox.com/asset/?id=6022860339";251 ["tour"] = "http://www.roblox.com/asset/?id=6031229362";252 ["compare_arrows"] = "http://www.roblox.com/asset/?id=6022668951";253 ["view_sidebar"] = "http://www.roblox.com/asset/?id=6031079160";254 ["face"] = "http://www.roblox.com/asset/?id=6023426944";255 ["wysiwyg"] = "http://www.roblox.com/asset/?id=6031075938";256 ["camera_enhance"] = "http://www.roblox.com/asset/?id=6023426935";257 ["perm_camera_mic"] = "http://www.roblox.com/asset/?id=6031215983";258 ["model_training"] = "http://www.roblox.com/asset/?id=6026568222";259 ["arrow_circle_up"] = "http://www.roblox.com/asset/?id=6022668934";260 ["euro_symbol"] = "http://www.roblox.com/asset/?id=6023426954";261 ["pending_actions"] = "http://www.roblox.com/asset/?id=6031260777";262 ["not_accessible"] = "http://www.roblox.com/asset/?id=6026568269";263 ["explore_off"] = "http://www.roblox.com/asset/?id=6023426953";264 ["build"] = "http://www.roblox.com/asset/?id=6023426938";265 ["backup"] = "http://www.roblox.com/asset/?id=6023426911";266 ["settings_input_antenna"] = "http://www.roblox.com/asset/?id=6031280891";267 ["disabled_by_default"] = "http://www.roblox.com/asset/?id=6023426939";268 ["upgrade"] = "http://www.roblox.com/asset/?id=6031225815";269 ["contactless"] = "http://www.roblox.com/asset/?id=6022668886";270 ["trending_flat"] = "http://www.roblox.com/asset/?id=6031225818";271 ["schedule"] = "http://www.roblox.com/asset/?id=6031260808";272 ["offline_pin"] = "http://www.roblox.com/asset/?id=6031084770";273 ["date_range"] = "http://www.roblox.com/asset/?id=6022668894";274 ["flight_land"] = "http://www.roblox.com/asset/?id=6023565897";275 ["view_headline"] = "http://www.roblox.com/asset/?id=6031079151";276 ["cached"] = "http://www.roblox.com/asset/?id=6023426921";277 ["unpublished"] = "http://www.roblox.com/asset/?id=6031225817";278 ["outlet"] = "http://www.roblox.com/asset/?id=6031084748";279 ["favorite"] = "http://www.roblox.com/asset/?id=6023426974";280 ["vertical_split"] = "http://www.roblox.com/asset/?id=6031225820";281 ["report_problem"] = "http://www.roblox.com/asset/?id=6031086176";282 ["fingerprint"] = "http://www.roblox.com/asset/?id=6023565895";283 ["important_devices"] = "http://www.roblox.com/asset/?id=6026568202";284 ["outbox"] = "http://www.roblox.com/asset/?id=6026568263";285 ["all_inbox"] = "http://www.roblox.com/asset/?id=6022668909";286 ["label_important"] = "http://www.roblox.com/asset/?id=6026568215";287 ["print"] = "http://www.roblox.com/asset/?id=6031243324";288 ["settings_bluetooth"] = "http://www.roblox.com/asset/?id=6031280905";289 ["power_settings_new"] = "http://www.roblox.com/asset/?id=6031260781";290 ["zoom_out"] = "http://www.roblox.com/asset/?id=6031075577";291 ["stars"] = "http://www.roblox.com/asset/?id=6031265971";292 ["offline_bolt"] = "http://www.roblox.com/asset/?id=6031084742";293 ["feedback"] = "http://www.roblox.com/asset/?id=6023426957";294 ["accessibility"] = "http://www.roblox.com/asset/?id=6022668887";295 ["announcement"] = "http://www.roblox.com/asset/?id=6022668946";296 ["settings_input_hdmi"] = "http://www.roblox.com/asset/?id=6031280970";297 ["leaderboard"] = "http://www.roblox.com/asset/?id=6026568216";298 ["view_quilt"] = "http://www.roblox.com/asset/?id=6031079155";299 ["note_add"] = "http://www.roblox.com/asset/?id=6031084749";300 ["theaters"] = "http://www.roblox.com/asset/?id=6031229335";301 ["alarm"] = "http://www.roblox.com/asset/?id=6023426910";302 ["settings_input_composite"] = "http://www.roblox.com/asset/?id=6031280896";303 ["grade"] = "http://www.roblox.com/asset/?id=6026568189";304 ["tab_unselected"] = "http://www.roblox.com/asset/?id=6031251505";305 ["swap_vert"] = "http://www.roblox.com/asset/?id=6031233847";306 ["assignment_return"] = "http://www.roblox.com/asset/?id=6023426931";307 ["highlight_alt"] = "http://www.roblox.com/asset/?id=6023565913";308 ["shopping_bag"] = "http://www.roblox.com/asset/?id=6031265970";309 ["contact_support"] = "http://www.roblox.com/asset/?id=6022668879";310 ["flip_to_front"] = "http://www.roblox.com/asset/?id=6023565894";311 ["touch_app"] = "http://www.roblox.com/asset/?id=6031229361";312 ["room"] = "http://www.roblox.com/asset/?id=6031154875";313 ["send_and_archive"] = "http://www.roblox.com/asset/?id=6031280889";314 ["view_array"] = "http://www.roblox.com/asset/?id=6031225842";315 ["settings_power"] = "http://www.roblox.com/asset/?id=6031289446";316 ["admin_panel_settings"] = "http://www.roblox.com/asset/?id=6022668961";317 ["open_in_browser"] = "http://www.roblox.com/asset/?id=6026568266";318 ["card_membership"] = "http://www.roblox.com/asset/?id=6023426942";319 ["rule"] = "http://www.roblox.com/asset/?id=6031154859";320 ["schedule_send"] = "http://www.roblox.com/asset/?id=6031154866";321 ["calendar_today"] = "http://www.roblox.com/asset/?id=6022668917";322 ["info_outline"] = "http://www.roblox.com/asset/?id=6026568210";323 ["description"] = "http://www.roblox.com/asset/?id=6022668888";324 ["dashboard_customize"] = "http://www.roblox.com/asset/?id=6022668899";325 ["rowing"] = "http://www.roblox.com/asset/?id=6031154857";326 ["swap_horizontal_circle"] = "http://www.roblox.com/asset/?id=6031233833";327 ["account_balance_wallet"] = "http://www.roblox.com/asset/?id=6022668892";328 ["view_agenda"] = "http://www.roblox.com/asset/?id=6031225831";329 ["shop_two"] = "http://www.roblox.com/asset/?id=6031289461";330 ["done"] = "http://www.roblox.com/asset/?id=6023426926";331 ["circle_notifications"] = "http://www.roblox.com/asset/?id=6023426923";332 ["compress"] = "http://www.roblox.com/asset/?id=6022668878";333 ["calendar_view_day"] = "http://www.roblox.com/asset/?id=6023426946";334 ["thumbs_up_down"] = "http://www.roblox.com/asset/?id=6031229373";335 ["account_balance"] = "http://www.roblox.com/asset/?id=6022668900";336 ["play_for_work"] = "http://www.roblox.com/asset/?id=6031260776";337 ["pets"] = "http://www.roblox.com/asset/?id=6031260782";338 ["view_column"] = "http://www.roblox.com/asset/?id=6031079172";339 ["search"] = "http://www.roblox.com/asset/?id=6031154871";340 ["autorenew"] = "http://www.roblox.com/asset/?id=6023565901";341 ["copyright"] = "http://www.roblox.com/asset/?id=6023565898";342 ["privacy_tip"] = "http://www.roblox.com/asset/?id=6031260784";343 ["arrow_right_alt"] = "http://www.roblox.com/asset/?id=6022668890";344 ["delete"] = "http://www.roblox.com/asset/?id=6022668885";345 ["nightlight_round"] = "http://www.roblox.com/asset/?id=6031084743";346 ["batch_prediction"] = "http://www.roblox.com/asset/?id=6022860334";347 ["shopping_cart"] = "http://www.roblox.com/asset/?id=6031265976";348 ["login"] = "http://www.roblox.com/asset/?id=6031082527";349 ["settings_input_svideo"] = "http://www.roblox.com/asset/?id=6031289444";350 ["payment"] = "http://www.roblox.com/asset/?id=6031084751";351 ["update"] = "http://www.roblox.com/asset/?id=6031225810";352 ["text_rotation_none"] = "http://www.roblox.com/asset/?id=6031229344";353 ["perm_contact_calendar"] = "http://www.roblox.com/asset/?id=6031215990";354 ["explore"] = "http://www.roblox.com/asset/?id=6023426941";355 ["delete_forever"] = "http://www.roblox.com/asset/?id=6022668939";356 ["rounded_corner"] = "http://www.roblox.com/asset/?id=6031154861";357 ["book_online"] = "http://www.roblox.com/asset/?id=6022860332";358 ["quickreply"] = "http://www.roblox.com/asset/?id=6031243319";359 ["bug_report"] = "http://www.roblox.com/asset/?id=6022852107";360 ["subtitles_off"] = "http://www.roblox.com/asset/?id=6031289466";361 ["close_fullscreen"] = "http://www.roblox.com/asset/?id=6023426928";362 ["horizontal_split"] = "http://www.roblox.com/asset/?id=6026568194";363 ["minimize"] = "http://www.roblox.com/asset/?id=6026568240";364 ["filter_list_alt"] = "http://www.roblox.com/asset/?id=6023426955";365 ["add_shopping_cart"] = "http://www.roblox.com/asset/?id=6022668875";366 ["next_plan"] = "http://www.roblox.com/asset/?id=6026568231";367 ["view_list"] = "http://www.roblox.com/asset/?id=6031079156";368 ["receipt"] = "http://www.roblox.com/asset/?id=6031086173";369 ["polymer"] = "http://www.roblox.com/asset/?id=6031260785";370 ["spellcheck"] = "http://www.roblox.com/asset/?id=6031289450";371 ["wifi_protected_setup"] = "http://www.roblox.com/asset/?id=6031075926";372 ["label_outline"] = "http://www.roblox.com/asset/?id=6026568207";373 ["highlight_off"] = "http://www.roblox.com/asset/?id=6023565916";374 ["turned_in_not"] = "http://www.roblox.com/asset/?id=6031225806";375 ["edit_off"] = "http://www.roblox.com/asset/?id=6023426983";376 ["question_answer"] = "http://www.roblox.com/asset/?id=6031086172";377 ["settings_overscan"] = "http://www.roblox.com/asset/?id=6031289459";378 ["trending_up"] = "http://www.roblox.com/asset/?id=6031225816";379 ["verified"] = "http://www.roblox.com/asset/?id=6031225809";380 ["flight_takeoff"] = "http://www.roblox.com/asset/?id=6023565891";381 ["grading"] = "http://www.roblox.com/asset/?id=6026568191";382 ["dashboard"] = "http://www.roblox.com/asset/?id=6022668883";383 ["expand"] = "http://www.roblox.com/asset/?id=6022668891";384 ["backup_table"] = "http://www.roblox.com/asset/?id=6022860338";385 ["analytics"] = "http://www.roblox.com/asset/?id=6022668884";386 ["picture_in_picture"] = "http://www.roblox.com/asset/?id=6031215994";387 ["settings"] = "http://www.roblox.com/asset/?id=6031280882";388 ["accessible_forward"] = "http://www.roblox.com/asset/?id=6022668906";389 ["pan_tool"] = "http://www.roblox.com/asset/?id=6031084771";390 ["https"] = "http://www.roblox.com/asset/?id=6026568200";391 ["filter_alt"] = "http://www.roblox.com/asset/?id=6023426984";392 ["thumb_up_off_alt"] = "http://www.roblox.com/asset/?id=6031229342";393 ["record_voice_over"] = "http://www.roblox.com/asset/?id=6031243318";394 ["help_outline"] = "http://www.roblox.com/asset/?id=6026568201";395 ["check_circle"] = "http://www.roblox.com/asset/?id=6023426945";396 ["comment_bank"] = "http://www.roblox.com/asset/?id=6023426937";397 ["perm_phone_msg"] = "http://www.roblox.com/asset/?id=6031215986";398 ["settings_applications"] = "http://www.roblox.com/asset/?id=6031280894";399 ["exit_to_app"] = "http://www.roblox.com/asset/?id=6023426922";400 ["saved_search"] = "http://www.roblox.com/asset/?id=6031154867";401 ["toll"] = "http://www.roblox.com/asset/?id=6031229343";402 ["not_started"] = "http://www.roblox.com/asset/?id=6026568232";403 ["subject"] = "http://www.roblox.com/asset/?id=6031289452";404 ["redeem"] = "http://www.roblox.com/asset/?id=6031086170";405 ["input"] = "http://www.roblox.com/asset/?id=6026568225";406 ["settings_input_component"] = "http://www.roblox.com/asset/?id=6031280884";407 ["assignment_ind"] = "http://www.roblox.com/asset/?id=6022668935";408 ["swap_horiz"] = "http://www.roblox.com/asset/?id=6031233841";409 ["fullscreen"] = "http://www.roblox.com/asset/?id=6031094681";410 ["cancel"] = "http://www.roblox.com/asset/?id=6031094677";411 ["subdirectory_arrow_left"] = "http://www.roblox.com/asset/?id=6031104654";412 ["close"] = "http://www.roblox.com/asset/?id=6031094678";413 ["arrow_back_ios"] = "http://www.roblox.com/asset/?id=6031091003";414 ["east"] = "http://www.roblox.com/asset/?id=6031094675";415 ["unfold_more"] = "http://www.roblox.com/asset/?id=6031104644";416 ["south"] = "http://www.roblox.com/asset/?id=6031104646";417 ["arrow_drop_up"] = "http://www.roblox.com/asset/?id=6031090990";418 ["arrow_back"] = "http://www.roblox.com/asset/?id=6031091000";419 ["arrow_downward"] = "http://www.roblox.com/asset/?id=6031090991";420 ["west"] = "http://www.roblox.com/asset/?id=6031104677";421 ["legend_toggle"] = "http://www.roblox.com/asset/?id=6031097233";422 ["fullscreen_exit"] = "http://www.roblox.com/asset/?id=6031094691";423 ["last_page"] = "http://www.roblox.com/asset/?id=6031094686";424 ["switch_right"] = "http://www.roblox.com/asset/?id=6031104649";425 ["check"] = "http://www.roblox.com/asset/?id=6031094667";426 ["home_work"] = "http://www.roblox.com/asset/?id=6031094683";427 ["north_east"] = "http://www.roblox.com/asset/?id=6031097228";428 ["double_arrow"] = "http://www.roblox.com/asset/?id=6031094674";429 ["more_vert"] = "http://www.roblox.com/asset/?id=6031104648";430 ["chevron_left"] = "http://www.roblox.com/asset/?id=6031094670";431 ["more_horiz"] = "http://www.roblox.com/asset/?id=6031104650";432 ["unfold_less"] = "http://www.roblox.com/asset/?id=6031104681";433 ["first_page"] = "http://www.roblox.com/asset/?id=6031094682";434 ["payments"] = "http://www.roblox.com/asset/?id=6031097227";435 ["arrow_right"] = "http://www.roblox.com/asset/?id=6031090994";436 ["offline_share"] = "http://www.roblox.com/asset/?id=6031097267";437 ["south_west"] = "http://www.roblox.com/asset/?id=6031104652";438 ["expand_less"] = "http://www.roblox.com/asset/?id=6031094679";439 ["south_east"] = "http://www.roblox.com/asset/?id=6031104642";440 ["assistant_navigation"] = "http://www.roblox.com/asset/?id=6031091006";441 ["apps"] = "http://www.roblox.com/asset/?id=6031090999";442 ["arrow_upward"] = "http://www.roblox.com/asset/?id=6031090997";443 ["app_settings_alt"] = "http://www.roblox.com/asset/?id=6031090998";444 ["subdirectory_arrow_right"] = "http://www.roblox.com/asset/?id=6031104647";445 ["north_west"] = "http://www.roblox.com/asset/?id=6031104630";446 ["switch_left"] = "http://www.roblox.com/asset/?id=6031104651";447 ["chevron_right"] = "http://www.roblox.com/asset/?id=6031094680";448 ["arrow_forward"] = "http://www.roblox.com/asset/?id=6031090995";449 ["arrow_forward_ios"] = "http://www.roblox.com/asset/?id=6031091008";450 ["arrow_drop_down"] = "http://www.roblox.com/asset/?id=6031091004";451 ["refresh"] = "http://www.roblox.com/asset/?id=6031097226";452 ["pivot_table_chart"] = "http://www.roblox.com/asset/?id=6031097234";453 ["expand_more"] = "http://www.roblox.com/asset/?id=6031094687";454 ["campaign"] = "http://www.roblox.com/asset/?id=6031094666";455 ["arrow_left"] = "http://www.roblox.com/asset/?id=6031091002";456 ["arrow_drop_down_circle"] = "http://www.roblox.com/asset/?id=6031091001";457 ["menu_open"] = "http://www.roblox.com/asset/?id=6031097229";458 ["waterfall_chart"] = "http://www.roblox.com/asset/?id=6031104632";459 ["assistant_direction"] = "http://www.roblox.com/asset/?id=6031091005";460 ["menu"] = "http://www.roblox.com/asset/?id=6031097225";461 ["personal_video"] = "http://www.roblox.com/asset/?id=6034457070";462 ["power_off"] = "http://www.roblox.com/asset/?id=6034457087";463 ["wifi_off"] = "http://www.roblox.com/asset/?id=6034461625";464 ["adb"] = "http://www.roblox.com/asset/?id=6034418515";465 ["airline_seat_recline_normal"] = "http://www.roblox.com/asset/?id=6034418512";466 ["sync_problem"] = "http://www.roblox.com/asset/?id=6034452653";467 ["network_check"] = "http://www.roblox.com/asset/?id=6034461631";468 ["event_busy"] = "http://www.roblox.com/asset/?id=6034439634";469 ["airline_seat_flat"] = "http://www.roblox.com/asset/?id=6034418511";470 ["disc_full"] = "http://www.roblox.com/asset/?id=6034418518";471 ["sd_card"] = "http://www.roblox.com/asset/?id=6034457089";472 ["time_to_leave"] = "http://www.roblox.com/asset/?id=6034452660";473 ["phone_bluetooth_speaker"] = "http://www.roblox.com/asset/?id=6034457057";474 ["phone_paused"] = "http://www.roblox.com/asset/?id=6034457066";475 ["phone_locked"] = "http://www.roblox.com/asset/?id=6034457058";476 ["more"] = "http://www.roblox.com/asset/?id=6034461627";477 ["add_call"] = "http://www.roblox.com/asset/?id=6034418524";478 ["account_tree"] = "http://www.roblox.com/asset/?id=6034418507";479 ["do_not_disturb_on"] = "http://www.roblox.com/asset/?id=6034439649";480 ["event_note"] = "http://www.roblox.com/asset/?id=6034439637";481 ["sync_disabled"] = "http://www.roblox.com/asset/?id=6034452649";482 ["mms"] = "http://www.roblox.com/asset/?id=6034461621";483 ["airline_seat_flat_angled"] = "http://www.roblox.com/asset/?id=6034418513";484 ["bluetooth_audio"] = "http://www.roblox.com/asset/?id=6034418522";485 ["vibration"] = "http://www.roblox.com/asset/?id=6034452651";486 ["system_update"] = "http://www.roblox.com/asset/?id=6034452663";487 ["enhanced_encryption"] = "http://www.roblox.com/asset/?id=6034439652";488 ["wc"] = "http://www.roblox.com/asset/?id=6034452643";489 ["live_tv"] = "http://www.roblox.com/asset/?id=6034439648";490 ["folder_special"] = "http://www.roblox.com/asset/?id=6034439639";491 ["phone_missed"] = "http://www.roblox.com/asset/?id=6034457056";492 ["airline_seat_recline_extra"] = "http://www.roblox.com/asset/?id=6034418528";493 ["sms"] = "http://www.roblox.com/asset/?id=6034452645";494 ["tap_and_play"] = "http://www.roblox.com/asset/?id=6034452650";495 ["confirmation_number"] = "http://www.roblox.com/asset/?id=6034418519";496 ["event_available"] = "http://www.roblox.com/asset/?id=6034439643";497 ["sms_failed"] = "http://www.roblox.com/asset/?id=6034452676";498 ["do_not_disturb_alt"] = "http://www.roblox.com/asset/?id=6034461619";499 ["do_not_disturb"] = "http://www.roblox.com/asset/?id=6034439645";500 ["ondemand_video"] = "http://www.roblox.com/asset/?id=6034457065";501 ["no_encryption"] = "http://www.roblox.com/asset/?id=6034457059";502 ["airline_seat_legroom_extra"] = "http://www.roblox.com/asset/?id=6034418508";503 ["tv_off"] = "http://www.roblox.com/asset/?id=6034452646";504 ["sim_card_alert"] = "http://www.roblox.com/asset/?id=6034452641";505 ["airline_seat_legroom_normal"] = "http://www.roblox.com/asset/?id=6034418532";506 ["wifi"] = "http://www.roblox.com/asset/?id=6034461626";507 ["do_not_disturb_off"] = "http://www.roblox.com/asset/?id=6034439642";508 ["imagesearch_roller"] = "http://www.roblox.com/asset/?id=6034439635";509 ["power"] = "http://www.roblox.com/asset/?id=6034457105";510 ["airline_seat_legroom_reduced"] = "http://www.roblox.com/asset/?id=6034418520";511 ["phone_in_talk"] = "http://www.roblox.com/asset/?id=6034457067";512 ["airline_seat_individual_suite"] = "http://www.roblox.com/asset/?id=6034418514";513 ["priority_high"] = "http://www.roblox.com/asset/?id=6034457092";514 ["phone_callback"] = "http://www.roblox.com/asset/?id=6034457104";515 ["phone_forwarded"] = "http://www.roblox.com/asset/?id=6034457106";516 ["sync"] = "http://www.roblox.com/asset/?id=6034452662";517 ["vpn_lock"] = "http://www.roblox.com/asset/?id=6034452648";518 ["support_agent"] = "http://www.roblox.com/asset/?id=6034452656";519 ["network_locked"] = "http://www.roblox.com/asset/?id=6034457064";520 ["directions_off"] = "http://www.roblox.com/asset/?id=6034418517";521 ["drive_eta"] = "http://www.roblox.com/asset/?id=6034464371";522 ["sensor_window"] = "http://www.roblox.com/asset/?id=6031067242";523 ["sensor_door"] = "http://www.roblox.com/asset/?id=6031067241";524 ["keyboard_return"] = "http://www.roblox.com/asset/?id=6034818370";525 ["monitor"] = "http://www.roblox.com/asset/?id=6034837803";526 ["device_hub"] = "http://www.roblox.com/asset/?id=6034789877";527 ["keyboard"] = "http://www.roblox.com/asset/?id=6034818398";528 ["keyboard_voice"] = "http://www.roblox.com/asset/?id=6034818360";529 ["cast"] = "http://www.roblox.com/asset/?id=6034789876";530 ["developer_board"] = "http://www.roblox.com/asset/?id=6034789883";531 ["tablet"] = "http://www.roblox.com/asset/?id=6034848733";532 ["keyboard_hide"] = "http://www.roblox.com/asset/?id=6034818386";533 ["dock"] = "http://www.roblox.com/asset/?id=6034789888";534 ["phonelink"] = "http://www.roblox.com/asset/?id=6034837801";535 ["device_unknown"] = "http://www.roblox.com/asset/?id=6034789884";536 ["speaker_group"] = "http://www.roblox.com/asset/?id=6034848732";537 ["desktop_mac"] = "http://www.roblox.com/asset/?id=6034789898";538 ["point_of_sale"] = "http://www.roblox.com/asset/?id=6034837798";539 ["memory"] = "http://www.roblox.com/asset/?id=6034837807";540 ["keyboard_tab"] = "http://www.roblox.com/asset/?id=6034818363";541 ["router"] = "http://www.roblox.com/asset/?id=6034837806";542 ["sim_card"] = "http://www.roblox.com/asset/?id=6034837800";543 ["headset"] = "http://www.roblox.com/asset/?id=6034789880";544 ["gamepad"] = "http://www.roblox.com/asset/?id=6034789879";545 ["speaker"] = "http://www.roblox.com/asset/?id=6034848746";546 ["devices_other"] = "http://www.roblox.com/asset/?id=6034789873";547 ["laptop"] = "http://www.roblox.com/asset/?id=6034818367";548 ["scanner"] = "http://www.roblox.com/asset/?id=6034837799";549 ["tv"] = "http://www.roblox.com/asset/?id=6034848740";550 ["headset_mic"] = "http://www.roblox.com/asset/?id=6034818383";551 ["browser_not_supported"] = "http://www.roblox.com/asset/?id=6034789875";552 ["computer"] = "http://www.roblox.com/asset/?id=6034789874";553 ["connected_tv"] = "http://www.roblox.com/asset/?id=6034789870";554 ["phonelink_off"] = "http://www.roblox.com/asset/?id=6034837804";555 ["headset_off"] = "http://www.roblox.com/asset/?id=6034818402";556 ["cast_connected"] = "http://www.roblox.com/asset/?id=6034789895";557 ["watch"] = "http://www.roblox.com/asset/?id=6034848747";558 ["keyboard_arrow_up"] = "http://www.roblox.com/asset/?id=6034818379";559 ["keyboard_backspace"] = "http://www.roblox.com/asset/?id=6034818381";560 ["laptop_chromebook"] = "http://www.roblox.com/asset/?id=6034818364";561 ["phone_iphone"] = "http://www.roblox.com/asset/?id=6034837811";562 ["smartphone"] = "http://www.roblox.com/asset/?id=6034848731";563 ["power_input"] = "http://www.roblox.com/asset/?id=6034837794";564 ["videogame_asset"] = "http://www.roblox.com/asset/?id=6034848748";565 ["desktop_windows"] = "http://www.roblox.com/asset/?id=6034789893";566 ["keyboard_arrow_down"] = "http://www.roblox.com/asset/?id=6034818372";567 ["laptop_mac"] = "http://www.roblox.com/asset/?id=6034837808";568 ["laptop_windows"] = "http://www.roblox.com/asset/?id=6034837796";569 ["keyboard_arrow_right"] = "http://www.roblox.com/asset/?id=6034818365";570 ["cast_for_education"] = "http://www.roblox.com/asset/?id=6034789872";571 ["keyboard_capslock"] = "http://www.roblox.com/asset/?id=6034818403";572 ["toys"] = "http://www.roblox.com/asset/?id=6034848752";573 ["tablet_android"] = "http://www.roblox.com/asset/?id=6034848734";574 ["mouse"] = "http://www.roblox.com/asset/?id=6034837797";575 ["phone_android"] = "http://www.roblox.com/asset/?id=6034837793";576 ["keyboard_arrow_left"] = "http://www.roblox.com/asset/?id=6034818375";577 ["security"] = "http://www.roblox.com/asset/?id=6034837802";578 ["dry_cleaning"] = "http://www.roblox.com/asset/?id=6034754456";579 ["bakery_dining"] = "http://www.roblox.com/asset/?id=6034767610";580 ["place"] = "http://www.roblox.com/asset/?id=6034503372";581 ["run_circle"] = "http://www.roblox.com/asset/?id=6034503367";582 ["local_post_office"] = "http://www.roblox.com/asset/?id=6034513883";583 ["takeout_dining"] = "http://www.roblox.com/asset/?id=6034467808";584 ["nightlife"] = "http://www.roblox.com/asset/?id=6034510003";585 ["design_services"] = "http://www.roblox.com/asset/?id=6034754453";586 ["celebration"] = "http://www.roblox.com/asset/?id=6034767613";587 ["near_me_disabled"] = "http://www.roblox.com/asset/?id=6034509988";588 ["add_location_alt"] = "http://www.roblox.com/asset/?id=6034483678";589 ["directions_run"] = "http://www.roblox.com/asset/?id=6034754445";590 ["local_fire_department"] = "http://www.roblox.com/asset/?id=6034684949";591 ["add_road"] = "http://www.roblox.com/asset/?id=6034483677";592 ["my_location"] = "http://www.roblox.com/asset/?id=6034509987";593 ["dinner_dining"] = "http://www.roblox.com/asset/?id=6034754457";594 ["local_airport"] = "http://www.roblox.com/asset/?id=6034687951";595 ["zoom_out_map"] = "http://www.roblox.com/asset/?id=6035229856";596 ["pin_drop"] = "http://www.roblox.com/asset/?id=6034470807";597 ["subway"] = "http://www.roblox.com/asset/?id=6034467790";598 ["electric_moped"] = "http://www.roblox.com/asset/?id=6034744027";599 ["restaurant_menu"] = "http://www.roblox.com/asset/?id=6034503378";600 ["local_gas_station"] = "http://www.roblox.com/asset/?id=6034684935";601 ["local_cafe"] = "http://www.roblox.com/asset/?id=6034687954";602 ["theater_comedy"] = "http://www.roblox.com/asset/?id=6034467796";603 ["directions_bus"] = "http://www.roblox.com/asset/?id=6034754434";604 ["hail"] = "http://www.roblox.com/asset/?id=6034744033";605 ["satellite"] = "http://www.roblox.com/asset/?id=6034503370";606 ["local_phone"] = "http://www.roblox.com/asset/?id=6034513884";607 ["electric_bike"] = "http://www.roblox.com/asset/?id=6034744032";608 ["local_see"] = "http://www.roblox.com/asset/?id=6034513887";609 ["transit_enterexit"] = "http://www.roblox.com/asset/?id=6034467805";610 ["local_convenience_store"] = "http://www.roblox.com/asset/?id=6034687956";611 ["local_offer"] = "http://www.roblox.com/asset/?id=6034513891";612 ["electric_car"] = "http://www.roblox.com/asset/?id=6034744029";613 ["beenhere"] = "http://www.roblox.com/asset/?id=6034483675";614 ["miscellaneous_services"] = "http://www.roblox.com/asset/?id=6034509993";615 ["maps_ugc"] = "http://www.roblox.com/asset/?id=6034509992";616 ["moped"] = "http://www.roblox.com/asset/?id=6034509999";617 ["medical_services"] = "http://www.roblox.com/asset/?id=6034510001";618 ["money"] = "http://www.roblox.com/asset/?id=6034509997";619 ["transfer_within_a_station"] = "http://www.roblox.com/asset/?id=6034467809";620 ["electrical_services"] = "http://www.roblox.com/asset/?id=6034744038";621 ["museum"] = "http://www.roblox.com/asset/?id=6034510005";622 ["add_location"] = "http://www.roblox.com/asset/?id=6034483672";623 ["layers"] = "http://www.roblox.com/asset/?id=6034687957";624 ["handyman"] = "http://www.roblox.com/asset/?id=6034744057";625 ["local_pharmacy"] = "http://www.roblox.com/asset/?id=6034513903";626 ["electric_rickshaw"] = "http://www.roblox.com/asset/?id=6034744043";627 ["alt_route"] = "http://www.roblox.com/asset/?id=6034483670";628 ["no_transfer"] = "http://www.roblox.com/asset/?id=6034503363";629 ["pedal_bike"] = "http://www.roblox.com/asset/?id=6034503374";630 ["directions_transit"] = "http://www.roblox.com/asset/?id=6034754436";631 ["railway_alert"] = "http://www.roblox.com/asset/?id=6034470823";632 ["local_police"] = "http://www.roblox.com/asset/?id=6034513895";633 ["directions_car"] = "http://www.roblox.com/asset/?id=6034754441";634 ["category"] = "http://www.roblox.com/asset/?id=6034767621";635 ["attractions"] = "http://www.roblox.com/asset/?id=6034767620";636 ["person_pin_circle"] = "http://www.roblox.com/asset/?id=6034503375";637 ["cleaning_services"] = "http://www.roblox.com/asset/?id=6034767619";638 ["terrain"] = "http://www.roblox.com/asset/?id=6034467794";639 ["no_meals"] = "http://www.roblox.com/asset/?id=6034510024";640 ["train"] = "http://www.roblox.com/asset/?id=6034467803";641 ["delivery_dining"] = "http://www.roblox.com/asset/?id=6034767644";642 ["pest_control"] = "http://www.roblox.com/asset/?id=6034470809";643 ["directions"] = "http://www.roblox.com/asset/?id=6034754449";644 ["atm"] = "http://www.roblox.com/asset/?id=6034767614";645 ["rate_review"] = "http://www.roblox.com/asset/?id=6034503385";646 ["local_bar"] = "http://www.roblox.com/asset/?id=6034687950";647 ["local_drink"] = "http://www.roblox.com/asset/?id=6034687965";648 ["directions_railway"] = "http://www.roblox.com/asset/?id=6034754433";649 ["person_pin"] = "http://www.roblox.com/asset/?id=6034503364";650 ["ev_station"] = "http://www.roblox.com/asset/?id=6034744037";651 ["home_repair_service"] = "http://www.roblox.com/asset/?id=6034744064";652 ["bus_alert"] = "http://www.roblox.com/asset/?id=6034767618";653 ["agriculture"] = "http://www.roblox.com/asset/?id=6034483674";654 ["volunteer_activism"] = "http://www.roblox.com/asset/?id=6034467799";655 ["breakfast_dining"] = "http://www.roblox.com/asset/?id=6034483671";656 ["layers_clear"] = "http://www.roblox.com/asset/?id=6034687975";657 ["plumbing"] = "http://www.roblox.com/asset/?id=6034470800";658 ["taxi_alert"] = "http://www.roblox.com/asset/?id=6034467792";659 ["add_business"] = "http://www.roblox.com/asset/?id=6034483666";660 ["badge"] = "http://www.roblox.com/asset/?id=6034767607";661 ["edit_attributes"] = "http://www.roblox.com/asset/?id=6034754443";662 ["directions_walk"] = "http://www.roblox.com/asset/?id=6034754448";663 ["local_play"] = "http://www.roblox.com/asset/?id=6034513889";664 ["bike_scooter"] = "http://www.roblox.com/asset/?id=6034483669";665 ["two_wheeler"] = "http://www.roblox.com/asset/?id=6034467795";666 ["local_florist"] = "http://www.roblox.com/asset/?id=6034684940";667 ["local_hotel"] = "http://www.roblox.com/asset/?id=6034684939";668 ["no_meals_ouline"] = "http://www.roblox.com/asset/?id=6034510025";669 ["festival"] = "http://www.roblox.com/asset/?id=6034744031";670 ["local_shipping"] = "http://www.roblox.com/asset/?id=6034684926";671 ["directions_boat"] = "http://www.roblox.com/asset/?id=6034754442";672 ["wrong_location"] = "http://www.roblox.com/asset/?id=6034467801";673 ["restaurant"] = "http://www.roblox.com/asset/?id=6034503366";674 ["directions_subway"] = "http://www.roblox.com/asset/?id=6034754440";675 ["not_listed_location"] = "http://www.roblox.com/asset/?id=6034503380";676 ["electric_scooter"] = "http://www.roblox.com/asset/?id=6034744041";677 ["ramen_dining"] = "http://www.roblox.com/asset/?id=6034503377";678 ["edit_road"] = "http://www.roblox.com/asset/?id=6034744035";679 ["local_printshop"] = "http://www.roblox.com/asset/?id=6034513897";680 ["map"] = "http://www.roblox.com/asset/?id=6034684930";681 ["car_rental"] = "http://www.roblox.com/asset/?id=6034767641";682 ["multiple_stop"] = "http://www.roblox.com/asset/?id=6034510026";683 ["brunch_dining"] = "http://www.roblox.com/asset/?id=6034767611";684 ["local_laundry_service"] = "http://www.roblox.com/asset/?id=6034684943";685 ["set_meal"] = "http://www.roblox.com/asset/?id=6034503368";686 ["local_car_wash"] = "http://www.roblox.com/asset/?id=6034687976";687 ["pest_control_rodent"] = "http://www.roblox.com/asset/?id=6034470803";688 ["local_pizza"] = "http://www.roblox.com/asset/?id=6034513885";689 ["local_grocery_store"] = "http://www.roblox.com/asset/?id=6034684933";690 ["traffic"] = "http://www.roblox.com/asset/?id=6034467797";691 ["departure_board"] = "http://www.roblox.com/asset/?id=6034767615";692 ["icecream"] = "http://www.roblox.com/asset/?id=6034687967";693 ["navigation"] = "http://www.roblox.com/asset/?id=6034509984";694 ["near_me"] = "http://www.roblox.com/asset/?id=6034509996";695 ["fastfood"] = "http://www.roblox.com/asset/?id=6034744034";696 ["local_library"] = "http://www.roblox.com/asset/?id=6034684931";697 ["local_activity"] = "http://www.roblox.com/asset/?id=6034687955";698 ["local_hospital"] = "http://www.roblox.com/asset/?id=6034684956";699 ["menu_book"] = "http://www.roblox.com/asset/?id=6034509994";700 ["directions_bike"] = "http://www.roblox.com/asset/?id=6034754459";701 ["store_mall_directory"] = "http://www.roblox.com/asset/?id=6034470811";702 ["trip_origin"] = "http://www.roblox.com/asset/?id=6034467804";703 ["tram"] = "http://www.roblox.com/asset/?id=6034467806";704 ["edit_location"] = "http://www.roblox.com/asset/?id=6034754439";705 ["streetview"] = "http://www.roblox.com/asset/?id=6034470805";706 ["hvac"] = "http://www.roblox.com/asset/?id=6034687960";707 ["lunch_dining"] = "http://www.roblox.com/asset/?id=6034684928";708 ["car_repair"] = "http://www.roblox.com/asset/?id=6034767617";709 ["compass_calibration"] = "http://www.roblox.com/asset/?id=6034767623";710 ["360"] = "http://www.roblox.com/asset/?id=6034767608";711 ["flight"] = "http://www.roblox.com/asset/?id=6034744030";712 ["local_mall"] = "http://www.roblox.com/asset/?id=6034684934";713 ["hotel"] = "http://www.roblox.com/asset/?id=6034687977";714 ["local_parking"] = "http://www.roblox.com/asset/?id=6034513893";715 ["hardware"] = "http://www.roblox.com/asset/?id=6034744036";716 ["local_dining"] = "http://www.roblox.com/asset/?id=6034687963";717 ["park"] = "http://www.roblox.com/asset/?id=6034503369";718 ["location_pin"] = "http://www.roblox.com/asset/?id=6034684937";719 ["local_movies"] = "http://www.roblox.com/asset/?id=6034684936";720 ["local_atm"] = "http://www.roblox.com/asset/?id=6034687953";721 ["local_taxi"] = "http://www.roblox.com/asset/?id=6034684927";722 ["brightness_low"] = "http://www.roblox.com/asset/?id=6034989542";723 ["screen_lock_landscape"] = "http://www.roblox.com/asset/?id=6034996700";724 ["graphic_eq"] = "http://www.roblox.com/asset/?id=6034989551";725 ["screen_lock_rotation"] = "http://www.roblox.com/asset/?id=6034996710";726 ["signal_cellular_4_bar"] = "http://www.roblox.com/asset/?id=6035030076";727 ["airplanemode_inactive"] = "http://www.roblox.com/asset/?id=6034983848";728 ["signal_wifi_0_bar"] = "http://www.roblox.com/asset/?id=6035030067";729 ["battery_full"] = "http://www.roblox.com/asset/?id=6034983854";730 ["gps_fixed"] = "http://www.roblox.com/asset/?id=6034989550";731 ["brightness_high"] = "http://www.roblox.com/asset/?id=6034989541";732 ["ad_units"] = "http://www.roblox.com/asset/?id=6034983845";733 ["signal_cellular_alt"] = "http://www.roblox.com/asset/?id=6035030079";734 ["bluetooth_connected"] = "http://www.roblox.com/asset/?id=6034983855";735 ["wifi_tethering"] = "http://www.roblox.com/asset/?id=6035039430";736 ["dvr"] = "http://www.roblox.com/asset/?id=6034989561";737 ["screen_search_desktop"] = "http://www.roblox.com/asset/?id=6034996711";738 ["network_wifi"] = "http://www.roblox.com/asset/?id=6034996712";739 ["access_alarms"] = "http://www.roblox.com/asset/?id=6034983853";740 ["nfc"] = "http://www.roblox.com/asset/?id=6034996698";741 ["location_disabled"] = "http://www.roblox.com/asset/?id=6034996694";742 ["signal_wifi_4_bar"] = "http://www.roblox.com/asset/?id=6035030077";743 ["access_time"] = "http://www.roblox.com/asset/?id=6034983856";744 ["mobile_off"] = "http://www.roblox.com/asset/?id=6034996702";745 ["battery_unknown"] = "http://www.roblox.com/asset/?id=6034983842";746 ["signal_cellular_null"] = "http://www.roblox.com/asset/?id=6035030075";747 ["bluetooth_disabled"] = "http://www.roblox.com/asset/?id=6034989562";748 ["developer_mode"] = "http://www.roblox.com/asset/?id=6034989549";749 ["network_cell"] = "http://www.roblox.com/asset/?id=6034996709";750 ["sd_storage"] = "http://www.roblox.com/asset/?id=6034996719";751 ["signal_cellular_no_sim"] = "http://www.roblox.com/asset/?id=6035030078";752 ["devices"] = "http://www.roblox.com/asset/?id=6034989540";753 ["screen_rotation"] = "http://www.roblox.com/asset/?id=6034996701";754 ["device_thermostat"] = "http://www.roblox.com/asset/?id=6034989544";755 ["signal_wifi_off"] = "http://www.roblox.com/asset/?id=6035030074";756 ["widgets"] = "http://www.roblox.com/asset/?id=6035039429";757 ["bluetooth"] = "http://www.roblox.com/asset/?id=6034983880";758 ["battery_charging_full"] = "http://www.roblox.com/asset/?id=6034983849";759 ["mobile_friendly"] = "http://www.roblox.com/asset/?id=6034996699";760 ["signal_cellular_0_bar"] = "http://www.roblox.com/asset/?id=6035030072";761 ["storage"] = "http://www.roblox.com/asset/?id=6035030083";762 ["send_to_mobile"] = "http://www.roblox.com/asset/?id=6034996697";763 ["location_searching"] = "http://www.roblox.com/asset/?id=6034996695";764 ["brightness_auto"] = "http://www.roblox.com/asset/?id=6034989545";765 ["wifi_lock"] = "http://www.roblox.com/asset/?id=6035039428";766 ["gps_not_fixed"] = "http://www.roblox.com/asset/?id=6034989547";767 ["access_alarm"] = "http://www.roblox.com/asset/?id=6034983844";768 ["battery_alert"] = "http://www.roblox.com/asset/?id=6034983843";769 ["signal_cellular_off"] = "http://www.roblox.com/asset/?id=6035030084";770 ["signal_cellular_connected_no_internet_4"] = "http://www.roblox.com/asset/?id=6035229858";771 ["gps_off"] = "http://www.roblox.com/asset/?id=6034989548";772 ["add_alarm"] = "http://www.roblox.com/asset/?id=6034983850";773 ["brightness_medium"] = "http://www.roblox.com/asset/?id=6034989543";774 ["usb"] = "http://www.roblox.com/asset/?id=6035030080";775 ["airplanemode_active"] = "http://www.roblox.com/asset/?id=6034983864";776 ["reset_tv"] = "http://www.roblox.com/asset/?id=6034996696";777 ["wallpaper"] = "http://www.roblox.com/asset/?id=6035030102";778 ["settings_system_daydream"] = "http://www.roblox.com/asset/?id=6035030081";779 ["bluetooth_searching"] = "http://www.roblox.com/asset/?id=6034989553";780 ["add_to_home_screen"] = "http://www.roblox.com/asset/?id=6034983858";781 ["screen_lock_portrait"] = "http://www.roblox.com/asset/?id=6034996706";782 ["data_usage"] = "http://www.roblox.com/asset/?id=6034989568";783 ["_auto_delete"] = "http://www.roblox.com/asset/?id=6031071068";784 ["_error"] = "http://www.roblox.com/asset/?id=6031071057";785 ["_notification_important"] = "http://www.roblox.com/asset/?id=6031071056";786 ["_add_alert"] = "http://www.roblox.com/asset/?id=6031071067";787 ["_warning"] = "http://www.roblox.com/asset/?id=6031071053";788 ["_error_outline"] = "http://www.roblox.com/asset/?id=6031071050";789 ["check_box_outline_blank"] = "http://www.roblox.com/asset/?id=6031068420";790 ["toggle_off"] = "http://www.roblox.com/asset/?id=6031068429";791 ["indeterminate_check_box"] = "http://www.roblox.com/asset/?id=6031068445";792 ["radio_button_checked"] = "http://www.roblox.com/asset/?id=6031068426";793 ["toggle_on"] = "http://www.roblox.com/asset/?id=6031068430";794 ["check_box"] = "http://www.roblox.com/asset/?id=6031068421";795 ["radio_button_unchecked"] = "http://www.roblox.com/asset/?id=6031068433";796 ["star"] = "http://www.roblox.com/asset/?id=6031068423";797 ["star_border"] = "http://www.roblox.com/asset/?id=6031068425";798 ["star_half"] = "http://www.roblox.com/asset/?id=6031068427";799 ["star_outline"] = "http://www.roblox.com/asset/?id=6031068428";800 ["multiline_chart"] = "http://www.roblox.com/asset/?id=6034941721";801 ["pie_chart"] = "http://www.roblox.com/asset/?id=6034973076";802 ["format_line_spacing"] = "http://www.roblox.com/asset/?id=6034910905";803 ["format_align_left"] = "http://www.roblox.com/asset/?id=6034900727";804 ["linear_scale"] = "http://www.roblox.com/asset/?id=6034941707";805 ["insert_photo"] = "http://www.roblox.com/asset/?id=6034941703";806 ["scatter_plot"] = "http://www.roblox.com/asset/?id=6034973094";807 ["post_add"] = "http://www.roblox.com/asset/?id=6034973083";808 ["format_textdirection_r_to_l"] = "http://www.roblox.com/asset/?id=6034925623";809 ["format_size"] = "http://www.roblox.com/asset/?id=6034910908";810 ["format_color_fill"] = "http://www.roblox.com/asset/?id=6034910903";811 ["format_paint"] = "http://www.roblox.com/asset/?id=6034925618";812 ["format_underlined"] = "http://www.roblox.com/asset/?id=6034925627";813 ["format_shapes"] = "http://www.roblox.com/asset/?id=6034910909";814 ["title"] = "http://www.roblox.com/asset/?id=6034934042";815 ["highlight"] = "http://www.roblox.com/asset/?id=6034925617";816 ["bar_chart"] = "http://www.roblox.com/asset/?id=6034898096";817 ["format_indent_increase"] = "http://www.roblox.com/asset/?id=6034900724";818 ["merge_type"] = "http://www.roblox.com/asset/?id=6034941705";819 ["bubble_chart"] = "http://www.roblox.com/asset/?id=6034925612";820 ["publish"] = "http://www.roblox.com/asset/?id=6034973085";821 ["format_indent_decrease"] = "http://www.roblox.com/asset/?id=6034900733";822 ["margin"] = "http://www.roblox.com/asset/?id=6034941701";823 ["table_rows"] = "http://www.roblox.com/asset/?id=6034934025";824 ["stacked_line_chart"] = "http://www.roblox.com/asset/?id=6034934039";825 ["border_clear"] = "http://www.roblox.com/asset/?id=6034898135";826 ["border_color"] = "http://www.roblox.com/asset/?id=6034898100";827 ["border_inner"] = "http://www.roblox.com/asset/?id=6034898131";828 ["insert_chart"] = "http://www.roblox.com/asset/?id=6034925628";829 ["border_top"] = "http://www.roblox.com/asset/?id=6034900726";830 ["padding"] = "http://www.roblox.com/asset/?id=6034973078";831 ["border_vertical"] = "http://www.roblox.com/asset/?id=6034900725";832 ["score"] = "http://www.roblox.com/asset/?id=6034934041";833 ["border_right"] = "http://www.roblox.com/asset/?id=6034898120";834 ["add_chart"] = "http://www.roblox.com/asset/?id=6034898093";835 ["space_bar"] = "http://www.roblox.com/asset/?id=6034934037";836 ["border_outer"] = "http://www.roblox.com/asset/?id=6034898104";837 ["mode_comment"] = "http://www.roblox.com/asset/?id=6034941700";838 ["attach_money"] = "http://www.roblox.com/asset/?id=6034898098";839 ["drag_handle"] = "http://www.roblox.com/asset/?id=6034910907";840 ["format_align_right"] = "http://www.roblox.com/asset/?id=6034900723";841 ["pie_chart_outlined"] = "http://www.roblox.com/asset/?id=6034973077";842 ["horizontal_rule"] = "http://www.roblox.com/asset/?id=6034925610";843 ["border_all"] = "http://www.roblox.com/asset/?id=6034898101";844 ["border_style"] = "http://www.roblox.com/asset/?id=6034898097";845 ["insert_comment"] = "http://www.roblox.com/asset/?id=6034925609";846 ["vertical_align_top"] = "http://www.roblox.com/asset/?id=6034973080";847 ["vertical_align_center"] = "http://www.roblox.com/asset/?id=6034934051";848 ["format_color_text"] = "http://www.roblox.com/asset/?id=6034910910";849 ["format_quote"] = "http://www.roblox.com/asset/?id=6034925629";850 ["height"] = "http://www.roblox.com/asset/?id=6034925613";851 ["add_comment"] = "http://www.roblox.com/asset/?id=6034898128";852 ["format_strikethrough"] = "http://www.roblox.com/asset/?id=6034910904";853 ["strikethrough_s"] = "http://www.roblox.com/asset/?id=6034934030";854 ["border_left"] = "http://www.roblox.com/asset/?id=6034898099";855 ["format_list_bulleted"] = "http://www.roblox.com/asset/?id=6034925620";856 ["format_italic"] = "http://www.roblox.com/asset/?id=6034910912";857 ["format_list_numbered"] = "http://www.roblox.com/asset/?id=6034925622";858 ["attach_file"] = "http://www.roblox.com/asset/?id=6034898102";859 ["wrap_text"] = "http://www.roblox.com/asset/?id=6034973118";860 ["insert_invitation"] = "http://www.roblox.com/asset/?id=6034973091";861 ["format_list_numbered_rtl"] = "http://www.roblox.com/asset/?id=6034910906";862 ["border_horizontal"] = "http://www.roblox.com/asset/?id=6034898105";863 ["format_align_center"] = "http://www.roblox.com/asset/?id=6034900718";864 ["format_textdirection_l_to_r"] = "http://www.roblox.com/asset/?id=6034925619";865 ["show_chart"] = "http://www.roblox.com/asset/?id=6034934032";866 ["insert_chart_outlined"] = "http://www.roblox.com/asset/?id=6034925606";867 ["vertical_align_bottom"] = "http://www.roblox.com/asset/?id=6034934023";868 ["subscript"] = "http://www.roblox.com/asset/?id=6034934059";869 ["format_align_justify"] = "http://www.roblox.com/asset/?id=6034900721";870 ["format_clear"] = "http://www.roblox.com/asset/?id=6034910902";871 ["notes"] = "http://www.roblox.com/asset/?id=6034973084";872 ["insert_drive_file"] = "http://www.roblox.com/asset/?id=6034941697";873 ["functions"] = "http://www.roblox.com/asset/?id=6034925614";874 ["insert_emoticon"] = "http://www.roblox.com/asset/?id=6034973079";875 ["insert_link"] = "http://www.roblox.com/asset/?id=6034973074";876 ["format_color_reset"] = "http://www.roblox.com/asset/?id=6034900743";877 ["monetization_on"] = "http://www.roblox.com/asset/?id=6034973115";878 ["short_text"] = "http://www.roblox.com/asset/?id=6034934035";879 ["mode_edit"] = "http://www.roblox.com/asset/?id=6034941708";880 ["superscript"] = "http://www.roblox.com/asset/?id=6034934034";881 ["table_chart"] = "http://www.roblox.com/asset/?id=6034973081";882 ["format_bold"] = "http://www.roblox.com/asset/?id=6034900732";883 ["money_off"] = "http://www.roblox.com/asset/?id=6034973088";884 ["border_bottom"] = "http://www.roblox.com/asset/?id=6034898094";885 ["text_fields"] = "http://www.roblox.com/asset/?id=6034934040";886 ["note"] = "http://www.roblox.com/asset/?id=6026663734";887 ["shuffle"] = "http://www.roblox.com/asset/?id=6026667003";888 ["library_books"] = "http://www.roblox.com/asset/?id=6026660085";889 ["library_music"] = "http://www.roblox.com/asset/?id=6026660075";890 ["surround_sound"] = "http://www.roblox.com/asset/?id=6026671209";891 ["forward_30"] = "http://www.roblox.com/asset/?id=6026660088";892 ["music_video"] = "http://www.roblox.com/asset/?id=6026663704";893 ["videocam_off"] = "http://www.roblox.com/asset/?id=6026671212";894 ["control_camera"] = "http://www.roblox.com/asset/?id=6026647916";895 ["explicit"] = "http://www.roblox.com/asset/?id=6026647913";896 ["3k_plus"] = "http://www.roblox.com/asset/?id=6026681598";897 ["fiber_pin"] = "http://www.roblox.com/asset/?id=6026660064";898 ["skip_previous"] = "http://www.roblox.com/asset/?id=6026667011";899 ["pause_circle_filled"] = "http://www.roblox.com/asset/?id=6026663718";900 ["video_settings"] = "http://www.roblox.com/asset/?id=6026671211";901 ["movie"] = "http://www.roblox.com/asset/?id=6026660081";902 ["add_to_queue"] = "http://www.roblox.com/asset/?id=6026647903";903 ["6k"] = "http://www.roblox.com/asset/?id=6026681579";904 ["web_asset"] = "http://www.roblox.com/asset/?id=6026671239";905 ["play_circle_outline"] = "http://www.roblox.com/asset/?id=6026663726";906 ["volume_off"] = "http://www.roblox.com/asset/?id=6026671224";907 ["mic_off"] = "http://www.roblox.com/asset/?id=6026660076";908 ["featured_play_list"] = "http://www.roblox.com/asset/?id=6026647932";909 ["pause_circle_outline"] = "http://www.roblox.com/asset/?id=6026663701";910 ["slow_motion_video"] = "http://www.roblox.com/asset/?id=6026681583";911 ["7k"] = "http://www.roblox.com/asset/?id=6026681584";912 ["playlist_add"] = "http://www.roblox.com/asset/?id=6026663728";913 ["fiber_smart_record"] = "http://www.roblox.com/asset/?id=6026660080";914 ["8k"] = "http://www.roblox.com/asset/?id=6026643014";915 ["hd"] = "http://www.roblox.com/asset/?id=6026660065";916 ["repeat_one_on"] = "http://www.roblox.com/asset/?id=6026666992";917 ["recent_actors"] = "http://www.roblox.com/asset/?id=6026663773";918 ["fiber_new"] = "http://www.roblox.com/asset/?id=6026647930";919 ["fiber_dvr"] = "http://www.roblox.com/asset/?id=6026647912";920 ["hearing_disabled"] = "http://www.roblox.com/asset/?id=6026660068";921 ["forward_10"] = "http://www.roblox.com/asset/?id=6026660062";922 ["4k_plus"] = "http://www.roblox.com/asset/?id=6026643005";923 ["repeat_one"] = "http://www.roblox.com/asset/?id=6026681590";924 ["equalizer"] = "http://www.roblox.com/asset/?id=6026647906";925 ["stop"] = "http://www.roblox.com/asset/?id=6026681576";926 ["2k"] = "http://www.roblox.com/asset/?id=6026643032";927 ["playlist_add_check"] = "http://www.roblox.com/asset/?id=6026663727";928 ["not_interested"] = "http://www.roblox.com/asset/?id=6026663743";929 ["videocam"] = "http://www.roblox.com/asset/?id=6026671213";930 ["sort_by_alpha"] = "http://www.roblox.com/asset/?id=6026667009";931 ["library_add"] = "http://www.roblox.com/asset/?id=6026660063";932 ["stop_circle"] = "http://www.roblox.com/asset/?id=6026681577";933 ["pause"] = "http://www.roblox.com/asset/?id=6026663719";934 ["new_releases"] = "http://www.roblox.com/asset/?id=6026663730";935 ["album"] = "http://www.roblox.com/asset/?id=6026647905";936 ["sd"] = "http://www.roblox.com/asset/?id=6026681582";937 ["volume_up"] = "http://www.roblox.com/asset/?id=6026671215";938 ["replay_5"] = "http://www.roblox.com/asset/?id=6026666993";939 ["high_quality"] = "http://www.roblox.com/asset/?id=6026660059";940 ["shuffle_on"] = "http://www.roblox.com/asset/?id=6026666996";941 ["play_arrow"] = "http://www.roblox.com/asset/?id=6026663699";942 ["snooze"] = "http://www.roblox.com/asset/?id=6026667006";943 ["closed_caption_disabled"] = "http://www.roblox.com/asset/?id=6026647900";944 ["subscriptions"] = "http://www.roblox.com/asset/?id=6026671207";945 ["skip_next"] = "http://www.roblox.com/asset/?id=6026667005";946 ["branding_watermark"] = "http://www.roblox.com/asset/?id=6026647911";947 ["speed"] = "http://www.roblox.com/asset/?id=6026681578";948 ["art_track"] = "http://www.roblox.com/asset/?id=6026647908";949 ["3k"] = "http://www.roblox.com/asset/?id=6026681574";950 ["4k"] = "http://www.roblox.com/asset/?id=6026643017";951 ["volume_mute"] = "http://www.roblox.com/asset/?id=6026671214";952 ["playlist_play"] = "http://www.roblox.com/asset/?id=6026663723";953 ["remove_from_queue"] = "http://www.roblox.com/asset/?id=6026663771";954 ["fast_forward"] = "http://www.roblox.com/asset/?id=6026647902";955 ["play_disabled"] = "http://www.roblox.com/asset/?id=6026663702";956 ["fast_rewind"] = "http://www.roblox.com/asset/?id=6026647942";957 ["5k"] = "http://www.roblox.com/asset/?id=6026681575";958 ["replay_10"] = "http://www.roblox.com/asset/?id=6026667007";959 ["video_library"] = "http://www.roblox.com/asset/?id=6026671208";960 ["loop"] = "http://www.roblox.com/asset/?id=6026660087";961 ["replay_circle_filled"] = "http://www.roblox.com/asset/?id=6026667002";962 ["5g"] = "http://www.roblox.com/asset/?id=6026643007";963 ["library_add_check"] = "http://www.roblox.com/asset/?id=6026660083";964 ["repeat"] = "http://www.roblox.com/asset/?id=6026666998";965 ["queue_play_next"] = "http://www.roblox.com/asset/?id=6026663700";966 ["forward_5"] = "http://www.roblox.com/asset/?id=6026660067";967 ["web"] = "http://www.roblox.com/asset/?id=6026671234";968 ["mic_none"] = "http://www.roblox.com/asset/?id=6026660066";969 ["queue"] = "http://www.roblox.com/asset/?id=6026663724";970 ["closed_caption_off"] = "http://www.roblox.com/asset/?id=6026647943";971 ["hearing"] = "http://www.roblox.com/asset/?id=6026660060";972 ["queue_music"] = "http://www.roblox.com/asset/?id=6026663725";973 ["airplay"] = "http://www.roblox.com/asset/?id=6026647929";974 ["9k"] = "http://www.roblox.com/asset/?id=6026643013";975 ["video_label"] = "http://www.roblox.com/asset/?id=6026671204";976 ["8k_plus"] = "http://www.roblox.com/asset/?id=6026643003";977 ["play_circle_filled"] = "http://www.roblox.com/asset/?id=6026663705";978 ["1k"] = "http://www.roblox.com/asset/?id=6026643002";979 ["fiber_manual_record"] = "http://www.roblox.com/asset/?id=6026647909";980 ["closed_caption"] = "http://www.roblox.com/asset/?id=6026647896";981 ["subtitles"] = "http://www.roblox.com/asset/?id=6026671203";982 ["featured_video"] = "http://www.roblox.com/asset/?id=6026647910";983 ["replay_30"] = "http://www.roblox.com/asset/?id=6026667010";984 ["10k"] = "http://www.roblox.com/asset/?id=6026643035";985 ["5k_plus"] = "http://www.roblox.com/asset/?id=6026643028";986 ["6k_plus"] = "http://www.roblox.com/asset/?id=6026643019";987 ["replay"] = "http://www.roblox.com/asset/?id=6026666999";988 ["repeat_on"] = "http://www.roblox.com/asset/?id=6026666994";989 ["1k_plus"] = "http://www.roblox.com/asset/?id=6026681580";990 ["2k_plus"] = "http://www.roblox.com/asset/?id=6026681588";991 ["games"] = "http://www.roblox.com/asset/?id=6026660074";992 ["volume_down"] = "http://www.roblox.com/asset/?id=6026671206";993 ["mic"] = "http://www.roblox.com/asset/?id=6026660078";994 ["call_to_action"] = "http://www.roblox.com/asset/?id=6026647898";995 ["7k_plus"] = "http://www.roblox.com/asset/?id=6026643012";996 ["av_timer"] = "http://www.roblox.com/asset/?id=6026647934";997 ["9k_plus"] = "http://www.roblox.com/asset/?id=6026681585";998 ["radio"] = "http://www.roblox.com/asset/?id=6026663698";999 ["10mp"] = "http://www.roblox.com/asset/?id=6031328149";1000 ["20mp"] = "http://www.roblox.com/asset/?id=6031488940";1001 ["wb_twighlight"] = "http://www.roblox.com/asset/?id=6034412760";1002 ["movie_creation"] = "http://www.roblox.com/asset/?id=6034323681";1003 ["crop_portrait"] = "http://www.roblox.com/asset/?id=6031630198";1004 ["filter_5"] = "http://www.roblox.com/asset/?id=6031597518";1005 ["broken_image"] = "http://www.roblox.com/asset/?id=6031471480";1006 ["flip_camera_android"] = "http://www.roblox.com/asset/?id=6034333280";1007 ["flip_camera_ios"] = "http://www.roblox.com/asset/?id=6034333267";1008 ["circle"] = "http://www.roblox.com/asset/?id=6031625146";1009 ["photo_camera_front"] = "http://www.roblox.com/asset/?id=6031771000";1010 ["assistant"] = "http://www.roblox.com/asset/?id=6031360356";1011 ["face_retouching_natural"] = "http://www.roblox.com/asset/?id=6034333274";1012 ["palette"] = "http://www.roblox.com/asset/?id=6034316009";1013 ["nature_people"] = "http://www.roblox.com/asset/?id=6034323711";1014 ["14mp"] = "http://www.roblox.com/asset/?id=6031328161";1015 ["gradient"] = "http://www.roblox.com/asset/?id=6034333261";1016 ["filter_4"] = "http://www.roblox.com/asset/?id=6031597512";1017 ["panorama_wide_angle_select"] = "http://www.roblox.com/asset/?id=6031770990";1018 ["photo"] = "http://www.roblox.com/asset/?id=6031770993";1019 ["grid_off"] = "http://www.roblox.com/asset/?id=6034333286";1020 ["leak_add"] = "http://www.roblox.com/asset/?id=6034407074";1021 ["landscape"] = "http://www.roblox.com/asset/?id=6034407069";1022 ["exposure_plus_1"] = "http://www.roblox.com/asset/?id=6034328970";1023 ["slideshow"] = "http://www.roblox.com/asset/?id=6031754546";1024 ["camera_alt"] = "http://www.roblox.com/asset/?id=6031572307";1025 ["audiotrack"] = "http://www.roblox.com/asset/?id=6031471489";1026 ["filter_none"] = "http://www.roblox.com/asset/?id=6031600815";1027 ["blur_off"] = "http://www.roblox.com/asset/?id=6031371055";1028 ["crop_16_9"] = "http://www.roblox.com/asset/?id=6031630205";1029 ["blur_on"] = "http://www.roblox.com/asset/?id=6031371068";1030 ["brightness_4"] = "http://www.roblox.com/asset/?id=6031471483";1031 ["details"] = "http://www.roblox.com/asset/?id=6034328968";1032 ["panorama_horizontal"] = "http://www.roblox.com/asset/?id=6034315966";1033 ["camera_rear"] = "http://www.roblox.com/asset/?id=6031572316";1034 ["hdr_weak"] = "http://www.roblox.com/asset/?id=6034407083";1035 ["collections"] = "http://www.roblox.com/asset/?id=6031625145";1036 ["hdr_enhanced_select"] = "http://www.roblox.com/asset/?id=6034333281";1037 ["adjust"] = "http://www.roblox.com/asset/?id=6031339048";1038 ["burst_mode"] = "http://www.roblox.com/asset/?id=6031572306";1039 ["nature"] = "http://www.roblox.com/asset/?id=6034323695";1040 ["brightness_6"] = "http://www.roblox.com/asset/?id=6031572309";1041 ["19mp"] = "http://www.roblox.com/asset/?id=6031339054";1042 ["grain"] = "http://www.roblox.com/asset/?id=6034333288";1043 ["receipt_long"] = "http://www.roblox.com/asset/?id=6031763428";1044 ["photo_filter"] = "http://www.roblox.com/asset/?id=6031770992";1045 ["edit"] = "http://www.roblox.com/asset/?id=6034328955";1046 ["healing"] = "http://www.roblox.com/asset/?id=6034407071";1047 ["exposure_neg_1"] = "http://www.roblox.com/asset/?id=6034328957";1048 ["exposure"] = "http://www.roblox.com/asset/?id=6034328962";1049 ["wb_shade"] = "http://www.roblox.com/asset/?id=6034315974";1050 ["compare"] = "http://www.roblox.com/asset/?id=6031625151";1051 ["cases"] = "http://www.roblox.com/asset/?id=6031572324";1052 ["timer_3"] = "http://www.roblox.com/asset/?id=6031754540";1053 ["exposure_plus_2"] = "http://www.roblox.com/asset/?id=6034328961";1054 ["12mp"] = "http://www.roblox.com/asset/?id=6031328140";1055 ["22mp"] = "http://www.roblox.com/asset/?id=6031360353";1056 ["timer_off"] = "http://www.roblox.com/asset/?id=6031734881";1057 ["auto_stories"] = "http://www.roblox.com/asset/?id=6031360360";1058 ["rotate_left"] = "http://www.roblox.com/asset/?id=6031763427";1059 ["wb_iridescent"] = "http://www.roblox.com/asset/?id=6034315972";1060 ["shutter_speed"] = "http://www.roblox.com/asset/?id=6031763443";1061 ["switch_video"] = "http://www.roblox.com/asset/?id=6031754536";1062 ["23mp"] = "http://www.roblox.com/asset/?id=6031339045";1063 ["euro"] = "http://www.roblox.com/asset/?id=6034328963";1064 ["15mp"] = "http://www.roblox.com/asset/?id=6031328158";1065 ["filter_center_focus"] = "http://www.roblox.com/asset/?id=6031600817";1066 ["photo_library"] = "http://www.roblox.com/asset/?id=6031770998";1067 ["mp"] = "http://www.roblox.com/asset/?id=6034323674";1068 ["looks_4"] = "http://www.roblox.com/asset/?id=6034407089";1069 ["filter_2"] = "http://www.roblox.com/asset/?id=6031597521";1070 ["crop_3_2"] = "http://www.roblox.com/asset/?id=6034328956";1071 ["auto_fix_normal"] = "http://www.roblox.com/asset/?id=6031371074";1072 ["auto_fix_off"] = "http://www.roblox.com/asset/?id=6031360381";1073 ["wb_auto"] = "http://www.roblox.com/asset/?id=6031734875";1074 ["switch_camera"] = "http://www.roblox.com/asset/?id=6031754550";1075 ["filter_vintage"] = "http://www.roblox.com/asset/?id=6031600811";1076 ["photo_size_select_small"] = "http://www.roblox.com/asset/?id=6031763457";1077 ["blur_linear"] = "http://www.roblox.com/asset/?id=6031488930";1078 ["hdr_on"] = "http://www.roblox.com/asset/?id=6034333279";1079 ["tag_faces"] = "http://www.roblox.com/asset/?id=6031754560";1080 ["21mp"] = "http://www.roblox.com/asset/?id=6031339065";1081 ["camera"] = "http://www.roblox.com/asset/?id=6031572312";1082 ["image_aspect_ratio"] = "http://www.roblox.com/asset/?id=6034407073";1083 ["filter_b_and_w"] = "http://www.roblox.com/asset/?id=6031600824";1084 ["crop_landscape"] = "http://www.roblox.com/asset/?id=6031630202";1085 ["13mp"] = "http://www.roblox.com/asset/?id=6031328137";1086 ["grid_on"] = "http://www.roblox.com/asset/?id=6034333276";1087 ["motion_photos_pause"] = "http://www.roblox.com/asset/?id=6034323668";1088 ["filter_6"] = "http://www.roblox.com/asset/?id=6031597524";1089 ["linked_camera"] = "http://www.roblox.com/asset/?id=6034407082";1090 ["panorama_fish_eye"] = "http://www.roblox.com/asset/?id=6034315969";1091 ["panorama"] = "http://www.roblox.com/asset/?id=6034315955";1092 ["color_lens"] = "http://www.roblox.com/asset/?id=6031625148";1093 ["lens"] = "http://www.roblox.com/asset/?id=6034407081";1094 ["crop_din"] = "http://www.roblox.com/asset/?id=6031630208";1095 ["exposure_neg_2"] = "http://www.roblox.com/asset/?id=6034328973";1096 ["mic_external_off"] = "http://www.roblox.com/asset/?id=6034323672";1097 ["crop_free"] = "http://www.roblox.com/asset/?id=6031630212";1098 ["crop_original"] = "http://www.roblox.com/asset/?id=6031630204";1099 ["panorama_photosphere_select"] = "http://www.roblox.com/asset/?id=6034315975";1100 ["photo_size_select_actual"] = "http://www.roblox.com/asset/?id=6031771012";1101 ["leak_remove"] = "http://www.roblox.com/asset/?id=6034407080";1102 ["collections_bookmark"] = "http://www.roblox.com/asset/?id=6034328965";1103 ["straighten"] = "http://www.roblox.com/asset/?id=6031754545";1104 ["timelapse"] = "http://www.roblox.com/asset/?id=6031754541";1105 ["picture_as_pdf"] = "http://www.roblox.com/asset/?id=6031763425";1106 ["crop_rotate"] = "http://www.roblox.com/asset/?id=6031630203";1107 ["control_point_duplicate"] = "http://www.roblox.com/asset/?id=6034328959";1108 ["photo_camera_back"] = "http://www.roblox.com/asset/?id=6031771007";1109 ["looks_3"] = "http://www.roblox.com/asset/?id=6034407088";1110 ["motion_photos_off"] = "http://www.roblox.com/asset/?id=6034323670";1111 ["rotate_right"] = "http://www.roblox.com/asset/?id=6031763429";1112 ["view_compact"] = "http://www.roblox.com/asset/?id=6031734878";1113 ["crop_7_5"] = "http://www.roblox.com/asset/?id=6031630197";1114 ["style"] = "http://www.roblox.com/asset/?id=6031754538";1115 ["exposure_zero"] = "http://www.roblox.com/asset/?id=6034329000";1116 ["camera_front"] = "http://www.roblox.com/asset/?id=6031572318";1117 ["hdr_strong"] = "http://www.roblox.com/asset/?id=6034333272";1118 ["view_comfy"] = "http://www.roblox.com/asset/?id=6031734876";1119 ["panorama_vertical"] = "http://www.roblox.com/asset/?id=6034315963";1120 ["panorama_vertical_select"] = "http://www.roblox.com/asset/?id=6034315961";1121 ["looks_two"] = "http://www.roblox.com/asset/?id=6034412757";1122 ["filter_drama"] = "http://www.roblox.com/asset/?id=6031600813";1123 ["center_focus_strong"] = "http://www.roblox.com/asset/?id=6031625147";1124 ["18mp"] = "http://www.roblox.com/asset/?id=6031339064";1125 ["7mp"] = "http://www.roblox.com/asset/?id=6031328139";1126 ["wb_sunny"] = "http://www.roblox.com/asset/?id=6034412758";1127 ["filter_9_plus"] = "http://www.roblox.com/asset/?id=6031600812";1128 ["crop"] = "http://www.roblox.com/asset/?id=6034328964";1129 ["vignette"] = "http://www.roblox.com/asset/?id=6031734905";1130 ["brightness_2"] = "http://www.roblox.com/asset/?id=6031488938";1131 ["crop_square"] = "http://www.roblox.com/asset/?id=6031630222";1132 ["looks_5"] = "http://www.roblox.com/asset/?id=6034412764";1133 ["flip"] = "http://www.roblox.com/asset/?id=6034333275";1134 ["looks_one"] = "http://www.roblox.com/asset/?id=6034412761";1135 ["flash_off"] = "http://www.roblox.com/asset/?id=6034333270";1136 ["hdr_off"] = "http://www.roblox.com/asset/?id=6034333266";1137 ["photo_album"] = "http://www.roblox.com/asset/?id=6031770989";1138 ["motion_photos_paused"] = "http://www.roblox.com/asset/?id=6034323675";1139 ["photo_camera"] = "http://www.roblox.com/asset/?id=6031770997";1140 ["2mp"] = "http://www.roblox.com/asset/?id=6031328138";1141 ["3mp"] = "http://www.roblox.com/asset/?id=6031328136";1142 ["24mp"] = "http://www.roblox.com/asset/?id=6031360352";1143 ["filter_9"] = "http://www.roblox.com/asset/?id=6031597534";1144 ["6mp"] = "http://www.roblox.com/asset/?id=6031328131";1145 ["remove_red_eye"] = "http://www.roblox.com/asset/?id=6031763426";1146 ["4mp"] = "http://www.roblox.com/asset/?id=6031328152";1147 ["add_a_photo"] = "http://www.roblox.com/asset/?id=6031339049";1148 ["filter_3"] = "http://www.roblox.com/asset/?id=6031597513";1149 ["crop_5_4"] = "http://www.roblox.com/asset/?id=6034328960";1150 ["8mp"] = "http://www.roblox.com/asset/?id=6031328133";1151 ["camera_roll"] = "http://www.roblox.com/asset/?id=6031572314";1152 ["panorama_wide_angle"] = "http://www.roblox.com/asset/?id=6031770995";1153 ["transform"] = "http://www.roblox.com/asset/?id=6031734873";1154 ["flare"] = "http://www.roblox.com/asset/?id=6031600816";1155 ["image_search"] = "http://www.roblox.com/asset/?id=6034407084";1156 ["auto_awesome"] = "http://www.roblox.com/asset/?id=6031360365";1157 ["motion_photos_on"] = "http://www.roblox.com/asset/?id=6034323669";1158 ["rotate_90_degrees_ccw"] = "http://www.roblox.com/asset/?id=6031763456";1159 ["filter_1"] = "http://www.roblox.com/asset/?id=6031597511";1160 ["filter_tilt_shift"] = "http://www.roblox.com/asset/?id=6031600814";1161 ["image"] = "http://www.roblox.com/asset/?id=6034407078";1162 ["center_focus_weak"] = "http://www.roblox.com/asset/?id=6031625144";1163 ["blur_circular"] = "http://www.roblox.com/asset/?id=6031488945";1164 ["bedtime"] = "http://www.roblox.com/asset/?id=6031371054";1165 ["auto_fix_high"] = "http://www.roblox.com/asset/?id=6031360355";1166 ["monochrome_photos"] = "http://www.roblox.com/asset/?id=6034323678";1167 ["flash_auto"] = "http://www.roblox.com/asset/?id=6034333287";1168 ["5mp"] = "http://www.roblox.com/asset/?id=6031328144";1169 ["photo_size_select_large"] = "http://www.roblox.com/asset/?id=6031763423";1170 ["assistant_photo"] = "http://www.roblox.com/asset/?id=6031339052";1171 ["animation"] = "http://www.roblox.com/asset/?id=6031625150";1172 ["looks"] = "http://www.roblox.com/asset/?id=6034407096";1173 ["17mp"] = "http://www.roblox.com/asset/?id=6031339055";1174 ["panorama_horizontal_select"] = "http://www.roblox.com/asset/?id=6034315965";1175 ["flash_on"] = "http://www.roblox.com/asset/?id=6034333271";1176 ["iso"] = "http://www.roblox.com/asset/?id=6034407106";1177 ["music_note"] = "http://www.roblox.com/asset/?id=6034323673";1178 ["music_off"] = "http://www.roblox.com/asset/?id=6034323679";1179 ["navigate_next"] = "http://www.roblox.com/asset/?id=6034315956";1180 ["timer"] = "http://www.roblox.com/asset/?id=6031754564";1181 ["loupe"] = "http://www.roblox.com/asset/?id=6034412770";1182 ["navigate_before"] = "http://www.roblox.com/asset/?id=6034323696";1183 ["brightness_1"] = "http://www.roblox.com/asset/?id=6031471488";1184 ["brightness_7"] = "http://www.roblox.com/asset/?id=6031471491";1185 ["tonality"] = "http://www.roblox.com/asset/?id=6031734891";1186 ["brush"] = "http://www.roblox.com/asset/?id=6031572320";1187 ["colorize"] = "http://www.roblox.com/asset/?id=6031625161";1188 ["filter_7"] = "http://www.roblox.com/asset/?id=6031597515";1189 ["16mp"] = "http://www.roblox.com/asset/?id=6031328168";1190 ["timer_10"] = "http://www.roblox.com/asset/?id=6031734880";1191 ["portrait"] = "http://www.roblox.com/asset/?id=6031763434";1192 ["tune"] = "http://www.roblox.com/asset/?id=6031734877";1193 ["image_not_supported"] = "http://www.roblox.com/asset/?id=6034407076";1194 ["wb_cloudy"] = "http://www.roblox.com/asset/?id=6031734907";1195 ["auto_awesome_motion"] = "http://www.roblox.com/asset/?id=6031360370";1196 ["filter_8"] = "http://www.roblox.com/asset/?id=6031597532";1197 ["brightness_5"] = "http://www.roblox.com/asset/?id=6031471479";1198 ["movie_filter"] = "http://www.roblox.com/asset/?id=6034323687";1199 ["add_photo_alternate"] = "http://www.roblox.com/asset/?id=6031471484";1200 ["add_to_photos"] = "http://www.roblox.com/asset/?id=6031371075";1201 ["texture"] = "http://www.roblox.com/asset/?id=6031754553";1202 ["11mp"] = "http://www.roblox.com/asset/?id=6031328141";1203 ["mic_external_on"] = "http://www.roblox.com/asset/?id=6034323671";1204 ["looks_6"] = "http://www.roblox.com/asset/?id=6034412759";1205 ["dehaze"] = "http://www.roblox.com/asset/?id=6031630200";1206 ["control_point"] = "http://www.roblox.com/asset/?id=6031625131";1207 ["panorama_photosphere"] = "http://www.roblox.com/asset/?id=6034412763";1208 ["filter_frames"] = "http://www.roblox.com/asset/?id=6031600833";1209 ["auto_awesome_mosaic"] = "http://www.roblox.com/asset/?id=6031371053";1210 ["9mp"] = "http://www.roblox.com/asset/?id=6031328146";1211 ["filter"] = "http://www.roblox.com/asset/?id=6031597514";1212 ["brightness_3"] = "http://www.roblox.com/asset/?id=6031572317";1213 ["dirty_lens"] = "http://www.roblox.com/asset/?id=6034328967";1214 ["wb_incandescent"] = "http://www.roblox.com/asset/?id=6034316010";1215 ["filter_hdr"] = "http://www.roblox.com/asset/?id=6031600819";1216 ["textsms"] = "http://www.roblox.com/asset/?id=6035202006";1217 ["comment"] = "http://www.roblox.com/asset/?id=6035181871";1218 ["call_end"] = "http://www.roblox.com/asset/?id=6035173845";1219 ["qr_code_scanner"] = "http://www.roblox.com/asset/?id=6035202022";1220 ["phonelink_setup"] = "http://www.roblox.com/asset/?id=6035202025";1221 ["call_merge"] = "http://www.roblox.com/asset/?id=6035173843";1222 ["phonelink_erase"] = "http://www.roblox.com/asset/?id=6035202085";1223 ["contact_mail"] = "http://www.roblox.com/asset/?id=6035181868";1224 ["contact_phone"] = "http://www.roblox.com/asset/?id=6035181861";1225 ["screen_share"] = "http://www.roblox.com/asset/?id=6035202008";1226 ["present_to_all"] = "http://www.roblox.com/asset/?id=6035202020";1227 ["stay_primary_portrait"] = "http://www.roblox.com/asset/?id=6035202009";1228 ["message"] = "http://www.roblox.com/asset/?id=6035202033";1229 ["sentiment_satisfied_alt"] = "http://www.roblox.com/asset/?id=6035202069";1230 ["stay_current_portrait"] = "http://www.roblox.com/asset/?id=6035202004";1231 ["voicemail"] = "http://www.roblox.com/asset/?id=6035202019";1232 ["business"] = "http://www.roblox.com/asset/?id=6035173853";1233 ["mail_outline"] = "http://www.roblox.com/asset/?id=6035190844";1234 ["vpn_key"] = "http://www.roblox.com/asset/?id=6035202034";1235 ["forward_to_inbox"] = "http://www.roblox.com/asset/?id=6035190840";1236 ["contacts"] = "http://www.roblox.com/asset/?id=6035181864";1237 ["phonelink_ring"] = "http://www.roblox.com/asset/?id=6035202066";1238 ["domain_disabled"] = "http://www.roblox.com/asset/?id=6035181862";1239 ["person_add_disabled"] = "http://www.roblox.com/asset/?id=6035202007";1240 ["stay_primary_landscape"] = "http://www.roblox.com/asset/?id=6035202026";1241 ["alternate_email"] = "http://www.roblox.com/asset/?id=6035173865";1242 ["phone_disabled"] = "http://www.roblox.com/asset/?id=6035202028";1243 ["email"] = "http://www.roblox.com/asset/?id=6035181866";1244 ["mobile_screen_share"] = "http://www.roblox.com/asset/?id=6035202021";1245 ["live_help"] = "http://www.roblox.com/asset/?id=6035190836";1246 ["chat_bubble"] = "http://www.roblox.com/asset/?id=6035181858";1247 ["stop_screen_share"] = "http://www.roblox.com/asset/?id=6035202042";1248 ["location_on"] = "http://www.roblox.com/asset/?id=6035190846";1249 ["chat_bubble_outline"] = "http://www.roblox.com/asset/?id=6035181869";1250 ["dialer_sip"] = "http://www.roblox.com/asset/?id=6035181865";1251 ["no_sim"] = "http://www.roblox.com/asset/?id=6035202030";1252 ["list_alt"] = "http://www.roblox.com/asset/?id=6035190838";1253 ["call"] = "http://www.roblox.com/asset/?id=6035173859";1254 ["pause_presentation"] = "http://www.roblox.com/asset/?id=6035202015";1255 ["invert_colors_off"] = "http://www.roblox.com/asset/?id=6035190842";1256 ["call_missed_outgoing"] = "http://www.roblox.com/asset/?id=6035173847";1257 ["stay_current_landscape"] = "http://www.roblox.com/asset/?id=6035202011";1258 ["import_export"] = "http://www.roblox.com/asset/?id=6035202040";1259 ["add_ic_call"] = "http://www.roblox.com/asset/?id=6035173839";1260 ["dialpad"] = "http://www.roblox.com/asset/?id=6035181892";1261 ["nat"] = "http://www.roblox.com/asset/?id=6035202082";1262 ["unsubscribe"] = "http://www.roblox.com/asset/?id=6035202044";1263 ["mark_chat_unread"] = "http://www.roblox.com/asset/?id=6035190841";1264 ["portable_wifi_off"] = "http://www.roblox.com/asset/?id=6035202091";1265 ["location_off"] = "http://www.roblox.com/asset/?id=6035202049";1266 ["person_search"] = "http://www.roblox.com/asset/?id=6035202013";1267 ["phonelink_lock"] = "http://www.roblox.com/asset/?id=6035202064";1268 ["desktop_access_disabled"] = "http://www.roblox.com/asset/?id=6035181863";1269 ["import_contacts"] = "http://www.roblox.com/asset/?id=6035190854";1270 ["rss_feed"] = "http://www.roblox.com/asset/?id=6035202016";1271 ["chat"] = "http://www.roblox.com/asset/?id=6035173838";1272 ["print_disabled"] = "http://www.roblox.com/asset/?id=6035202041";1273 ["mark_email_read"] = "http://www.roblox.com/asset/?id=6035202038";1274 ["hourglass_top"] = "http://www.roblox.com/asset/?id=6035190886";1275 ["clear_all"] = "http://www.roblox.com/asset/?id=6035181870";1276 ["forum"] = "http://www.roblox.com/asset/?id=6035202002";1277 ["qr_code"] = "http://www.roblox.com/asset/?id=6035202012";1278 ["speaker_phone"] = "http://www.roblox.com/asset/?id=6035202018";1279 ["rtt"] = "http://www.roblox.com/asset/?id=6035202010";1280 ["domain_verification"] = "http://www.roblox.com/asset/?id=6035181867";1281 ["app_registration"] = "http://www.roblox.com/asset/?id=6035173870";1282 ["call_split"] = "http://www.roblox.com/asset/?id=6035173861";1283 ["cell_wifi"] = "http://www.roblox.com/asset/?id=6035173852";1284 ["phone_enabled"] = "http://www.roblox.com/asset/?id=6035202089";1285 ["call_made"] = "http://www.roblox.com/asset/?id=6035173858";1286 ["call_received"] = "http://www.roblox.com/asset/?id=6035173844";1287 ["phone"] = "http://www.roblox.com/asset/?id=6035202017";1288 ["ring_volume"] = "http://www.roblox.com/asset/?id=6035202032";1289 ["mark_email_unread"] = "http://www.roblox.com/asset/?id=6035202027";1290 ["hourglass_bottom"] = "http://www.roblox.com/asset/?id=6035202043";1291 ["read_more"] = "http://www.roblox.com/asset/?id=6035202014";1292 ["duo"] = "http://www.roblox.com/asset/?id=6035181860";1293 ["more_time"] = "http://www.roblox.com/asset/?id=6035202036";1294 ["wifi_calling"] = "http://www.roblox.com/asset/?id=6035202065";1295 ["swap_calls"] = "http://www.roblox.com/asset/?id=6035202037";1296 ["cancel_presentation"] = "http://www.roblox.com/asset/?id=6035173837";1297 ["call_missed"] = "http://www.roblox.com/asset/?id=6035173850";1298 ["mark_chat_read"] = "http://www.roblox.com/asset/?id=6035202031";1299 ["text_snippet"] = "http://www.roblox.com/asset/?id=6031302995";1300 ["snippet_folder"] = "http://www.roblox.com/asset/?id=6031302947";1301 ["workspaces_outline"] = "http://www.roblox.com/asset/?id=6031302952";1302 ["file_download"] = "http://www.roblox.com/asset/?id=6031302931";1303 ["request_quote"] = "http://www.roblox.com/asset/?id=6031302941";1304 ["approval"] = "http://www.roblox.com/asset/?id=6031302928";1305 ["drive_folder_upload"] = "http://www.roblox.com/asset/?id=6031302929";1306 ["rule_folder"] = "http://www.roblox.com/asset/?id=6031302940";1307 ["attach_email"] = "http://www.roblox.com/asset/?id=6031302935";1308 ["topic"] = "http://www.roblox.com/asset/?id=6031302976";1309 ["upload_file"] = "http://www.roblox.com/asset/?id=6031302959";1310 ["attachment"] = "http://www.roblox.com/asset/?id=6031302921";1311 ["file_download_done"] = "http://www.roblox.com/asset/?id=6031302926";1312 ["drive_file_move_outline"] = "http://www.roblox.com/asset/?id=6031302924";1313 ["cloud_upload"] = "http://www.roblox.com/asset/?id=6031302992";1314 ["cloud_circle"] = "http://www.roblox.com/asset/?id=6031302919";1315 ["folder_shared"] = "http://www.roblox.com/asset/?id=6031302945";1316 ["cloud_download"] = "http://www.roblox.com/asset/?id=6031302917";1317 ["file_upload"] = "http://www.roblox.com/asset/?id=6031302996";1318 ["workspaces_filled"] = "http://www.roblox.com/asset/?id=6031302961";1319 ["cloud_queue"] = "http://www.roblox.com/asset/?id=6031302916";1320 ["cloud"] = "http://www.roblox.com/asset/?id=6031302918";1321 ["folder_open"] = "http://www.roblox.com/asset/?id=6031302934";1322 ["grid_view"] = "http://www.roblox.com/asset/?id=6031302950";1323 ["cloud_off"] = "http://www.roblox.com/asset/?id=6031302993";1324 ["create_new_folder"] = "http://www.roblox.com/asset/?id=6031302933";1325 ["cloud_done"] = "http://www.roblox.com/asset/?id=6031302927";1326 ["folder"] = "http://www.roblox.com/asset/?id=6031302932";1327 ["drive_file_move"] = "http://www.roblox.com/asset/?id=6031302922";1328 ["drive_file_rename_outline"] = "http://www.roblox.com/asset/?id=6031302994";1329 ["notifications_active"] = "http://www.roblox.com/asset/?id=6034304908";1330 ["sentiment_neutral"] = "http://www.roblox.com/asset/?id=6034230636";1331 ["sick"] = "http://www.roblox.com/asset/?id=6034230642";1332 ["poll"] = "http://www.roblox.com/asset/?id=6034267991";1333 ["emoji_events"] = "http://www.roblox.com/asset/?id=6034275726";1334 ["groups"] = "http://www.roblox.com/asset/?id=6034281935";1335 ["sports_soccer"] = "http://www.roblox.com/asset/?id=6034227075";1336 ["person_add"] = "http://www.roblox.com/asset/?id=6034287514";1337 ["mood_bad"] = "http://www.roblox.com/asset/?id=6034295706";1338 ["person_remove_alt_1"] = "http://www.roblox.com/asset/?id=6034287515";1339 ["king_bed"] = "http://www.roblox.com/asset/?id=6034281948";1340 ["architecture"] = "http://www.roblox.com/asset/?id=6034275730";1341 ["deck"] = "http://www.roblox.com/asset/?id=6034295703";1342 ["group_add"] = "http://www.roblox.com/asset/?id=6034281909";1343 ["sports_basketball"] = "http://www.roblox.com/asset/?id=6034230649";1344 ["emoji_symbols"] = "http://www.roblox.com/asset/?id=6034281899";1345 ["switch_account"] = "http://www.roblox.com/asset/?id=6034227138";1346 ["remove_moderator"] = "http://www.roblox.com/asset/?id=6034267998";1347 ["coronavirus"] = "http://www.roblox.com/asset/?id=6034275724";1348 ["people"] = "http://www.roblox.com/asset/?id=6034287513";1349 ["person"] = "http://www.roblox.com/asset/?id=6034287594";1350 ["elderly"] = "http://www.roblox.com/asset/?id=6034295698";1351 ["clean_hands"] = "http://www.roblox.com/asset/?id=6034275729";1352 ["emoji_flags"] = "http://www.roblox.com/asset/?id=6034304898";1353 ["psychology"] = "http://www.roblox.com/asset/?id=6034287516";1354 ["person_add_alt"] = "http://www.roblox.com/asset/?id=6034267994";1355 ["sports_volleyball"] = "http://www.roblox.com/asset/?id=6034227139";1356 ["domain"] = "http://www.roblox.com/asset/?id=6034275722";1357 ["emoji_objects"] = "http://www.roblox.com/asset/?id=6034281900";1358 ["ios_share"] = "http://www.roblox.com/asset/?id=6034281941";1359 ["history_edu"] = "http://www.roblox.com/asset/?id=6034281934";1360 ["share"] = "http://www.roblox.com/asset/?id=6034230648";1361 ["military_tech"] = "http://www.roblox.com/asset/?id=6034295711";1362 ["sports_kabaddi"] = "http://www.roblox.com/asset/?id=6034227141";1363 ["cake"] = "http://www.roblox.com/asset/?id=6034295702";1364 ["engineering"] = "http://www.roblox.com/asset/?id=6034281908";1365 ["emoji_food_beverage"] = "http://www.roblox.com/asset/?id=6034304883";1366 ["notifications_none"] = "http://www.roblox.com/asset/?id=6034308947";1367 ["emoji_people"] = "http://www.roblox.com/asset/?id=6034281904";1368 ["thumb_down_alt"] = "http://www.roblox.com/asset/?id=6034227069";1369 ["sentiment_very_satisfied"] = "http://www.roblox.com/asset/?id=6034230650";1370 ["nights_stay"] = "http://www.roblox.com/asset/?id=6034304881";1371 ["reduce_capacity"] = "http://www.roblox.com/asset/?id=6034268013";1372 ["add_moderator"] = "http://www.roblox.com/asset/?id=6034295699";1373 ["science"] = "http://www.roblox.com/asset/?id=6034230640";1374 ["pages"] = "http://www.roblox.com/asset/?id=6034304892";1375 ["sentiment_satisfied"] = "http://www.roblox.com/asset/?id=6034230668";1376 ["plus_one"] = "http://www.roblox.com/asset/?id=6034268012";1377 ["party_mode"] = "http://www.roblox.com/asset/?id=6034287521";1378 ["person_remove"] = "http://www.roblox.com/asset/?id=6034267996";1379 ["single_bed"] = "http://www.roblox.com/asset/?id=6034230651";1380 ["mood"] = "http://www.roblox.com/asset/?id=6034295704";1381 ["public"] = "http://www.roblox.com/asset/?id=6034287522";1382 ["sports_rugby"] = "http://www.roblox.com/asset/?id=6034227073";1383 ["sports_handball"] = "http://www.roblox.com/asset/?id=6034227074";1384 ["person_add_alt_1"] = "http://www.roblox.com/asset/?id=6034287519";1385 ["people_alt"] = "http://www.roblox.com/asset/?id=6034287518";1386 ["notifications_off"] = "http://www.roblox.com/asset/?id=6034304894";1387 ["whatshot"] = "http://www.roblox.com/asset/?id=6034287525";1388 ["emoji_transportation"] = "http://www.roblox.com/asset/?id=6034281894";1389 ["outdoor_grill"] = "http://www.roblox.com/asset/?id=6034304900";1390 ["sentiment_very_dissatisfied"] = "http://www.roblox.com/asset/?id=6034230659";1391 ["masks"] = "http://www.roblox.com/asset/?id=6034295710";1392 ["luggage"] = "http://www.roblox.com/asset/?id=6034295708";1393 ["sports_motorsports"] = "http://www.roblox.com/asset/?id=6034227071";1394 ["sports_esports"] = "http://www.roblox.com/asset/?id=6034227061";1395 ["location_city"] = "http://www.roblox.com/asset/?id=6034304889";1396 ["sports_golf"] = "http://www.roblox.com/asset/?id=6034227060";1397 ["sentiment_dissatisfied"] = "http://www.roblox.com/asset/?id=6034230637";1398 ["no_luggage"] = "http://www.roblox.com/asset/?id=6034304891";1399 ["fireplace"] = "http://www.roblox.com/asset/?id=6034281910";1400 ["emoji_nature"] = "http://www.roblox.com/asset/?id=6034281896";1401 ["group"] = "http://www.roblox.com/asset/?id=6034281901";1402 ["thumb_up_alt"] = "http://www.roblox.com/asset/?id=6034227076";1403 ["sports_tennis"] = "http://www.roblox.com/asset/?id=6034227068";1404 ["facebook"] = "http://www.roblox.com/asset/?id=6034281898";1405 ["sports_mma"] = "http://www.roblox.com/asset/?id=6034227072";1406 ["person_outline"] = "http://www.roblox.com/asset/?id=6034268008";1407 ["sports_baseball"] = "http://www.roblox.com/asset/?id=6034230652";1408 ["sports_cricket"] = "http://www.roblox.com/asset/?id=6034230660";1409 ["people_outline"] = "http://www.roblox.com/asset/?id=6034287528";1410 ["notifications_paused"] = "http://www.roblox.com/asset/?id=6034304896";1411 ["emoji_emotions"] = "http://www.roblox.com/asset/?id=6034275731";1412 ["follow_the_signs"] = "http://www.roblox.com/asset/?id=6034281911";1413 ["sanitizer"] = "http://www.roblox.com/asset/?id=6034287586";1414 ["self_improvement"] = "http://www.roblox.com/asset/?id=6034230634";1415 ["notifications"] = "http://www.roblox.com/asset/?id=6034308946";1416 ["public_off"] = "http://www.roblox.com/asset/?id=6034287538";1417 ["recommend"] = "http://www.roblox.com/asset/?id=6034287524";1418 ["sports_football"] = "http://www.roblox.com/asset/?id=6034227067";1419 ["sports_hockey"] = "http://www.roblox.com/asset/?id=6034227064";1420 ["school"] = "http://www.roblox.com/asset/?id=6034230641";1421 ["connect_without_contact"] = "http://www.roblox.com/asset/?id=6034275800";1422 ["sports"] = "http://www.roblox.com/asset/?id=6034230647";1423 ["construction"] = "http://www.roblox.com/asset/?id=6034275725";1424 ["inventory"] = "http://www.roblox.com/asset/?id=6035056487";1425 ["add_box"] = "http://www.roblox.com/asset/?id=6035047375";1426 ["how_to_reg"] = "http://www.roblox.com/asset/?id=6035053288";1427 ["unarchive"] = "http://www.roblox.com/asset/?id=6035078921";1428 ["block_flipped"] = "http://www.roblox.com/asset/?id=6035047378";1429 ["file_copy"] = "http://www.roblox.com/asset/?id=6035053293";1430 ["bolt"] = "http://www.roblox.com/asset/?id=6035047381";1431 ["remove_circle_outline"] = "http://www.roblox.com/asset/?id=6035067843";1432 ["move_to_inbox"] = "http://www.roblox.com/asset/?id=6035067838";1433 ["save_alt"] = "http://www.roblox.com/asset/?id=6035067842";1434 ["weekend"] = "http://www.roblox.com/asset/?id=6035078894";1435 ["where_to_vote"] = "http://www.roblox.com/asset/?id=6035078913";1436 ["biotech"] = "http://www.roblox.com/asset/?id=6035047385";1437 ["report_off"] = "http://www.roblox.com/asset/?id=6035067830";1438 ["clear"] = "http://www.roblox.com/asset/?id=6035047409";1439 ["redo"] = "http://www.roblox.com/asset/?id=6035056483";1440 ["link"] = "http://www.roblox.com/asset/?id=6035056475";1441 ["drafts"] = "http://www.roblox.com/asset/?id=6035053297";1442 ["push_pin"] = "http://www.roblox.com/asset/?id=6035056481";1443 ["reply"] = "http://www.roblox.com/asset/?id=6035067844";1444 ["undo"] = "http://www.roblox.com/asset/?id=6035078896";1445 ["archive"] = "http://www.roblox.com/asset/?id=6035047379";1446 ["add"] = "http://www.roblox.com/asset/?id=6035047377";1447 ["insights"] = "http://www.roblox.com/asset/?id=6035067839";1448 ["flag"] = "http://www.roblox.com/asset/?id=6035053279";1449 ["save"] = "http://www.roblox.com/asset/?id=6035067857";1450 ["text_format"] = "http://www.roblox.com/asset/?id=6035078890";1451 ["content_cut"] = "http://www.roblox.com/asset/?id=6035053280";1452 ["ballot"] = "http://www.roblox.com/asset/?id=6035047386";1453 ["remove"] = "http://www.roblox.com/asset/?id=6035067836";1454 ["calculate"] = "http://www.roblox.com/asset/?id=6035047384";1455 ["report"] = "http://www.roblox.com/asset/?id=6035067826";1456 ["markunread"] = "http://www.roblox.com/asset/?id=6035056476";1457 ["delete_sweep"] = "http://www.roblox.com/asset/?id=6035053301";1458 ["gesture"] = "http://www.roblox.com/asset/?id=6035053287";1459 ["link_off"] = "http://www.roblox.com/asset/?id=6035056484";1460 ["forward"] = "http://www.roblox.com/asset/?id=6035053298";1461 ["reply_all"] = "http://www.roblox.com/asset/?id=6035067824";1462 ["how_to_vote"] = "http://www.roblox.com/asset/?id=6035053295";1463 ["square_foot"] = "http://www.roblox.com/asset/?id=6035078918";1464 ["outlined_flag"] = "http://www.roblox.com/asset/?id=6035056486";1465 ["add_circle"] = "http://www.roblox.com/asset/?id=6035047380";1466 ["stacked_bar_chart"] = "http://www.roblox.com/asset/?id=6035078892";1467 ["policy"] = "http://www.roblox.com/asset/?id=6035056512";1468 ["backspace"] = "http://www.roblox.com/asset/?id=6035047397";1469 ["sort"] = "http://www.roblox.com/asset/?id=6035078888";1470 ["content_paste"] = "http://www.roblox.com/asset/?id=6035053285";1471 ["low_priority"] = "http://www.roblox.com/asset/?id=6035056491";1472 ["font_download"] = "http://www.roblox.com/asset/?id=6035053275";1473 ["shield"] = "http://www.roblox.com/asset/?id=6035078889";1474 ["waves"] = "http://www.roblox.com/asset/?id=6035078898";1475 ["select_all"] = "http://www.roblox.com/asset/?id=6035067834";1476 ["dynamic_feed"] = "http://www.roblox.com/asset/?id=6035053289";1477 ["mail"] = "http://www.roblox.com/asset/?id=6035056477";1478 ["amp_stories"] = "http://www.roblox.com/asset/?id=6035047382";1479 ["filter_list"] = "http://www.roblox.com/asset/?id=6035053294";1480 ["send"] = "http://www.roblox.com/asset/?id=6035067832";1481 ["create"] = "http://www.roblox.com/asset/?id=6035053304";1482 ["stream"] = "http://www.roblox.com/asset/?id=6035078897";1483 ["next_week"] = "http://www.roblox.com/asset/?id=6035067835";1484 ["inbox"] = "http://www.roblox.com/asset/?id=6035067831";1485 ["add_link"] = "http://www.roblox.com/asset/?id=6035047374";1486 ["content_copy"] = "http://www.roblox.com/asset/?id=6035053278";1487 ["remove_circle"] = "http://www.roblox.com/asset/?id=6035067837";1488 ["add_circle_outline"] = "http://www.roblox.com/asset/?id=6035047391";1489 ["block"] = "http://www.roblox.com/asset/?id=6035047387";1490 ["tag"] = "http://www.roblox.com/asset/?id=6035078895";1491 ["beach_access"] = "http://www.roblox.com/asset/?id=6035107923";1492 ["stroller"] = "http://www.roblox.com/asset/?id=6035161535";1493 ["family_restroom"] = "http://www.roblox.com/asset/?id=6035121916";1494 ["corporate_fare"] = "http://www.roblox.com/asset/?id=6035121908";1495 ["no_meeting_room"] = "http://www.roblox.com/asset/?id=6035153649";1496 ["do_not_touch"] = "http://www.roblox.com/asset/?id=6035121915";1497 ["ac_unit"] = "http://www.roblox.com/asset/?id=6035107929";1498 ["business_center"] = "http://www.roblox.com/asset/?id=6035107933";1499 ["spa"] = "http://www.roblox.com/asset/?id=6035153639";1500 ["no_flash"] = "http://www.roblox.com/asset/?id=6035145424";1501 ["no_cell"] = "http://www.roblox.com/asset/?id=6035145376";1502 ["room_service"] = "http://www.roblox.com/asset/?id=6035153648";1503 ["tapas"] = "http://www.roblox.com/asset/?id=6035161533";1504 ["microwave"] = "http://www.roblox.com/asset/?id=6035145367";1505 ["meeting_room"] = "http://www.roblox.com/asset/?id=6035145361";1506 ["wash"] = "http://www.roblox.com/asset/?id=6035161540";1507 ["escalator"] = "http://www.roblox.com/asset/?id=6035121939";1508 ["house_siding"] = "http://www.roblox.com/asset/?id=6035145393";1509 ["food_bank"] = "http://www.roblox.com/asset/?id=6035121921";1510 ["foundation"] = "http://www.roblox.com/asset/?id=6035121918";1511 ["elevator"] = "http://www.roblox.com/asset/?id=6035121912";1512 ["room_preferences"] = "http://www.roblox.com/asset/?id=6035153642";1513 ["do_not_step"] = "http://www.roblox.com/asset/?id=6035121910";1514 ["free_breakfast"] = "http://www.roblox.com/asset/?id=6035145363";1515 ["house"] = "http://www.roblox.com/asset/?id=6035145364";1516 ["child_care"] = "http://www.roblox.com/asset/?id=6035107927";1517 ["night_shelter"] = "http://www.roblox.com/asset/?id=6035145378";1518 ["child_friendly"] = "http://www.roblox.com/asset/?id=6035121942";1519 ["checkroom"] = "http://www.roblox.com/asset/?id=6035107931";1520 ["hot_tub"] = "http://www.roblox.com/asset/?id=6035145382";1521 ["dry"] = "http://www.roblox.com/asset/?id=6035121909";1522 ["charging_station"] = "http://www.roblox.com/asset/?id=6035107925";1523 ["all_inclusive"] = "http://www.roblox.com/asset/?id=6035107920";1524 ["bento"] = "http://www.roblox.com/asset/?id=6035107924";1525 ["no_backpack"] = "http://www.roblox.com/asset/?id=6035145368";1526 ["storefront"] = "http://www.roblox.com/asset/?id=6035161534";1527 ["no_food"] = "http://www.roblox.com/asset/?id=6035145372";1528 ["backpack"] = "http://www.roblox.com/asset/?id=6035107928";1529 ["stairs"] = "http://www.roblox.com/asset/?id=6035153637";1530 ["carpenter"] = "http://www.roblox.com/asset/?id=6035107955";1531 ["no_stroller"] = "http://www.roblox.com/asset/?id=6035153661";1532 ["roofing"] = "http://www.roblox.com/asset/?id=6035153656";1533 ["umbrella"] = "http://www.roblox.com/asset/?id=6035161550";1534 ["sports_bar"] = "http://www.roblox.com/asset/?id=6035153638";1535 ["apartment"] = "http://www.roblox.com/asset/?id=6035107922";1536 ["smoke_free"] = "http://www.roblox.com/asset/?id=6035153647";1537 ["pool"] = "http://www.roblox.com/asset/?id=6035153655";1538 ["bathtub"] = "http://www.roblox.com/asset/?id=6035107939";1539 ["no_drinks"] = "http://www.roblox.com/asset/?id=6035145390";1540 ["escalator_warning"] = "http://www.roblox.com/asset/?id=6035121930";1541 ["wheelchair_pickup"] = "http://www.roblox.com/asset/?id=6035161536";1542 ["smoking_rooms"] = "http://www.roblox.com/asset/?id=6035153636";1543 ["rice_bowl"] = "http://www.roblox.com/asset/?id=6035153662";1544 ["tty"] = "http://www.roblox.com/asset/?id=6035161541";1545 ["no_photography"] = "http://www.roblox.com/asset/?id=6035153664";1546 ["casino"] = "http://www.roblox.com/asset/?id=6035107936";1547 ["fence"] = "http://www.roblox.com/asset/?id=6035121923";1548 ["grass"] = "http://www.roblox.com/asset/?id=6035145359";1549 ["countertops"] = "http://www.roblox.com/asset/?id=6035121914";1550 ["kitchen"] = "http://www.roblox.com/asset/?id=6035145362";1551 ["golf_course"] = "http://www.roblox.com/asset/?id=6035145423";1552 ["soap"] = "http://www.roblox.com/asset/?id=6035153645";1553 ["water_damage"] = "http://www.roblox.com/asset/?id=6035161563";1554 ["airport_shuttle"] = "http://www.roblox.com/asset/?id=6035107921";1555 ["fitness_center"] = "http://www.roblox.com/asset/?id=6035121907";1556 ["baby_changing_station"] = "http://www.roblox.com/asset/?id=6035107930";1557 ["fire_extinguisher"] = "http://www.roblox.com/asset/?id=6035121913";1558 ["sparkle"] = "http://www.roblox.com/asset/?id=4483362748"1559 }1560}1561 1562-- Other Variables1563local request = (syn and syn.request) or (http and http.request) or http_request or nil1564-- Dark theme + motion system1565local DarkTheme = {1566 Name = "Dark",1567 1568 Accent = Color3.fromHex("#18181b"),1569 Dialog = Color3.fromHex("#1a1a1a"),1570 Outline = Color3.fromHex("#FFFFFF"),1571 Text = Color3.fromHex("#FFFFFF"),1572 Placeholder = Color3.fromHex("#a1a1a1"),1573 Background = Color3.fromHex("#101010"),1574 Button = Color3.fromHex("#52525b"),1575 Icon = Color3.fromHex("#a1a1aa"),1576 Toggle = Color3.fromHex("#33C759"),1577 Slider = Color3.fromHex("#0091FF"),1578 Checkbox = Color3.fromHex("#0091FF"),1579 1580 PanelBackground = Color3.fromHex("#FFFFFF"),1581 PanelBackgroundTransparency = 0.95,1582 1583 SliderIcon = Color3.fromHex("#908F95"),1584 Primary = Color3.fromHex("#0091FF"),1585 1586 LabelBackground = Color3.fromHex("#000000"),1587 LabelBackgroundTransparency = 0.83,1588 1589 ElementBackground = Color3.fromHex("#2A2A2C"),1590 ElementBackgroundTransparency = 0,1591}1592 1593Luna.Theme = DarkTheme1594 1595local Animation = {1596 Fast = TweenInfo.new(0.12, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),1597 Hover = TweenInfo.new(0.16, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),1598 Normal = TweenInfo.new(0.22, Enum.EasingStyle.Quart, Enum.EasingDirection.Out),1599 Reveal = TweenInfo.new(0.30, Enum.EasingStyle.Quart, Enum.EasingDirection.Out),1600 Dialog = TweenInfo.new(0.35, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),1601 Window = TweenInfo.new(0.42, Enum.EasingStyle.Quart, Enum.EasingDirection.Out),1602 Slider = TweenInfo.new(0.10, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),1603 SliderSet = TweenInfo.new(0.20, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),1604}1605 1606Luna.Animation = Animation1607local tweeninfo = Animation.Normal1608local PresetGradients = {1609 ["Nightlight (Classic)"] = {Color3.fromRGB(147, 255, 239), Color3.fromRGB(201,211,233), Color3.fromRGB(255, 167, 227)},1610 ["Nightlight (Neo)"] = {Color3.fromRGB(117, 164, 206), Color3.fromRGB(123, 201, 201), Color3.fromRGB(224, 138, 175)},1611 Starlight = {Color3.fromRGB(147, 255, 239), Color3.fromRGB(181, 206, 241), Color3.fromRGB(214, 158, 243)},1612 Solar = {Color3.fromRGB(242, 157, 76), Color3.fromRGB(240, 179, 81), Color3.fromRGB(238, 201, 86)},1613 Sparkle = {Color3.fromRGB(199, 130, 242), Color3.fromRGB(221, 130, 238), Color3.fromRGB(243, 129, 233)},1614 Lime = {Color3.fromRGB(170, 255, 127), Color3.fromRGB(163, 220, 138), Color3.fromRGB(155, 185, 149)},1615 Vine = {Color3.fromRGB(0, 191, 143), Color3.fromRGB(0, 126, 94), Color3.fromRGB(0, 61, 46)},1616 Cherry = {Color3.fromRGB(148, 54, 54), Color3.fromRGB(168, 67, 70), Color3.fromRGB(188, 80, 86)},1617 Daylight = {Color3.fromRGB(51, 156, 255), Color3.fromRGB(89, 171, 237), Color3.fromRGB(127, 186, 218)},1618 Blossom = {Color3.fromRGB(255, 165, 243), Color3.fromRGB(213, 129, 231), Color3.fromRGB(170, 92, 218)},1619}1620 1621local function GetIcon(icon, source)1622 if source == "Custom" then1623 return "rbxassetid://" .. icon1624 elseif source == "Lucide" then1625 -- full credit to latte softworks :)1626 local iconData = not isStudio and game:HttpGet("https://raw.githubusercontent.com/latte-soft/lucide-roblox/refs/heads/master/lib/Icons.luau")1627 local icons = isStudio and IconModule.Lucide or loadstring(iconData)()1628 if not isStudio then1629 icon = string.match(string.lower(icon), "^%s*(.*)%s*$") :: string1630 local sizedicons = icons['48px']1631 1632 local r = sizedicons[icon]1633 if not r then1634 error("Lucide Icons: Failed to find icon by the name of \"" .. icon .. "\.", 2)1635 end1636 1637 local rirs = r[2]1638 local riro = r[3]1639 1640 if type(r[1]) ~= "number" or type(rirs) ~= "table" or type(riro) ~= "table" then1641 error("Lucide Icons: Internal error: Invalid auto-generated asset entry")1642 end1643 1644 local irs = Vector2.new(rirs[1], rirs[2])1645 local iro = Vector2.new(riro[1], riro[2])1646 1647 local asset = {1648 id = r[1],1649 imageRectSize = irs,1650 imageRectOffset = iro,1651 }1652 1653 return asset1654 else1655 return "rbxassetid://10723434557"1656 end1657 else 1658 if icon ~= nil and IconModule[source] then1659 local sourceicon = IconModule[source]1660 return sourceicon[icon]1661 else1662 return nil1663 end1664 end1665end1666 1667local function RemoveTable(tablre, value)1668 for i,v in pairs(tablre) do1669 if tostring(v) == tostring(value) then1670 table.remove(tablre, i)1671 end1672 end1673end1674 1675local function Kwargify(defaults, passed)1676 for i, v in pairs(defaults) do1677 if passed[i] == nil then1678 passed[i] = v1679 end1680 end1681 return passed1682end1683 1684local function PackColor(Color)1685 return {R = Color.R * 255, G = Color.G * 255, B = Color.B * 255}1686end 1687 1688local function UnpackColor(Color)1689 return Color3.fromRGB(Color.R, Color.G, Color.B)1690end1691 1692function tween(object, goal, callback, tweenin)1693 local tween = TweenService:Create(object,tweenin or tweeninfo, goal)1694 tween.Completed:Connect(callback or function() end)1695 tween:Play()1696end1697 1698local function BlurModule(Frame)1699 local RunService = game:GetService('RunService')1700 local camera = workspace.CurrentCamera1701 local MTREL = "Glass"1702 local binds = {}1703 local root = Instance.new('Folder', camera)1704 root.Name = 'LunaBlur'1705 1706 local gTokenMH = 999999991707 local gToken = math.random(1, gTokenMH)1708 1709 local DepthOfField = Instance.new('DepthOfFieldEffect', game:GetService('Lighting'))1710 DepthOfField.FarIntensity = 01711 DepthOfField.FocusDistance = 51.61712 DepthOfField.InFocusRadius = 501713 DepthOfField.NearIntensity = 61714 DepthOfField.Name = "DPT_"..gToken1715 1716 local frame = Instance.new('Frame')1717 frame.Parent = Frame1718 frame.Size = UDim2.new(0.95, 0, 0.95, 0)1719 frame.Position = UDim2.new(0.5, 0, 0.5, 0)1720 frame.AnchorPoint = Vector2.new(0.5, 0.5)1721 frame.BackgroundTransparency = 11722 1723 local GenUid; do -- Generate unique names for RenderStepped bindings1724 local id = 01725 function GenUid()1726 id = id + 11727 return 'neon::'..tostring(id)1728 end1729 end1730 1731 do1732 local function IsNotNaN(x)1733 return x == x1734 end1735 local continue = IsNotNaN(camera:ScreenPointToRay(0,0).Origin.x)1736 while not continue do1737 RunService.RenderStepped:wait()1738 continue = IsNotNaN(camera:ScreenPointToRay(0,0).Origin.x)1739 end1740 end1741 1742 local DrawQuad; do1743 1744 local acos, max, pi, sqrt = math.acos, math.max, math.pi, math.sqrt1745 local sz = 0.221746 local function DrawTriangle(v1, v2, v3, p0, p1) -- I think Stravant wrote this function1747 1748 local s1 = (v1 - v2).magnitude1749 local s2 = (v2 - v3).magnitude1750 local s3 = (v3 - v1).magnitude1751 local smax = max(s1, s2, s3)1752 local A, B, C1753 if s1 == smax then1754 A, B, C = v1, v2, v31755 elseif s2 == smax then1756 A, B, C = v2, v3, v11757 elseif s3 == smax then1758 A, B, C = v3, v1, v21759 end1760 1761 local para = ( (B-A).x*(C-A).x + (B-A).y*(C-A).y + (B-A).z*(C-A).z ) / (A-B).magnitude1762 local perp = sqrt((C-A).magnitude^2 - para*para)1763 local dif_para = (A - B).magnitude - para1764 1765 local st = CFrame.new(B, A)1766 local za = CFrame.Angles(pi/2,0,0)1767 1768 local cf0 = st1769 1770 local Top_Look = (cf0 * za).lookVector1771 local Mid_Point = A + CFrame.new(A, B).lookVector * para1772 local Needed_Look = CFrame.new(Mid_Point, C).lookVector1773 local dot = Top_Look.x*Needed_Look.x + Top_Look.y*Needed_Look.y + Top_Look.z*Needed_Look.z1774 1775 local ac = CFrame.Angles(0, 0, acos(dot))1776 1777 cf0 = cf0 * ac1778 if ((cf0 * za).lookVector - Needed_Look).magnitude > 0.01 then1779 cf0 = cf0 * CFrame.Angles(0, 0, -2*acos(dot))1780 end1781 cf0 = cf0 * CFrame.new(0, perp/2, -(dif_para + para/2))1782 1783 local cf1 = st * ac * CFrame.Angles(0, pi, 0)1784 if ((cf1 * za).lookVector - Needed_Look).magnitude > 0.01 then1785 cf1 = cf1 * CFrame.Angles(0, 0, 2*acos(dot))1786 end1787 cf1 = cf1 * CFrame.new(0, perp/2, dif_para/2)1788 1789 if not p0 then1790 p0 = Instance.new('Part')1791 p0.FormFactor = 'Custom'1792 p0.TopSurface = 01793 p0.BottomSurface = 01794 p0.Anchored = true1795 p0.CanCollide = false1796 p0.CastShadow = false1797 p0.Material = MTREL1798 p0.Size = Vector3.new(sz, sz, sz)1799 local mesh = Instance.new('SpecialMesh', p0)1800 mesh.MeshType = 21801 mesh.Name = 'WedgeMesh'1802 end1803 p0.WedgeMesh.Scale = Vector3.new(0, perp/sz, para/sz)1804 p0.CFrame = cf01805 1806 if not p1 then1807 p1 = p0:clone()1808 end1809 p1.WedgeMesh.Scale = Vector3.new(0, perp/sz, dif_para/sz)1810 p1.CFrame = cf11811 1812 return p0, p11813 end1814 1815 function DrawQuad(v1, v2, v3, v4, parts)1816 parts[1], parts[2] = DrawTriangle(v1, v2, v3, parts[1], parts[2])1817 parts[3], parts[4] = DrawTriangle(v3, v2, v4, parts[3], parts[4])1818 end1819 end1820 1821 if binds[frame] then1822 return binds[frame].parts1823 end1824 1825 local uid = GenUid()1826 local parts = {}1827 local f = Instance.new('Folder', root)1828 f.Name = frame.Name1829 1830 local parents = {}1831 do1832 local function add(child)1833 if child:IsA'GuiObject' then1834 parents[#parents + 1] = child1835 add(child.Parent)1836 end1837 end1838 add(frame)1839 end1840 1841 local function UpdateOrientation(fetchProps)1842 local properties = {1843 Transparency = 0.98;1844 BrickColor = BrickColor.new('Institutional white');1845 }1846 local zIndex = 1 - 0.05*frame.ZIndex1847 1848 local tl, br = frame.AbsolutePosition, frame.AbsolutePosition + frame.AbsoluteSize1849 local tr, bl = Vector2.new(br.x, tl.y), Vector2.new(tl.x, br.y)1850 do1851 local rot = 0;1852 for _, v in ipairs(parents) do1853 rot = rot + v.Rotation1854 end1855 if rot ~= 0 and rot%180 ~= 0 then1856 local mid = tl:lerp(br, 0.5)1857 local s, c = math.sin(math.rad(rot)), math.cos(math.rad(rot))1858 local vec = tl1859 tl = Vector2.new(c*(tl.x - mid.x) - s*(tl.y - mid.y), s*(tl.x - mid.x) + c*(tl.y - mid.y)) + mid1860 tr = Vector2.new(c*(tr.x - mid.x) - s*(tr.y - mid.y), s*(tr.x - mid.x) + c*(tr.y - mid.y)) + mid1861 bl = Vector2.new(c*(bl.x - mid.x) - s*(bl.y - mid.y), s*(bl.x - mid.x) + c*(bl.y - mid.y)) + mid1862 br = Vector2.new(c*(br.x - mid.x) - s*(br.y - mid.y), s*(br.x - mid.x) + c*(br.y - mid.y)) + mid1863 end1864 end1865 DrawQuad(1866 camera:ScreenPointToRay(tl.x, tl.y, zIndex).Origin, 1867 camera:ScreenPointToRay(tr.x, tr.y, zIndex).Origin, 1868 camera:ScreenPointToRay(bl.x, bl.y, zIndex).Origin, 1869 camera:ScreenPointToRay(br.x, br.y, zIndex).Origin, 1870 parts1871 )1872 if fetchProps then1873 for _, pt in pairs(parts) do1874 pt.Parent = f1875 end1876 for propName, propValue in pairs(properties) do1877 for _, pt in pairs(parts) do1878 pt[propName] = propValue1879 end1880 end1881 end1882 1883 end1884 1885 UpdateOrientation(true)1886 RunService:BindToRenderStep(uid, 2000, UpdateOrientation)1887end1888 1889local function unpackt(array : table)1890 1891 local val = ""1892 local i = 01893 for _,v in pairs(array) do1894 if i < 3 then1895 val = val .. v .. ", "1896 i += 11897 else1898 val = "Various"1899 break1900 end1901 end1902 1903 return val1904end1905 1906-- Interface Management1907local LunaUI = isStudio and script.Parent:WaitForChild("Luna UI") or game:GetObjects("rbxassetid://86467455075715")[1]1908 1909local SizeBleh = nil1910 1911local function Hide(Window, bind, notif)1912 SizeBleh = Window.Size1913 bind = string.split(tostring(bind), "Enum.KeyCode.")1914 bind = bind[2]1915 if notif then1916 Luna:Notification({Title = "Interface Hidden", Content = "The interface has been hidden, you may reopen the interface by Pressing the UI Bind In Settings ("..tostring(bind)..")", Icon = "visibility_off"})1917 end1918 tween(Window, {BackgroundTransparency = 1})1919 tween(Window.Elements, {BackgroundTransparency = 1})1920 tween(Window.Line, {BackgroundTransparency = 1})1921 tween(Window.Title.Title, {TextTransparency = 1})1922 tween(Window.Title.subtitle, {TextTransparency = 1})1923 tween(Window.Logo, {ImageTransparency = 1})1924 tween(Window.Navigation.Line, {BackgroundTransparency = 1})1925 1926 for _, TopbarButton in ipairs(Window.Controls:GetChildren()) do1927 if TopbarButton.ClassName == "Frame" then1928 tween(TopbarButton, {BackgroundTransparency = 1})1929 tween(TopbarButton.UIStroke, {Transparency = 1})1930 tween(TopbarButton.ImageLabel, {ImageTransparency = 1})1931 TopbarButton.Visible = false1932 end1933 end1934 for _, tabbtn in ipairs(Window.Navigation.Tabs:GetChildren()) do1935 if tabbtn.ClassName == "Frame" and tabbtn.Name ~= "InActive Template" then1936 TweenService:Create(tabbtn, Animation.Normal, {BackgroundTransparency = 1}):Play()1937 TweenService:Create(tabbtn.ImageLabel, Animation.Normal, {ImageTransparency = 1}):Play()1938 TweenService:Create(tabbtn.DropShadowHolder.DropShadow, Animation.Normal, {ImageTransparency = 1}):Play()1939 TweenService:Create(tabbtn.UIStroke, Animation.Normal, {Transparency = 1}):Play()1940 end1941 end1942 1943 task.wait(0.28)1944 Window.Size = UDim2.new(0,0,0,0)1945 Window.Parent.ShadowHolder.Visible = false1946 task.wait()1947 Window.Elements.Parent.Visible = false1948 Window.Visible = false1949end1950 1951 1952if gethui then1953 LunaUI.Parent = gethui()1954elseif syn and syn.protect_gui then 1955 syn.protect_gui(LunaUI)1956 LunaUI.Parent = CoreGui1957elseif not isStudio and CoreGui:FindFirstChild("RobloxGui") then1958 LunaUI.Parent = CoreGui:FindFirstChild("RobloxGui")1959elseif not isStudio then1960 LunaUI.Parent = CoreGui1961end1962 1963if gethui then1964 for _, Interface in ipairs(gethui():GetChildren()) do1965 if Interface.Name == LunaUI.Name and Interface ~= LunaUI then1966 Hide(Interface.SmartWindow)1967 Interface.Enabled = false1968 Interface.Name = "Luna-Old"1969 end1970 end1971elseif not isStudio then1972 for _, Interface in ipairs(CoreGui:GetChildren()) do1973 if Interface.Name == LunaUI.Name and Interface ~= LunaUI then1974 Hide(Interface.SmartWindow)1975 Interface.Enabled = false1976 Interface.Name = "Luna-Old"1977 end1978 end1979end1980 1981LunaUI.Enabled = false1982LunaUI.SmartWindow.Visible = false1983LunaUI.Notifications.Template.Visible = false1984LunaUI.DisplayOrder = 10000000001985 1986local Main : Frame = LunaUI.SmartWindow1987local Dragger = Main.Drag1988local dragBar = LunaUI.Drag1989local dragInteract = dragBar and dragBar.Interact or nil1990local dragBarCosmetic = dragBar and dragBar.Drag or nil1991local Elements = Main.Elements.Interactions1992local LoadingFrame = Main.LoadingFrame1993local Navigation = Main.Navigation1994local Tabs = Navigation.Tabs1995local Notifications = LunaUI.Notifications1996local KeySystem : Frame = Main.KeySystem1997 1998 1999local function SolidSequence(color)2000 return ColorSequence.new({2001 ColorSequenceKeypoint.new(0, color),2002 ColorSequenceKeypoint.new(1, color),2003 })2004end2005 2006local function HasAncestorNamed(instance, fragment)2007 fragment = string.lower(fragment)2008 local current = instance2009 while current and current ~= LunaUI do2010 if string.find(string.lower(current.Name), fragment, 1, true) then2011 return true2012 end2013 current = current.Parent2014 end2015 return false2016end2017 2018local function ApplyDarkTheme(root)2019 for _, instance in ipairs(root:GetDescendants()) do2020 local name = string.lower(instance.Name)2021 local inColorPicker = HasAncestorNamed(instance, "colorpicker") or HasAncestorNamed(instance, "color picker")2022 2023 if instance:IsA("TextLabel") or instance:IsA("TextButton") or instance:IsA("TextBox") then2024 instance.TextColor3 = DarkTheme.Text2025 if instance:IsA("TextBox") then2026 instance.PlaceholderColor3 = DarkTheme.Placeholder2027 end2028 end2029 2030 if instance:IsA("UIStroke") and not inColorPicker then2031 instance.Color = DarkTheme.Outline2032 end2033 2034 if instance:IsA("UIGradient") and string.lower(instance.Name) == "color" and not inColorPicker then2035 if HasAncestorNamed(instance, "toggle") then2036 instance.Color = SolidSequence(DarkTheme.Toggle)2037 elseif HasAncestorNamed(instance, "slider") then2038 instance.Color = SolidSequence(DarkTheme.Slider)2039 else2040 instance.Color = SolidSequence(DarkTheme.Primary)2041 end2042 end2043 2044 if not inColorPicker then2045 if instance:IsA("Frame") or instance:IsA("ScrollingFrame") or instance:IsA("TextButton") or instance:IsA("TextBox") then2046 if instance.BackgroundTransparency < 1 then2047 if string.find(name, "label", 1, true) then2048 instance.BackgroundColor3 = DarkTheme.LabelBackground2049 if instance.BackgroundTransparency < DarkTheme.LabelBackgroundTransparency then2050 instance.BackgroundTransparency = DarkTheme.LabelBackgroundTransparency2051 end2052 elseif string.find(name, "button", 1, true) or string.find(name, "action", 1, true) then2053 instance.BackgroundColor3 = DarkTheme.Button2054 elseif string.find(name, "dialog", 1, true) or string.find(name, "keysystem", 1, true) or string.find(name, "loading", 1, true) then2055 instance.BackgroundColor3 = DarkTheme.Dialog2056 else2057 instance.BackgroundColor3 = DarkTheme.ElementBackground2058 end2059 end2060 end2061 2062 if (instance:IsA("ImageLabel") or instance:IsA("ImageButton"))2063 and not string.find(name, "shadow", 1, true)2064 and not string.find(name, "logo", 1, true)2065 and not HasAncestorNamed(instance, "player") then2066 instance.ImageColor3 = DarkTheme.Icon2067 end2068 end2069 end2070 2071 -- Explicit shell colors keep the visual hierarchy crisp.2072 Main.BackgroundColor3 = DarkTheme.Background2073 if Main:FindFirstChild("Elements") and Main.Elements:IsA("GuiObject") then Main.Elements.BackgroundColor3 = DarkTheme.Accent end2074 if Navigation:IsA("GuiObject") then Navigation.BackgroundColor3 = DarkTheme.Accent end2075 if KeySystem:IsA("GuiObject") then KeySystem.BackgroundColor3 = DarkTheme.Dialog end2076 if LoadingFrame:IsA("GuiObject") then LoadingFrame.BackgroundColor3 = DarkTheme.Background end2077 if Main:FindFirstChild("Line") then Main.Line.BackgroundColor3 = DarkTheme.Outline end2078 if Navigation:FindFirstChild("Line") then Navigation.Line.BackgroundColor3 = DarkTheme.Outline end2079end2080 2081-- Subtle micro-interactions for clickable cards/tabs. Sliders, color pickers and drag handles are intentionally excluded.2082local MotionBound = setmetatable({}, {__mode = "k"})2083 2084local function BindMotion(interact)2085 if not interact or not interact:IsA("GuiButton") or MotionBound[interact] then return end2086 local target = interact.Parent2087 if not target or not target:IsA("GuiObject") then return end2088 2089 local lname = string.lower(target.Name)2090 if string.find(lname, "slider", 1, true)2091 or string.find(lname, "colorpicker", 1, true)2092 or string.find(lname, "color picker", 1, true)2093 or string.find(lname, "drag", 1, true) then2094 return2095 end2096 2097 MotionBound[interact] = true2098 local scale = target:FindFirstChild("LunaMotionScale")2099 if not scale then2100 scale = Instance.new("UIScale")2101 scale.Name = "LunaMotionScale"2102 scale.Scale = 12103 scale.Parent = target2104 end2105 2106 local hovered = false2107 local pressed = false2108 local function setScale(value, info)2109 TweenService:Create(scale, info or Animation.Hover, {Scale = value}):Play()2110 end2111 2112 target.MouseEnter:Connect(function()2113 hovered = true2114 if not pressed then setScale(1.012, Animation.Hover) end2115 end)2116 2117 target.MouseLeave:Connect(function()2118 hovered = false2119 if not pressed then setScale(1, Animation.Hover) end2120 end)2121 2122 interact.InputBegan:Connect(function(input)2123 if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then2124 pressed = true2125 setScale(0.992, Animation.Fast)2126 end2127 end)2128 2129 interact.InputEnded:Connect(function(input)2130 if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then2131 pressed = false2132 setScale(hovered and 1.012 or 1, Animation.Hover)2133 end2134 end)2135end2136 2137local function ScanForMotion(root)2138 for _, instance in ipairs(root:GetDescendants()) do2139 if instance.Name == "Interact" and instance:IsA("GuiButton") then2140 BindMotion(instance)2141 end2142 end2143end2144 2145ApplyDarkTheme(LunaUI)2146ScanForMotion(LunaUI)2147LunaUI.DescendantAdded:Connect(function(instance)2148 if instance.Name == "Interact" and instance:IsA("GuiButton") then2149 task.defer(BindMotion, instance)2150 end2151end)2152 2153Luna.ApplyTheme = function()2154 ApplyDarkTheme(LunaUI)2155end2156 2157-- local function LoadConfiguration(Configuration, autoload)2158-- local Data = HttpService:JSONDecode(Configuration)2159-- local changed2160-- local notified = false2161 2162-- -- Iterate through current UI elements' flags2163-- for FlagName, Flag in pairs(Luna.Flags) do2164-- local FlagValue = Data[FlagName]2165 2166-- if FlagValue then2167-- task.spawn(function()2168-- if Flag.Type == "ColorPicker" then2169-- changed = true2170-- Flag:Set(UnpackColor(FlagValue))2171-- else2172-- if (Flag.CurrentValue or Flag.CurrentKeybind or Flag.CurrentOption or Flag.Color) ~= FlagValue then 2173-- changed = true2174-- Flag:Set(FlagValue) 2175-- end2176-- end2177-- end)2178-- else2179-- notified = true2180-- Luna:Notification({Title = "Config Error", Content = "Luna was unable to load or find '"..FlagName.. "'' in the current script. Check ".. website .." for help.", Icon = "flag"})2181-- end2182-- end2183-- if autoload and notified == false then2184-- Luna:Notification({2185-- Title = "Config Autoloaded",2186-- Content = "The Configuration Has Been Automatically Loaded. Thank You For Using Luna Library",2187-- Icon = "file-code-2",2188-- ImageSource = "Lucide"2189-- })2190-- elseif notified == false then2191-- Luna:Notification({2192-- Title = "Config Loaded",2193-- Content = "The Configuration Has Been Loaded. Thank You For Using Luna Library",2194-- Icon = "file-code-2",2195-- ImageSource = "Lucide"2196-- })2197-- end2198 2199-- return changed2200-- end2201 2202-- local function SaveConfiguration(Configuration, ConfigFolder, hasRoot)2203-- local Data = {}2204-- for i,v in pairs(Luna.Flags) do2205-- if v.Type == "ColorPicker" then2206-- Data[i] = PackColor(v.Color)2207-- else2208-- Data[i] = v.CurrentValue or v.CurrentBind or v.CurrentOption or v.Color2209-- end2210-- end 2211-- if hasRoot then2212-- writefile(ConfigurationFolder .. "/" .. hasRoot .. "/" .. ConfigFolder .. "/" .. Configuration .. ConfigurationExtension, tostring(HttpService:JSONEncode(Data)))2213-- else2214-- writefile(ConfigurationFolder .. "/" .. "/" .. ConfigFolder .. Configuration .. ConfigurationExtension, tostring(HttpService:JSONEncode(Data)))2215-- end2216-- end2217 2218-- local function SetAutoload(ConfigName, ConfigFolder, hasRoot)2219-- if hasRoot then2220-- writefile(ConfigurationFolder .. "/" .. hasRoot .. "/" .. ConfigFolder .. "/" .. "autoload.txt", tostring(ConfigName) .. ConfigurationExtension)2221-- else2222-- writefile(ConfigurationFolder .. "/" .. "/" .. ConfigFolder .. "autoload.txt", tostring(ConfigName) .. ConfigurationExtension)2223-- end2224-- end2225 2226-- local function LoadAutoLoad(ConfigFolder, hasRoot)2227-- local autoload = isfile(ConfigurationFolder .. "/" .. "/" .. ConfigFolder .. "autoload.txt")2228-- if hasRoot then2229-- autoload = isfile(ConfigurationFolder .. "/" .. hasRoot .. "/" .. ConfigFolder .. "/" .. "autoload.txt")2230-- end2231 2232-- if autoload then2233-- if hasRoot then2234-- LoadConfiguration(readfile(ConfigurationFolder .. "/" .. hasRoot .. "/" .. ConfigFolder .. "/" .. readfile(ConfigurationFolder .. "/" .. hasRoot .. "/" .. ConfigFolder .. "/" .. "autoload.txt")), true)2235-- else2236-- LoadConfiguration(readfile(ConfigurationFolder .. "/" .. ConfigFolder .. "/" .. readfile(ConfigurationFolder .. "/" .. ConfigFolder .. "/" .. "autoload.txt")), true)2237-- end2238-- end2239-- end2240 2241local function Draggable(Bar, Window, enableTaptic, tapticOffset)2242 pcall(function()2243 local Dragging, DragInput, MousePos, FramePos2244 2245 local function connectFunctions()2246 if dragBar and enableTaptic then2247 dragBar.MouseEnter:Connect(function()2248 if not Dragging then2249 TweenService:Create(dragBarCosmetic, Animation.Hover, {BackgroundTransparency = 0.5, Size = UDim2.new(0, 120, 0, 4)}):Play()2250 end2251 end)2252 2253 dragBar.MouseLeave:Connect(function()2254 if not Dragging then2255 TweenService:Create(dragBarCosmetic, Animation.Hover, {BackgroundTransparency = 0.7, Size = UDim2.new(0, 100, 0, 4)}):Play()2256 end2257 end)2258 end2259 end2260 2261 connectFunctions()2262 2263 Bar.InputBegan:Connect(function(Input)2264 if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then2265 Dragging = true2266 MousePos = Input.Position2267 FramePos = Window.Position2268 2269 if enableTaptic then2270 TweenService:Create(dragBarCosmetic, Animation.Normal, {Size = UDim2.new(0, 110, 0, 4), BackgroundTransparency = 0}):Play()2271 end2272 2273 Input.Changed:Connect(function()2274 if Input.UserInputState == Enum.UserInputState.End then2275 Dragging = false2276 connectFunctions()2277 2278 if enableTaptic then2279 TweenService:Create(dragBarCosmetic, Animation.Normal, {Size = UDim2.new(0, 100, 0, 4), BackgroundTransparency = 0.7}):Play()2280 end2281 end2282 end)2283 end2284 end)2285 2286 Bar.InputChanged:Connect(function(Input)2287 if Input.UserInputType == Enum.UserInputType.MouseMovement or Input.UserInputType == Enum.UserInputType.Touch then2288 DragInput = Input2289 end2290 end)2291 2292 UserInputService.InputChanged:Connect(function(Input)2293 if Input == DragInput and Dragging then2294 local Delta = Input.Position - MousePos2295 2296 local newMainPosition = UDim2.new(FramePos.X.Scale, FramePos.X.Offset + Delta.X, FramePos.Y.Scale, FramePos.Y.Offset + Delta.Y)2297 TweenService:Create(Window, Animation.Normal, {Position = newMainPosition}):Play()2298 2299 if dragBar then2300 local newDragBarPosition = UDim2.new(FramePos.X.Scale, FramePos.X.Offset + Delta.X, FramePos.Y.Scale, FramePos.Y.Offset + Delta.Y + 240)2301 dragBar.Position = newDragBarPosition2302 end2303 end2304 end)2305 2306 end)2307end2308 2309function Luna:Notification(data) -- action e.g open messages2310 task.spawn(function()2311 data = Kwargify({2312 Title = "Missing Title",2313 Content = "Missing or Unknown Content",2314 Icon = "view_in_ar",2315 ImageSource = "Material"2316 }, data or {})2317 2318 -- Notification Object Creation2319 local newNotification = Notifications.Template:Clone()2320 newNotification.Name = data.Title2321 newNotification.Parent = Notifications2322 newNotification.LayoutOrder = #Notifications:GetChildren()2323 newNotification.Visible = false2324 BlurModule(newNotification)2325 2326 -- Set Data2327 newNotification.Title.Text = data.Title2328 newNotification.Description.Text = data.Content 2329 newNotification.Icon.Image = GetIcon(data.Icon, data.ImageSource)2330 2331 -- Set initial transparency values2332 newNotification.BackgroundTransparency = 12333 newNotification.Title.TextTransparency = 12334 newNotification.Description.TextTransparency = 12335 newNotification.UIStroke.Transparency = 12336 newNotification.Shadow.ImageTransparency = 12337 newNotification.Icon.ImageTransparency = 12338 newNotification.Icon.BackgroundTransparency = 12339 2340 task.wait()2341 2342 -- Calculate textbounds and set initial values2343 newNotification.Size = UDim2.new(1, 0, 0, -Notifications:FindFirstChild("UIListLayout").Padding.Offset)2344 2345 newNotification.Icon.Size = UDim2.new(0, 28, 0, 28)2346 newNotification.Icon.Position = UDim2.new(0, 16, 0.5, -1)2347 2348 newNotification.Visible = true2349 2350 newNotification.Description.Size = UDim2.new(1, -65, 0, math.huge)2351 local bounds = newNotification.Description.TextBounds.Y + 552352 newNotification.Description.Size = UDim2.new(1,-65,0, bounds - 35)2353 newNotification.Size = UDim2.new(1, 0, 0, -Notifications:FindFirstChild("UIListLayout").Padding.Offset)2354 TweenService:Create(newNotification, Animation.Dialog, {Size = UDim2.new(1, 0, 0, bounds)}):Play()2355 2356 task.wait(0.15)2357 TweenService:Create(newNotification, TweenInfo.new(0.4, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.45}):Play()2358 TweenService:Create(newNotification.Title, Animation.Normal, {TextTransparency = 0}):Play()2359 2360 task.wait(0.05)2361 2362 TweenService:Create(newNotification.Icon, Animation.Normal, {ImageTransparency = 0}):Play()2363 2364 task.wait(0.05)2365 TweenService:Create(newNotification.Description, Animation.Normal, {TextTransparency = 0.35}):Play()2366 TweenService:Create(newNotification.UIStroke, TweenInfo.new(0.4, Enum.EasingStyle.Exponential), {Transparency = 0.95}):Play()2367 TweenService:Create(newNotification.Shadow, Animation.Normal, {ImageTransparency = 0.82}):Play()2368 2369 local waitDuration = math.min(math.max((#newNotification.Description.Text * 0.1) + 2.5, 3), 10)2370 task.wait(data.Duration or waitDuration)2371 2372 newNotification.Icon.Visible = false2373 TweenService:Create(newNotification, TweenInfo.new(0.4, Enum.EasingStyle.Exponential), {BackgroundTransparency = 1}):Play()2374 TweenService:Create(newNotification.UIStroke, TweenInfo.new(0.4, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()2375 TweenService:Create(newNotification.Shadow, Animation.Normal, {ImageTransparency = 1}):Play()2376 TweenService:Create(newNotification.Title, Animation.Normal, {TextTransparency = 1}):Play()2377 TweenService:Create(newNotification.Description, Animation.Normal, {TextTransparency = 1}):Play()2378 2379 TweenService:Create(newNotification, TweenInfo.new(1, Enum.EasingStyle.Exponential), {Size = UDim2.new(1, -90, 0, 0)}):Play()2380 2381 task.wait(1)2382 2383 TweenService:Create(newNotification, TweenInfo.new(1, Enum.EasingStyle.Exponential), {Size = UDim2.new(1, -90, 0, -Notifications:FindFirstChild("UIListLayout").Padding.Offset)}):Play()2384 2385 newNotification.Visible = false2386 newNotification:Destroy()2387 end)2388end2389 2390local function Unhide(Window, currentTab)2391 Window.Size = SizeBleh2392 Window.Elements.Visible = true2393 Window.Visible = true2394 task.wait()2395 tween(Window, {BackgroundTransparency = 0.2})2396 tween(Window.Elements, {BackgroundTransparency = 0.08})2397 tween(Window.Line, {BackgroundTransparency = 0})2398 tween(Window.Title.Title, {TextTransparency = 0})2399 tween(Window.Title.subtitle, {TextTransparency = 0})2400 tween(Window.Logo, {ImageTransparency = 0})2401 tween(Window.Navigation.Line, {BackgroundTransparency = 0})2402 2403 for _, TopbarButton in ipairs(Window.Controls:GetChildren()) do2404 if TopbarButton.ClassName == "Frame" and TopbarButton.Name ~= "Theme" then2405 TopbarButton.Visible = true2406 tween(TopbarButton, {BackgroundTransparency = 0.25})2407 tween(TopbarButton.UIStroke, {Transparency = 0.5})2408 tween(TopbarButton.ImageLabel, {ImageTransparency = 0.25})2409 end2410 end2411 for _, tabbtn in ipairs(Window.Navigation.Tabs:GetChildren()) do2412 if tabbtn.ClassName == "Frame" and tabbtn.Name ~= "InActive Template" then2413 if tabbtn.Name == currentTab then2414 TweenService:Create(tabbtn, Animation.Normal, {BackgroundTransparency = 0}):Play()2415 TweenService:Create(tabbtn.UIStroke, Animation.Normal, {Transparency = 0.41}):Play()2416 end2417 TweenService:Create(tabbtn.ImageLabel, Animation.Normal, {ImageTransparency = 0}):Play()2418 TweenService:Create(tabbtn.DropShadowHolder.DropShadow, Animation.Normal, {ImageTransparency = 1}):Play()2419 end2420 end2421 2422end2423 2424local MainSize2425local MinSize 2426if Camera.ViewportSize.X > 774 and Camera.ViewportSize.Y > 503 then2427 MainSize = UDim2.fromOffset(675, 424)2428 MinSize = UDim2.fromOffset(500, 42)2429else2430 MainSize = UDim2.fromOffset(Camera.ViewportSize.X - 100, Camera.ViewportSize.Y - 100)2431 MinSize = UDim2.fromOffset(Camera.ViewportSize.X - 275, 42)2432end2433 2434local function Maximise(Window)2435 Window.Controls.ToggleSize.ImageLabel.Image = "rbxassetid://10137941941"2436 tween(Window, {Size = MainSize})2437 Window.Elements.Visible = true2438 Window.Navigation.Visible = true2439end2440 2441local function Minimize(Window)2442 Window.Controls.ToggleSize.ImageLabel.Image = "rbxassetid://11036884234"2443 Window.Elements.Visible = false2444 Window.Navigation.Visible = false2445 tween(Window, {Size = MinSize})2446end2447 2448 2449function Luna:CreateWindow(WindowSettings)2450 2451 WindowSettings = Kwargify({2452 Name = "Luna UI Example Window",2453 Subtitle = "",2454 LogoID = "6031097225",2455 LoadingEnabled = true,2456 LoadingTitle = "Luna Interface Suite",2457 LoadingSubtitle = "by Nebula Softworks",2458 2459 ConfigSettings = {},2460 2461 KeySystem = false,2462 KeySettings = {}2463 }, WindowSettings or {})2464 2465 WindowSettings.ConfigSettings = Kwargify({2466 RootFolder = nil,2467 ConfigFolder = "Big Hub"2468 }, WindowSettings.ConfigSettings or {})2469 2470 WindowSettings.KeySettings = Kwargify({2471 Title = WindowSettings.Name,2472 Subtitle = "Key System",2473 Note = "No Instructions",2474 SaveInRoot = false, -- Enabling will save the key in your RootFolder (YOU MUST HAVE ONE BEFORE ENABLING THIS OPTION)2475 SaveKey = true, -- The user's key will be saved, but if you change the key, they will be unable to use your script2476 Key = {""}, -- List of keys that will be accepted by the system, please use a system like Pelican or Luarmor that provide key strings based on your HWID since putting a simple string is very easy to bypass2477 SecondAction = {} 2478 }, WindowSettings.KeySettings or {})2479 2480 WindowSettings.KeySettings.SecondAction = Kwargify({2481 Enabled = false,2482 Type = "Discord", -- Link/Discord2483 Parameter = "" -- for discord, add the invite link like home tab. for link, type the link of ur key sys2484 }, WindowSettings.KeySettings.SecondAction)2485 2486 local Passthrough = false2487 2488 local Window = { Bind = Enum.KeyCode.K, CurrentTab = nil, State = true, Size = false, Settings = nil }2489 2490 Main.Title.Title.Text = WindowSettings.Name2491 Main.Title.subtitle.Text = WindowSettings.Subtitle2492 Main.Logo.Image = "rbxassetid://" .. WindowSettings.LogoID2493 Main.Visible = true2494 Main.BackgroundTransparency = 12495 Main.Size = MainSize2496 Main.Size = UDim2.fromOffset(Main.Size.X.Offset - 70, Main.Size.Y.Offset - 55)2497 Main.Parent.ShadowHolder.Size = Main.Size2498 LoadingFrame.Frame.Frame.Title.TextTransparency = 12499 LoadingFrame.Frame.Frame.Subtitle.TextTransparency = 12500 LoadingFrame.Version.TextTransparency = 12501 LoadingFrame.Frame.ImageLabel.ImageTransparency = 12502 2503 tween(Elements.Parent, {BackgroundTransparency = 1})2504 Elements.Parent.Visible = false2505 2506 LoadingFrame.Frame.Frame.Title.Text = WindowSettings.LoadingTitle2507 LoadingFrame.Frame.Frame.Subtitle.Text = WindowSettings.LoadingSubtitle2508 LoadingFrame.Version.Text = LoadingFrame.Frame.Frame.Title.Text == "Luna Interface Suite" and Release or "Luna UI"2509 2510 Navigation.Player.icon.ImageLabel.Image = Players:GetUserThumbnailAsync(Players.LocalPlayer.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size48x48)2511 Navigation.Player.Namez.Text = Players.LocalPlayer.DisplayName2512 Navigation.Player.TextLabel.Text = Players.LocalPlayer.Name2513 2514 for i,v in pairs(Main.Controls:GetChildren()) do2515 v.Visible = false2516 end2517 2518 Main:GetPropertyChangedSignal("Position"):Connect(function()2519 Main.Parent.ShadowHolder.Position = Main.Position2520 end)2521 Main:GetPropertyChangedSignal("Size"):Connect(function()2522 Main.Parent.ShadowHolder.Size = Main.Size2523 end)2524 2525 LoadingFrame.Visible = true2526 2527 -- pcall(function()2528 -- if not isfolder(ConfigurationFolder) then2529 -- makefolder(ConfigurationFolder)2530 -- end2531 -- if WindowSettings.ConfigSettings.RootFolder then2532 -- if not isfolder(ConfigurationFolder .. WindowSettings.ConfigSettings.RootFolder) then2533 -- makefolder(ConfigurationFolder .. WindowSettings.ConfigSettings.RootFolder)2534 -- if not isfolder(ConfigurationFolder .. WindowSettings.ConfigSettings.RootFolder .. WindowSettings.ConfigSettings.ConfigFolder) then2535 -- makefolder(ConfigurationFolder .. WindowSettings.ConfigSettings.RootFolder .. WindowSettings.ConfigSettings.ConfigFolder)2536 -- end2537 -- end2538 -- else2539 -- if not isfolder(ConfigurationFolder .. WindowSettings.ConfigSettings.ConfigFolder) then2540 -- makefolder(ConfigurationFolder .. WindowSettings.ConfigSettings.ConfigFolder)2541 -- end2542 -- end2543 2544 -- LoadAutoLoad(WindowSettings.ConfigSettings.ConfigFolder, WindowSettings.ConfigSettings.RootFolder)2545 -- end)2546 2547 LunaUI.Enabled = true2548 2549 BlurModule(Main)2550 2551 if WindowSettings.KeySystem then2552 local KeySettings = WindowSettings.KeySettings2553 2554 Draggable(Dragger, Main)2555 Draggable(LunaUI.MobileSupport, LunaUI.MobileSupport)2556 if dragBar then Draggable(dragInteract, Main, true, 255) end2557 2558 if not WindowSettings.KeySettings then2559 Passthrough = true2560 return2561 end2562 2563 WindowSettings.KeySettings.FileName = "key"2564 2565 if typeof(WindowSettings.KeySettings.Key) == "string" then WindowSettings.KeySettings.Key = {WindowSettings.KeySettings.Key} end2566 2567 local direc = WindowSettings.KeySettings.SaveInRoot and "Luna/Configurations/" .. WindowSettings.ConfigSettings.RootFolder .. "/" .. WindowSettings.ConfigSettings.ConfigFolder .. "/Key System/" or "Luna/Configurations/" .. WindowSettings.ConfigSettings.ConfigFolder .. "/Key System/"2568 2569 if isfile and isfile(direc .. WindowSettings.KeySettings.FileName .. ".luna") then2570 for i, Key in ipairs(WindowSettings.KeySettings.Key) do2571 if string.find(readfile(direc .. WindowSettings.KeySettings.FileName .. ".luna"), Key) then2572 Passthrough = true2573 break2574 end2575 end2576 end2577 2578 if not Passthrough then2579 2580 local Btn = KeySystem.Action.Copy2581 local typesys = KeySettings.SecondAction.Type2582 2583 if typesys == "Discord" then2584 Btn = KeySystem.Action.Discord2585 end2586 2587 local AttemptsRemaining = math.random(2, 5)2588 2589 KeySystem.Visible = true2590 KeySystem.Title.Text = WindowSettings.KeySettings.Title2591 KeySystem.Subtitle.Text = WindowSettings.KeySettings.Subtitle2592 KeySystem.textshit.Text = WindowSettings.KeySettings.Note2593 2594 if KeySettings.SecondAction.Enabled == true then2595 Btn.Visible = true2596 end2597 2598 Btn.Interact.MouseButton1Click:Connect(function()2599 if typesys == "Discord" then2600 setclipboard(tostring("https://discord.gg/"..KeySettings.SecondAction.Parameter)) -- Hunter if you see this I added copy also was too lazy to send u msg2601 if request then2602 request({2603 Url = 'http://127.0.0.1:6463/rpc?v=1',2604 Method = 'POST',2605 Headers = {2606 ['Content-Type'] = 'application/json',2607 Origin = 'https://discord.com'2608 },2609 Body = HttpService:JSONEncode({2610 cmd = 'INVITE_BROWSER',2611 nonce = HttpService:GenerateGUID(false),2612 args = {code = KeySettings.SecondAction.Parameter}2613 })2614 })2615 end2616 else2617 setclipboard(tostring(KeySettings.SecondAction.Parameter))2618 end2619 end)2620 2621 KeySystem.Action.Submit.Interact.MouseButton1Click:Connect(function()2622 if #KeySystem.Input.InputBox.Text == 0 then return end2623 local KeyFound = false2624 local FoundKey = ''2625 for _, Key in ipairs(WindowSettings.KeySettings.Key) do2626 if KeySystem.Input.InputBox.Text == Key then2627 KeyFound = true2628 FoundKey = Key2629 break2630 end2631 end2632 if KeyFound then 2633 for _, instance in pairs(KeySystem:GetDescendants()) do2634 if instance.ClassName ~= "UICorner" and instance.ClassName ~= "UIPadding" then2635 if instance.ClassName ~= "UIStroke" and instance.ClassName ~= "UIListLayout" then2636 tween(instance, {BackgroundTransparency = 1}, nil,Animation.Dialog)2637 end2638 if instance.ClassName == "ImageButton" then2639 tween(instance, {ImageTransparency = 1}, nil,TweenInfo.new(0.5, Enum.EasingStyle.Exponential))2640 end2641 if instance.ClassName == "TextLabel" then2642 tween(instance, {TextTransparency = 1}, nil,TweenInfo.new(0.4, Enum.EasingStyle.Exponential))2643 end2644 if instance.ClassName == "UIStroke" then2645 tween(instance, {Transparency = 1}, nil,TweenInfo.new(0.5, Enum.EasingStyle.Exponential))2646 end2647 end2648 end2649 tween(KeySystem, {BackgroundTransparency = 1}, nil,Animation.Dialog)2650 task.wait(0.51)2651 Passthrough = true2652 KeySystem.Visible = false2653 if WindowSettings.KeySettings.SaveKey then2654 if writefile then2655 writefile(direc .. WindowSettings.KeySettings.FileName .. ".luna", FoundKey)2656 end2657 Luna:Notification({Title = "Key System", Content = "The key for this script has been saved successfully.", Icon = "lock_open"})2658 end2659 else2660 if AttemptsRemaining == 0 then2661 2662 game.Players.LocalPlayer:Kick("No Attempts Remaining")2663 game:Shutdown()2664 end2665 KeySystem.Input.InputBox.Text = "Incorrect Key"2666 AttemptsRemaining = AttemptsRemaining - 12667 task.wait(0.4)2668 KeySystem.Input.InputBox.Text = ""2669 end2670 end)2671 2672 KeySystem.Close.MouseButton1Click:Connect(function()2673 2674 Luna:Destroy()2675 end)2676 end2677 end2678 2679 if WindowSettings.KeySystem then2680 repeat task.wait() until Passthrough2681 end2682 2683 if WindowSettings.LoadingEnabled then2684 task.wait(0.3)2685 TweenService:Create(LoadingFrame.Frame.Frame.Title, Animation.Reveal, {TextTransparency = 0}):Play()2686 TweenService:Create(LoadingFrame.Frame.ImageLabel, Animation.Normal, {ImageTransparency = 0}):Play()2687 task.wait(0.05)2688 TweenService:Create(LoadingFrame.Frame.Frame.Subtitle, Animation.Reveal, {TextTransparency = 0}):Play()2689 TweenService:Create(LoadingFrame.Version, Animation.Reveal, {TextTransparency = 0}):Play()2690 task.wait(0.29)2691 TweenService:Create(LoadingFrame.Frame.ImageLabel, TweenInfo.new(1.7, Enum.EasingStyle.Back, Enum.EasingDirection.Out, 2, false, 0.2), {Rotation = 450}):Play()2692 2693 task.wait(3.32)2694 2695 TweenService:Create(LoadingFrame.Frame.Frame.Title, Animation.Reveal, {TextTransparency = 1}):Play()2696 TweenService:Create(LoadingFrame.Frame.ImageLabel, Animation.Normal, {ImageTransparency = 1}):Play()2697 task.wait(0.05)2698 TweenService:Create(LoadingFrame.Frame.Frame.Subtitle, Animation.Reveal, {TextTransparency = 1}):Play()2699 TweenService:Create(LoadingFrame.Version, Animation.Reveal, {TextTransparency = 1}):Play()2700 wait(0.3)2701 TweenService:Create(LoadingFrame, Animation.Window, {BackgroundTransparency = 1}):Play()2702 end2703 2704 TweenService:Create(Main, Animation.Window, {BackgroundTransparency = 0.2, Size = MainSize}):Play()2705 TweenService:Create(Main.Parent.ShadowHolder, Animation.Window, {Size = MainSize}):Play()2706 TweenService:Create(Main.Title.Title, Animation.Normal, {TextTransparency = 0}):Play()2707 TweenService:Create(Main.Title.subtitle, Animation.Normal, {TextTransparency = 0}):Play()2708 TweenService:Create(Main.Logo, Animation.Normal, {ImageTransparency = 0}):Play()2709 TweenService:Create(Navigation.Player.icon.ImageLabel, Animation.Normal, {ImageTransparency = 0}):Play()2710 TweenService:Create(Navigation.Player.icon.UIStroke, Animation.Normal, {Transparency = 0}):Play()2711 TweenService:Create(Main.Line, Animation.Normal, {BackgroundTransparency = 0}):Play()2712 wait(0.4)2713 LoadingFrame.Visible = false2714 2715 Draggable(Dragger, Main)2716 Draggable(LunaUI.MobileSupport, LunaUI.MobileSupport)2717 if dragBar then Draggable(dragInteract, Main, true, 255) end2718 2719 Elements.Template.LayoutOrder = 10000000002720 Elements.Template.Visible = false2721 Navigation.Tabs["InActive Template"].LayoutOrder = 10000000002722 Navigation.Tabs["InActive Template"].Visible = false2723 2724 local FirstTab = true2725 2726 function Window:CreateHomeTab(HomeTabSettings)2727 2728 HomeTabSettings = Kwargify({2729 Icon = 1,2730 SupportedExecutors = {"Vega X", "Delta", "Nihon", "Xeno"}, -- THESE DEFAULTS ARE PLACEHOLDERS!! I DO NOT ADVERTISE THESE, THEY ARE JUS THE FIRST THAT CAME TO MIND. I HAVE NO IDEA WHETHER THEYA RE RATS (they prob are) AND IM NOT RESPONSIBLE IF U GET VIRUSES FROM INSTALLING AFTER SEEING THIS LIST2731 DiscordInvite = "noinvitelink" -- The disvord invite link. Do not include the link so for example if my invite was discord.gg/nebula I would put nebula2732 }, HomeTabSettings or {})2733 2734 local HomeTab = {}2735 2736 local HomeTabButton = Navigation.Tabs.Home2737 HomeTabButton.Visible = true2738 if HomeTabSettings.Icon == 2 then2739 HomeTabButton.ImageLabel.Image = GetIcon("dashboard", "Material")2740 end2741 2742 local HomeTabPage = Elements.Home2743 HomeTabPage.Visible = true2744 2745 function HomeTab:Activate()2746 tween(HomeTabButton.ImageLabel, {ImageColor3 = Color3.fromRGB(255,255,255)})2747 tween(HomeTabButton, {BackgroundTransparency = 0})2748 tween(HomeTabButton.UIStroke, {Transparency = 0.41})2749 2750 Elements.UIPageLayout:JumpTo(HomeTabPage)2751 2752 task.wait(0.05)2753 2754 for _, OtherTabButton in ipairs(Navigation.Tabs:GetChildren()) do2755 if OtherTabButton.Name ~= "InActive Template" and OtherTabButton.ClassName == "Frame" and OtherTabButton ~= HomeTabButton then2756 tween(OtherTabButton.ImageLabel, {ImageColor3 = DarkTheme.Icon})2757 tween(OtherTabButton, {BackgroundTransparency = 1})2758 tween(OtherTabButton.UIStroke, {Transparency = 1})2759 end2760 2761 end2762 2763 Window.CurrentTab = "Home"2764 end2765 2766 HomeTab:Activate()2767 FirstTab = false2768 HomeTabButton.Interact.MouseButton1Click:Connect(function()2769 HomeTab:Activate()2770 end)2771 2772 2773 HomeTabPage.icon.ImageLabel.Image = Players:GetUserThumbnailAsync(Players.LocalPlayer.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)2774 HomeTabPage.player.Text.Text = "Hello, " .. Players.LocalPlayer.DisplayName2775 HomeTabPage.player.user.Text = Players.LocalPlayer.Name .. " - ".. WindowSettings.Name2776 2777 HomeTabPage.detailsholder.dashboard.Client.Title.Text = (isStudio and "Debugging (Studio)" or identifyexecutor()) or "Your Executor Does Not Support identifyexecutor."2778 for i,v in pairs(HomeTabSettings.SupportedExecutors) do2779 if isStudio then HomeTabPage.detailsholder.dashboard.Client.Subtitle.Text = "Luna Interface Suite - Debugging Mode" break end2780 if v == identifyexecutor() then2781 HomeTabPage.detailsholder.dashboard.Client.Subtitle.Text = "Your Executor Supports This Script."2782 break2783 else2784 HomeTabPage.detailsholder.dashboard.Client.Subtitle.Text = "Your Executor Isn't Officialy Supported By This Script."2785 break2786 end2787 end2788 2789 -- Stolen From Sirius Stuff Begins Here2790 2791 HomeTabPage.detailsholder.dashboard.Discord.Interact.MouseButton1Click:Connect(function()2792 setclipboard(tostring("https://discord.gg/"..HomeTabSettings.DiscordInvite)) -- Hunter if you see this I added copy also was too lazy to send u msg2793 if request then2794 request({2795 Url = 'http://127.0.0.1:6463/rpc?v=1',2796 Method = 'POST',2797 Headers = {2798 ['Content-Type'] = 'application/json',2799 Origin = 'https://discord.com'2800 },2801 Body = HttpService:JSONEncode({2802 cmd = 'INVITE_BROWSER',2803 nonce = HttpService:GenerateGUID(false),2804 args = {code = HomeTabSettings.DiscordInvite}2805 })2806 })2807 end2808 end)2809 2810 local friendsCooldown = 02811 local function getPing() return math.clamp(game:GetService("Stats").Network.ServerStatsItem["Data Ping"]:GetValue(), 10, 700) end2812 2813 local function checkFriends()2814 if friendsCooldown == 0 then2815 2816 friendsCooldown = 252817 2818 local playersFriends = {}2819 local friendsInTotal = 02820 local onlineFriends = 0 2821 local friendsInGame = 0 2822 2823 local list = Players:GetFriendsAsync(Player.UserId)2824 while true do -- loop through all the pages2825 for _, data in list:GetCurrentPage() do2826 friendsInTotal +=12827 table.insert(playersFriends, Data)2828 end2829 2830 if list.IsFinished then2831 -- stop the loop since this is the last page2832 break2833 else 2834 -- go to the next page2835 list:AdvanceToNextPageAsync()2836 end2837 end2838 for i, v in pairs(Player:GetFriendsOnline()) do2839 onlineFriends += 12840 end2841 2842 for i,v in pairs(playersFriends) do2843 if Players:FindFirstChild(v.Username) then2844 friendsInGame = friendsInGame + 12845 end2846 end2847 2848 HomeTabPage.detailsholder.dashboard.Friends.All.Value.Text = tostring(friendsInTotal).." friends"2849 HomeTabPage.detailsholder.dashboard.Friends.Offline.Value.Text = tostring(friendsInTotal - onlineFriends).." friends"2850 HomeTabPage.detailsholder.dashboard.Friends.Online.Value.Text = tostring(onlineFriends).." friends"2851 HomeTabPage.detailsholder.dashboard.Friends.InGame.Value.Text = tostring(friendsInGame).." friends"2852 2853 else2854 friendsCooldown -= 12855 end2856 end2857 2858 local function format(Int)2859 return string.format("%02i", Int)2860 end2861 2862 local function convertToHMS(Seconds)2863 local Minutes = (Seconds - Seconds%60)/602864 Seconds = Seconds - Minutes*602865 local Hours = (Minutes - Minutes%60)/602866 Minutes = Minutes - Hours*602867 return format(Hours)..":"..format(Minutes)..":"..format(Seconds)2868 end2869 2870 coroutine.wrap(function()2871 while task.wait() do2872 2873 2874 -- Players2875 HomeTabPage.detailsholder.dashboard.Server.Players.Value.Text = #Players:GetPlayers().." playing"2876 HomeTabPage.detailsholder.dashboard.Server.MaxPlayers.Value.Text = Players.MaxPlayers.." players can join this server"2877 2878 -- Ping2879 HomeTabPage.detailsholder.dashboard.Server.Latency.Value.Text = isStudio and tostring(math.round((Players.LocalPlayer:GetNetworkPing() * 2 ) / 0.01)) .."ms" or tostring(math.floor(getPing()) .."ms")2880 2881 -- Time2882 HomeTabPage.detailsholder.dashboard.Server.Time.Value.Text = convertToHMS(time())2883 2884 -- Region2885 HomeTabPage.detailsholder.dashboard.Server.Region.Value.Text = Localization:GetCountryRegionForPlayerAsync(Players.LocalPlayer)2886 2887 checkFriends()2888 end2889 end)()2890 2891 -- Stolen From Sirius Stuff ends here2892 2893 end2894 2895 function Window:CreateTab(TabSettings)2896 2897 local Tab = {}2898 2899 TabSettings = Kwargify({2900 Name = "Tab",2901 ShowTitle = true,2902 Icon = "view_in_ar",2903 ImageSource = "Material" 2904 }, TabSettings or {})2905 2906 local TabButton = Navigation.Tabs["InActive Template"]:Clone()2907 2908 TabButton.Name = TabSettings.Name2909 TabButton.TextLabel.Text = TabSettings.Name2910 TabButton.Parent = Navigation.Tabs2911 TabButton.ImageLabel.Image = GetIcon(TabSettings.Icon, TabSettings.ImageSource)2912 2913 TabButton.Visible = true2914 2915 local TabPage = Elements.Template:Clone()2916 TabPage.Name = TabSettings.Name2917 TabPage.Title.Visible = TabSettings.ShowTitle2918 TabPage.Title.Text = TabSettings.Name2919 TabPage.Visible = true2920 2921 Tab.Page = TabPage2922 2923 if TabSettings.ShowTitle == false then2924 TabPage.UIPadding.PaddingTop = UDim.new(0,10)2925 end2926 2927 TabPage.LayoutOrder = #Elements:GetChildren() - 32928 2929 for _, TemplateElement in ipairs(TabPage:GetChildren()) do2930 if TemplateElement.ClassName == "Frame" or TemplateElement.ClassName == "TextLabel" and TemplateElement.Name ~= "Title" then2931 TemplateElement:Destroy()2932 end2933 end2934 TabPage.Parent = Elements2935 2936 function Tab:Activate()2937 tween(TabButton.ImageLabel, {ImageColor3 = DarkTheme.Text})2938 tween(TabButton, {BackgroundTransparency = 0})2939 tween(TabButton.UIStroke, {Transparency = 0.41})2940 2941 Elements.UIPageLayout:JumpTo(TabPage)2942 2943 task.wait(0.05)2944 2945 for _, OtherTabButton in ipairs(Navigation.Tabs:GetChildren()) do2946 if OtherTabButton.Name ~= "InActive Template" and OtherTabButton.ClassName == "Frame" and OtherTabButton ~= TabButton then2947 tween(OtherTabButton.ImageLabel, {ImageColor3 = DarkTheme.Icon})2948 tween(OtherTabButton, {BackgroundTransparency = 1})2949 tween(OtherTabButton.UIStroke, {Transparency = 1})2950 end2951 2952 end2953 2954 Window.CurrentTab = TabSettings.Name2955 end2956 2957 if FirstTab then2958 Tab:Activate()2959 end2960 2961 task.wait(0.01)2962 2963 TabButton.Interact.MouseButton1Click:Connect(function()2964 Tab:Activate()2965 end)2966 2967 FirstTab = false2968 2969 -- Section2970 function Tab:CreateSection(name : string)2971 2972 local Section = {}2973 2974 if name == nil then name = "Section" end2975 2976 Section.Name = name2977 2978 local Sectiont = Elements.Template.Section:Clone()2979 Sectiont.Text = name2980 Sectiont.Visible = true2981 Sectiont.Parent = TabPage2982 local TabPage = Sectiont.Frame2983 2984 Sectiont.TextTransparency = 12985 tween(Sectiont, {TextTransparency = 0})2986 2987 function Section:Set(NewSection)2988 Sectiont.Text = NewSection2989 end2990 2991 function Section:Destroy()2992 Sectiont:Destroy()2993 end2994 2995 -- Divider2996 function Section:CreateDivider()2997 TabPage.Position = UDim2.new(0,0,0,28)2998 local b = Elements.Template.Divider:Clone()2999 b.Parent = TabPage3000 b.Size = UDim2.new(1,0,0,18)3001 b.Line.BackgroundTransparency = 13002 tween(b.Line, {BackgroundTransparency = 0})3003 end3004 3005 -- Button3006 function Section:CreateButton(ButtonSettings)3007 TabPage.Position = UDim2.new(0,0,0,28)3008 3009 ButtonSettings = Kwargify({3010 Name = "Button",3011 Description = nil,3012 Callback = function()3013 3014 end,3015 }, ButtonSettings or {})3016 3017 local ButtonV = {3018 Hover = false,3019 Settings = ButtonSettings3020 }3021 3022 3023 local Button3024 if ButtonSettings.Description == nil and ButtonSettings.Description ~= "" then3025 Button = Elements.Template.Button:Clone()3026 else3027 Button = Elements.Template.ButtonDesc:Clone()3028 end3029 Button.Name = ButtonSettings.Name3030 Button.Title.Text = ButtonSettings.Name3031 if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" then3032 Button.Desc.Text = ButtonSettings.Description3033 end3034 Button.Visible = true3035 Button.Parent = TabPage3036 3037 Button.UIStroke.Transparency = 13038 Button.Title.TextTransparency = 13039 if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" then3040 Button.Desc.TextTransparency = 13041 end3042 3043 TweenService:Create(Button, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3044 TweenService:Create(Button.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3045 TweenService:Create(Button.Title, Animation.Reveal, {TextTransparency = 0}):Play() 3046 if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" then3047 TweenService:Create(Button.Desc, Animation.Reveal, {TextTransparency = 0}):Play() 3048 end3049 3050 Button.Interact["MouseButton1Click"]:Connect(function()3051 local Success,Response = pcall(ButtonSettings.Callback)3052 3053 if not Success then3054 TweenService:Create(Button, Animation.Reveal, {BackgroundTransparency = 0}):Play()3055 TweenService:Create(Button, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()3056 TweenService:Create(Button.UIStroke, Animation.Reveal, {Transparency = 1}):Play()3057 Button.Title.Text = "Callback Error"3058 print("Luna Interface Suite | "..ButtonSettings.Name.." Callback Error " ..tostring(Response))3059 wait(0.5)3060 Button.Title.Text = ButtonSettings.Name3061 TweenService:Create(Button, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3062 TweenService:Create(Button, Animation.Reveal, {BackgroundColor3 = DarkTheme.Button}):Play()3063 TweenService:Create(Button.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3064 else3065 tween(Button.UIStroke, {Color = DarkTheme.Primary})3066 wait(0.2)3067 if ButtonV.Hover then3068 tween(Button.UIStroke, {Color = DarkTheme.Primary})3069 else3070 tween(Button.UIStroke, {Color = DarkTheme.Icon})3071 end3072 end3073 end)3074 3075 Button["MouseEnter"]:Connect(function()3076 ButtonV.Hover = true3077 tween(Button.UIStroke, {Color = DarkTheme.Primary})3078 end)3079 3080 Button["MouseLeave"]:Connect(function()3081 ButtonV.Hover = false3082 tween(Button.UIStroke, {Color = DarkTheme.Icon})3083 end)3084 3085 function ButtonV:Set(ButtonSettings2)3086 ButtonSettings2 = Kwargify({3087 Name = ButtonSettings.Name,3088 Description = ButtonSettings.Description,3089 Callback = ButtonSettings.Callback3090 }, ButtonSettings2 or {})3091 3092 ButtonSettings = ButtonSettings23093 ButtonV.Settings = ButtonSettings23094 3095 Button.Name = ButtonSettings.Name3096 Button.Title.Text = ButtonSettings.Name3097 if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" and Button.Desc ~= nil then3098 Button.Desc.Text = ButtonSettings.Description3099 end3100 end3101 3102 function ButtonV:Destroy()3103 Button.Visible = false3104 Button:Destroy()3105 end3106 3107 return ButtonV3108 end3109 3110 -- Label3111 function Section:CreateLabel(LabelSettings)3112 TabPage.Position = UDim2.new(0,0,0,28)3113 3114 local LabelV = {}3115 3116 LabelSettings = Kwargify({3117 Text = "Label",3118 Style = 13119 }, LabelSettings or {}) 3120 3121 LabelV.Settings = LabelSettings3122 3123 local Label3124 if LabelSettings.Style == 1 then3125 Label = Elements.Template.Label:Clone()3126 elseif LabelSettings.Style == 2 then3127 Label = Elements.Template.Info:Clone()3128 elseif LabelSettings.Style == 3 then3129 Label = Elements.Template.Warn:Clone()3130 end3131 3132 Label.Text.Text = LabelSettings.Text3133 Label.Visible = true3134 Label.Parent = TabPage3135 3136 Label.BackgroundTransparency = 13137 Label.UIStroke.Transparency = 13138 Label.Text.TextTransparency = 13139 3140 if LabelSettings.Style ~= 1 then3141 TweenService:Create(Label, Animation.Reveal, {BackgroundTransparency = 0.8}):Play()3142 else3143 TweenService:Create(Label, Animation.Reveal, {BackgroundTransparency = 1}):Play()3144 end3145 TweenService:Create(Label.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3146 TweenService:Create(Label.Text, Animation.Reveal, {TextTransparency = 0}):Play() 3147 3148 function LabelV:Set(NewLabel)3149 LabelSettings.Text = NewLabel3150 LabelV.Settings = LabelSettings3151 Label.Text.Text = NewLabel3152 end3153 3154 function LabelV:Destroy()3155 Label.Visible = false3156 Label:Destroy()3157 end3158 3159 return LabelV3160 end3161 3162 -- Paragraph3163 function Section:CreateParagraph(ParagraphSettings)3164 TabPage.Position = UDim2.new(0,0,0,28)3165 3166 ParagraphSettings = Kwargify({3167 Title = "Paragraph",3168 Text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus venenatis lacus sed tempus eleifend. Mauris interdum bibendum felis, in tempor augue egestas vel. Praesent tristique consectetur ex, eu pretium sem placerat non. Vestibulum a nisi sit amet augue facilisis consectetur sit amet et nunc. Integer fermentum ornare cursus. Pellentesque sed ultricies metus, ut egestas metus. Vivamus auctor erat ac sapien vulputate, nec ultricies sem tempor. Quisque leo lorem, faucibus nec pulvinar nec, congue eu velit. Duis sodales massa efficitur imperdiet ultrices. Donec eros ipsum, ornare pharetra purus aliquam, tincidunt elementum nisi. Ut mi tortor, feugiat eget nunc vitae, facilisis interdum dui. Vivamus ullamcorper nunc dui, a dapibus nisi pretium ac. Integer eleifend placerat nibh, maximus malesuada tellus. Cras in justo in ligula scelerisque suscipit vel vitae quam."3169 }, ParagraphSettings or {})3170 3171 local ParagraphV = {3172 Settings = ParagraphSettings3173 }3174 3175 local Paragraph = Elements.Template.Paragraph:Clone()3176 Paragraph.Title.Text = ParagraphSettings.Title3177 Paragraph.Text.Text = ParagraphSettings.Text3178 Paragraph.Visible = true3179 Paragraph.Parent = TabPage3180 3181 Paragraph.BackgroundTransparency = 13182 Paragraph.UIStroke.Transparency = 13183 Paragraph.Title.TextTransparency = 13184 Paragraph.Text.TextTransparency = 13185 3186 TweenService:Create(Paragraph, Animation.Reveal, {BackgroundTransparency = 1}):Play()3187 TweenService:Create(Paragraph.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3188 TweenService:Create(Paragraph.Title, Animation.Reveal, {TextTransparency = 0}):Play() 3189 TweenService:Create(Paragraph.Text, Animation.Reveal, {TextTransparency = 0}):Play() 3190 3191 function ParagraphV:Update()3192 Paragraph.Text.Size = UDim2.new(Paragraph.Text.Size.X.Scale, Paragraph.Text.Size.X.Offset, 0, math.huge)3193 Paragraph.Text.Size = UDim2.new(Paragraph.Text.Size.X.Scale, Paragraph.Text.Size.X.Offset, 0, Paragraph.Text.TextBounds.Y)3194 tween(Paragraph, {Size = UDim2.new(Paragraph.Size.X.Scale, Paragraph.Size.X.Offset, 0, Paragraph.Text.TextBounds.Y + 40)})3195 end3196 3197 function ParagraphV:Set(NewParagraphSettings)3198 3199 NewParagraphSettings = Kwargify({3200 Title = ParagraphSettings.Title,3201 Text = ParagraphSettings.Text3202 }, NewParagraphSettings or {})3203 3204 ParagraphV.Settings = NewParagraphSettings3205 3206 Paragraph.Title.Text = NewParagraphSettings.Title3207 Paragraph.Text.Text = NewParagraphSettings.Text3208 3209 ParagraphV:Update()3210 3211 end3212 3213 function ParagraphV:Destroy()3214 Paragraph.Visible = false3215 Paragraph:Destroy()3216 end3217 3218 ParagraphV:Update()3219 3220 return ParagraphV3221 end3222 3223 -- Slider3224 function Section:CreateSlider(SliderSettings, Flag)3225 TabPage.Position = UDim2.new(0,0,0,28)3226 local SliderV = { IgnoreConfig = false, Class = "Slider", Settings = SliderSettings }3227 3228 SliderSettings = Kwargify({3229 Name = "Slider",3230 Range = {0, 200},3231 Increment = 1,3232 CurrentValue = 100,3233 Callback = function(Value)3234 3235 end,3236 }, SliderSettings or {})3237 3238 local SLDragging = false3239 local Slider = Elements.Template.Slider:Clone()3240 Slider.Name = SliderSettings.Name .. " - Slider"3241 Slider.Title.Text = SliderSettings.Name3242 Slider.Main.color.Color = SolidSequence(DarkTheme.Slider)3243 Slider.Main.UIStroke.color.Color = SolidSequence(DarkTheme.Slider)3244 Slider.Visible = true3245 Slider.Parent = TabPage3246 3247 Slider.BackgroundTransparency = 13248 Slider.UIStroke.Transparency = 13249 Slider.Title.TextTransparency = 13250 3251 TweenService:Create(Slider, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3252 TweenService:Create(Slider.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3253 TweenService:Create(Slider.Title, Animation.Reveal, {TextTransparency = 0}):Play() 3254 3255 Slider.Main.Progress.Size = UDim2.new(0, Slider.Main.AbsoluteSize.X * ((SliderSettings.CurrentValue + SliderSettings.Range[1]) / (SliderSettings.Range[2] - SliderSettings.Range[1])) > 5 and Slider.Main.AbsoluteSize.X * (SliderSettings.CurrentValue / (SliderSettings.Range[2] - SliderSettings.Range[1])) or 5, 1, 0)3256 3257 Slider.Value.Text = tostring(SliderSettings.CurrentValue)3258 SliderV.CurrentValue = Slider.Value.Text3259 3260 SliderSettings.Callback(SliderSettings.CurrentValue)3261 3262 Slider["MouseEnter"]:Connect(function()3263 tween(Slider.UIStroke, {Color = DarkTheme.Primary})3264 end)3265 3266 Slider["MouseLeave"]:Connect(function()3267 tween(Slider.UIStroke, {Color = DarkTheme.Icon})3268 end)3269 3270 Slider.Interact.InputBegan:Connect(function(Input)3271 if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then 3272 SLDragging = true 3273 end 3274 end)3275 3276 Slider.Interact.InputEnded:Connect(function(Input) 3277 if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then 3278 SLDragging = false 3279 end 3280 end)3281 3282 Slider.Interact.MouseButton1Down:Connect(function()3283 local Current = Slider.Main.Progress.AbsolutePosition.X + Slider.Main.Progress.AbsoluteSize.X3284 local Start = Current3285 local Location3286 local Loop; Loop = RunService.Stepped:Connect(function()3287 if SLDragging then3288 Location = UserInputService:GetMouseLocation().X3289 Current = Current + 0.025 * (Location - Start)3290 3291 if Location < Slider.Main.AbsolutePosition.X then3292 Location = Slider.Main.AbsolutePosition.X3293 elseif Location > Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X then3294 Location = Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X3295 end3296 3297 if Current < Slider.Main.AbsolutePosition.X + 5 then3298 Current = Slider.Main.AbsolutePosition.X + 53299 elseif Current > Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X then3300 Current = Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X3301 end3302 3303 if Current <= Location and (Location - Start) < 0 then3304 Start = Location3305 elseif Current >= Location and (Location - Start) > 0 then3306 Start = Location3307 end3308 Slider.Main.Progress.Size = UDim2.new(0, Location - Slider.Main.AbsolutePosition.X, 1, 0)3309 local NewValue = SliderSettings.Range[1] + (Location - Slider.Main.AbsolutePosition.X) / Slider.Main.AbsoluteSize.X * (SliderSettings.Range[2] - SliderSettings.Range[1])3310 3311 NewValue = math.floor(NewValue / SliderSettings.Increment + 0.5) * (SliderSettings.Increment * 10000000) / 100000003312 3313 Slider.Value.Text = tostring(NewValue)3314 3315 if SliderSettings.CurrentValue ~= NewValue then3316 local Success, Response = pcall(function()3317 SliderSettings.Callback(NewValue)3318 end)3319 if not Success then3320 TweenService:Create(Slider, Animation.Reveal, {BackgroundTransparency = 0}):Play()3321 TweenService:Create(Slider, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()3322 TweenService:Create(Slider.UIStroke, Animation.Reveal, {Transparency = 1}):Play()3323 Slider.Title.Text = "Callback Error"3324 print("Luna Interface Suite | "..SliderSettings.Name.." Callback Error " ..tostring(Response))3325 wait(0.5)3326 Slider.Title.Text = SliderSettings.Name3327 TweenService:Create(Slider, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3328 TweenService:Create(Slider, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()3329 TweenService:Create(Slider.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3330 end3331 3332 SliderSettings.CurrentValue = NewValue3333 SliderV.CurrentValue = SliderSettings.CurrentValue3334 -- Luna.Flags[SliderSettings.Flag] = SliderSettings3335 end3336 else3337 TweenService:Create(Slider.Main.Progress, Animation.Slider, {Size = UDim2.new(0, Location - Slider.Main.AbsolutePosition.X > 5 and Location - Slider.Main.AbsolutePosition.X or 5, 1, 0)}):Play()3338 Loop:Disconnect()3339 end3340 end)3341 end)3342 3343 local function Set(NewVal, bleh)3344 3345 NewVal = NewVal or SliderSettings.CurrentValue3346 3347 TweenService:Create(Slider.Main.Progress, Animation.SliderSet, {Size = UDim2.new(0, Slider.Main.AbsoluteSize.X * ((NewVal + SliderSettings.Range[1]) / (SliderSettings.Range[2] - SliderSettings.Range[1])) > 5 and Slider.Main.AbsoluteSize.X * (NewVal / (SliderSettings.Range[2] - SliderSettings.Range[1])) or 5, 1, 0)}):Play()3348 if not bleh then Slider.Value.Text = tostring(NewVal) end3349 local Success, Response = pcall(function()3350 SliderSettings.Callback(NewVal)3351 end)3352 if not Success then3353 TweenService:Create(Slider, Animation.Reveal, {BackgroundTransparency = 0}):Play()3354 TweenService:Create(Slider, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()3355 TweenService:Create(Slider.UIStroke, Animation.Reveal, {Transparency = 1}):Play()3356 Slider.Title.Text = "Callback Error"3357 print("Luna Interface Suite | "..SliderSettings.Name.." Callback Error " ..tostring(Response))3358 wait(0.5)3359 Slider.Title.Text = SliderSettings.Name3360 TweenService:Create(Slider, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3361 TweenService:Create(Slider, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()3362 TweenService:Create(Slider.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3363 end3364 3365 SliderSettings.CurrentValue = NewVal3366 SliderV.CurrentValue = SliderSettings.CurrentValue3367 -- Luna.Flags[SliderSettings.Flag] = SliderSettings3368 3369 end3370 3371 function SliderV:UpdateValue(Value)3372 Set(tonumber(Value))3373 end 3374 3375 Slider.Value:GetPropertyChangedSignal("Text"):Connect(function()3376 local text = Slider.Value.Text3377 if not tonumber(text) and text ~= "." then3378 Slider.Value.Text = text:match("[0-9.]*") or ""3379 end3380 if SliderSettings.Range[2] < (tonumber(Slider.Value.Text) or 0) then Slider.Value.Text = SliderSettings.Range[2] end3381 Slider.Value.Size = UDim2.fromOffset(Slider.Value.TextBounds.X, 23)3382 Set(tonumber(Slider.Value.Text), true)3383 end)3384 3385 function SliderV:Set(NewSliderSettings)3386 NewSliderSettings = Kwargify({3387 Name = SliderSettings.Name,3388 Range = SliderSettings.Range,3389 Increment = SliderSettings.Increment,3390 CurrentValue = SliderSettings.CurrentValue,3391 Callback = SliderSettings.Callback3392 }, NewSliderSettings or {})3393 3394 SliderSettings = NewSliderSettings3395 SliderV.Settings = NewSliderSettings3396 3397 Slider.Name = SliderSettings.Name .. " - Slider"3398 Slider.Title.Text = SliderSettings.Name3399 3400 Set()3401 3402 -- Luna.Flags[SliderSettings.Flag] = SliderSettings3403 end3404 3405 function SliderV:Destroy()3406 Slider.Visible = false3407 Slider:Destroy()3408 end3409 3410 if Flag then3411 Luna.Options[Flag] = SliderV3412 end3413 3414 LunaUI.ThemeRemote:GetPropertyChangedSignal("Value"):Connect(function()3415 Slider.Main.color.Color = Luna.ThemeGradient3416 Slider.Main.UIStroke.color.Color = Luna.ThemeGradient3417 end)3418 3419 return SliderV3420 3421 end3422 3423 -- Toggle3424 function Section:CreateToggle(ToggleSettings, Flag) 3425 TabPage.Position = UDim2.new(0,0,0,28)3426 local ToggleV = { IgnoreConfig = false, Class = "Toggle" }3427 3428 ToggleSettings = Kwargify({3429 Name = "Toggle",3430 Description = nil,3431 CurrentValue = false,3432 Callback = function(Value)3433 end,3434 }, ToggleSettings or {})3435 3436 3437 local Toggle3438 3439 if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then3440 Toggle = Elements.Template.ToggleDesc:Clone()3441 else3442 Toggle = Elements.Template.Toggle:Clone()3443 end3444 3445 Toggle.Visible = true3446 Toggle.Parent = TabPage3447 Toggle.toggle.color.Color = SolidSequence(DarkTheme.Toggle)3448 Toggle.toggle.UIStroke.color.Color = SolidSequence(DarkTheme.Toggle)3449 3450 Toggle.Name = ToggleSettings.Name .. " - Toggle"3451 Toggle.Title.Text = ToggleSettings.Name3452 if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then3453 Toggle.Desc.Text = ToggleSettings.Description3454 end3455 3456 Toggle.UIStroke.Transparency = 13457 Toggle.Title.TextTransparency = 13458 if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then3459 Toggle.Desc.TextTransparency = 13460 end3461 3462 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3463 if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then3464 TweenService:Create(Toggle.Desc, Animation.Reveal, {TextTransparency = 0}):Play()3465 end3466 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3467 TweenService:Create(Toggle.Title, Animation.Reveal, {TextTransparency = 0}):Play() 3468 3469 local function Set(bool)3470 if bool then3471 Toggle.toggle.color.Enabled = true3472 tween(Toggle.toggle, {BackgroundTransparency = 0})3473 3474 Toggle.toggle.UIStroke.color.Enabled = true3475 tween(Toggle.toggle.UIStroke, {Color = DarkTheme.Outline})3476 3477 tween(Toggle.toggle.val, {BackgroundColor3 = Color3.fromRGB(255,255,255), Position = UDim2.new(1,-23,0.5,0), BackgroundTransparency = 0.45})3478 else3479 Toggle.toggle.color.Enabled = false3480 Toggle.toggle.UIStroke.color.Enabled = false3481 3482 Toggle.toggle.UIStroke.Color = DarkTheme.SliderIcon3483 3484 tween(Toggle.toggle, {BackgroundTransparency = 1})3485 3486 tween(Toggle.toggle.val, {BackgroundColor3 = DarkTheme.SliderIcon, Position = UDim2.new(0,5,0.5,0), BackgroundTransparency = 0})3487 end3488 3489 ToggleV.CurrentValue = bool3490 end3491 3492 Toggle.Interact.MouseButton1Click:Connect(function()3493 ToggleSettings.CurrentValue = not ToggleSettings.CurrentValue3494 Set(ToggleSettings.CurrentValue)3495 3496 local Success, Response = pcall(function()3497 ToggleSettings.Callback(ToggleSettings.CurrentValue)3498 end)3499 if not Success then3500 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0}):Play()3501 TweenService:Create(Toggle, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()3502 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 1}):Play()3503 Toggle.Title.Text = "Callback Error"3504 print("Luna Interface Suite | "..ToggleSettings.Name.." Callback Error " ..tostring(Response))3505 wait(0.5)3506 Toggle.Title.Text = ToggleSettings.Name3507 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3508 TweenService:Create(Toggle, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()3509 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3510 end3511 end)3512 3513 Toggle["MouseEnter"]:Connect(function()3514 tween(Toggle.UIStroke, {Color = DarkTheme.Primary})3515 end)3516 3517 Toggle["MouseLeave"]:Connect(function()3518 tween(Toggle.UIStroke, {Color = DarkTheme.Icon})3519 end)3520 3521 if ToggleSettings.CurrentValue then3522 Set(ToggleSettings.CurrentValue)3523 local Success, Response = pcall(function()3524 ToggleSettings.Callback(ToggleSettings.CurrentValue)3525 end)3526 if not Success then3527 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0}):Play()3528 TweenService:Create(Toggle, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()3529 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 1}):Play()3530 Toggle.Title.Text = "Callback Error"3531 print("Luna Interface Suite | "..ToggleSettings.Name.." Callback Error " ..tostring(Response))3532 wait(0.5)3533 Toggle.Title.Text = ToggleSettings.Name3534 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3535 TweenService:Create(Toggle, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()3536 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3537 end3538 end3539 3540 function ToggleV:UpdateState(State)3541 ToggleSettings.CurrentValue = State3542 Set(ToggleSettings.CurrentValue)3543 end3544 3545 function ToggleV:Set(NewToggleSettings)3546 3547 NewToggleSettings = Kwargify({3548 Name = ToggleSettings.Name,3549 Description = ToggleSettings.Description,3550 CurrentValue = ToggleSettings.CurrentValue,3551 Callback = ToggleSettings.Callback3552 }, NewToggleSettings or {})3553 3554 ToggleV.Settings = NewToggleSettings3555 ToggleSettings = NewToggleSettings3556 3557 Toggle.Name = ToggleSettings.Name .. " - Toggle"3558 Toggle.Title.Text = ToggleSettings.Name3559 if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" and Toggle.Desc ~= nil then3560 Toggle.Desc.Text = ToggleSettings.Description3561 end3562 3563 Set(ToggleSettings.CurrentValue)3564 3565 ToggleV.CurrentValue = ToggleSettings.CurrentValue3566 3567 local Success, Response = pcall(function()3568 ToggleSettings.Callback(ToggleSettings.CurrentValue)3569 end)3570 if not Success then3571 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0}):Play()3572 TweenService:Create(Toggle, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()3573 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 0}):Play()3574 Toggle.Title.Text = "Callback Error"3575 print("Luna Interface Suite | "..ToggleSettings.Name.." Callback Error " ..tostring(Response))3576 wait(0.5)3577 Toggle.Title.Text = ToggleSettings.Name3578 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3579 TweenService:Create(Toggle, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()3580 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3581 end3582 end3583 3584 function ToggleV:Destroy()3585 Toggle.Visible = false3586 Toggle:Destroy()3587 end3588 3589 LunaUI.ThemeRemote:GetPropertyChangedSignal("Value"):Connect(function()3590 Toggle.toggle.color.Color = Luna.ThemeGradient3591 Toggle.toggle.UIStroke.color.Color = Luna.ThemeGradient3592 end)3593 3594 if Flag then3595 Luna.Options[Flag] = ToggleV3596 end3597 3598 return ToggleV3599 3600 end3601 3602 -- Bind3603 function Section:CreateBind(BindSettings, Flag)3604 TabPage.Position = UDim2.new(0,0,0,28)3605 local BindV = { Class = "Keybind", IgnoreConfig = false, Settings = BindSettings, Active = false }3606 3607 BindSettings = Kwargify({3608 Name = "Bind",3609 Description = nil,3610 CurrentBind = "Q",3611 HoldToInteract = false, -- setting this makes the Bind in toggle mode3612 Callback = function(Bind)3613 -- The function that takes place when the Bind is pressed3614 -- The variable (Bind) is a boolean for whether the Bind is being held or not (HoldToInteract needs to be true) or whether the Bind is currently active3615 end,3616 3617 OnChangedCallback = function(Bind)3618 -- The function that takes place when the binded key changes3619 -- The variable (Bind) is a Enum.KeyCode for the new Binded Key3620 end,3621 }, BindSettings or {})3622 3623 local CheckingForKey = false3624 3625 local Bind3626 if BindSettings.Description ~= nil and BindSettings.Description ~= "" then3627 Bind = Elements.Template.BindDesc:Clone()3628 else3629 Bind = Elements.Template.Bind:Clone()3630 end3631 3632 Bind.Visible = true3633 Bind.Parent = TabPage3634 3635 Bind.Name = BindSettings.Name3636 Bind.Title.Text = BindSettings.Name3637 if BindSettings.Description ~= nil and BindSettings.Description ~= "" then3638 Bind.Desc.Text = BindSettings.Description3639 end3640 3641 Bind.Title.TextTransparency = 13642 if BindSettings.Description ~= nil and BindSettings.Description ~= "" then3643 Bind.Desc.TextTransparency = 13644 end3645 Bind.BindFrame.BackgroundTransparency = 13646 Bind.BindFrame.UIStroke.Transparency = 13647 Bind.BindFrame.BindBox.TextTransparency = 13648 3649 TweenService:Create(Bind, Animation.Normal, {BackgroundTransparency = 0.5}):Play()3650 TweenService:Create(Bind.Title, Animation.Normal, {TextTransparency = 0}):Play()3651 if BindSettings.Description ~= nil and BindSettings.Description ~= "" then3652 TweenService:Create(Bind.Desc, Animation.Normal, {TextTransparency = 0}):Play()3653 end3654 TweenService:Create(Bind.BindFrame, Animation.Normal, {BackgroundTransparency = 0.9}):Play()3655 TweenService:Create(Bind.BindFrame.UIStroke, Animation.Normal, {Transparency = 0.3}):Play()3656 TweenService:Create(Bind.BindFrame.BindBox, Animation.Normal, {TextTransparency = 0}):Play()3657 3658 3659 Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind3660 Bind.BindFrame.BindBox.Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 20, 0, 42)3661 3662 Bind.BindFrame.BindBox.Focused:Connect(function()3663 CheckingForKey = true3664 Bind.BindFrame.BindBox.Text = ""3665 end)3666 3667 Bind.BindFrame.BindBox.FocusLost:Connect(function()3668 CheckingForKey = false3669 if Bind.BindFrame.BindBox.Text == (nil or "") then3670 Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind3671 end3672 end)3673 3674 Bind["MouseEnter"]:Connect(function()3675 tween(Bind.UIStroke, {Color = DarkTheme.Primary})3676 end)3677 3678 Bind["MouseLeave"]:Connect(function()3679 tween(Bind.UIStroke, {Color = DarkTheme.Icon})3680 end)3681 UserInputService.InputBegan:Connect(function(input, processed)3682 3683 if CheckingForKey then3684 if input.KeyCode ~= Enum.KeyCode.Unknown and input.KeyCode ~= Window.Bind then3685 local SplitMessage = string.split(tostring(input.KeyCode), ".")3686 local NewKeyNoEnum = SplitMessage[3]3687 Bind.BindFrame.BindBox.Text = tostring(NewKeyNoEnum)3688 BindSettings.CurrentBind = tostring(NewKeyNoEnum)3689 local Success, Response = pcall(function()3690 BindSettings.OnChangedCallback(BindSettings.CurrentBind)3691 end)3692 if not Success then3693 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0}):Play()3694 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()3695 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 1}):Play()3696 Bind.Title.Text = "Callback Error"3697 print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))3698 wait(0.5)3699 Bind.Title.Text = BindSettings.Name3700 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3701 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()3702 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3703 end3704 Bind.BindFrame.BindBox:ReleaseFocus()3705 end3706 elseif BindSettings.CurrentBind ~= nil and (input.KeyCode == Enum.KeyCode[BindSettings.CurrentBind] and not processed) then -- Test3707 local Held = true3708 local Connection3709 Connection = input.Changed:Connect(function(prop)3710 if prop == "UserInputState" then3711 Connection:Disconnect()3712 Held = false3713 end3714 end)3715 3716 if not BindSettings.HoldToInteract then3717 BindV.Active = not BindV.Active3718 local Success, Response = pcall(function()3719 BindSettings.Callback(BindV.Active)3720 end)3721 if not Success then3722 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0}):Play()3723 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()3724 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 1}):Play()3725 Bind.Title.Text = "Callback Error"3726 print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))3727 wait(0.5)3728 Bind.Title.Text = BindSettings.Name3729 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3730 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()3731 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3732 end3733 else3734 wait(0.1)3735 if Held then3736 local Loop; Loop = RunService.Stepped:Connect(function()3737 if not Held then3738 local Success, Response = pcall(function()3739 BindSettings.Callback(false)3740 end)3741 if not Success then3742 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0}):Play()3743 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()3744 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 1}):Play()3745 Bind.Title.Text = "Callback Error"3746 print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))3747 wait(0.5)3748 Bind.Title.Text = BindSettings.Name3749 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3750 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()3751 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3752 end 3753 Loop:Disconnect()3754 else3755 local Success, Response = pcall(function()3756 BindSettings.Callback(true)3757 end)3758 if not Success then3759 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0}):Play()3760 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()3761 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 1}):Play()3762 Bind.Title.Text = "Callback Error"3763 print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))3764 wait(0.5)3765 Bind.Title.Text = BindSettings.Name3766 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3767 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()3768 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3769 end3770 end3771 end) 3772 end3773 end3774 end3775 end)3776 3777 Bind.BindFrame.BindBox:GetPropertyChangedSignal("Text"):Connect(function()3778 TweenService:Create(Bind.BindFrame, TweenInfo.new(0.55, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 20, 0, 30)}):Play()3779 end)3780 3781 function BindV:Set(NewBindSettings)3782 3783 NewBindSettings = Kwargify({3784 Name = BindSettings.Name,3785 Description = BindSettings.Description,3786 CurrentBind = BindSettings.CurrentBind,3787 HoldToInteract = BindSettings.HoldToInteract,3788 Callback = BindSettings.Callback3789 }, NewBindSettings or {})3790 3791 BindV.Settings = NewBindSettings3792 BindSettings = NewBindSettings3793 3794 Bind.Name = BindSettings.Name3795 Bind.Title.Text = BindSettings.Name3796 if BindSettings.Description ~= nil and BindSettings.Description ~= "" and Bind.Desc ~= nil then3797 Bind.Desc.Text = BindSettings.Description3798 end3799 3800 Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind3801 Bind.BindFrame.Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 20, 0, 42)3802 3803 3804 BindV.CurrentBind = BindSettings.CurrentBind3805 end3806 3807 function BindV:Destroy()3808 Bind.Visible = false3809 Bind:Destroy()3810 end3811 3812 if Flag then3813 Luna.Options[Flag] = BindV3814 end3815 3816 -- Luna.Flags[BindSettings.Flag] = BindSettings3817 3818 return BindV3819 3820 end3821 3822 -- Dynamic Input3823 function Section:CreateInput(InputSettings, Flag)3824 TabPage.Position = UDim2.new(0,0,0,28)3825 local InputV = { IgnoreConfig = false, Class = "Input", Settings = InputSettings }3826 3827 InputSettings = Kwargify({3828 Name = "Dynamic Input",3829 Description = nil,3830 CurrentValue = "",3831 PlaceholderText = "Input Placeholder",3832 RemoveTextAfterFocusLost = false,3833 Numeric = false,3834 Enter = false,3835 MaxCharacters = nil,3836 Callback = function(Text)3837 3838 end, -- 523839 }, InputSettings or {})3840 3841 InputV.CurrentValue = InputSettings.CurrentValue3842 3843 local descriptionbool3844 if InputSettings.Description ~= nil and InputSettings.Description ~= "" then3845 descriptionbool = true3846 end3847 3848 local Input 3849 if descriptionbool then3850 Input = Elements.Template.InputDesc:Clone()3851 else3852 Input = Elements.Template.Input:Clone()3853 end3854 3855 Input.Name = InputSettings.Name3856 Input.Title.Text = InputSettings.Name3857 if descriptionbool then Input.Desc.Text = InputSettings.Description end3858 Input.Visible = true3859 Input.Parent = TabPage3860 3861 Input.BackgroundTransparency = 13862 Input.UIStroke.Transparency = 13863 Input.Title.TextTransparency = 13864 if descriptionbool then Input.Desc.TextTransparency = 1 end3865 Input.InputFrame.BackgroundTransparency = 13866 Input.InputFrame.UIStroke.Transparency = 13867 Input.InputFrame.InputBox.TextTransparency = 13868 3869 TweenService:Create(Input, Animation.Normal, {BackgroundTransparency = 0.5}):Play()3870 TweenService:Create(Input.UIStroke, Animation.Normal, {Transparency = 0.5}):Play()3871 TweenService:Create(Input.Title, Animation.Normal, {TextTransparency = 0}):Play() 3872 if descriptionbool then TweenService:Create(Input.Desc, Animation.Normal, {TextTransparency = 0}):Play() end3873 TweenService:Create(Input.InputFrame, Animation.Normal, {BackgroundTransparency = 0.9}):Play()3874 TweenService:Create(Input.InputFrame.UIStroke, Animation.Normal, {Transparency = 0.3}):Play()3875 TweenService:Create(Input.InputFrame.InputBox, Animation.Normal, {TextTransparency = 0}):Play()3876 3877 Input.InputFrame.InputBox.PlaceholderText = InputSettings.PlaceholderText3878 Input.InputFrame.Size = UDim2.new(0, Input.InputFrame.InputBox.TextBounds.X + 52, 0, 30)3879 3880 Input.InputFrame.InputBox.FocusLost:Connect(function(bleh)3881 3882 if InputSettings.Enter then3883 if bleh then3884 local Success, Response = pcall(function()3885 InputSettings.Callback(Input.InputFrame.InputBox.Text)3886 InputV.CurrentValue = Input.InputFrame.InputBox.Text3887 end)3888 if not Success then3889 TweenService:Create(Input, Animation.Reveal, {BackgroundTransparency = 0}):Play()3890 TweenService:Create(Input, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()3891 TweenService:Create(Input.UIStroke, Animation.Reveal, {Transparency = 1}):Play()3892 Input.Title.Text = "Callback Error"3893 print("Luna Interface Suite | "..InputSettings.Name.." Callback Error " ..tostring(Response))3894 wait(0.5)3895 Input.Title.Text = InputSettings.Name3896 TweenService:Create(Input, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3897 TweenService:Create(Input, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()3898 TweenService:Create(Input.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3899 end3900 end3901 end3902 3903 if InputSettings.RemoveTextAfterFocusLost then3904 Input.InputFrame.InputBox.Text = ""3905 end3906 3907 end)3908 3909 if InputSettings.Numeric then3910 Input.InputFrame.InputBox:GetPropertyChangedSignal("Text"):Connect(function()3911 local text = Input.InputFrame.InputBox.Text3912 if not tonumber(text) and text ~= "." then3913 Input.InputFrame.InputBox.Text = text:match("[0-9.]*") or ""3914 end3915 end)3916 end3917 3918 Input.InputFrame.InputBox:GetPropertyChangedSignal("Text"):Connect(function()3919 if tonumber(InputSettings.MaxCharacters) then3920 if (#Input.InputFrame.InputBox.Text - 1) == InputSettings.MaxCharacters then3921 Input.InputFrame.InputBox.Text = Input.InputFrame.InputBox.Text:sub(1, InputSettings.MaxCharacters)3922 end3923 end3924 TweenService:Create(Input.InputFrame, TweenInfo.new(0.55, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Size = UDim2.new(0, Input.InputFrame.InputBox.TextBounds.X + 52, 0, 30)}):Play()3925 if not InputSettings.Enter then3926 local Success, Response = pcall(function()3927 InputSettings.Callback(Input.InputFrame.InputBox.Text)3928 end)3929 if not Success then3930 TweenService:Create(Input, Animation.Reveal, {BackgroundTransparency = 0}):Play()3931 TweenService:Create(Input, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()3932 TweenService:Create(Input.UIStroke, Animation.Reveal, {Transparency = 1}):Play()3933 Input.Title.Text = "Callback Error"3934 print("Luna Interface Suite | "..InputSettings.Name.." Callback Error " ..tostring(Response))3935 wait(0.5)3936 Input.Title.Text = InputSettings.Name3937 TweenService:Create(Input, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()3938 TweenService:Create(Input, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()3939 TweenService:Create(Input.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()3940 end3941 end3942 InputV.CurrentValue = Input.InputFrame.InputBox.Text 3943 end)3944 3945 Input["MouseEnter"]:Connect(function()3946 tween(Input.UIStroke, {Color = DarkTheme.Primary})3947 end)3948 3949 Input["MouseLeave"]:Connect(function()3950 tween(Input.UIStroke, {Color = DarkTheme.Icon})3951 end)3952 3953 3954 function InputV:Set(NewInputSettings)3955 3956 NewInputSettings = Kwargify(InputSettings, NewInputSettings or {})3957 3958 InputV.Settings = NewInputSettings3959 InputSettings = NewInputSettings3960 3961 Input.Name = InputSettings.Name3962 Input.Title.Text = InputSettings.Name3963 if InputSettings.Description ~= nil and InputSettings.Description ~= "" and Input.Desc ~= nil then3964 Input.Desc.Text = InputSettings.Description3965 end3966 3967 Input.InputFrame.InputBox:CaptureFocus()3968 Input.InputFrame.InputBox.Text = tostring(InputSettings.CurrentValue)3969 Input.InputFrame.InputBox:ReleaseFocus()3970 Input.InputFrame.Size = UDim2.new(0, Input.InputFrame.InputBox.TextBounds.X + 52, 0, 42)3971 3972 InputV.CurrentValue = InputSettings.CurrentValue3973 end3974 3975 function InputV:Destroy()3976 Input.Visible = false3977 Input:Destroy()3978 end3979 3980 if Flag then3981 Luna.Options[Flag] = InputV3982 end3983 3984 3985 return InputV3986 3987 end3988 3989 -- Dropdown3990 function Section:CreateDropdown(DropdownSettings, Flag)3991 TabPage.Position = UDim2.new(0,0,0,28)3992 local DropdownV = { IgnoreConfig = false, Class = "Dropdown", Settings = DropdownSettings}3993 3994 DropdownSettings = Kwargify({3995 Name = "Dropdown",3996 Description = nil,3997 Options = {"Option 1", "Option 2"},3998 CurrentOption = {"Option 1"},3999 MultipleOptions = false,4000 SpecialType = nil, -- currently onl player, might add more soon4001 Callback = function(Options)4002 -- The function that takes place when the selected option is changed4003 -- The variable (Options) is a table of strings for the current selected options or a string if multioptions is false4004 end,4005 }, DropdownSettings or {})4006 4007 DropdownV.CurrentOption = DropdownSettings.CurrentOption4008 4009 local descriptionbool = false4010 if DropdownSettings.Description ~= nil and DropdownSettings.Description ~= "" then4011 descriptionbool = true4012 end4013 local closedsize4014 local openedsize4015 if descriptionbool then4016 closedsize = 484017 openedsize = 1704018 elseif not descriptionbool then4019 closedsize = 384020 openedsize = 1604021 end4022 local opened = false4023 4024 local Dropdown4025 if descriptionbool then Dropdown = Elements.Template.DropdownDesc:Clone() else Dropdown = Elements.Template.Dropdown:Clone() end4026 4027 Dropdown.Name = DropdownSettings.Name4028 Dropdown.Title.Text = DropdownSettings.Name4029 if descriptionbool then Dropdown.Desc.Text = DropdownSettings.Description end4030 4031 Dropdown.Parent = TabPage4032 Dropdown.Visible = true4033 4034 local function Toggle()4035 opened = not opened4036 if opened then4037 tween(Dropdown.icon, {Rotation = 180})4038 tween(Dropdown, {Size = UDim2.new(1, -25, 0, openedsize)})4039 else4040 tween(Dropdown.icon, {Rotation = 0})4041 tween(Dropdown, {Size = UDim2.new(1, -25, 0, closedsize)})4042 end4043 end4044 4045 local function SafeCallback(param, c2)4046 local Success, Response = pcall(function()4047 DropdownSettings.Callback(param)4048 end)4049 if not Success then4050 TweenService:Create(Dropdown, Animation.Reveal, {BackgroundTransparency = 0}):Play()4051 TweenService:Create(Dropdown, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()4052 TweenService:Create(Dropdown.UIStroke, Animation.Reveal, {Transparency = 1}):Play()4053 Dropdown.Title.Text = "Callback Error"4054 print("Luna Interface Suite | "..DropdownSettings.Name.." Callback Error " ..tostring(Response))4055 wait(0.5)4056 Dropdown.Title.Text = DropdownSettings.Name4057 TweenService:Create(Dropdown, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()4058 TweenService:Create(Dropdown, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()4059 TweenService:Create(Dropdown.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()4060 end4061 if Success and c2 then4062 c2()4063 end4064 end4065 4066 -- fixed by justhey4067 Dropdown.Selected:GetPropertyChangedSignal("Text"):Connect(function()4068 local text = Dropdown.Selected.Text:lower()4069 for _, Item in ipairs(Dropdown.List:GetChildren()) do4070 if Item:IsA("TextLabel") and Item.Name ~= "Template" then4071 Item.Visible = text == "" or string.find(Item.Name:lower(), text, 1, true) ~= nil4072 end4073 end4074 end)4075 4076 4077 local function Clear()4078 for _, option in ipairs(Dropdown.List:GetChildren()) do4079 if option.ClassName == "TextLabel" and option.Name ~= "Template" then4080 option:Destroy()4081 end4082 end4083 end4084 4085 local function ActivateColorSingle(name)4086 for _, Option in pairs(Dropdown.List:GetChildren()) do4087 if Option.ClassName == "TextLabel" and Option.Name ~= "Template" then4088 tween(Option, {BackgroundTransparency = 0.98})4089 end4090 end4091 4092 Toggle()4093 tween(Dropdown.List[name], {BackgroundTransparency = 0.95, TextColor3 = Color3.fromRGB(240,240,240)})4094 end4095 4096 local function Refresh()4097 Clear()4098 for i,v in pairs(DropdownSettings.Options) do4099 local Option = Dropdown.List.Template:Clone()4100 local optionhover = false4101 Option.Text = v4102 if v == "Template" then v = "Template (Name)" end4103 Option.Name = v4104 Option.Interact.MouseButton1Click:Connect(function()4105 local bleh4106 if DropdownSettings.MultipleOptions then4107 if table.find(DropdownSettings.CurrentOption, v) then4108 RemoveTable(DropdownSettings.CurrentOption, v)4109 DropdownV.CurrentOption = DropdownSettings.CurrentOption4110 if not optionhover then4111 tween(Option, {TextColor3 = Color3.fromRGB(200,200,200)})4112 end4113 tween(Option, {BackgroundTransparency = 0.98})4114 else4115 table.insert(DropdownSettings.CurrentOption, v)4116 DropdownV.CurrentOption = DropdownSettings.CurrentOption4117 tween(Option, {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})4118 end4119 bleh = DropdownSettings.CurrentOption4120 else4121 DropdownSettings.CurrentOption = {v}4122 bleh = v4123 DropdownV.CurrentOption = bleh4124 ActivateColorSingle(v)4125 end4126 4127 SafeCallback(bleh, function()4128 if DropdownSettings.MultipleOptions then4129 if DropdownSettings.CurrentOption and type(DropdownSettings.CurrentOption) == "table" then4130 if #DropdownSettings.CurrentOption == 1 then4131 Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1]4132 elseif #DropdownSettings.CurrentOption == 0 then4133 Dropdown.Selected.PlaceholderText = "None"4134 else4135 Dropdown.Selected.PlaceholderText = unpackt(DropdownSettings.CurrentOption)4136 end4137 else4138 DropdownSettings.CurrentOption = {}4139 Dropdown.Selected.PlaceholderText = "None"4140 end4141 end4142 if not DropdownSettings.MultipleOptions then4143 Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1] or "None"4144 end4145 Dropdown.Selected.Text = ""4146 end)4147 end)4148 Option.Visible = true4149 Option.Parent = Dropdown.List4150 Option.MouseEnter:Connect(function()4151 optionhover = true4152 if Option.BackgroundTransparency == 0.95 then4153 return4154 else4155 tween(Option, {TextColor3 = Color3.fromRGB(240,240,240)})4156 end4157 end)4158 Option.MouseLeave:Connect(function()4159 optionhover = false4160 if Option.BackgroundTransparency == 0.95 then4161 return4162 else4163 tween(Option, {TextColor3 = Color3.fromRGB(200,200,200)})4164 end4165 end) 4166 end4167 end4168 4169 local function PlayerTableRefresh()4170 for i,v in pairs(DropdownSettings.Options) do4171 table.remove(DropdownSettings.Options, i)4172 end4173 4174 for i,v in pairs(Players:GetChildren()) do4175 table.insert(DropdownSettings.Options, v.Name)4176 end4177 end4178 4179 Dropdown.Interact.MouseButton1Click:Connect(function()4180 Toggle()4181 end)4182 4183 Dropdown["MouseEnter"]:Connect(function()4184 tween(Dropdown.UIStroke, {Color = DarkTheme.Primary})4185 end)4186 4187 Dropdown["MouseLeave"]:Connect(function()4188 tween(Dropdown.UIStroke, {Color = DarkTheme.Icon})4189 end)4190 4191 if DropdownSettings.SpecialType == "Player" then4192 4193 for i,v in pairs(DropdownSettings.Options) do4194 table.remove(DropdownSettings.Options, i)4195 end4196 PlayerTableRefresh()4197 DropdownSettings.CurrentOption = DropdownSettings.Options[1]4198 4199 Players.PlayerAdded:Connect(function() PlayerTableRefresh() end)4200 Players.PlayerRemoving:Connect(function() PlayerTableRefresh() end)4201 4202 end4203 4204 Refresh()4205 4206 if DropdownSettings.CurrentOption then4207 if type(DropdownSettings.CurrentOption) == "string" then4208 DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption}4209 end4210 if not DropdownSettings.MultipleOptions and type(DropdownSettings.CurrentOption) == "table" then4211 DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption[1]}4212 end4213 else4214 DropdownSettings.CurrentOption = {}4215 end4216 4217 local bleh, ind = nil,04218 for i,v in pairs(DropdownSettings.CurrentOption) do4219 ind = ind + 14220 end4221 if ind == 1 then bleh = DropdownSettings.CurrentOption[1] else bleh = DropdownSettings.CurrentOption end4222 SafeCallback(bleh)4223 if type(bleh) == "string" then 4224 tween(Dropdown.List[bleh], {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})4225 else4226 for i,v in pairs(bleh) do4227 tween(Dropdown.List[v], {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})4228 end4229 end4230 4231 if DropdownSettings.MultipleOptions then4232 if DropdownSettings.CurrentOption and type(DropdownSettings.CurrentOption) == "table" then4233 if #DropdownSettings.CurrentOption == 1 then4234 Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1]4235 elseif #DropdownSettings.CurrentOption == 0 then4236 Dropdown.Selected.PlaceholderText = "None"4237 else4238 Dropdown.Selected.PlaceholderText = unpackt(DropdownSettings.CurrentOption)4239 end4240 else4241 DropdownSettings.CurrentOption = {}4242 Dropdown.Selected.PlaceholderText = "None"4243 end4244 for _, name in pairs(DropdownSettings.CurrentOption) do4245 tween(Dropdown.List[name], {TextColor3 = Color3.fromRGB(227,227,227), BackgroundTransparency = 0.95})4246 end4247 else4248 Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1] or "None"4249 end4250 Dropdown.Selected.Text = ""4251 4252 function DropdownV:Set(NewDropdownSettings)4253 NewDropdownSettings = Kwargify(DropdownSettings, NewDropdownSettings or {})4254 4255 DropdownV.Settings = NewDropdownSettings4256 DropdownSettings = NewDropdownSettings4257 4258 Dropdown.Name = DropdownSettings.Name4259 Dropdown.Title.Text = DropdownSettings.Name4260 if DropdownSettings.Description ~= nil and DropdownSettings.Description ~= "" and Dropdown.Desc ~= nil then4261 Dropdown.Desc.Text = DropdownSettings.Description4262 end4263 4264 if DropdownSettings.SpecialType == "Player" then4265 4266 for i,v in pairs(DropdownSettings.Options) do4267 table.remove(DropdownSettings.Options, i)4268 end4269 PlayerTableRefresh()4270 DropdownSettings.CurrentOption = DropdownSettings.Options[1] 4271 Players.PlayerAdded:Connect(function() PlayerTableRefresh() end)4272 Players.PlayerRemoving:Connect(function() PlayerTableRefresh() end)4273 4274 end4275 4276 Refresh()4277 4278 if DropdownSettings.CurrentOption then4279 if type(DropdownSettings.CurrentOption) == "string" then4280 DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption}4281 end4282 if not DropdownSettings.MultipleOptions and type(DropdownSettings.CurrentOption) == "table" then4283 DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption[1]}4284 end4285 else4286 DropdownSettings.CurrentOption = {}4287 end4288 4289 local bleh, ind = nil,04290 for i,v in pairs(DropdownSettings.CurrentOption) do4291 ind = ind + 14292 end4293 if ind == 1 then bleh = DropdownSettings.CurrentOption[1] else bleh = DropdownSettings.CurrentOption end4294 SafeCallback(bleh)4295 for _, Option in pairs(Dropdown.List:GetChildren()) do4296 if Option.ClassName == "TextLabel" then4297 tween(Option, {TextColor3 = Color3.fromRGB(200,200,200), BackgroundTransparency = 0.98})4298 end4299 end4300 tween(Dropdown.List[bleh], {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})4301 4302 if DropdownSettings.MultipleOptions then4303 if DropdownSettings.CurrentOption and type(DropdownSettings.CurrentOption) == "table" then4304 if #DropdownSettings.CurrentOption == 1 then4305 Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1]4306 elseif #DropdownSettings.CurrentOption == 0 then4307 Dropdown.Selected.PlaceholderText = "None"4308 else4309 Dropdown.Selected.PlaceholderText = unpackt(DropdownSettings.CurrentOption)4310 end4311 else4312 DropdownSettings.CurrentOption = {}4313 Dropdown.Selected.PlaceholderText = "None"4314 end4315 for _, name in pairs(DropdownSettings.CurrentOption) do4316 tween(Dropdown.List[name], {TextColor3 = Color3.fromRGB(227,227,227), BackgroundTransparency = 0.95})4317 end4318 else4319 Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1] or "None"4320 end4321 Dropdown.Selected.Text = ""4322 4323 -- Luna.Flags[DropdownSettings.Flag] = DropdownSettings4324 4325 end4326 4327 function DropdownV:Destroy()4328 Dropdown.Visible = false4329 Dropdown:Destroy()4330 end4331 4332 if Flag then4333 Luna.Options[Flag] = DropdownV4334 end4335 4336 -- Luna.Flags[DropdownSettings.Flag] = DropdownSettings4337 4338 return DropdownV4339 4340 end4341 4342 -- Color Picker4343 function Section:CreateColorPicker(ColorPickerSettings, Flag) -- by Rayfield/Throit4344 TabPage.Position = UDim2.new(0,0,0,28)4345 local ColorPickerV = {IgnoreClass = false, Class = "Colorpicker", Settings = ColorPickerSettings}4346 4347 ColorPickerSettings = Kwargify({4348 Name = "Color Picker",4349 Color = Color3.fromRGB(255,255,255),4350 Callback = function(Value)4351 -- The function that takes place every time the color picker is moved/changed4352 -- The variable (Value) is a Color3fromRGB value based on which color is selected4353 end4354 }, ColorPickerSettings or {})4355 4356 local function Color3ToHex(color)4357 return string.format("#%02X%02X%02X", math.floor(color.R * 255), math.floor(color.G * 255), math.floor(color.B * 255))4358 end4359 4360 ColorPickerV.Color = Color3ToHex(ColorPickerSettings.Color)4361 4362 local closedsize = UDim2.new(0, 75, 0, 22)4363 local openedsize = UDim2.new(0, 219, 0, 129)4364 4365 local ColorPicker = Elements.Template.ColorPicker:Clone()4366 local Background = ColorPicker.CPBackground4367 local Display = Background.Display4368 local Main = Background.MainCP4369 local Slider = ColorPicker.ColorSlider4370 4371 ColorPicker.Name = ColorPickerSettings.Name4372 ColorPicker.Title.Text = ColorPickerSettings.Name4373 ColorPicker.Visible = true4374 ColorPicker.Parent = TabPage4375 ColorPicker.Size = UDim2.new(1.042, -25,0, 38)4376 Background.Size = closedsize4377 Display.BackgroundTransparency = 04378 4379 ColorPicker["MouseEnter"]:Connect(function()4380 tween(ColorPicker.UIStroke, {Color = DarkTheme.Primary})4381 end)4382 ColorPicker["MouseLeave"]:Connect(function()4383 tween(ColorPicker.UIStroke, {Color = DarkTheme.Icon})4384 end)4385 4386 local function SafeCallback(param, c2)4387 local Success, Response = pcall(function()4388 ColorPickerSettings.Callback(param)4389 end)4390 if not Success then4391 TweenService:Create(ColorPicker, Animation.Reveal, {BackgroundTransparency = 0}):Play()4392 TweenService:Create(ColorPicker, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()4393 TweenService:Create(ColorPicker.UIStroke, Animation.Reveal, {Transparency = 1}):Play()4394 ColorPicker.Title.Text = "Callback Error"4395 print("Luna Interface Suite | "..ColorPickerSettings.Name.." Callback Error " ..tostring(Response))4396 wait(0.5)4397 ColorPicker.Title.Text = ColorPickerSettings.Name4398 TweenService:Create(ColorPicker, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()4399 TweenService:Create(ColorPicker, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()4400 TweenService:Create(ColorPicker.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()4401 end4402 if Success and c2 then4403 c2()4404 end4405 end4406 4407 local opened = false4408 4409 local mouse = game.Players.LocalPlayer:GetMouse()4410 Main.Image = "http://www.roblox.com/asset/?id=11415645739"4411 local mainDragging = false 4412 local sliderDragging = false 4413 ColorPicker.Interact.MouseButton1Down:Connect(function()4414 if not opened then4415 opened = true 4416 tween(ColorPicker, {Size = UDim2.new( 1.042, -25,0, 165)}, nil, Animation.Dialog)4417 tween(Background, {Size = openedsize})4418 tween(Display, {BackgroundTransparency = 1})4419 else4420 opened = false4421 tween(ColorPicker, {Size = UDim2.new(1.042, -25,0, 38)}, nil, Animation.Dialog)4422 tween(Background, {Size = closedsize})4423 tween(Display, {BackgroundTransparency = 0})4424 end4425 end)4426 UserInputService.InputEnded:Connect(function(input, gameProcessed) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then 4427 mainDragging = false4428 sliderDragging = false4429 end end)4430 Main.MouseButton1Down:Connect(function()4431 if opened then4432 mainDragging = true 4433 end4434 end)4435 Main.MainPoint.MouseButton1Down:Connect(function()4436 if opened then4437 mainDragging = true 4438 end4439 end)4440 Slider.MouseButton1Down:Connect(function()4441 sliderDragging = true 4442 end)4443 Slider.SliderPoint.MouseButton1Down:Connect(function()4444 sliderDragging = true 4445 end)4446 local h,s,v = ColorPickerSettings.Color:ToHSV()4447 local color = Color3.fromHSV(h,s,v) 4448 local r,g,b = math.floor((h*255)+0.5),math.floor((s*255)+0.5),math.floor((v*255)+0.5)4449 local hex = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)4450 ColorPicker.HexInput.InputBox.Text = hex4451 local function setDisplay(hp,sp,vp)4452 --Main4453 Main.MainPoint.Position = UDim2.new(s,-Main.MainPoint.AbsoluteSize.X/2,1-v,-Main.MainPoint.AbsoluteSize.Y/2)4454 Main.MainPoint.ImageColor3 = Color3.fromHSV(hp,sp,vp)4455 Background.BackgroundColor3 = Color3.fromHSV(hp,1,1)4456 Display.BackgroundColor3 = Color3.fromHSV(hp,sp,vp)4457 --Slider 4458 local x = hp * Slider.AbsoluteSize.X4459 Slider.SliderPoint.Position = UDim2.new(0,x-Slider.SliderPoint.AbsoluteSize.X/2,0.5,0)4460 Slider.SliderPoint.ImageColor3 = Color3.fromHSV(hp,1,1)4461 local color = Color3.fromHSV(hp,sp,vp) 4462 local r,g,b = math.floor((color.R*255)+0.5),math.floor((color.G*255)+0.5),math.floor((color.B*255)+0.5)4463 ColorPicker.RInput.InputBox.Text = tostring(r)4464 ColorPicker.GInput.InputBox.Text = tostring(g)4465 ColorPicker.BInput.InputBox.Text = tostring(b)4466 hex = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)4467 ColorPicker.HexInput.InputBox.Text = hex4468 end4469 setDisplay(h,s,v)4470 ColorPicker.HexInput.InputBox.FocusLost:Connect(function()4471 if not pcall(function()4472 local r, g, b = string.match(ColorPicker.HexInput.InputBox.Text, "^#?(%w%w)(%w%w)(%w%w)$")4473 local rgbColor = Color3.fromRGB(tonumber(r, 16),tonumber(g, 16), tonumber(b, 16))4474 h,s,v = rgbColor:ToHSV()4475 hex = ColorPicker.HexInput.InputBox.Text4476 setDisplay()4477 ColorPickerSettings.Color = rgbColor4478 end) 4479 then 4480 ColorPicker.HexInput.InputBox.Text = hex 4481 end4482 local r,g,b = math.floor((h*255)+0.5),math.floor((s*255)+0.5),math.floor((v*255)+0.5)4483 ColorPickerSettings.Color = Color3.fromRGB(r,g,b)4484 SafeCallback( Color3.fromRGB(r,g,b))4485 end)4486 --RGB4487 local function rgbBoxes(box,toChange)4488 local value = tonumber(box.Text) 4489 local color = Color3.fromHSV(h,s,v) 4490 local oldR,oldG,oldB = math.floor((color.R*255)+0.5),math.floor((color.G*255)+0.5),math.floor((color.B*255)+0.5)4491 local save 4492 if toChange == "R" then save = oldR;oldR = value elseif toChange == "G" then save = oldG;oldG = value else save = oldB;oldB = value end4493 if value then 4494 value = math.clamp(value,0,255)4495 h,s,v = Color3.fromRGB(oldR,oldG,oldB):ToHSV()4496 setDisplay()4497 else 4498 box.Text = tostring(save)4499 end4500 local r,g,b = math.floor((color.R*255)+0.5),math.floor((color.G*255)+0.5),math.floor((color.B*255)+0.5)4501 ColorPickerSettings.Color = Color3.fromRGB(r,g,b)4502 end4503 ColorPicker.RInput.InputBox.FocusLost:connect(function()4504 rgbBoxes(ColorPicker.RInput.InputBox,"R")4505 SafeCallback(Color3.fromRGB(r,g,b))4506 end)4507 ColorPicker.GInput.InputBox.FocusLost:connect(function()4508 rgbBoxes(ColorPicker.GInput.InputBox,"G")4509 SafeCallback(Color3.fromRGB(r,g,b))4510 end)4511 ColorPicker.BInput.InputBox.FocusLost:connect(function()4512 rgbBoxes(ColorPicker.BInput.InputBox,"B")4513 SafeCallback(Color3.fromRGB(r,g,b))4514 end)4515 RunService.RenderStepped:connect(function()4516 if mainDragging then 4517 local localX = math.clamp(mouse.X-Main.AbsolutePosition.X,0,Main.AbsoluteSize.X)4518 local localY = math.clamp(mouse.Y-Main.AbsolutePosition.Y,0,Main.AbsoluteSize.Y)4519 Main.MainPoint.Position = UDim2.new(0,localX-Main.MainPoint.AbsoluteSize.X/2,0,localY-Main.MainPoint.AbsoluteSize.Y/2)4520 s = localX / Main.AbsoluteSize.X4521 v = 1 - (localY / Main.AbsoluteSize.Y)4522 Display.BackgroundColor3 = Color3.fromHSV(h,s,v)4523 Main.MainPoint.ImageColor3 = Color3.fromHSV(h,s,v)4524 Background.BackgroundColor3 = Color3.fromHSV(h,1,1)4525 local color = Color3.fromHSV(h,s,v) 4526 local r,g,b = math.floor((color.R*255)+0.5),math.floor((color.G*255)+0.5),math.floor((color.B*255)+0.5)4527 ColorPicker.RInput.InputBox.Text = tostring(r)4528 ColorPicker.GInput.InputBox.Text = tostring(g)4529 ColorPicker.BInput.InputBox.Text = tostring(b)4530 ColorPicker.HexInput.InputBox.Text = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)4531 SafeCallback(Color3.fromRGB(r,g,b))4532 ColorPickerSettings.Color = Color3.fromRGB(r,g,b)4533 ColorPickerV.Color = ColorPickerSettings.Color4534 end4535 if sliderDragging then 4536 local localX = math.clamp(mouse.X-Slider.AbsolutePosition.X,0,Slider.AbsoluteSize.X)4537 h = localX / Slider.AbsoluteSize.X4538 Display.BackgroundColor3 = Color3.fromHSV(h,s,v)4539 Slider.SliderPoint.Position = UDim2.new(0,localX-Slider.SliderPoint.AbsoluteSize.X/2,0.5,0)4540 Slider.SliderPoint.ImageColor3 = Color3.fromHSV(h,1,1)4541 Background.BackgroundColor3 = Color3.fromHSV(h,1,1)4542 Main.MainPoint.ImageColor3 = Color3.fromHSV(h,s,v)4543 local color = Color3.fromHSV(h,s,v) 4544 local r,g,b = math.floor((color.R*255)+0.5),math.floor((color.G*255)+0.5),math.floor((color.B*255)+0.5)4545 ColorPicker.RInput.InputBox.Text = tostring(r)4546 ColorPicker.GInput.InputBox.Text = tostring(g)4547 ColorPicker.BInput.InputBox.Text = tostring(b)4548 ColorPicker.HexInput.InputBox.Text = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)4549 SafeCallback(Color3.fromRGB(r,g,b))4550 ColorPickerSettings.Color = Color3.fromRGB(r,g,b)4551 ColorPickerV.Color = ColorPickerSettings.Color4552 end4553 end)4554 4555 function ColorPickerV:Set(NewColorPickerSettings)4556 4557 NewColorPickerSettings = Kwargify(ColorPickerSettings, NewColorPickerSettings or {})4558 4559 ColorPickerV.Settings = NewColorPickerSettings4560 ColorPickerSettings = NewColorPickerSettings4561 4562 ColorPicker.Name = ColorPickerSettings.Name4563 ColorPicker.Title.Text = ColorPickerSettings.Name4564 ColorPicker.Visible = true4565 4566 local h,s,v = ColorPickerSettings.Color:ToHSV()4567 local color = Color3.fromHSV(h,s,v) 4568 local r,g,b = math.floor((color.R*255)+0.5),math.floor((color.G*255)+0.5),math.floor((color.B*255)+0.5)4569 local hex = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)4570 ColorPicker.HexInput.InputBox.Text = hex4571 setDisplay(h,s,v)4572 SafeCallback(Color3.fromRGB(r,g,b))4573 4574 ColorPickerV.Color = ColorPickerSettings.Color4575 end4576 4577 function ColorPickerV:Destroy()4578 ColorPicker:Destroy()4579 end4580 4581 if Flag then4582 Luna.Options[Flag] = ColorPickerV4583 end4584 4585 SafeCallback(ColorPickerSettings.Color)4586 4587 return ColorPickerV4588 end4589 4590 return Section4591 4592 end4593 4594 -- Divider4595 function Tab:CreateDivider()4596 local b = Elements.Template.Divider:Clone()4597 b.Parent = TabPage4598 b.Line.BackgroundTransparency = 14599 tween(b.Line, {BackgroundTransparency = 0})4600 end4601 4602 -- Button4603 function Tab:CreateButton(ButtonSettings)4604 4605 ButtonSettings = Kwargify({4606 Name = "Button",4607 Description = nil,4608 Callback = function()4609 4610 end,4611 }, ButtonSettings or {})4612 4613 local ButtonV = {4614 Hover = false,4615 Settings = ButtonSettings4616 }4617 4618 4619 local Button4620 if ButtonSettings.Description == nil and ButtonSettings.Description ~= "" then4621 Button = Elements.Template.Button:Clone()4622 else4623 Button = Elements.Template.ButtonDesc:Clone()4624 end4625 Button.Name = ButtonSettings.Name4626 Button.Title.Text = ButtonSettings.Name4627 if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" then4628 Button.Desc.Text = ButtonSettings.Description4629 end4630 Button.Visible = true4631 Button.Parent = TabPage4632 4633 Button.UIStroke.Transparency = 14634 Button.Title.TextTransparency = 14635 if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" then4636 Button.Desc.TextTransparency = 14637 end4638 4639 TweenService:Create(Button, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()4640 TweenService:Create(Button.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()4641 TweenService:Create(Button.Title, Animation.Reveal, {TextTransparency = 0}):Play() 4642 if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" then4643 TweenService:Create(Button.Desc, Animation.Reveal, {TextTransparency = 0}):Play() 4644 end4645 4646 Button.Interact["MouseButton1Click"]:Connect(function()4647 local Success,Response = pcall(ButtonSettings.Callback)4648 4649 if not Success then4650 TweenService:Create(Button, Animation.Reveal, {BackgroundTransparency = 0}):Play()4651 TweenService:Create(Button, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()4652 TweenService:Create(Button.UIStroke, Animation.Reveal, {Transparency = 1}):Play()4653 Button.Title.Text = "Callback Error"4654 print("Luna Interface Suite | "..ButtonSettings.Name.." Callback Error " ..tostring(Response))4655 wait(0.5)4656 Button.Title.Text = ButtonSettings.Name4657 TweenService:Create(Button, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()4658 TweenService:Create(Button, Animation.Reveal, {BackgroundColor3 = DarkTheme.Button}):Play()4659 TweenService:Create(Button.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()4660 else4661 tween(Button.UIStroke, {Color = DarkTheme.Primary})4662 wait(0.2)4663 if ButtonV.Hover then4664 tween(Button.UIStroke, {Color = DarkTheme.Primary})4665 else4666 tween(Button.UIStroke, {Color = DarkTheme.Icon})4667 end4668 end4669 end)4670 4671 Button["MouseEnter"]:Connect(function()4672 ButtonV.Hover = true4673 tween(Button.UIStroke, {Color = DarkTheme.Primary})4674 end)4675 4676 Button["MouseLeave"]:Connect(function()4677 ButtonV.Hover = false4678 tween(Button.UIStroke, {Color = DarkTheme.Icon})4679 end)4680 4681 function ButtonV:Set(ButtonSettings2)4682 ButtonSettings2 = Kwargify({4683 Name = ButtonSettings.Name,4684 Description = ButtonSettings.Description,4685 Callback = ButtonSettings.Callback4686 }, ButtonSettings2 or {})4687 4688 ButtonSettings = ButtonSettings24689 ButtonV.Settings = ButtonSettings24690 4691 Button.Name = ButtonSettings.Name4692 Button.Title.Text = ButtonSettings.Name4693 if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" and Button.Desc ~= nil then4694 Button.Desc.Text = ButtonSettings.Description4695 end4696 end4697 4698 function ButtonV:Destroy()4699 Button.Visible = false4700 Button:Destroy()4701 end4702 4703 return ButtonV4704 end4705 4706 -- Label4707 function Tab:CreateLabel(LabelSettings)4708 4709 local LabelV = {}4710 4711 LabelSettings = Kwargify({4712 Text = "Label",4713 Style = 14714 }, LabelSettings or {}) 4715 4716 LabelV.Settings = LabelSettings4717 4718 local Label4719 if LabelSettings.Style == 1 then4720 Label = Elements.Template.Label:Clone()4721 elseif LabelSettings.Style == 2 then4722 Label = Elements.Template.Info:Clone()4723 elseif LabelSettings.Style == 3 then4724 Label = Elements.Template.Warn:Clone()4725 end4726 4727 Label.Text.Text = LabelSettings.Text4728 Label.Visible = true4729 Label.Parent = TabPage4730 4731 Label.BackgroundTransparency = 14732 Label.UIStroke.Transparency = 14733 Label.Text.TextTransparency = 14734 4735 if LabelSettings.Style ~= 1 then4736 TweenService:Create(Label, Animation.Reveal, {BackgroundTransparency = 0.8}):Play()4737 else4738 TweenService:Create(Label, Animation.Reveal, {BackgroundTransparency = 1}):Play()4739 end4740 TweenService:Create(Label.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()4741 TweenService:Create(Label.Text, Animation.Reveal, {TextTransparency = 0}):Play() 4742 4743 function LabelV:Set(NewLabel)4744 LabelSettings.Text = NewLabel4745 LabelV.Settings = LabelSettings4746 Label.Text.Text = NewLabel4747 end4748 4749 function LabelV:Destroy()4750 Label.Visible = false4751 Label:Destroy()4752 end4753 4754 return LabelV4755 end4756 4757 -- Paragraph4758 function Tab:CreateParagraph(ParagraphSettings)4759 4760 ParagraphSettings = Kwargify({4761 Title = "Paragraph",4762 Text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus venenatis lacus sed tempus eleifend. Mauris interdum bibendum felis, in tempor augue egestas vel. Praesent tristique consectetur ex, eu pretium sem placerat non. Vestibulum a nisi sit amet augue facilisis consectetur sit amet et nunc. Integer fermentum ornare cursus. Pellentesque sed ultricies metus, ut egestas metus. Vivamus auctor erat ac sapien vulputate, nec ultricies sem tempor. Quisque leo lorem, faucibus nec pulvinar nec, congue eu velit. Duis sodales massa efficitur imperdiet ultrices. Donec eros ipsum, ornare pharetra purus aliquam, tincidunt elementum nisi. Ut mi tortor, feugiat eget nunc vitae, facilisis interdum dui. Vivamus ullamcorper nunc dui, a dapibus nisi pretium ac. Integer eleifend placerat nibh, maximus malesuada tellus. Cras in justo in ligula scelerisque suscipit vel vitae quam."4763 }, ParagraphSettings or {})4764 4765 local ParagraphV = {4766 Settings = ParagraphSettings4767 }4768 4769 local Paragraph = Elements.Template.Paragraph:Clone()4770 Paragraph.Title.Text = ParagraphSettings.Title4771 Paragraph.Text.Text = ParagraphSettings.Text4772 Paragraph.Visible = true4773 Paragraph.Parent = TabPage4774 4775 Paragraph.BackgroundTransparency = 14776 Paragraph.UIStroke.Transparency = 14777 Paragraph.Title.TextTransparency = 14778 Paragraph.Text.TextTransparency = 14779 4780 TweenService:Create(Paragraph, Animation.Reveal, {BackgroundTransparency = 1}):Play()4781 TweenService:Create(Paragraph.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()4782 TweenService:Create(Paragraph.Title, Animation.Reveal, {TextTransparency = 0}):Play() 4783 TweenService:Create(Paragraph.Text, Animation.Reveal, {TextTransparency = 0}):Play() 4784 4785 function ParagraphV:Update()4786 Paragraph.Text.Size = UDim2.new(Paragraph.Text.Size.X.Scale, Paragraph.Text.Size.X.Offset, 0, math.huge)4787 Paragraph.Text.Size = UDim2.new(Paragraph.Text.Size.X.Scale, Paragraph.Text.Size.X.Offset, 0, Paragraph.Text.TextBounds.Y)4788 tween(Paragraph, {Size = UDim2.new(Paragraph.Size.X.Scale, Paragraph.Size.X.Offset, 0, Paragraph.Text.TextBounds.Y + 40)})4789 end4790 4791 function ParagraphV:Set(NewParagraphSettings)4792 4793 NewParagraphSettings = Kwargify({4794 Title = ParagraphSettings.Title,4795 Text = ParagraphSettings.Text4796 }, NewParagraphSettings or {})4797 4798 ParagraphV.Settings = NewParagraphSettings4799 4800 Paragraph.Title.Text = NewParagraphSettings.Title4801 Paragraph.Text.Text = NewParagraphSettings.Text4802 4803 ParagraphV:Update()4804 4805 end4806 4807 function ParagraphV:Destroy()4808 Paragraph.Visible = false4809 Paragraph:Destroy()4810 end4811 4812 ParagraphV:Update()4813 4814 return ParagraphV4815 end4816 4817 -- Slider4818 function Tab:CreateSlider(SliderSettings, Flag)4819 local SliderV = { IgnoreConfig = false, Class = "Slider", Settings = SliderSettings }4820 4821 SliderSettings = Kwargify({4822 Name = "Slider",4823 Range = {0, 200},4824 Increment = 1,4825 CurrentValue = 100,4826 Callback = function(Value)4827 4828 end,4829 }, SliderSettings or {})4830 4831 local SLDragging = false4832 local Slider = Elements.Template.Slider:Clone()4833 Slider.Name = SliderSettings.Name .. " - Slider"4834 Slider.Title.Text = SliderSettings.Name4835 Slider.Main.color.Color = SolidSequence(DarkTheme.Slider)4836 Slider.Main.UIStroke.color.Color = SolidSequence(DarkTheme.Slider)4837 Slider.Visible = true4838 Slider.Parent = TabPage4839 4840 Slider.BackgroundTransparency = 14841 Slider.UIStroke.Transparency = 14842 Slider.Title.TextTransparency = 14843 4844 TweenService:Create(Slider, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()4845 TweenService:Create(Slider.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()4846 TweenService:Create(Slider.Title, Animation.Reveal, {TextTransparency = 0}):Play() 4847 4848 Slider.Main.Progress.Size = UDim2.new(0, Slider.Main.AbsoluteSize.X * ((SliderSettings.CurrentValue + SliderSettings.Range[1]) / (SliderSettings.Range[2] - SliderSettings.Range[1])) > 5 and Slider.Main.AbsoluteSize.X * (SliderSettings.CurrentValue / (SliderSettings.Range[2] - SliderSettings.Range[1])) or 5, 1, 0)4849 4850 Slider.Value.Text = tostring(SliderSettings.CurrentValue)4851 SliderV.CurrentValue = Slider.Value.Text4852 4853 SliderSettings.Callback(SliderSettings.CurrentValue)4854 4855 Slider["MouseEnter"]:Connect(function()4856 tween(Slider.UIStroke, {Color = DarkTheme.Primary})4857 end)4858 4859 Slider["MouseLeave"]:Connect(function()4860 tween(Slider.UIStroke, {Color = DarkTheme.Icon})4861 end)4862 4863 Slider.Interact.InputBegan:Connect(function(Input)4864 if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then 4865 SLDragging = true 4866 end 4867 end)4868 4869 Slider.Interact.InputEnded:Connect(function(Input) 4870 if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then 4871 SLDragging = false 4872 end 4873 end)4874 4875 Slider.Interact.MouseButton1Down:Connect(function()4876 local Current = Slider.Main.Progress.AbsolutePosition.X + Slider.Main.Progress.AbsoluteSize.X4877 local Start = Current4878 local Location4879 local Loop; Loop = RunService.Stepped:Connect(function()4880 if SLDragging then4881 Location = UserInputService:GetMouseLocation().X4882 Current = Current + 0.025 * (Location - Start)4883 4884 if Location < Slider.Main.AbsolutePosition.X then4885 Location = Slider.Main.AbsolutePosition.X4886 elseif Location > Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X then4887 Location = Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X4888 end4889 4890 if Current < Slider.Main.AbsolutePosition.X + 5 then4891 Current = Slider.Main.AbsolutePosition.X + 54892 elseif Current > Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X then4893 Current = Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X4894 end4895 4896 if Current <= Location and (Location - Start) < 0 then4897 Start = Location4898 elseif Current >= Location and (Location - Start) > 0 then4899 Start = Location4900 end4901 Slider.Main.Progress.Size = UDim2.new(0, Location - Slider.Main.AbsolutePosition.X, 1, 0)4902 local NewValue = SliderSettings.Range[1] + (Location - Slider.Main.AbsolutePosition.X) / Slider.Main.AbsoluteSize.X * (SliderSettings.Range[2] - SliderSettings.Range[1])4903 4904 NewValue = math.floor(NewValue / SliderSettings.Increment + 0.5) * (SliderSettings.Increment * 10000000) / 100000004905 4906 Slider.Value.Text = tostring(NewValue)4907 4908 if SliderSettings.CurrentValue ~= NewValue then4909 local Success, Response = pcall(function()4910 SliderSettings.Callback(NewValue)4911 end)4912 if not Success then4913 TweenService:Create(Slider, Animation.Reveal, {BackgroundTransparency = 0}):Play()4914 TweenService:Create(Slider, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()4915 TweenService:Create(Slider.UIStroke, Animation.Reveal, {Transparency = 1}):Play()4916 Slider.Title.Text = "Callback Error"4917 print("Luna Interface Suite | "..SliderSettings.Name.." Callback Error " ..tostring(Response))4918 wait(0.5)4919 Slider.Title.Text = SliderSettings.Name4920 TweenService:Create(Slider, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()4921 TweenService:Create(Slider, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()4922 TweenService:Create(Slider.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()4923 end4924 4925 SliderSettings.CurrentValue = NewValue4926 SliderV.CurrentValue = SliderSettings.CurrentValue4927 -- Luna.Flags[SliderSettings.Flag] = SliderSettings4928 end4929 else4930 TweenService:Create(Slider.Main.Progress, Animation.Slider, {Size = UDim2.new(0, Location - Slider.Main.AbsolutePosition.X > 5 and Location - Slider.Main.AbsolutePosition.X or 5, 1, 0)}):Play()4931 Loop:Disconnect()4932 end4933 end)4934 end)4935 4936 local function Set(NewVal, bleh)4937 4938 NewVal = NewVal or SliderSettings.CurrentValue4939 4940 TweenService:Create(Slider.Main.Progress, Animation.SliderSet, {Size = UDim2.new(0, Slider.Main.AbsoluteSize.X * ((NewVal + SliderSettings.Range[1]) / (SliderSettings.Range[2] - SliderSettings.Range[1])) > 5 and Slider.Main.AbsoluteSize.X * (NewVal / (SliderSettings.Range[2] - SliderSettings.Range[1])) or 5, 1, 0)}):Play()4941 if not bleh then Slider.Value.Text = tostring(NewVal) end4942 local Success, Response = pcall(function()4943 SliderSettings.Callback(NewVal)4944 end)4945 if not Success then4946 TweenService:Create(Slider, Animation.Reveal, {BackgroundTransparency = 0}):Play()4947 TweenService:Create(Slider, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()4948 TweenService:Create(Slider.UIStroke, Animation.Reveal, {Transparency = 1}):Play()4949 Slider.Title.Text = "Callback Error"4950 print("Luna Interface Suite | "..SliderSettings.Name.." Callback Error " ..tostring(Response))4951 wait(0.5)4952 Slider.Title.Text = SliderSettings.Name4953 TweenService:Create(Slider, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()4954 TweenService:Create(Slider, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()4955 TweenService:Create(Slider.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()4956 end4957 4958 SliderSettings.CurrentValue = NewVal4959 SliderV.CurrentValue = SliderSettings.CurrentValue4960 -- Luna.Flags[SliderSettings.Flag] = SliderSettings4961 4962 end4963 4964 function SliderV:UpdateValue(Value)4965 Set(tonumber(Value))4966 end 4967 4968 Slider.Value:GetPropertyChangedSignal("Text"):Connect(function()4969 local text = Slider.Value.Text4970 if not tonumber(text) and text ~= "." then4971 Slider.Value.Text = text:match("[0-9.]*") or ""4972 end4973 if SliderSettings.Range[2] < (tonumber(Slider.Value.Text) or 0) then Slider.Value.Text = SliderSettings.Range[2] end4974 Slider.Value.Size = UDim2.fromOffset(Slider.Value.TextBounds.X, 23)4975 Set(tonumber(Slider.Value.Text), true)4976 end)4977 4978 function SliderV:Set(NewSliderSettings)4979 NewSliderSettings = Kwargify({4980 Name = SliderSettings.Name,4981 Range = SliderSettings.Range,4982 Increment = SliderSettings.Increment,4983 CurrentValue = SliderSettings.CurrentValue,4984 Callback = SliderSettings.Callback4985 }, NewSliderSettings or {})4986 4987 SliderSettings = NewSliderSettings4988 SliderV.Settings = NewSliderSettings4989 4990 Slider.Name = SliderSettings.Name .. " - Slider"4991 Slider.Title.Text = SliderSettings.Name4992 Slider.Main.color.Color = SolidSequence(DarkTheme.Slider)4993 Slider.Main.UIStroke.color.Color = SolidSequence(DarkTheme.Slider)4994 4995 Set()4996 4997 -- Luna.Flags[SliderSettings.Flag] = SliderSettings4998 end4999 5000 function SliderV:Destroy()5001 Slider.Visible = false5002 Slider:Destroy()5003 end5004 5005 if Flag then5006 Luna.Options[Flag] = SliderV5007 end5008 5009 LunaUI.ThemeRemote:GetPropertyChangedSignal("Value"):Connect(function()5010 Slider.Main.color.Color = Luna.ThemeGradient5011 Slider.Main.UIStroke.color.Color = Luna.ThemeGradient5012 end)5013 5014 return SliderV5015 5016 end5017 5018 -- Toggle5019 function Tab:CreateToggle(ToggleSettings, Flag) 5020 local ToggleV = { IgnoreConfig = false, Class = "Toggle" }5021 5022 ToggleSettings = Kwargify({5023 Name = "Toggle",5024 Description = nil,5025 CurrentValue = false,5026 Callback = function(Value)5027 end,5028 }, ToggleSettings or {})5029 5030 5031 local Toggle5032 5033 if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then5034 Toggle = Elements.Template.ToggleDesc:Clone()5035 else5036 Toggle = Elements.Template.Toggle:Clone()5037 end5038 5039 Toggle.Visible = true5040 Toggle.Parent = TabPage5041 Toggle.toggle.color.Color = SolidSequence(DarkTheme.Toggle)5042 Toggle.toggle.UIStroke.color.Color = SolidSequence(DarkTheme.Toggle)5043 5044 Toggle.Name = ToggleSettings.Name .. " - Toggle"5045 Toggle.Title.Text = ToggleSettings.Name5046 if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then5047 Toggle.Desc.Text = ToggleSettings.Description5048 end5049 5050 Toggle.UIStroke.Transparency = 15051 Toggle.Title.TextTransparency = 15052 if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then5053 Toggle.Desc.TextTransparency = 15054 end5055 5056 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5057 if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then5058 TweenService:Create(Toggle.Desc, Animation.Reveal, {TextTransparency = 0}):Play()5059 end5060 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5061 TweenService:Create(Toggle.Title, Animation.Reveal, {TextTransparency = 0}):Play() 5062 5063 local function Set(bool)5064 if bool then5065 Toggle.toggle.color.Enabled = true5066 tween(Toggle.toggle, {BackgroundTransparency = 0})5067 5068 Toggle.toggle.UIStroke.color.Enabled = true5069 tween(Toggle.toggle.UIStroke, {Color = DarkTheme.Outline})5070 5071 tween(Toggle.toggle.val, {BackgroundColor3 = Color3.fromRGB(255,255,255), Position = UDim2.new(1,-23,0.5,0), BackgroundTransparency = 0.45})5072 else5073 Toggle.toggle.color.Enabled = false5074 Toggle.toggle.UIStroke.color.Enabled = false5075 5076 Toggle.toggle.UIStroke.Color = DarkTheme.SliderIcon5077 5078 tween(Toggle.toggle, {BackgroundTransparency = 1})5079 5080 tween(Toggle.toggle.val, {BackgroundColor3 = DarkTheme.SliderIcon, Position = UDim2.new(0,5,0.5,0), BackgroundTransparency = 0})5081 end5082 5083 ToggleV.CurrentValue = bool5084 end5085 5086 Toggle.Interact.MouseButton1Click:Connect(function()5087 ToggleSettings.CurrentValue = not ToggleSettings.CurrentValue5088 Set(ToggleSettings.CurrentValue)5089 5090 local Success, Response = pcall(function()5091 ToggleSettings.Callback(ToggleSettings.CurrentValue)5092 end)5093 if not Success then5094 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0}):Play()5095 TweenService:Create(Toggle, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()5096 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 1}):Play()5097 Toggle.Title.Text = "Callback Error"5098 print("Luna Interface Suite | "..ToggleSettings.Name.." Callback Error " ..tostring(Response))5099 wait(0.5)5100 Toggle.Title.Text = ToggleSettings.Name5101 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5102 TweenService:Create(Toggle, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()5103 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5104 end5105 end)5106 5107 Toggle["MouseEnter"]:Connect(function()5108 tween(Toggle.UIStroke, {Color = DarkTheme.Primary})5109 end)5110 5111 Toggle["MouseLeave"]:Connect(function()5112 tween(Toggle.UIStroke, {Color = DarkTheme.Icon})5113 end)5114 5115 if ToggleSettings.CurrentValue then5116 Set(ToggleSettings.CurrentValue)5117 local Success, Response = pcall(function()5118 ToggleSettings.Callback(ToggleSettings.CurrentValue)5119 end)5120 if not Success then5121 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0}):Play()5122 TweenService:Create(Toggle, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()5123 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 1}):Play()5124 Toggle.Title.Text = "Callback Error"5125 print("Luna Interface Suite | "..ToggleSettings.Name.." Callback Error " ..tostring(Response))5126 wait(0.5)5127 Toggle.Title.Text = ToggleSettings.Name5128 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5129 TweenService:Create(Toggle, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()5130 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5131 end5132 end5133 5134 function ToggleV:UpdateState(State)5135 ToggleSettings.CurrentValue = State5136 Set(ToggleSettings.CurrentValue)5137 end5138 5139 function ToggleV:Set(NewToggleSettings)5140 5141 NewToggleSettings = Kwargify({5142 Name = ToggleSettings.Name,5143 Description = ToggleSettings.Description,5144 CurrentValue = ToggleSettings.CurrentValue,5145 Callback = ToggleSettings.Callback5146 }, NewToggleSettings or {})5147 5148 ToggleV.Settings = NewToggleSettings5149 ToggleSettings = NewToggleSettings5150 5151 Toggle.Name = ToggleSettings.Name .. " - Toggle"5152 Toggle.Title.Text = ToggleSettings.Name5153 if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" and Toggle.Desc ~= nil then5154 Toggle.Desc.Text = ToggleSettings.Description5155 end5156 5157 Set(ToggleSettings.CurrentValue)5158 5159 ToggleV.CurrentValue = ToggleSettings.CurrentValue5160 5161 local Success, Response = pcall(function()5162 ToggleSettings.Callback(ToggleSettings.CurrentValue)5163 end)5164 if not Success then5165 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0}):Play()5166 TweenService:Create(Toggle, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()5167 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 0}):Play()5168 Toggle.Title.Text = "Callback Error"5169 print("Luna Interface Suite | "..ToggleSettings.Name.." Callback Error " ..tostring(Response))5170 wait(0.5)5171 Toggle.Title.Text = ToggleSettings.Name5172 TweenService:Create(Toggle, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5173 TweenService:Create(Toggle, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()5174 TweenService:Create(Toggle.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5175 end5176 end5177 5178 function ToggleV:Destroy()5179 Toggle.Visible = false5180 Toggle:Destroy()5181 end5182 5183 LunaUI.ThemeRemote:GetPropertyChangedSignal("Value"):Connect(function()5184 Toggle.toggle.color.Color = Luna.ThemeGradient5185 Toggle.toggle.UIStroke.color.Color = Luna.ThemeGradient5186 end)5187 5188 if Flag then5189 Luna.Options[Flag] = ToggleV5190 end5191 5192 return ToggleV5193 5194 end5195 5196 -- Bind5197 function Tab:CreateBind(BindSettings, Flag)5198 local BindV = { Class = "Keybind", IgnoreConfig = false, Settings = BindSettings, Active = false }5199 5200 BindSettings = Kwargify({5201 Name = "Bind",5202 Description = nil,5203 CurrentBind = "Q",5204 HoldToInteract = false, -- setting this makes the Bind in toggle mode5205 Callback = function(Bind)5206 -- The function that takes place when the Bind is pressed5207 -- The variable (Bind) is a boolean for whether the Bind is being held or not (HoldToInteract needs to be true) or whether the Bind is currently active5208 end,5209 5210 OnChangedCallback = function(Bind)5211 -- The function that takes place when the binded key changes5212 -- The variable (Bind) is a Enum.KeyCode for the new Binded Key5213 end,5214 }, BindSettings or {})5215 5216 local CheckingForKey = false5217 5218 local Bind5219 if BindSettings.Description ~= nil and BindSettings.Description ~= "" then5220 Bind = Elements.Template.BindDesc:Clone()5221 else5222 Bind = Elements.Template.Bind:Clone()5223 end5224 5225 Bind.Visible = true5226 Bind.Parent = TabPage5227 5228 Bind.Name = BindSettings.Name5229 Bind.Title.Text = BindSettings.Name5230 if BindSettings.Description ~= nil and BindSettings.Description ~= "" then5231 Bind.Desc.Text = BindSettings.Description5232 end5233 5234 Bind.Title.TextTransparency = 15235 if BindSettings.Description ~= nil and BindSettings.Description ~= "" then5236 Bind.Desc.TextTransparency = 15237 end5238 Bind.BindFrame.BackgroundTransparency = 15239 Bind.BindFrame.UIStroke.Transparency = 15240 Bind.BindFrame.BindBox.TextTransparency = 15241 5242 TweenService:Create(Bind, Animation.Normal, {BackgroundTransparency = 0.5}):Play()5243 TweenService:Create(Bind.Title, Animation.Normal, {TextTransparency = 0}):Play()5244 if BindSettings.Description ~= nil and BindSettings.Description ~= "" then5245 TweenService:Create(Bind.Desc, Animation.Normal, {TextTransparency = 0}):Play()5246 end5247 TweenService:Create(Bind.BindFrame, Animation.Normal, {BackgroundTransparency = 0.9}):Play()5248 TweenService:Create(Bind.BindFrame.UIStroke, Animation.Normal, {Transparency = 0.3}):Play()5249 TweenService:Create(Bind.BindFrame.BindBox, Animation.Normal, {TextTransparency = 0}):Play()5250 5251 5252 Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind5253 Bind.BindFrame.BindBox.Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 20, 0, 42)5254 5255 Bind.BindFrame.BindBox.Focused:Connect(function()5256 CheckingForKey = true5257 Bind.BindFrame.BindBox.Text = ""5258 end)5259 5260 Bind.BindFrame.BindBox.FocusLost:Connect(function()5261 CheckingForKey = false5262 if Bind.BindFrame.BindBox.Text == (nil or "") then5263 Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind5264 end5265 end)5266 5267 Bind["MouseEnter"]:Connect(function()5268 tween(Bind.UIStroke, {Color = DarkTheme.Primary})5269 end)5270 5271 Bind["MouseLeave"]:Connect(function()5272 tween(Bind.UIStroke, {Color = DarkTheme.Icon})5273 end)5274 UserInputService.InputBegan:Connect(function(input, processed)5275 5276 if CheckingForKey then5277 if input.KeyCode ~= Enum.KeyCode.Unknown and input.KeyCode ~= Window.Bind then5278 local SplitMessage = string.split(tostring(input.KeyCode), ".")5279 local NewKeyNoEnum = SplitMessage[3]5280 Bind.BindFrame.BindBox.Text = tostring(NewKeyNoEnum)5281 BindSettings.CurrentBind = tostring(NewKeyNoEnum)5282 local Success, Response = pcall(function()5283 BindSettings.OnChangedCallback(BindSettings.CurrentBind)5284 end)5285 if not Success then5286 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0}):Play()5287 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()5288 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 1}):Play()5289 Bind.Title.Text = "Callback Error"5290 print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))5291 wait(0.5)5292 Bind.Title.Text = BindSettings.Name5293 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5294 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()5295 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5296 end5297 Bind.BindFrame.BindBox:ReleaseFocus()5298 end5299 elseif BindSettings.CurrentBind ~= nil and (input.KeyCode == Enum.KeyCode[BindSettings.CurrentBind] and not processed) then -- Test5300 local Held = true5301 local Connection5302 Connection = input.Changed:Connect(function(prop)5303 if prop == "UserInputState" then5304 Connection:Disconnect()5305 Held = false5306 end5307 end)5308 5309 if not BindSettings.HoldToInteract then5310 BindV.Active = not BindV.Active5311 local Success, Response = pcall(function()5312 BindSettings.Callback(BindV.Active)5313 end)5314 if not Success then5315 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0}):Play()5316 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()5317 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 1}):Play()5318 Bind.Title.Text = "Callback Error"5319 print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))5320 wait(0.5)5321 Bind.Title.Text = BindSettings.Name5322 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5323 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()5324 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5325 end5326 else5327 wait(0.1)5328 if Held then5329 local Loop; Loop = RunService.Stepped:Connect(function()5330 if not Held then5331 local Success, Response = pcall(function()5332 BindSettings.Callback(false)5333 end)5334 if not Success then5335 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0}):Play()5336 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()5337 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 1}):Play()5338 Bind.Title.Text = "Callback Error"5339 print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))5340 wait(0.5)5341 Bind.Title.Text = BindSettings.Name5342 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5343 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()5344 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5345 end 5346 Loop:Disconnect()5347 else5348 local Success, Response = pcall(function()5349 BindSettings.Callback(true)5350 end)5351 if not Success then5352 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0}):Play()5353 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()5354 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 1}):Play()5355 Bind.Title.Text = "Callback Error"5356 print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))5357 wait(0.5)5358 Bind.Title.Text = BindSettings.Name5359 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5360 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()5361 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5362 end5363 end5364 end) 5365 end5366 end5367 end5368 end)5369 5370 Bind.BindFrame.BindBox:GetPropertyChangedSignal("Text"):Connect(function()5371 TweenService:Create(Bind.BindFrame, TweenInfo.new(0.55, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 20, 0, 30)}):Play()5372 end)5373 5374 function BindV:Set(NewBindSettings)5375 5376 NewBindSettings = Kwargify({5377 Name = BindSettings.Name,5378 Description = BindSettings.Description,5379 CurrentBind = BindSettings.CurrentBind,5380 HoldToInteract = BindSettings.HoldToInteract,5381 Callback = BindSettings.Callback5382 }, NewBindSettings or {})5383 5384 BindV.Settings = NewBindSettings5385 BindSettings = NewBindSettings5386 5387 Bind.Name = BindSettings.Name5388 Bind.Title.Text = BindSettings.Name5389 if BindSettings.Description ~= nil and BindSettings.Description ~= "" and Bind.Desc ~= nil then5390 Bind.Desc.Text = BindSettings.Description5391 end5392 5393 Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind5394 Bind.BindFrame.Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 20, 0, 42)5395 5396 5397 BindV.CurrentBind = BindSettings.CurrentBind5398 end5399 5400 function BindV:Destroy()5401 Bind.Visible = false5402 Bind:Destroy()5403 end5404 5405 if Flag then5406 Luna.Options[Flag] = BindV5407 end5408 5409 -- Luna.Flags[BindSettings.Flag] = BindSettings5410 5411 return BindV5412 5413 end5414 5415 function Tab:CreateKeybind(BindSettings)5416 5417 BindSettings = Kwargify({5418 Name = "Bind",5419 Description = nil,5420 CurrentBind = "Q",5421 HoldToInteract = false, -- setting this makes the Bind in toggle mode5422 Callback = function(Bind)5423 -- The function that takes place when the Bind is pressed5424 -- The variable (Bind) is a boolean for whether the Bind is being held or not (HoldToInteract needs to be true) or whether the Bind is currently active5425 end5426 }, BindSettings or {})5427 5428 local BindV = { Settings = BindSettings, Active = false }5429 local CheckingForKey = false5430 5431 local Bind5432 if BindSettings.Description ~= nil and BindSettings.Description ~= "" then5433 Bind = Elements.Template.BindDesc:Clone()5434 else5435 Bind = Elements.Template.Bind:Clone()5436 end5437 5438 Bind.Visible = true5439 Bind.Parent = TabPage5440 5441 Bind.Name = BindSettings.Name5442 Bind.Title.Text = BindSettings.Name5443 if BindSettings.Description ~= nil and BindSettings.Description ~= "" then5444 Bind.Desc.Text = BindSettings.Description5445 end5446 5447 Bind.Title.TextTransparency = 15448 if BindSettings.Description ~= nil and BindSettings.Description ~= "" then5449 Bind.Desc.TextTransparency = 15450 end5451 Bind.BindFrame.BackgroundTransparency = 15452 Bind.BindFrame.UIStroke.Transparency = 15453 Bind.BindFrame.BindBox.TextTransparency = 15454 5455 TweenService:Create(Bind, Animation.Normal, {BackgroundTransparency = 0.5}):Play()5456 TweenService:Create(Bind.Title, Animation.Normal, {TextTransparency = 0}):Play()5457 if BindSettings.Description ~= nil and BindSettings.Description ~= "" then5458 TweenService:Create(Bind.Desc, Animation.Normal, {TextTransparency = 0}):Play()5459 end5460 TweenService:Create(Bind.BindFrame, Animation.Normal, {BackgroundTransparency = 0.9}):Play()5461 TweenService:Create(Bind.BindFrame.UIStroke, Animation.Normal, {Transparency = 0.3}):Play()5462 TweenService:Create(Bind.BindFrame.BindBox, Animation.Normal, {TextTransparency = 0}):Play()5463 5464 5465 Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind5466 Bind.BindFrame.BindBox.Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 16, 0, 42)5467 5468 Bind.BindFrame.BindBox.Focused:Connect(function()5469 CheckingForKey = true5470 Bind.BindFrame.BindBox.Text = ""5471 end)5472 5473 Bind.BindFrame.BindBox.FocusLost:Connect(function()5474 CheckingForKey = false5475 if Bind.BindFrame.BindBox.Text == (nil or "") then5476 Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind5477 end5478 end)5479 5480 Bind["MouseEnter"]:Connect(function()5481 tween(Bind.UIStroke, {Color = DarkTheme.Primary})5482 end)5483 5484 Bind["MouseLeave"]:Connect(function()5485 tween(Bind.UIStroke, {Color = DarkTheme.Icon})5486 end)5487 UserInputService.InputBegan:Connect(function(input, processed)5488 5489 if CheckingForKey then5490 if input.KeyCode ~= Enum.KeyCode.Unknown and input.KeyCode ~= Enum.KeyCode.K then5491 local SplitMessage = string.split(tostring(input.KeyCode), ".")5492 local NewKeyNoEnum = SplitMessage[3]5493 Bind.BindFrame.BindBox.Text = tostring(NewKeyNoEnum)5494 BindSettings.CurrentBind = tostring(NewKeyNoEnum)5495 Bind.BindFrame.BindBox:ReleaseFocus()5496 end5497 elseif BindSettings.CurrentBind ~= nil and (input.KeyCode == Enum.KeyCode[BindSettings.CurrentBind] and not processed) then -- Test5498 local Held = true5499 local Connection5500 Connection = input.Changed:Connect(function(prop)5501 if prop == "UserInputState" then5502 Connection:Disconnect()5503 Held = false5504 end5505 end)5506 5507 if not BindSettings.HoldToInteract then5508 BindV.Active = not BindV.Active5509 local Success, Response = pcall(function()5510 BindSettings.Callback(BindV.Active)5511 end)5512 if not Success then5513 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0}):Play()5514 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()5515 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 1}):Play()5516 Bind.Title.Text = "Callback Error"5517 print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))5518 wait(0.5)5519 Bind.Title.Text = BindSettings.Name5520 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5521 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()5522 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5523 end5524 else5525 wait(0.1)5526 if Held then5527 local Loop; Loop = RunService.Stepped:Connect(function()5528 if not Held then5529 local Success, Response = pcall(function()5530 BindSettings.Callback(false)5531 end)5532 if not Success then5533 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0}):Play()5534 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()5535 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 1}):Play()5536 Bind.Title.Text = "Callback Error"5537 print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))5538 wait(0.5)5539 Bind.Title.Text = BindSettings.Name5540 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5541 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()5542 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5543 end 5544 Loop:Disconnect()5545 else5546 local Success, Response = pcall(function()5547 BindSettings.Callback(true)5548 end)5549 if not Success then5550 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0}):Play()5551 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()5552 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 1}):Play()5553 Bind.Title.Text = "Callback Error"5554 print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))5555 wait(0.5)5556 Bind.Title.Text = BindSettings.Name5557 TweenService:Create(Bind, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5558 TweenService:Create(Bind, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()5559 TweenService:Create(Bind.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5560 end5561 end5562 end) 5563 end5564 end5565 end5566 end)5567 5568 Bind.BindFrame.BindBox:GetPropertyChangedSignal("Text"):Connect(function()5569 TweenService:Create(Bind.BindFrame, TweenInfo.new(0.55, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 16, 0, 30)}):Play()5570 end)5571 5572 function BindV:Set(NewBindSettings)5573 5574 NewBindSettings = Kwargify({5575 Name = BindSettings.Name,5576 Description = BindSettings.Description,5577 CurrentBind = BindSettings.CurrentBind,5578 HoldToInteract = BindSettings.HoldToInteract,5579 Callback = BindSettings.Callback5580 }, NewBindSettings or {})5581 5582 BindV.Settings = NewBindSettings5583 BindSettings = NewBindSettings5584 5585 Bind.Name = BindSettings.Name5586 Bind.Title.Text = BindSettings.Name5587 if BindSettings.Description ~= nil and BindSettings.Description ~= "" and Bind.Desc ~= nil then5588 Bind.Desc.Text = BindSettings.Description5589 end5590 5591 Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind5592 Bind.BindFrame.BindBox.Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 16, 0, 42)5593 5594 -- Luna.Flags[BindSettings.Flag] = BindSettings5595 5596 end5597 5598 function BindV:Destroy()5599 Bind.Visible = false5600 Bind:Destroy()5601 end5602 5603 -- Luna.Flags[BindSettings.Flag] = BindSettings5604 5605 return BindV5606 5607 end5608 5609 -- Dynamic Input5610 function Tab:CreateInput(InputSettings, Flag)5611 local InputV = { IgnoreConfig = false, Class = "Input", Settings = InputSettings }5612 5613 InputSettings = Kwargify({5614 Name = "Dynamic Input",5615 Description = nil,5616 CurrentValue = "",5617 PlaceholderText = "Input Placeholder",5618 RemoveTextAfterFocusLost = false,5619 Numeric = false,5620 Enter = false,5621 MaxCharacters = nil,5622 Callback = function(Text)5623 5624 end, -- 525625 }, InputSettings or {})5626 5627 InputV.CurrentValue = InputSettings.CurrentValue5628 5629 local descriptionbool5630 if InputSettings.Description ~= nil and InputSettings.Description ~= "" then5631 descriptionbool = true5632 end5633 5634 local Input 5635 if descriptionbool then5636 Input = Elements.Template.InputDesc:Clone()5637 else5638 Input = Elements.Template.Input:Clone()5639 end5640 5641 Input.Name = InputSettings.Name5642 Input.Title.Text = InputSettings.Name5643 if descriptionbool then Input.Desc.Text = InputSettings.Description end5644 Input.Visible = true5645 Input.Parent = TabPage5646 5647 Input.BackgroundTransparency = 15648 Input.UIStroke.Transparency = 15649 Input.Title.TextTransparency = 15650 if descriptionbool then Input.Desc.TextTransparency = 1 end5651 Input.InputFrame.BackgroundTransparency = 15652 Input.InputFrame.UIStroke.Transparency = 15653 Input.InputFrame.InputBox.TextTransparency = 15654 5655 TweenService:Create(Input, Animation.Normal, {BackgroundTransparency = 0.5}):Play()5656 TweenService:Create(Input.UIStroke, Animation.Normal, {Transparency = 0.5}):Play()5657 TweenService:Create(Input.Title, Animation.Normal, {TextTransparency = 0}):Play() 5658 if descriptionbool then TweenService:Create(Input.Desc, Animation.Normal, {TextTransparency = 0}):Play() end5659 TweenService:Create(Input.InputFrame, Animation.Normal, {BackgroundTransparency = 0.9}):Play()5660 TweenService:Create(Input.InputFrame.UIStroke, Animation.Normal, {Transparency = 0.3}):Play()5661 TweenService:Create(Input.InputFrame.InputBox, Animation.Normal, {TextTransparency = 0}):Play()5662 5663 Input.InputFrame.InputBox.PlaceholderText = InputSettings.PlaceholderText5664 Input.InputFrame.Size = UDim2.new(0, Input.InputFrame.InputBox.TextBounds.X + 52, 0, 30)5665 5666 Input.InputFrame.InputBox.FocusLost:Connect(function(bleh)5667 5668 if InputSettings.Enter then5669 if bleh then5670 local Success, Response = pcall(function()5671 InputSettings.Callback(Input.InputFrame.InputBox.Text)5672 InputV.CurrentValue = Input.InputFrame.InputBox.Text5673 end)5674 if not Success then5675 TweenService:Create(Input, Animation.Reveal, {BackgroundTransparency = 0}):Play()5676 TweenService:Create(Input, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()5677 TweenService:Create(Input.UIStroke, Animation.Reveal, {Transparency = 1}):Play()5678 Input.Title.Text = "Callback Error"5679 print("Luna Interface Suite | "..InputSettings.Name.." Callback Error " ..tostring(Response))5680 wait(0.5)5681 Input.Title.Text = InputSettings.Name5682 TweenService:Create(Input, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5683 TweenService:Create(Input, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()5684 TweenService:Create(Input.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5685 end5686 end5687 end5688 5689 if InputSettings.RemoveTextAfterFocusLost then5690 Input.InputFrame.InputBox.Text = ""5691 end5692 5693 end)5694 5695 if InputSettings.Numeric then5696 Input.InputFrame.InputBox:GetPropertyChangedSignal("Text"):Connect(function()5697 local text = Input.InputFrame.InputBox.Text5698 if not tonumber(text) and text ~= "." then5699 Input.InputFrame.InputBox.Text = text:match("[0-9.]*") or ""5700 end5701 end)5702 end5703 5704 Input.InputFrame.InputBox:GetPropertyChangedSignal("Text"):Connect(function()5705 if tonumber(InputSettings.MaxCharacters) then5706 if (#Input.InputFrame.InputBox.Text - 1) == InputSettings.MaxCharacters then5707 Input.InputFrame.InputBox.Text = Input.InputFrame.InputBox.Text:sub(1, InputSettings.MaxCharacters)5708 end5709 end5710 TweenService:Create(Input.InputFrame, TweenInfo.new(0.55, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Size = UDim2.new(0, Input.InputFrame.InputBox.TextBounds.X + 52, 0, 30)}):Play()5711 if not InputSettings.Enter then5712 local Success, Response = pcall(function()5713 InputSettings.Callback(Input.InputFrame.InputBox.Text)5714 end)5715 if not Success then5716 TweenService:Create(Input, Animation.Reveal, {BackgroundTransparency = 0}):Play()5717 TweenService:Create(Input, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()5718 TweenService:Create(Input.UIStroke, Animation.Reveal, {Transparency = 1}):Play()5719 Input.Title.Text = "Callback Error"5720 print("Luna Interface Suite | "..InputSettings.Name.." Callback Error " ..tostring(Response))5721 wait(0.5)5722 Input.Title.Text = InputSettings.Name5723 TweenService:Create(Input, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5724 TweenService:Create(Input, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()5725 TweenService:Create(Input.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5726 end5727 end5728 InputV.CurrentValue = Input.InputFrame.InputBox.Text 5729 end)5730 5731 Input["MouseEnter"]:Connect(function()5732 tween(Input.UIStroke, {Color = DarkTheme.Primary})5733 end)5734 5735 Input["MouseLeave"]:Connect(function()5736 tween(Input.UIStroke, {Color = DarkTheme.Icon})5737 end)5738 5739 5740 function InputV:Set(NewInputSettings)5741 5742 NewInputSettings = Kwargify(InputSettings, NewInputSettings or {})5743 5744 InputV.Settings = NewInputSettings5745 InputSettings = NewInputSettings5746 5747 Input.Name = InputSettings.Name5748 Input.Title.Text = InputSettings.Name5749 if InputSettings.Description ~= nil and InputSettings.Description ~= "" and Input.Desc ~= nil then5750 Input.Desc.Text = InputSettings.Description5751 end5752 5753 Input.InputFrame.InputBox:CaptureFocus()5754 Input.InputFrame.InputBox.Text = tostring(InputSettings.CurrentValue)5755 Input.InputFrame.InputBox:ReleaseFocus()5756 Input.InputFrame.Size = UDim2.new(0, Input.InputFrame.InputBox.TextBounds.X + 52, 0, 42)5757 5758 InputV.CurrentValue = InputSettings.CurrentValue5759 end5760 5761 function InputV:Destroy()5762 Input.Visible = false5763 Input:Destroy()5764 end5765 5766 if Flag then5767 Luna.Options[Flag] = InputV5768 end5769 5770 5771 return InputV5772 5773 end5774 5775 -- Dropdown5776 function Tab:CreateDropdown(DropdownSettings, Flag)5777 local DropdownV = { IgnoreConfig = false, Class = "Dropdown", Settings = DropdownSettings}5778 5779 DropdownSettings = Kwargify({5780 Name = "Dropdown",5781 Description = nil,5782 Options = {"Option 1", "Option 2"},5783 CurrentOption = {"Option 1"},5784 MultipleOptions = false,5785 SpecialType = nil, -- currently onl player, might add more soon5786 Callback = function(Options)5787 -- The function that takes place when the selected option is changed5788 -- The variable (Options) is a table of strings for the current selected options or a string if multioptions is false5789 end,5790 }, DropdownSettings or {})5791 5792 DropdownV.CurrentOption = DropdownSettings.CurrentOption5793 5794 local descriptionbool = false5795 if DropdownSettings.Description ~= nil and DropdownSettings.Description ~= "" then5796 descriptionbool = true5797 end5798 local closedsize5799 local openedsize5800 if descriptionbool then5801 closedsize = 485802 openedsize = 1705803 elseif not descriptionbool then5804 closedsize = 385805 openedsize = 1605806 end5807 local opened = false5808 5809 local Dropdown5810 if descriptionbool then Dropdown = Elements.Template.DropdownDesc:Clone() else Dropdown = Elements.Template.Dropdown:Clone() end5811 5812 Dropdown.Name = DropdownSettings.Name5813 Dropdown.Title.Text = DropdownSettings.Name5814 if descriptionbool then Dropdown.Desc.Text = DropdownSettings.Description end5815 5816 Dropdown.Parent = TabPage5817 Dropdown.Visible = true5818 5819 local function Toggle()5820 opened = not opened5821 if opened then5822 tween(Dropdown.icon, {Rotation = 180})5823 tween(Dropdown, {Size = UDim2.new(1, -25, 0, openedsize)})5824 else5825 tween(Dropdown.icon, {Rotation = 0})5826 tween(Dropdown, {Size = UDim2.new(1, -25, 0, closedsize)})5827 end5828 end5829 5830 local function SafeCallback(param, c2)5831 local Success, Response = pcall(function()5832 DropdownSettings.Callback(param)5833 end)5834 if not Success then5835 TweenService:Create(Dropdown, Animation.Reveal, {BackgroundTransparency = 0}):Play()5836 TweenService:Create(Dropdown, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()5837 TweenService:Create(Dropdown.UIStroke, Animation.Reveal, {Transparency = 1}):Play()5838 Dropdown.Title.Text = "Callback Error"5839 print("Luna Interface Suite | "..DropdownSettings.Name.." Callback Error " ..tostring(Response))5840 wait(0.5)5841 Dropdown.Title.Text = DropdownSettings.Name5842 TweenService:Create(Dropdown, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()5843 TweenService:Create(Dropdown, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()5844 TweenService:Create(Dropdown.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()5845 end5846 if Success and c2 then5847 c2()5848 end5849 end5850 5851 -- fixed by justhey5852 Dropdown.Selected:GetPropertyChangedSignal("Text"):Connect(function()5853 local text = Dropdown.Selected.Text:lower()5854 for _, Item in ipairs(Dropdown.List:GetChildren()) do5855 if Item:IsA("TextLabel") and Item.Name ~= "Template" then5856 Item.Visible = text == "" or string.find(Item.Name:lower(), text, 1, true) ~= nil5857 end5858 end5859 end)5860 5861 5862 local function Clear()5863 for _, option in ipairs(Dropdown.List:GetChildren()) do5864 if option.ClassName == "TextLabel" and option.Name ~= "Template" then5865 option:Destroy()5866 end5867 end5868 end5869 5870 local function ActivateColorSingle(name)5871 for _, Option in pairs(Dropdown.List:GetChildren()) do5872 if Option.ClassName == "TextLabel" and Option.Name ~= "Template" then5873 tween(Option, {BackgroundTransparency = 0.98})5874 end5875 end5876 5877 Toggle()5878 tween(Dropdown.List[name], {BackgroundTransparency = 0.95, TextColor3 = Color3.fromRGB(240,240,240)})5879 end5880 5881 local function Refresh()5882 Clear()5883 for i,v in pairs(DropdownSettings.Options) do5884 local Option = Dropdown.List.Template:Clone()5885 local optionhover = false5886 Option.Text = v5887 if v == "Template" then v = "Template (Name)" end5888 Option.Name = v5889 Option.Interact.MouseButton1Click:Connect(function()5890 local bleh5891 if DropdownSettings.MultipleOptions then5892 if table.find(DropdownSettings.CurrentOption, v) then5893 RemoveTable(DropdownSettings.CurrentOption, v)5894 DropdownV.CurrentOption = DropdownSettings.CurrentOption5895 if not optionhover then5896 tween(Option, {TextColor3 = Color3.fromRGB(200,200,200)})5897 end5898 tween(Option, {BackgroundTransparency = 0.98})5899 else5900 table.insert(DropdownSettings.CurrentOption, v)5901 DropdownV.CurrentOption = DropdownSettings.CurrentOption5902 tween(Option, {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})5903 end5904 bleh = DropdownSettings.CurrentOption5905 else5906 DropdownSettings.CurrentOption = {v}5907 bleh = v5908 DropdownV.CurrentOption = bleh5909 ActivateColorSingle(v)5910 end5911 5912 SafeCallback(bleh, function()5913 if DropdownSettings.MultipleOptions then5914 if DropdownSettings.CurrentOption and type(DropdownSettings.CurrentOption) == "table" then5915 if #DropdownSettings.CurrentOption == 1 then5916 Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1]5917 elseif #DropdownSettings.CurrentOption == 0 then5918 Dropdown.Selected.PlaceholderText = "None"5919 else5920 Dropdown.Selected.PlaceholderText = unpackt(DropdownSettings.CurrentOption)5921 end5922 else5923 DropdownSettings.CurrentOption = {}5924 Dropdown.Selected.PlaceholderText = "None"5925 end5926 end5927 if not DropdownSettings.MultipleOptions then5928 Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1] or "None"5929 end5930 Dropdown.Selected.Text = ""5931 end)5932 end)5933 Option.Visible = true5934 Option.Parent = Dropdown.List5935 Option.MouseEnter:Connect(function()5936 optionhover = true5937 if Option.BackgroundTransparency == 0.95 then5938 return5939 else5940 tween(Option, {TextColor3 = Color3.fromRGB(240,240,240)})5941 end5942 end)5943 Option.MouseLeave:Connect(function()5944 optionhover = false5945 if Option.BackgroundTransparency == 0.95 then5946 return5947 else5948 tween(Option, {TextColor3 = Color3.fromRGB(200,200,200)})5949 end5950 end) 5951 end5952 end5953 5954 local function PlayerTableRefresh()5955 for i,v in pairs(DropdownSettings.Options) do5956 table.remove(DropdownSettings.Options, i)5957 end5958 5959 for i,v in pairs(Players:GetChildren()) do5960 table.insert(DropdownSettings.Options, v.Name)5961 end5962 end5963 5964 Dropdown.Interact.MouseButton1Click:Connect(function()5965 Toggle()5966 end)5967 5968 Dropdown["MouseEnter"]:Connect(function()5969 tween(Dropdown.UIStroke, {Color = DarkTheme.Primary})5970 end)5971 5972 Dropdown["MouseLeave"]:Connect(function()5973 tween(Dropdown.UIStroke, {Color = DarkTheme.Icon})5974 end)5975 5976 if DropdownSettings.SpecialType == "Player" then5977 5978 for i,v in pairs(DropdownSettings.Options) do5979 table.remove(DropdownSettings.Options, i)5980 end5981 PlayerTableRefresh()5982 DropdownSettings.CurrentOption = DropdownSettings.Options[1]5983 5984 Players.PlayerAdded:Connect(function() PlayerTableRefresh() end)5985 Players.PlayerRemoving:Connect(function() PlayerTableRefresh() end)5986 5987 end5988 5989 Refresh()5990 5991 if DropdownSettings.CurrentOption then5992 if type(DropdownSettings.CurrentOption) == "string" then5993 DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption}5994 end5995 if not DropdownSettings.MultipleOptions and type(DropdownSettings.CurrentOption) == "table" then5996 DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption[1]}5997 end5998 else5999 DropdownSettings.CurrentOption = {}6000 end6001 6002 local bleh, ind = nil,06003 for i,v in pairs(DropdownSettings.CurrentOption) do6004 ind = ind + 16005 end6006 if ind == 1 then bleh = DropdownSettings.CurrentOption[1] else bleh = DropdownSettings.CurrentOption end6007 SafeCallback(bleh)6008 if type(bleh) == "string" then 6009 tween(Dropdown.List[bleh], {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})6010 else6011 for i,v in pairs(bleh) do6012 tween(Dropdown.List[v], {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})6013 end6014 end6015 6016 if DropdownSettings.MultipleOptions then6017 if DropdownSettings.CurrentOption and type(DropdownSettings.CurrentOption) == "table" then6018 if #DropdownSettings.CurrentOption == 1 then6019 Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1]6020 elseif #DropdownSettings.CurrentOption == 0 then6021 Dropdown.Selected.PlaceholderText = "None"6022 else6023 Dropdown.Selected.PlaceholderText = unpackt(DropdownSettings.CurrentOption)6024 end6025 else6026 DropdownSettings.CurrentOption = {}6027 Dropdown.Selected.PlaceholderText = "None"6028 end6029 for _, name in pairs(DropdownSettings.CurrentOption) do6030 tween(Dropdown.List[name], {TextColor3 = Color3.fromRGB(227,227,227), BackgroundTransparency = 0.95})6031 end6032 else6033 Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1] or "None"6034 end6035 Dropdown.Selected.Text = ""6036 6037 function DropdownV:Set(NewDropdownSettings)6038 NewDropdownSettings = Kwargify(DropdownSettings, NewDropdownSettings or {})6039 6040 DropdownV.Settings = NewDropdownSettings6041 DropdownSettings = NewDropdownSettings6042 6043 Dropdown.Name = DropdownSettings.Name6044 Dropdown.Title.Text = DropdownSettings.Name6045 if DropdownSettings.Description ~= nil and DropdownSettings.Description ~= "" and Dropdown.Desc ~= nil then6046 Dropdown.Desc.Text = DropdownSettings.Description6047 end6048 6049 if DropdownSettings.SpecialType == "Player" then6050 6051 for i,v in pairs(DropdownSettings.Options) do6052 table.remove(DropdownSettings.Options, i)6053 end6054 PlayerTableRefresh()6055 DropdownSettings.CurrentOption = DropdownSettings.Options[1] 6056 Players.PlayerAdded:Connect(function() PlayerTableRefresh() end)6057 Players.PlayerRemoving:Connect(function() PlayerTableRefresh() end)6058 6059 end6060 6061 Refresh()6062 6063 if DropdownSettings.CurrentOption then6064 if type(DropdownSettings.CurrentOption) == "string" then6065 DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption}6066 end6067 if not DropdownSettings.MultipleOptions and type(DropdownSettings.CurrentOption) == "table" then6068 DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption[1]}6069 end6070 else6071 DropdownSettings.CurrentOption = {}6072 end6073 6074 local bleh, ind = nil,06075 for i,v in pairs(DropdownSettings.CurrentOption) do6076 ind = ind + 16077 end6078 if ind == 1 then bleh = DropdownSettings.CurrentOption[1] else bleh = DropdownSettings.CurrentOption end6079 SafeCallback(bleh)6080 for _, Option in pairs(Dropdown.List:GetChildren()) do6081 if Option.ClassName == "TextLabel" then6082 tween(Option, {TextColor3 = Color3.fromRGB(200,200,200), BackgroundTransparency = 0.98})6083 end6084 end6085 tween(Dropdown.List[bleh], {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})6086 6087 if DropdownSettings.MultipleOptions then6088 if DropdownSettings.CurrentOption and type(DropdownSettings.CurrentOption) == "table" then6089 if #DropdownSettings.CurrentOption == 1 then6090 Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1]6091 elseif #DropdownSettings.CurrentOption == 0 then6092 Dropdown.Selected.PlaceholderText = "None"6093 else6094 Dropdown.Selected.PlaceholderText = unpackt(DropdownSettings.CurrentOption)6095 end6096 else6097 DropdownSettings.CurrentOption = {}6098 Dropdown.Selected.PlaceholderText = "None"6099 end6100 for _, name in pairs(DropdownSettings.CurrentOption) do6101 tween(Dropdown.List[name], {TextColor3 = Color3.fromRGB(227,227,227), BackgroundTransparency = 0.95})6102 end6103 else6104 Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1] or "None"6105 end6106 Dropdown.Selected.Text = ""6107 6108 -- Luna.Flags[DropdownSettings.Flag] = DropdownSettings6109 6110 end6111 6112 function DropdownV:Destroy()6113 Dropdown.Visible = false6114 Dropdown:Destroy()6115 end6116 6117 if Flag then6118 Luna.Options[Flag] = DropdownV6119 end6120 6121 -- Luna.Flags[DropdownSettings.Flag] = DropdownSettings6122 6123 return DropdownV6124 6125 end6126 6127 -- Color Picker6128 function Tab:CreateColorPicker(ColorPickerSettings, Flag) -- by Rayfield/Throit6129 local ColorPickerV = {IgnoreClass = false, Class = "Colorpicker", Settings = ColorPickerSettings}6130 6131 ColorPickerSettings = Kwargify({6132 Name = "Color Picker",6133 Color = Color3.fromRGB(255,255,255),6134 Callback = function(Value)6135 -- The function that takes place every time the color picker is moved/changed6136 -- The variable (Value) is a Color3fromRGB value based on which color is selected6137 end6138 }, ColorPickerSettings or {})6139 6140 local function Color3ToHex(color)6141 return string.format("#%02X%02X%02X", math.floor(color.R * 255), math.floor(color.G * 255), math.floor(color.B * 255))6142 end6143 6144 ColorPickerV.Color = Color3ToHex(ColorPickerSettings.Color)6145 6146 local closedsize = UDim2.new(0, 75, 0, 22)6147 local openedsize = UDim2.new(0, 219, 0, 129)6148 6149 local ColorPicker = Elements.Template.ColorPicker:Clone()6150 local Background = ColorPicker.CPBackground6151 local Display = Background.Display6152 local Main = Background.MainCP6153 local Slider = ColorPicker.ColorSlider6154 6155 ColorPicker.Name = ColorPickerSettings.Name6156 ColorPicker.Title.Text = ColorPickerSettings.Name6157 ColorPicker.Visible = true6158 ColorPicker.Parent = TabPage6159 ColorPicker.Size = UDim2.new(1.042, -25,0, 38)6160 Background.Size = closedsize6161 Display.BackgroundTransparency = 06162 6163 ColorPicker["MouseEnter"]:Connect(function()6164 tween(ColorPicker.UIStroke, {Color = DarkTheme.Primary})6165 end)6166 ColorPicker["MouseLeave"]:Connect(function()6167 tween(ColorPicker.UIStroke, {Color = DarkTheme.Icon})6168 end)6169 6170 local function SafeCallback(param, c2)6171 local Success, Response = pcall(function()6172 ColorPickerSettings.Callback(param)6173 end)6174 if not Success then6175 TweenService:Create(ColorPicker, Animation.Reveal, {BackgroundTransparency = 0}):Play()6176 TweenService:Create(ColorPicker, Animation.Reveal, {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()6177 TweenService:Create(ColorPicker.UIStroke, Animation.Reveal, {Transparency = 1}):Play()6178 ColorPicker.Title.Text = "Callback Error"6179 print("Luna Interface Suite | "..ColorPickerSettings.Name.." Callback Error " ..tostring(Response))6180 wait(0.5)6181 ColorPicker.Title.Text = ColorPickerSettings.Name6182 TweenService:Create(ColorPicker, Animation.Reveal, {BackgroundTransparency = 0.5}):Play()6183 TweenService:Create(ColorPicker, Animation.Reveal, {BackgroundColor3 = DarkTheme.ElementBackground}):Play()6184 TweenService:Create(ColorPicker.UIStroke, Animation.Reveal, {Transparency = 0.5}):Play()6185 end6186 if Success and c2 then6187 c2()6188 end6189 end6190 6191 local opened = false6192 6193 local mouse = game.Players.LocalPlayer:GetMouse()6194 Main.Image = "http://www.roblox.com/asset/?id=11415645739"6195 local mainDragging = false 6196 local sliderDragging = false 6197 ColorPicker.Interact.MouseButton1Down:Connect(function()6198 if not opened then6199 opened = true 6200 tween(ColorPicker, {Size = UDim2.new( 1.042, -25,0, 165)}, nil, Animation.Dialog)6201 tween(Background, {Size = openedsize})6202 tween(Display, {BackgroundTransparency = 1})6203 else6204 opened = false6205 tween(ColorPicker, {Size = UDim2.new(1.042, -25,0, 38)}, nil, Animation.Dialog)6206 tween(Background, {Size = closedsize})6207 tween(Display, {BackgroundTransparency = 0})6208 end6209 end)6210 UserInputService.InputEnded:Connect(function(input, gameProcessed) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then 6211 mainDragging = false6212 sliderDragging = false6213 end end)6214 Main.MouseButton1Down:Connect(function()6215 if opened then6216 mainDragging = true 6217 end6218 end)6219 Main.MainPoint.MouseButton1Down:Connect(function()6220 if opened then6221 mainDragging = true 6222 end6223 end)6224 Slider.MouseButton1Down:Connect(function()6225 sliderDragging = true 6226 end)6227 Slider.SliderPoint.MouseButton1Down:Connect(function()6228 sliderDragging = true 6229 end)6230 local h,s,v = ColorPickerSettings.Color:ToHSV()6231 local color = Color3.fromHSV(h,s,v) 6232 local r,g,b = math.floor((h*255)+0.5),math.floor((s*255)+0.5),math.floor((v*255)+0.5)6233 local hex = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)6234 ColorPicker.HexInput.InputBox.Text = hex6235 local function setDisplay(hp,sp,vp)6236 --Main6237 Main.MainPoint.Position = UDim2.new(s,-Main.MainPoint.AbsoluteSize.X/2,1-v,-Main.MainPoint.AbsoluteSize.Y/2)6238 Main.MainPoint.ImageColor3 = Color3.fromHSV(hp,sp,vp)6239 Background.BackgroundColor3 = Color3.fromHSV(hp,1,1)6240 Display.BackgroundColor3 = Color3.fromHSV(hp,sp,vp)6241 --Slider 6242 local x = hp * Slider.AbsoluteSize.X6243 Slider.SliderPoint.Position = UDim2.new(0,x-Slider.SliderPoint.AbsoluteSize.X/2,0.5,0)6244 Slider.SliderPoint.ImageColor3 = Color3.fromHSV(hp,1,1)6245 local color = Color3.fromHSV(hp,sp,vp) 6246 local r,g,b = math.floor((color.R*255)+0.5),math.floor((color.G*255)+0.5),math.floor((color.B*255)+0.5)6247 ColorPicker.RInput.InputBox.Text = tostring(r)6248 ColorPicker.GInput.InputBox.Text = tostring(g)6249 ColorPicker.BInput.InputBox.Text = tostring(b)6250 hex = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)6251 ColorPicker.HexInput.InputBox.Text = hex6252 end6253 setDisplay(h,s,v)6254 ColorPicker.HexInput.InputBox.FocusLost:Connect(function()6255 if not pcall(function()6256 local r, g, b = string.match(ColorPicker.HexInput.InputBox.Text, "^#?(%w%w)(%w%w)(%w%w)$")6257 local rgbColor = Color3.fromRGB(tonumber(r, 16),tonumber(g, 16), tonumber(b, 16))6258 h,s,v = rgbColor:ToHSV()6259 hex = ColorPicker.HexInput.InputBox.Text6260 setDisplay()6261 ColorPickerSettings.Color = rgbColor6262 end) 6263 then 6264 ColorPicker.HexInput.InputBox.Text = hex 6265 end6266 local r,g,b = math.floor((h*255)+0.5),math.floor((s*255)+0.5),math.floor((v*255)+0.5)6267 ColorPickerSettings.Color = Color3.fromRGB(r,g,b)6268 SafeCallback( Color3.fromRGB(r,g,b))6269 end)6270 --RGB6271 local function rgbBoxes(box,toChange)6272 local value = tonumber(box.Text) 6273 local color = Color3.fromHSV(h,s,v) 6274 local oldR,oldG,oldB = math.floor((color.R*255)+0.5),math.floor((color.G*255)+0.5),math.floor((color.B*255)+0.5)6275 local save 6276 if toChange == "R" then save = oldR;oldR = value elseif toChange == "G" then save = oldG;oldG = value else save = oldB;oldB = value end6277 if value then 6278 value = math.clamp(value,0,255)6279 h,s,v = Color3.fromRGB(oldR,oldG,oldB):ToHSV()6280 setDisplay()6281 else 6282 box.Text = tostring(save)6283 end6284 local r,g,b = math.floor((color.R*255)+0.5),math.floor((color.G*255)+0.5),math.floor((color.B*255)+0.5)6285 ColorPickerSettings.Color = Color3.fromRGB(r,g,b)6286 end6287 ColorPicker.RInput.InputBox.FocusLost:connect(function()6288 rgbBoxes(ColorPicker.RInput.InputBox,"R")6289 SafeCallback(Color3.fromRGB(r,g,b))6290 end)6291 ColorPicker.GInput.InputBox.FocusLost:connect(function()6292 rgbBoxes(ColorPicker.GInput.InputBox,"G")6293 SafeCallback(Color3.fromRGB(r,g,b))6294 end)6295 ColorPicker.BInput.InputBox.FocusLost:connect(function()6296 rgbBoxes(ColorPicker.BInput.InputBox,"B")6297 SafeCallback(Color3.fromRGB(r,g,b))6298 end)6299 RunService.RenderStepped:connect(function()6300 if mainDragging then 6301 local localX = math.clamp(mouse.X-Main.AbsolutePosition.X,0,Main.AbsoluteSize.X)6302 local localY = math.clamp(mouse.Y-Main.AbsolutePosition.Y,0,Main.AbsoluteSize.Y)6303 Main.MainPoint.Position = UDim2.new(0,localX-Main.MainPoint.AbsoluteSize.X/2,0,localY-Main.MainPoint.AbsoluteSize.Y/2)6304 s = localX / Main.AbsoluteSize.X6305 v = 1 - (localY / Main.AbsoluteSize.Y)6306 Display.BackgroundColor3 = Color3.fromHSV(h,s,v)6307 Main.MainPoint.ImageColor3 = Color3.fromHSV(h,s,v)6308 Background.BackgroundColor3 = Color3.fromHSV(h,1,1)6309 local color = Color3.fromHSV(h,s,v) 6310 local r,g,b = math.floor((color.R*255)+0.5),math.floor((color.G*255)+0.5),math.floor((color.B*255)+0.5)6311 ColorPicker.RInput.InputBox.Text = tostring(r)6312 ColorPicker.GInput.InputBox.Text = tostring(g)6313 ColorPicker.BInput.InputBox.Text = tostring(b)6314 ColorPicker.HexInput.InputBox.Text = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)6315 SafeCallback(Color3.fromRGB(r,g,b))6316 ColorPickerSettings.Color = Color3.fromRGB(r,g,b)6317 ColorPickerV.Color = ColorPickerSettings.Color6318 end6319 if sliderDragging then 6320 local localX = math.clamp(mouse.X-Slider.AbsolutePosition.X,0,Slider.AbsoluteSize.X)6321 h = localX / Slider.AbsoluteSize.X6322 Display.BackgroundColor3 = Color3.fromHSV(h,s,v)6323 Slider.SliderPoint.Position = UDim2.new(0,localX-Slider.SliderPoint.AbsoluteSize.X/2,0.5,0)6324 Slider.SliderPoint.ImageColor3 = Color3.fromHSV(h,1,1)6325 Background.BackgroundColor3 = Color3.fromHSV(h,1,1)6326 Main.MainPoint.ImageColor3 = Color3.fromHSV(h,s,v)6327 local color = Color3.fromHSV(h,s,v) 6328 local r,g,b = math.floor((color.R*255)+0.5),math.floor((color.G*255)+0.5),math.floor((color.B*255)+0.5)6329 ColorPicker.RInput.InputBox.Text = tostring(r)6330 ColorPicker.GInput.InputBox.Text = tostring(g)6331 ColorPicker.BInput.InputBox.Text = tostring(b)6332 ColorPicker.HexInput.InputBox.Text = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)6333 SafeCallback(Color3.fromRGB(r,g,b))6334 ColorPickerSettings.Color = Color3.fromRGB(r,g,b)6335 ColorPickerV.Color = ColorPickerSettings.Color6336 end6337 end)6338 6339 function ColorPickerV:Set(NewColorPickerSettings)6340 6341 NewColorPickerSettings = Kwargify(ColorPickerSettings, NewColorPickerSettings or {})6342 6343 ColorPickerV.Settings = NewColorPickerSettings6344 ColorPickerSettings = NewColorPickerSettings6345 6346 ColorPicker.Name = ColorPickerSettings.Name6347 ColorPicker.Title.Text = ColorPickerSettings.Name6348 ColorPicker.Visible = true6349 6350 local h,s,v = ColorPickerSettings.Color:ToHSV()6351 local color = Color3.fromHSV(h,s,v) 6352 local r,g,b = math.floor((color.R*255)+0.5),math.floor((color.G*255)+0.5),math.floor((color.B*255)+0.5)6353 local hex = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)6354 ColorPicker.HexInput.InputBox.Text = hex6355 setDisplay(h,s,v)6356 SafeCallback(Color3.fromRGB(r,g,b))6357 6358 ColorPickerV.Color = ColorPickerSettings.Color6359 end6360 6361 function ColorPickerV:Destroy()6362 ColorPicker:Destroy()6363 end6364 6365 if Flag then6366 Luna.Options[Flag] = ColorPickerV6367 end6368 6369 SafeCallback(ColorPickerSettings.Color)6370 6371 return ColorPickerV6372 end6373 6374 6375 function Tab:BuildConfigSection()6376 if isStudio then6377 Tab:CreateLabel({Text = "Config system unavailable. (Environment isStudio)", Style = 3})6378 return "Config system unavailable." 6379 end6380 6381 local inputPath = nil6382 local selectedConfig = nil6383 6384 local Title = Elements.Template.Title:Clone()6385 Title.Text = "Configurations"6386 Title.Visible = true6387 Title.Parent = TabPage6388 Title.TextTransparency = 16389 TweenService:Create(Title, TweenInfo.new(0.4, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {TextTransparency = 0}):Play()6390 6391 Tab:CreateSection("Config Creator")6392 6393 Tab:CreateInput({6394 Name = "Config Name",6395 Description = "Insert a name for your to be created config.",6396 PlaceholderText = "Name",6397 CurrentValue = "",6398 Numeric = false,6399 MaxCharacters = nil,6400 Enter = false,6401 Callback = function(input)6402 inputPath = input6403 end,6404 })6405 6406 local configSelection6407 6408 Tab:CreateButton({6409 Name = "Create Config",6410 Description = "Create a config with all of your current settings.",6411 Callback = function()6412 if not inputPath or string.gsub(inputPath, " ", "") == "" then6413 Luna:Notification({6414 Title = "Interface",6415 Icon = "warning",6416 ImageSource = "Material",6417 Content = "Config name cannot be empty."6418 })6419 return6420 end6421 6422 local success, returned = Luna:SaveConfig(inputPath)6423 if not success then6424 Luna:Notification({6425 Title = "Interface",6426 Icon = "error",6427 ImageSource = "Material",6428 Content = "Unable to save config, return error: " .. returned6429 })6430 end6431 6432 Luna:Notification({6433 Title = "Interface",6434 Icon = "info",6435 ImageSource = "Material",6436 Content = string.format("Created config %q", inputPath),6437 })6438 6439 configSelection:Set({ Options = Luna:RefreshConfigList() })6440 end6441 })6442 6443 Tab:CreateSection("Config Load/Settings")6444 6445 6446 configSelection = Tab:CreateDropdown({6447 Name = "Select Config",6448 Description = "Select a config to load your settings on.",6449 Options = Luna:RefreshConfigList(),6450 CurrentOption = {},6451 MultipleOptions = false,6452 SpecialType = nil,6453 Callback = function(Value)6454 selectedConfig = Value6455 end,6456 })6457 6458 Tab:CreateButton({6459 Name = "Load Config",6460 Description = "Load your saved config settings.",6461 Callback = function()6462 local success, returned = Luna:LoadConfig(selectedConfig)6463 if not success then6464 Luna:Notification({6465 Title = "Interface",6466 Icon = "error",6467 ImageSource = "Material",6468 Content = "Unable to load config, return error: " .. returned6469 })6470 return6471 end6472 6473 Luna:Notification({6474 Title = "Interface",6475 Icon = "info",6476 ImageSource = "Material",6477 Content = string.format("Loaded config %q", selectedConfig),6478 })6479 end6480 })6481 6482 Tab:CreateButton({6483 Name = "Overwrite Config",6484 Description = "Overwrite your current config settings.",6485 Callback = function()6486 local success, returned = Luna:SaveConfig(selectedConfig)6487 if not success then6488 Luna:Notification({6489 Title = "Interface",6490 Icon = "error",6491 ImageSource = "Material",6492 Content = "Unable to overwrite config, return error: " .. returned6493 })6494 return6495 end6496 6497 Luna:Notification({6498 Title = "Interface",6499 Icon = "info",6500 ImageSource = "Material",6501 Content = string.format("Overwrote config %q", selectedConfig),6502 })6503 end6504 })6505 6506 Tab:CreateButton({6507 Name = "Refresh Config List",6508 Description = "Refresh the current config list.",6509 Callback = function()6510 configSelection:Set({ Options = Luna:RefreshConfigList() })6511 end,6512 })6513 6514 local loadlabel6515 Tab:CreateButton({6516 Name = "Set as autoload",6517 Description = "Set a config to auto load setting in your next session.",6518 Callback = function()6519 local name = selectedConfig6520 writefile(Luna.Folder .. "/settings/autoload.txt", name)6521 loadlabel:Set({ Text = "Current autoload config: " .. name })6522 6523 Luna:Notification({6524 Title = "Interface",6525 Icon = "info",6526 ImageSource = "Material",6527 Content = string.format("Set %q to auto load", name),6528 })6529 end,6530 })6531 6532 loadlabel = Tab:CreateParagraph({6533 Title = "Current Auto Load",6534 Text = "None"6535 })6536 6537 Tab:CreateButton({6538 Name = "Delete Autoload",6539 Description = "Delete The Autoload File",6540 Callback = function()6541 local name = selectedConfig6542 delfile(Luna.Folder .. "/settings/autoload.txt")6543 loadlabel:Set({ Text = "None" })6544 6545 Luna:Notification({6546 Title = "Interface",6547 Icon = "info",6548 ImageSource = "Material",6549 Content = "Deleted Autoload",6550 })6551 end,6552 })6553 6554 if isfile(Luna.Folder .. "/settings/autoload.txt") then6555 local name = readfile(Luna.Folder .. "/settings/autoload.txt")6556 loadlabel:Set( { Text = "Current autoload config: " .. name })6557 end 6558 end6559 6560 local ClassParser = {6561 ["Toggle"] = {6562 Save = function(Flag, data)6563 return {6564 type = "Toggle", 6565 flag = Flag, 6566 state = data.CurrentValue or false6567 }6568 end,6569 Load = function(Flag, data)6570 if Luna.Options[Flag] then6571 Luna.Options[Flag]:Set({ CurrentValue = data.state })6572 end6573 end6574 },6575 ["Slider"] = {6576 Save = function(Flag, data)6577 return {6578 type = "Slider", 6579 flag = Flag, 6580 value = (data.CurrentValue and tostring(data.CurrentValue)),6581 }6582 end,6583 Load = function(Flag, data)6584 if Luna.Options[Flag] and data.value then6585 Luna.Options[Flag]:Set({ CurrentValue = data.value })6586 end6587 end6588 },6589 ["Input"] = {6590 Save = function(Flag, data)6591 return {6592 type = "Input", 6593 flag = Flag, 6594 text = data.CurrentValue6595 }6596 end,6597 Load = function(Flag, data)6598 if Luna.Options[Flag] and data.text and type(data.text) == "string" then6599 Luna.Options[Flag]:Set({ CurrentValue = data.text })6600 end6601 end6602 },6603 ["Dropdown"] = {6604 Save = function(Flag, data)6605 return {6606 type = "Dropdown", 6607 flag = Flag, 6608 value = data.CurrentOption6609 }6610 end,6611 Load = function(Flag, data)6612 if Luna.Options[Flag] and data.value then6613 Luna.Options[Flag]:Set({ CurrentOption = data.value })6614 end6615 end6616 },6617 -- buggy as hell stil6618 ["Colorpicker"] = {6619 Save = function(Flag, data)6620 local function Color3ToHex(color)6621 return string.format("#%02X%02X%02X", math.floor(color.R * 255), math.floor(color.G * 255), math.floor(color.B * 255))6622 end6623 6624 return {6625 type = "Colorpicker", 6626 flag = Flag, 6627 color = Color3ToHex(data.Color) or nil,6628 alpha = data.Alpha6629 }6630 end,6631 Load = function(Flag, data)6632 local function HexToColor3(hex)6633 local r = tonumber(hex:sub(2, 3), 16) / 2556634 local g = tonumber(hex:sub(4, 5), 16) / 2556635 local b = tonumber(hex:sub(6, 7), 16) / 2556636 return Color3.new(r, g, b)6637 end6638 6639 if Luna.Options[Flag] and data.color then6640 Luna.Options[Flag]:Set({Color = HexToColor3(data.color)})6641 end6642 end6643 }6644 }6645 6646 6647 function Tab:BuildThemeSection()6648 6649 local Title = Elements.Template.Title:Clone()6650 Title.Text = "Theming"6651 Title.Visible = true6652 Title.Parent = TabPage6653 Title.TextTransparency = 16654 TweenService:Create(Title, TweenInfo.new(0.4, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {TextTransparency = 0}):Play()6655 6656 Tab:CreateSection("Custom Editor")6657 6658 local c1cp = Tab:CreateColorPicker({6659 Name = "Color 1",6660 Color = Color3.fromRGB(117, 164, 206),6661 }, "LunaInterfaceSuitePrebuiltCPC1") -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps6662 6663 local c2cp = Tab:CreateColorPicker({6664 Name = "Color 2",6665 Color = Color3.fromRGB(123, 201, 201),6666 }, "LunaInterfaceSuitePrebuiltCPC2")6667 6668 local c3cp = Tab:CreateColorPicker({6669 Name = "Color 3",6670 Color = Color3.fromRGB(224, 138, 184),6671 }, "LunaInterfaceSuitePrebuiltCPC3") 6672 6673 task.wait(1)6674 6675 c1cp:Set({6676 Callback = function(Value)6677 if c2cp and c3cp then6678 Luna.ThemeGradient = ColorSequence.new{ColorSequenceKeypoint.new(0.00, Value or Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(0.50, c2cp.Color or Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(1.00, c3cp.Color or Color3.fromRGB(255,255,255))}6679 LunaUI.ThemeRemote.Value = not LunaUI.ThemeRemote.Value6680 end6681 end6682 })6683 6684 c2cp:Set({6685 Callback = function(Value)6686 if c1cp and c3cp then6687 Luna.ThemeGradient = ColorSequence.new{ColorSequenceKeypoint.new(0.00, c1cp.Color or Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(0.50, Value or Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(1.00, c3cp.Color or Color3.fromRGB(255,255,255))}6688 LunaUI.ThemeRemote.Value = not LunaUI.ThemeRemote.Value6689 end6690 end6691 })6692 6693 c3cp:Set({6694 Callback = function(Valuex)6695 if c2cp and c1cp then6696 Luna.ThemeGradient = ColorSequence.new{ColorSequenceKeypoint.new(0.00, c1cp.Color or Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(0.50, c2cp.Color or Color3.fromRGB(255,255,255)), ColorSequenceKeypoint.new(1.00, Valuex or Color3.fromRGB(255,255,255))}6697 LunaUI.ThemeRemote.Value = not LunaUI.ThemeRemote.Value6698 end6699 end6700 })6701 6702 Tab:CreateSection("Preset Gradients")6703 6704 for i,v in pairs(PresetGradients) do6705 Tab:CreateButton({6706 Name = tostring(i),6707 Callback = function()6708 c1cp:Set({ Color = v[1] })6709 c2cp:Set({ Color = v[2] })6710 c3cp:Set({ Color = v[3] })6711 end,6712 })6713 end6714 6715 end6716 6717 6718 local function BuildFolderTree()6719 if isStudio then return "Config system unavailable." end6720 local paths = {6721 Luna.Folder,6722 Luna.Folder .. "/settings"6723 }6724 6725 for i = 1, #paths do6726 local str = paths[i]6727 if not isfolder(str) then6728 makefolder(str)6729 end6730 end6731 end6732 6733 local function SetFolder()6734 6735 if isStudio then return "Config system unavailable." end6736 6737 if WindowSettings.ConfigSettings.RootFolder ~= nil and WindowSettings.ConfigSettings.RootFolder ~= "" then6738 Luna.Folder = WindowSettings.ConfigSettings.RootFolder .. "/" .. WindowSettings.ConfigSettings.ConfigFolder6739 else6740 Luna.Folder = WindowSettings.ConfigSettings.ConfigFolder6741 end6742 6743 BuildFolderTree()6744 end6745 6746 SetFolder()6747 6748 function Luna:SaveConfig(Path)6749 if isStudio then return "Config system unavailable." end6750 6751 if (not Path) then6752 return false, "Please select a config file."6753 end6754 6755 local fullPath = Luna.Folder .. "/settings/" .. Path .. ".luna"6756 6757 local data = {6758 objects = {}6759 }6760 6761 for flag, option in next, Luna.Options do6762 if not ClassParser[option.Class] then continue end6763 if option.IgnoreConfig then continue end6764 6765 table.insert(data.objects, ClassParser[option.Class].Save(flag, option))6766 end 6767 6768 local success, encoded = pcall(HttpService.JSONEncode, HttpService, data)6769 if not success then6770 return false, "Unable to encode into JSON data"6771 end6772 6773 writefile(fullPath, encoded)6774 return true6775 end6776 6777 function Luna:LoadConfig(Path)6778 if isStudio then return "Config system unavailable." end6779 6780 if (not Path) then6781 return false, "Please select a config file."6782 end6783 6784 local file = Luna.Folder .. "/settings/" .. Path .. ".luna"6785 if not isfile(file) then return false, "Invalid file" end6786 6787 local success, decoded = pcall(HttpService.JSONDecode, HttpService, readfile(file))6788 if not success then return false, "Unable to decode JSON data." end6789 6790 for _, option in next, decoded.objects do6791 if ClassParser[option.type] then6792 task.spawn(function() 6793 ClassParser[option.type].Load(option.flag, option) 6794 end)6795 end6796 end6797 6798 return true6799 end6800 6801 function Luna:LoadAutoloadConfig()6802 if isfile(Luna.Folder .. "/settings/autoload.txt") then6803 6804 if isStudio then return "Config system unavailable." end6805 6806 local name = readfile(Luna.Folder .. "/settings/autoload.txt")6807 6808 local success, err = Luna:LoadConfig(name)6809 if not success then6810 return Luna:Notification({6811 Title = "Interface",6812 Icon = "sparkle",6813 ImageSource = "Material",6814 Content = "Failed to load autoload config: " .. err,6815 })6816 end6817 6818 Luna:Notification({6819 Title = "Interface",6820 Icon = "sparkle",6821 ImageSource = "Material",6822 Content = string.format("Auto loaded config %q", name),6823 })6824 6825 end 6826 end6827 6828 function Luna:RefreshConfigList()6829 if isStudio then return "Config system unavailable." end6830 6831 local list = listfiles(Luna.Folder .. "/settings")6832 6833 local out = {}6834 for i = 1, #list do6835 local file = list[i]6836 if file:sub(-5) == ".luna" then6837 local pos = file:find(".luna", 1, true)6838 local start = pos6839 6840 local char = file:sub(pos, pos)6841 while char ~= "/" and char ~= "\\" and char ~= "" do6842 pos = pos - 16843 char = file:sub(pos, pos)6844 end6845 6846 if char == "/" or char == "\\" then6847 local name = file:sub(pos + 1, start - 1)6848 if name ~= "options" then6849 table.insert(out, name)6850 end6851 end6852 end6853 end6854 6855 return out6856 end6857 return Tab6858 end6859 6860 6861 Elements.Parent.Visible = true6862 tween(Elements.Parent, {BackgroundTransparency = 0.1})6863 Navigation.Visible = true6864 tween(Navigation.Line, {BackgroundTransparency = 0})6865 6866 for _, TopbarButton in ipairs(Main.Controls:GetChildren()) do6867 if TopbarButton.ClassName == "Frame" and TopbarButton.Name ~= "Theme" then6868 TopbarButton.Visible = true6869 tween(TopbarButton, {BackgroundTransparency = 0.25})6870 tween(TopbarButton.UIStroke, {Transparency = 0.5})6871 tween(TopbarButton.ImageLabel, {ImageTransparency = 0.25})6872 end6873 end6874 6875 Main.Controls.Close.ImageLabel.MouseButton1Click:Connect(function()6876 Hide(Main, Window.Bind, true)6877 dragBar.Visible = false6878 Window.State = false6879 if UserInputService.KeyboardEnabled == false then6880 LunaUI.MobileSupport.Visible = true6881 end6882 end)6883 Main.Controls.Close["MouseEnter"]:Connect(function()6884 tween(Main.Controls.Close.ImageLabel, {ImageColor3 = Color3.new(1,1,1)})6885 end)6886 Main.Controls.Close["MouseLeave"]:Connect(function()6887 tween(Main.Controls.Close.ImageLabel, {ImageColor3 = Color3.fromRGB(195,195,195)})6888 end)6889 6890 UserInputService.InputBegan:Connect(function(input, gpe)6891 if gpe then return end6892 if Window.State then return end6893 if input.KeyCode == Window.Bind then6894 Unhide(Main, Window.CurrentTab)6895 LunaUI.MobileSupport.Visible = false6896 dragBar.Visible = true6897 Window.State = true6898 end6899 end)6900 6901 Main.Logo.MouseButton1Click:Connect(function()6902 if Navigation.Size.X.Offset == 205 then6903 tween(Elements.Parent, {Size = UDim2.new(1, -55, Elements.Parent.Size.Y.Scale, Elements.Parent.Size.Y.Offset)})6904 tween(Navigation, {Size = UDim2.new(Navigation.Size.X.Scale, 55, Navigation.Size.Y.Scale, Navigation.Size.Y.Offset)})6905 else6906 tween(Elements.Parent, {Size = UDim2.new(1, -205, Elements.Parent.Size.Y.Scale, Elements.Parent.Size.Y.Offset)})6907 tween(Navigation, {Size = UDim2.new(Navigation.Size.X.Scale, 205, Navigation.Size.Y.Scale, Navigation.Size.Y.Offset)})6908 end6909 end)6910 6911 Main.Controls.ToggleSize.ImageLabel.MouseButton1Click:Connect(function()6912 Window.Size = not Window.Size6913 if Window.Size then6914 Minimize(Main)6915 dragBar.Visible = false6916 else6917 Maximise(Main)6918 dragBar.Visible = true6919 end6920 end)6921 Main.Controls.ToggleSize["MouseEnter"]:Connect(function()6922 tween(Main.Controls.ToggleSize.ImageLabel, {ImageColor3 = Color3.new(1,1,1)})6923 end)6924 Main.Controls.ToggleSize["MouseLeave"]:Connect(function()6925 tween(Main.Controls.ToggleSize.ImageLabel, {ImageColor3 = Color3.fromRGB(195,195,195)})6926 end)6927 6928 Main.Controls.Theme.ImageLabel.MouseButton1Click:Connect(function()6929 if Window.Settings then6930 Window.Settings:Activate()6931 Elements.Settings.CanvasPosition = Vector2.new(0,698)6932 end6933 end)6934 Main.Controls.Theme["MouseEnter"]:Connect(function()6935 tween(Main.Controls.Theme.ImageLabel, {ImageColor3 = Color3.new(1,1,1)})6936 end)6937 Main.Controls.Theme["MouseLeave"]:Connect(function()6938 tween(Main.Controls.Theme.ImageLabel, {ImageColor3 = Color3.fromRGB(195,195,195)})6939 end) 6940 6941 6942 LunaUI.MobileSupport.Interact.MouseButton1Click:Connect(function()6943 Unhide(Main, Window.CurrentTab)6944 dragBar.Visible = true6945 Window.State = true6946 LunaUI.MobileSupport.Visible = false6947 end)6948 6949 return Window6950end6951 6952function Luna:Destroy()6953 Main.Visible = false6954 for _, Notification in ipairs(Notifications:GetChildren()) do6955 if Notification.ClassName == "Frame" then6956 Notification.Visible = false6957 Notification:Destroy()6958 end6959 end6960 LunaUI:Destroy()6961end6962 6963if (getgenv and not getgenv().ConfirmLuna) or (not getgenv) then6964 Luna:Notification({ 6965 Title = "Luna Is Deprecated",6966 Icon = "warning",6967 ImageSource = "Material",6968 Content = "If you are not the script developer, ignore this message. \n\n The Luna Interface Library Is Deprecated And Not Recommended to Use. A New Library Is Available at nebulasoftworks.xyz/starlight. If you insist on using Luna, set the getgenv().ConfirmLuna variable to true. "6969 })6970end6971 6972if isStudio then6973 local Window = Luna:CreateWindow({6974 Name = "Nebula Client - Luna Hub | Blade Ball",6975 Subtitle = "by Nebula Softworks",6976 LogoID = "123795201100198",6977 LoadingEnabled = true,6978 LoadingTitle = "Nebula Client (Luna Hub)",6979 LoadingSubtitle = "Loading script for Blade Ball",6980 KeySystem = true,6981 KeySettings = {6982 Title = "Nebula Client | Key System",6983 Subtitle = "Blade Ball",6984 Note = "Please Enter Your Key To Use Nebula Client",6985 FileName = "Key", -- the name of the key file. this will be saved in ur RootFolder. However, if you don't have one, it'll save in ur config folder instead6986 SaveKey = true, -- The user's key will be saved, but if you change the key, they will be unable to use your script6987 Key = {"Example Key"}, -- List of keys that will be accepted by the system, please use a system like Pelican or Luarmor that provide key strings based on your HWID since putting a simple string is very easy to bypass6988 SecondAction = {6989 Enabled = true,6990 Type = "Link", -- Link/Discord6991 Parameter = "" -- for discord, add the invite link like home tab. for link, type the link of ur key sys6992 }6993 }6994 })6995 6996 --[[local Window = Luna:CreateWindow({6997 Name = "Luna Example Window",6998 Subtitle = "Test",6999 LogoID = "6031097225",7000 LoadingEnabled = true,7001 LoadingTitle = "Luna Interface Suite",7002 LoadingSubtitle = "by Nebula Softworks",7003 KeySystem = true,7004 KeySettings = {7005 Title = "Luna Example Key",7006 Subtitle = "Key System",7007 Note = "Please Enter Your Key To Use Example Hub",7008 FileName = "Key", -- the name of the key file. this will be saved in ur RootFolder. However, if you don't have one, it'll save in ur config folder instead7009 SaveKey = true, -- The user's key will be saved, but if you change the key, they will be unable to use your script7010 Key = {"Example Key"} -- List of keys that will be accepted by the system, please use a system like Pelican or Luarmor that provide key strings based on your HWID since putting a simple string is very easy to bypass7011 }7012 })7013 7014 Luna:Notification({ 7015 Title = "Welcome to Luna",7016 Icon = "sparkle",7017 ImageSource = "Material",7018 Content = "Welcome to the Luna Interface Suite. This Is an Amazing Quality Freemium UI Library For Roblox Exploiting Made By Nebula Softworks. Luna was Created in hopes of improving the standard of UI Library designs by being the golden standard for it. Luna Has Amazing Features like a key system, notification and perfection in aesthetics and design. So, What Are You Waiting For? Start Using Luna Today at " .. website7019 })7020 7021 local Tabs = {7022 Main = Window:CreateTab({7023 Name = "Tab Example 1",7024 Icon = "view_in_ar",7025 ImageSource = "Material",7026 ShowTitle = true7027 }),7028 Main2 = Window:CreateTab({7029 Name = "Tab Example 2",7030 Icon = "location_searching",7031 ImageSource = "Material",7032 ShowTitle = false7033 }),7034 Premium = Window:CreateTab({7035 Name = "Premium Tab",7036 Icon = "sparkle",7037 ImageSource = "Material",7038 ShowTitle = true7039 }),7040 Debug = Window:CreateTab({7041 Name = "Debug",7042 Icon = "settings"7043 })7044 }7045 7046 7047 Window:CreateHomeTab()7048 local bleh =Tabs.Debug:CreateColorPicker()7049 Tabs.Debug:CreateButton({7050 Callback = function()7051 bleh:Set({7052 Color = Color3.fromRGB(0,0,0)7053 })7054 end,7055 })7056 7057 Tabs.Main:CreateSection("Section Example")7058 Tabs.Main:CreateButton({7059 Name = "Button Example!",7060 Description = "Every Element Except For Sliders Can Have a description like this"7061 })7062 Tabs.Main:CreateLabel({7063 Text = "Label Example",7064 Style = 17065 })7066 Tabs.Main:CreateLabel({7067 Text = "Information Example",7068 Style = 27069 })7070 Tabs.Main:CreateLabel({7071 Text = "Warning Example",7072 Style = 37073 })7074 Tabs.Main:CreateParagraph({7075 Title = "Paragraph Example ",7076 Text = "This Is A Paragraph. You Can Type Very Long Strings Here And They'll Automatically Fit! This Counts As A Description Right? Right? Right? Right? Right? Right? Right? Right? Right? Right? Right? Right? Right? Right? Right? Also Did I Mention This Has Rich Text? Also Did I Mention This Has Rich Text? Also Did I Mention This Has Rich Text? Also Did I Mention This Has Rich Text? Also Did I Mention This Has Rich Text? Also Did I Mention This Has Rich Text?"7077 })7078 Tabs.Main:CreateSlider({7079 Name = "Slider Example",7080 Range = {0, 200},7081 Increment = 0.1,7082 CurrentValue = 100,7083 Flag = "Slider",7084 })7085 Tabs.Main:CreateToggle({7086 Name = "Toggle Example",7087 Description = "This Is A Toggle. See I Was Right? Sliders Don't Have Descriptions!",7088 CurrentValue = false,7089 })7090 7091 Tabs.Main:CreateBind({7092 Name = "Bind Example",7093 Description = "Btw Using CreateKeybind is deprecated, use CreateBind For Future Binds :)",7094 CurrentKeybind = "Q",7095 HoldToInteract = false,7096 })7097 Tabs.Main:CreateInput({7098 Name = "Dynamic Input Example",7099 Description = "Every Element has :Set(). Sadly this one is broken;the text wont update :(",7100 PlaceholderText = "Input Placeholder",7101 CurrentValue = "",7102 Numeric = false,7103 MaxCharacters = nil,7104 Enter = false7105 })7106 Tabs.Main:CreateDropdown({7107 Name = "Dropdown Example",7108 Description = "U can access a element's values using .Settings!",7109 Options = {"Option 1","Option 2","Option 3","Option 4","Option 5","Option 6"},7110 CurrentOption = "Option 1",7111 MultipleOptions = false,7112 SpecialType = nil7113 })7114 7115 Tabs.Main:CreateColorPicker({7116 Name = "Color Picker Example",7117 Color = Color3.fromRGB(86, 171, 128),7118 Flag = "ColorPicker1", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps7119 Callback = function(Value)7120 -- The function that takes place every time the color picker is moved/changed7121 -- The variable (Value) is a Color3fromRGB value based on which color is selected7122 end7123 })7124 7125 Tabs.Main2:CreateSection("The Elements Here Are To Show Unique Features")7126 Tabs.Main2:CreateToggle({7127 Name = "Toggle - Default On",7128 Description = "Toggles Can be Onned By Default!",7129 CurrentValue = true7130 })7131 Tabs.Main2:CreateBind({7132 Name = "Hold To Interact - Walkspeed Example",7133 Description = "Binds Can Be Made to only Callback when held",7134 HoldToInteract = true,7135 CurrentBind = "E",7136 Callback = function(v)7137 if v then 7138 Players.LocalPlayer.Character.Humanoid.WalkSpeed = 1007139 else7140 Players.LocalPlayer.Character.Humanoid.WalkSpeed = 167141 end7142 end,7143 })7144 Tabs.Main2:CreateInput({7145 Name = "Numeric And 12 Max Characters",7146 Description = "You Can Limit The Max Characters or Allow Only Numbers",7147 Numeric = true,7148 MaxCharacters = 127149 })7150 Tabs.Main2:CreateInput({7151 Name = "Require Enter",7152 Description = "You Can Only make the callback happen after user hits enter",7153 Enter = true7154 })7155 Tabs.Main2:CreateLabel({7156 Text = "Every Element Can be Destroyed as well!"7157 })7158 Tabs.Main2:CreateDropdown({7159 Name = "Dropdown - Multi Options",7160 Description = "Multiple Special Features can be used on the same element!",7161 Options = {"Option 1","Option 2","Option 3","Option 4","Option 5","Option 6"},7162 CurrentOption = {"Option 1","Option 3","Option 6"},7163 MultipleOptions = true7164 })7165 Tabs.Main2:CreateDropdown({7166 Name = "Dropdown - Players",7167 Description = "Luna's Dropdowns Has a built in Player Dropdown!",7168 Options = {"u can put anything here, it wont be shown anyway"},7169 CurrentOption = {"same here, itll be the first option"},7170 MultipleOptions = false,7171 SpecialType = "Player"7172 })7173 7174 local s = Tabs.Premium:CreateSection("You can add elements inside section too")7175 s:CreateButton()7176 s:CreateLabel()7177 s:CreateDivider()7178 s:CreateDropdown()7179 7180 Tabs.Premium:BuildConfigSection()7181 Tabs.Premium:BuildThemeSection()]]7182end7183 7184-- THIS IS THE DEBUG DEMO, ONLY USED WHEN TESTING NEW ELEMENTS AND CODE7185--[[if isStudio then7186 window = Luna:CreateWindow({LoadingEnabled = false})7187 t1 = window:CreateTab()7188 t2 = window:CreateTab({ Name = "Tab 2", Icon = "location_searching"})7189 Luna:Notification({ 7190 Title = "Welcome to Luna",7191 Icon = "sparkle",7192 ImageSource = "Material",7193 Content = "Welcome to the Luna Interface Suite. This Is an Amazing Quality Freemium UI Library For Roblox Exploiting Made By Nebula Softworks. Luna was Created in hopes of improving the standard of UI Library designs by being the golden standard for it. Luna Has Amazing Features like a key system, notification and perfection in aesthetics and design. So, What Are You Waiting For? Start Using Luna Today at " .. website7194 })7195 t1:CreateSection()7196 local btn = t1:CreateButton({Callback = "", Description = "This Is A Description"})7197 local l = t1:CreateLabel({ Style = 2})7198 local l2 = t1:CreateLabel({ Text = "Another Label" })7199 t2:CreateButton({ Callback = function() 7200 l:Destroy()7201 l2:Set("New Text")7202 end})7203 t2:CreateLabel({Style = 3})7204 t1:CreateParagraph({Text = "Single String"})7205 t1:CreateParagraph({Text = "Welcome to the Luna Interface Suite. This Is an Amazing Quality Freemium UI Library For Roblox Exploiting Made By Nebula Softworks. Luna was Created in hopes of improving the standard of UI Library designs by being the golden standard for it. Luna Has Amazing Features like a key system, notification and perfection in aesthetics and design. So, What Are You Waiting For? Start Using Luna Today at " .. website})7206 s = t2:CreateSlider({ Callback = function(v) print(v) end }) 7207 t1:CreateButton({ Callback = function()7208 s:Set({Name = "new name", Callback = ""})7209 wait(5)7210 s:Destroy()7211 end})7212 t1:CreateColorPicker()7213 local toggle = t1:CreateToggle({Name = "test", Description = "test", CurrentValue = true, Callback = ""}, "toggle2")7214 t1:CreateToggle({Callback = function(Value) toggle:Destroy() print(Value) end})7215 local bind = t2:CreateBind({Name = "test", Description = "test", CurrentBind = "E", HoldToInteract = false, Callback = ""})7216 t2:CreateKeybind({HoldToInteract = true, Callback = function(v)7217 if v then7218 Players.LocalPlayer.Character.Humanoid.WalkSpeed = 1007219 else7220 Players.LocalPlayer.Character.Humanoid.WalkSpeed = 167221 end7222 end,})7223 local input = t2:CreateInput({Name = "test",ClearTextAfterFocusLost = false, Description = "Numbers only, 8 max characters and enter required.",MaxCharacters = 8 ,Numeric = true, Enter = true, Callback = ""})7224 t2:CreateInput({Callback = function(text) print(text) end})7225 local d = t1:CreateDropdown({Name = "test", Options = {"Apples", "Bananas", "Strawberries", "Elixir"}, Description = "MultiOptions", MultipleOptions = true, Callback = function(t) print(t) end, CurrentOption = {"Apples", "Elixir"}})7226 t1:CreateDropdown({Callback = function(t) print(unpack(t)) end})7227 t1:CreateDropdown({Description = "Special Type - Player", Callback = "", SpecialType = "Player"})7228end]]--7229return Luna7230 Change Log
Update pasteNoProfile - Aug 23, 2026, 6:02 PM
Update pasteNoProfile - Aug 23, 2026, 6:02 PM