isMoons

lunaui

Mar 15th, 2025
10
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 311.93 KB | None | 0 0
  1. --[[
  2.  
  3. Luna Interface Suite
  4. by Nebula Softworks
  5.  
  6. Main Credits
  7.  
  8. Hunter (Nebula Softworks) | Designing And Programming | Main Developer
  9. JustHey (Nebula Softworks) | Configurations, Bug Fixing And More! | Co Developer
  10. Throit | Color Picker
  11. Wally | Dragging And Certain Functions
  12. Sirius | PCall Parsing, Notifications, Slider And Home Tab
  13. Luna Executor | Original UI
  14.  
  15.  
  16. Extra Credits / Provided Certain Elements
  17.  
  18. Pookie Pepelss | Bug Tester
  19. Inori | Configuration Concept
  20. Latte Softworks and qweery | Lucide Icons And Material Icons
  21. kirill9655 | Loading Circle
  22. Deity/dp4pv/x64x70 | Certain Scripting and Testing ig
  23.  
  24. ]]
  25.  
  26. local Release = "Prerelease Beta 6.1"
  27.  
  28. local Luna = { Folder = "Luna", Options = {}, ThemeGradient = ColorSequence.new{ColorSequenceKeypoint.new(0.00, Color3.fromRGB(117, 164, 206)), ColorSequenceKeypoint.new(0.50, Color3.fromRGB(123, 201, 201)), ColorSequenceKeypoint.new(1.00, Color3.fromRGB(224, 138, 175))} }
  29.  
  30. local UserInputService = game:GetService("UserInputService")
  31. local TweenService = game:GetService("TweenService")
  32. local HttpService = game:GetService("HttpService")
  33. local RunService = game:GetService("RunService")
  34. local Localization = game:GetService("LocalizationService")
  35. local Players = game:GetService("Players")
  36. local Player = Players.LocalPlayer
  37. local Camera = workspace.CurrentCamera
  38. local CoreGui = game:GetService("CoreGui")
  39.  
  40. local isStudio
  41. local website = "github.com/Nebula-Softworks"
  42.  
  43. if RunService:IsStudio() then
  44. isStudio = true
  45. end
  46.  
  47. -- Credits To Latte Softworks And qweery for Lucide And Material Icons Respectively.
  48. local IconModule = {
  49. Lucide = nil,
  50. Material = {
  51. ["perm_media"] = "http://www.roblox.com/asset/?id=6031215982";
  52. ["sticky_note_2"] = "http://www.roblox.com/asset/?id=6031265972";
  53. ["gavel"] = "http://www.roblox.com/asset/?id=6023565902";
  54. ["table_view"] = "http://www.roblox.com/asset/?id=6031233835";
  55. ["home"] = "http://www.roblox.com/asset/?id=6026568195";
  56. ["list"] = "http://www.roblox.com/asset/?id=6026568229";
  57. ["alarm_add"] = "http://www.roblox.com/asset/?id=6023426898";
  58. ["speaker_notes"] = "http://www.roblox.com/asset/?id=6031266001";
  59. ["check_circle_outline"] = "http://www.roblox.com/asset/?id=6023426909";
  60. ["extension"] = "http://www.roblox.com/asset/?id=6023565892";
  61. ["pending"] = "http://www.roblox.com/asset/?id=6031084745";
  62. ["pageview"] = "http://www.roblox.com/asset/?id=6031216007";
  63. ["group_work"] = "http://www.roblox.com/asset/?id=6023565910";
  64. ["zoom_in"] = "http://www.roblox.com/asset/?id=6031075573";
  65. ["aspect_ratio"] = "http://www.roblox.com/asset/?id=6022668895";
  66. ["code"] = "http://www.roblox.com/asset/?id=6022668955";
  67. ["3d_rotation"] = "http://www.roblox.com/asset/?id=6022668893";
  68. ["translate"] = "http://www.roblox.com/asset/?id=6031225812";
  69. ["star_rate"] = "http://www.roblox.com/asset/?id=6031265978";
  70. ["system_update_alt"] = "http://www.roblox.com/asset/?id=6031251515";
  71. ["open_with"] = "http://www.roblox.com/asset/?id=6026568265";
  72. ["build_circle"] = "http://www.roblox.com/asset/?id=6023426952";
  73. ["toc"] = "http://www.roblox.com/asset/?id=6031229341";
  74. ["settings_phone"] = "http://www.roblox.com/asset/?id=6031289445";
  75. ["open_in_full"] = "http://www.roblox.com/asset/?id=6026568245";
  76. ["history"] = "http://www.roblox.com/asset/?id=6026568197";
  77. ["accessibility_new"] = "http://www.roblox.com/asset/?id=6022668945";
  78. ["hourglass_disabled"] = "http://www.roblox.com/asset/?id=6026568193";
  79. ["line_style"] = "http://www.roblox.com/asset/?id=6026568276";
  80. ["account_circle"] = "http://www.roblox.com/asset/?id=6022668898";
  81. ["settings_cell"] = "http://www.roblox.com/asset/?id=6031280890";
  82. ["search_off"] = "http://www.roblox.com/asset/?id=6031260783";
  83. ["shop"] = "http://www.roblox.com/asset/?id=6031265983";
  84. ["anchor"] = "http://www.roblox.com/asset/?id=6023426906";
  85. ["language"] = "http://www.roblox.com/asset/?id=6026568213";
  86. ["settings_brightness"] = "http://www.roblox.com/asset/?id=6031280902";
  87. ["restore_page"] = "http://www.roblox.com/asset/?id=6031154877";
  88. ["chrome_reader_mode"] = "http://www.roblox.com/asset/?id=6023426912";
  89. ["sync_alt"] = "http://www.roblox.com/asset/?id=6031233840";
  90. ["book"] = "http://www.roblox.com/asset/?id=6022860343";
  91. ["smart_button"] = "http://www.roblox.com/asset/?id=6031265962";
  92. ["request_page"] = "http://www.roblox.com/asset/?id=6031154873";
  93. ["lock_clock"] = "http://www.roblox.com/asset/?id=6026568260";
  94. ["android"] = "http://www.roblox.com/asset/?id=6022668966";
  95. ["outgoing_mail"] = "http://www.roblox.com/asset/?id=6026568242";
  96. ["dynamic_form"] = "http://www.roblox.com/asset/?id=6023426970";
  97. ["track_changes"] = "http://www.roblox.com/asset/?id=6031225814";
  98. ["source"] = "http://www.roblox.com/asset/?id=6031289451";
  99. ["thumb_down"] = "http://www.roblox.com/asset/?id=6031229336";
  100. ["integration_instructions"] = "http://www.roblox.com/asset/?id=6026568214";
  101. ["opacity"] = "http://www.roblox.com/asset/?id=6026568295";
  102. ["perm_identity"] = "http://www.roblox.com/asset/?id=6031215978";
  103. ["view_module"] = "http://www.roblox.com/asset/?id=6031079152";
  104. ["perm_data_setting"] = "http://www.roblox.com/asset/?id=6031215991";
  105. ["assignment_turned_in"] = "http://www.roblox.com/asset/?id=6023426904";
  106. ["change_history"] = "http://www.roblox.com/asset/?id=6023426914";
  107. ["thumb_down_off_alt"] = "http://www.roblox.com/asset/?id=6031229354";
  108. ["text_rotation_angledown"] = "http://www.roblox.com/asset/?id=6031251513";
  109. ["bookmark"] = "http://www.roblox.com/asset/?id=6022852108";
  110. ["view_stream"] = "http://www.roblox.com/asset/?id=6031079164";
  111. ["remove_done"] = "http://www.roblox.com/asset/?id=6031086169";
  112. ["markunread_mailbox"] = "http://www.roblox.com/asset/?id=6031082531";
  113. ["store"] = "http://www.roblox.com/asset/?id=6031265968";
  114. ["text_rotation_angleup"] = "http://www.roblox.com/asset/?id=6031229337";
  115. ["eco"] = "http://www.roblox.com/asset/?id=6023426988";
  116. ["find_in_page"] = "http://www.roblox.com/asset/?id=6023426986";
  117. ["api"] = "http://www.roblox.com/asset/?id=6022668911";
  118. ["launch"] = "http://www.roblox.com/asset/?id=6026568211";
  119. ["text_rotation_down"] = "http://www.roblox.com/asset/?id=6031229334";
  120. ["flip_to_back"] = "http://www.roblox.com/asset/?id=6023565896";
  121. ["contact_page"] = "http://www.roblox.com/asset/?id=6022668881";
  122. ["preview"] = "http://www.roblox.com/asset/?id=6031260793";
  123. ["restore"] = "http://www.roblox.com/asset/?id=6031260800";
  124. ["favorite_border"] = "http://www.roblox.com/asset/?id=6023565882";
  125. ["assignment_late"] = "http://www.roblox.com/asset/?id=6022668880";
  126. ["youtube_searched_for"] = "http://www.roblox.com/asset/?id=6031075934";
  127. ["hourglass_full"] = "http://www.roblox.com/asset/?id=6026568190";
  128. ["timeline"] = "http://www.roblox.com/asset/?id=6031229350";
  129. ["turned_in"] = "http://www.roblox.com/asset/?id=6031225808";
  130. ["info"] = "http://www.roblox.com/asset/?id=6026568227";
  131. ["restore_from_trash"] = "http://www.roblox.com/asset/?id=6031154869";
  132. ["arrow_circle_down"] = "http://www.roblox.com/asset/?id=6022668877";
  133. ["flaky"] = "http://www.roblox.com/asset/?id=6031082523";
  134. ["alarm_on"] = "http://www.roblox.com/asset/?id=6023426920";
  135. ["swap_vertical_circle"] = "http://www.roblox.com/asset/?id=6031233839";
  136. ["open_in_new"] = "http://www.roblox.com/asset/?id=6026568256";
  137. ["watch_later"] = "http://www.roblox.com/asset/?id=6031075924";
  138. ["alarm_off"] = "http://www.roblox.com/asset/?id=6023426901";
  139. ["maximize"] = "http://www.roblox.com/asset/?id=6026568267";
  140. ["lock_outline"] = "http://www.roblox.com/asset/?id=6031082533";
  141. ["outbond"] = "http://www.roblox.com/asset/?id=6026568244";
  142. ["view_carousel"] = "http://www.roblox.com/asset/?id=6031251507";
  143. ["published_with_changes"] = "http://www.roblox.com/asset/?id=6031243328";
  144. ["verified_user"] = "http://www.roblox.com/asset/?id=6031225819";
  145. ["drag_indicator"] = "http://www.roblox.com/asset/?id=6023426962";
  146. ["lightbulb_outline"] = "http://www.roblox.com/asset/?id=6026568254";
  147. ["segment"] = "http://www.roblox.com/asset/?id=6031260773";
  148. ["assignment"] = "http://www.roblox.com/asset/?id=6022668882";
  149. ["work_outline"] = "http://www.roblox.com/asset/?id=6031075930";
  150. ["line_weight"] = "http://www.roblox.com/asset/?id=6026568226";
  151. ["dangerous"] = "http://www.roblox.com/asset/?id=6022668916";
  152. ["assessment"] = "http://www.roblox.com/asset/?id=6022668897";
  153. ["view_day"] = "http://www.roblox.com/asset/?id=6031079153";
  154. ["help_center"] = "http://www.roblox.com/asset/?id=6026568192";
  155. ["logout"] = "http://www.roblox.com/asset/?id=6031082522";
  156. ["event"] = "http://www.roblox.com/asset/?id=6023426959";
  157. ["get_app"] = "http://www.roblox.com/asset/?id=6023565889";
  158. ["tab"] = "http://www.roblox.com/asset/?id=6031233851";
  159. ["label"] = "http://www.roblox.com/asset/?id=6031082525";
  160. ["g_translate"] = "http://www.roblox.com/asset/?id=6031082526";
  161. ["view_week"] = "http://www.roblox.com/asset/?id=6031079154";
  162. ["view_in_ar"] = "http://www.roblox.com/asset/?id=6031079158";
  163. ["card_travel"] = "http://www.roblox.com/asset/?id=6023426925";
  164. ["lock_open"] = "http://www.roblox.com/asset/?id=6026568220";
  165. ["voice_over_off"] = "http://www.roblox.com/asset/?id=6031075927";
  166. ["app_blocking"] = "http://www.roblox.com/asset/?id=6022668952";
  167. ["settings_ethernet"] = "http://www.roblox.com/asset/?id=6031280883";
  168. ["supervised_user_circle"] = "http://www.roblox.com/asset/?id=6031289449";
  169. ["done_all"] = "http://www.roblox.com/asset/?id=6023426929";
  170. ["lightbulb"] = "http://www.roblox.com/asset/?id=6026568247";
  171. ["find_replace"] = "http://www.roblox.com/asset/?id=6023426979";
  172. ["bookmarks"] = "http://www.roblox.com/asset/?id=6023426924";
  173. ["today"] = "http://www.roblox.com/asset/?id=6031229352";
  174. ["class"] = "http://www.roblox.com/asset/?id=6022668949";
  175. ["supervisor_account"] = "http://www.roblox.com/asset/?id=6031251516";
  176. ["support"] = "http://www.roblox.com/asset/?id=6031251532";
  177. ["done_outline"] = "http://www.roblox.com/asset/?id=6023426936";
  178. ["reorder"] = "http://www.roblox.com/asset/?id=6031154868";
  179. ["fact_check"] = "http://www.roblox.com/asset/?id=6023426951";
  180. ["thumb_up"] = "http://www.roblox.com/asset/?id=6031229347";
  181. ["assignment_returned"] = "http://www.roblox.com/asset/?id=6023426899";
  182. ["card_giftcard"] = "http://www.roblox.com/asset/?id=6023426978";
  183. ["trending_down"] = "http://www.roblox.com/asset/?id=6031225811";
  184. ["settings_backup_restore"] = "http://www.roblox.com/asset/?id=6031280886";
  185. ["settings_voice"] = "http://www.roblox.com/asset/?id=6031265966";
  186. ["dns"] = "http://www.roblox.com/asset/?id=6023426958";
  187. ["perm_scan_wifi"] = "http://www.roblox.com/asset/?id=6031215985";
  188. ["plagiarism"] = "http://www.roblox.com/asset/?id=6031243320";
  189. ["commute"] = "http://www.roblox.com/asset/?id=6022668901";
  190. ["gif"] = "http://www.roblox.com/asset/?id=6031082540";
  191. ["work"] = "http://www.roblox.com/asset/?id=6031075939";
  192. ["picture_in_picture_alt"] = "http://www.roblox.com/asset/?id=6031215979";
  193. ["query_builder"] = "http://www.roblox.com/asset/?id=6031086183";
  194. ["label_off"] = "http://www.roblox.com/asset/?id=6026568209";
  195. ["all_out"] = "http://www.roblox.com/asset/?id=6022668876";
  196. ["article"] = "http://www.roblox.com/asset/?id=6022668907";
  197. ["shopping_basket"] = "http://www.roblox.com/asset/?id=6031265997";
  198. ["mark_as_unread"] = "http://www.roblox.com/asset/?id=6026568223";
  199. ["work_off"] = "http://www.roblox.com/asset/?id=6031075937";
  200. ["delete_outline"] = "http://www.roblox.com/asset/?id=6022668962";
  201. ["account_box"] = "http://www.roblox.com/asset/?id=6023426915";
  202. ["home_filled"] = "rbxassetid://9080449299";
  203. ["lock"] = "http://www.roblox.com/asset/?id=6026568224";
  204. ["perm_device_information"] = "http://www.roblox.com/asset/?id=6031215996";
  205. ["add_task"] = "http://www.roblox.com/asset/?id=6022668912";
  206. ["text_rotate_up"] = "http://www.roblox.com/asset/?id=6031251526";
  207. ["swipe"] = "http://www.roblox.com/asset/?id=6031233863";
  208. ["eject"] = "http://www.roblox.com/asset/?id=6023426930";
  209. ["mediation"] = "http://www.roblox.com/asset/?id=6026568249";
  210. ["label_important_outline"] = "http://www.roblox.com/asset/?id=6026568199";
  211. ["settings_remote"] = "http://www.roblox.com/asset/?id=6031289442";
  212. ["history_toggle_off"] = "http://www.roblox.com/asset/?id=6026568196";
  213. ["invert_colors"] = "http://www.roblox.com/asset/?id=6026568253";
  214. ["visibility_off"] = "http://www.roblox.com/asset/?id=6031075929";
  215. ["addchart"] = "http://www.roblox.com/asset/?id=6023426905";
  216. ["cancel_schedule_send"] = "http://www.roblox.com/asset/?id=6022668963";
  217. ["loyalty"] = "http://www.roblox.com/asset/?id=6026568237";
  218. ["speaker_notes_off"] = "http://www.roblox.com/asset/?id=6031265965";
  219. ["online_prediction"] = "http://www.roblox.com/asset/?id=6026568239";
  220. ["remove_shopping_cart"] = "http://www.roblox.com/asset/?id=6031260778";
  221. ["text_rotate_vertical"] = "http://www.roblox.com/asset/?id=6031251518";
  222. ["visibility"] = "http://www.roblox.com/asset/?id=6031075931";
  223. ["add_to_drive"] = "http://www.roblox.com/asset/?id=6022860335";
  224. ["accessible"] = "http://www.roblox.com/asset/?id=6022668902";
  225. ["bookmark_border"] = "http://www.roblox.com/asset/?id=6022860339";
  226. ["tour"] = "http://www.roblox.com/asset/?id=6031229362";
  227. ["compare_arrows"] = "http://www.roblox.com/asset/?id=6022668951";
  228. ["view_sidebar"] = "http://www.roblox.com/asset/?id=6031079160";
  229. ["face"] = "http://www.roblox.com/asset/?id=6023426944";
  230. ["wysiwyg"] = "http://www.roblox.com/asset/?id=6031075938";
  231. ["camera_enhance"] = "http://www.roblox.com/asset/?id=6023426935";
  232. ["perm_camera_mic"] = "http://www.roblox.com/asset/?id=6031215983";
  233. ["model_training"] = "http://www.roblox.com/asset/?id=6026568222";
  234. ["arrow_circle_up"] = "http://www.roblox.com/asset/?id=6022668934";
  235. ["euro_symbol"] = "http://www.roblox.com/asset/?id=6023426954";
  236. ["pending_actions"] = "http://www.roblox.com/asset/?id=6031260777";
  237. ["not_accessible"] = "http://www.roblox.com/asset/?id=6026568269";
  238. ["explore_off"] = "http://www.roblox.com/asset/?id=6023426953";
  239. ["build"] = "http://www.roblox.com/asset/?id=6023426938";
  240. ["backup"] = "http://www.roblox.com/asset/?id=6023426911";
  241. ["settings_input_antenna"] = "http://www.roblox.com/asset/?id=6031280891";
  242. ["disabled_by_default"] = "http://www.roblox.com/asset/?id=6023426939";
  243. ["upgrade"] = "http://www.roblox.com/asset/?id=6031225815";
  244. ["contactless"] = "http://www.roblox.com/asset/?id=6022668886";
  245. ["trending_flat"] = "http://www.roblox.com/asset/?id=6031225818";
  246. ["schedule"] = "http://www.roblox.com/asset/?id=6031260808";
  247. ["offline_pin"] = "http://www.roblox.com/asset/?id=6031084770";
  248. ["date_range"] = "http://www.roblox.com/asset/?id=6022668894";
  249. ["flight_land"] = "http://www.roblox.com/asset/?id=6023565897";
  250. ["view_headline"] = "http://www.roblox.com/asset/?id=6031079151";
  251. ["cached"] = "http://www.roblox.com/asset/?id=6023426921";
  252. ["unpublished"] = "http://www.roblox.com/asset/?id=6031225817";
  253. ["outlet"] = "http://www.roblox.com/asset/?id=6031084748";
  254. ["favorite"] = "http://www.roblox.com/asset/?id=6023426974";
  255. ["vertical_split"] = "http://www.roblox.com/asset/?id=6031225820";
  256. ["report_problem"] = "http://www.roblox.com/asset/?id=6031086176";
  257. ["fingerprint"] = "http://www.roblox.com/asset/?id=6023565895";
  258. ["important_devices"] = "http://www.roblox.com/asset/?id=6026568202";
  259. ["outbox"] = "http://www.roblox.com/asset/?id=6026568263";
  260. ["all_inbox"] = "http://www.roblox.com/asset/?id=6022668909";
  261. ["label_important"] = "http://www.roblox.com/asset/?id=6026568215";
  262. ["print"] = "http://www.roblox.com/asset/?id=6031243324";
  263. ["settings_bluetooth"] = "http://www.roblox.com/asset/?id=6031280905";
  264. ["power_settings_new"] = "http://www.roblox.com/asset/?id=6031260781";
  265. ["zoom_out"] = "http://www.roblox.com/asset/?id=6031075577";
  266. ["stars"] = "http://www.roblox.com/asset/?id=6031265971";
  267. ["offline_bolt"] = "http://www.roblox.com/asset/?id=6031084742";
  268. ["feedback"] = "http://www.roblox.com/asset/?id=6023426957";
  269. ["accessibility"] = "http://www.roblox.com/asset/?id=6022668887";
  270. ["announcement"] = "http://www.roblox.com/asset/?id=6022668946";
  271. ["settings_input_hdmi"] = "http://www.roblox.com/asset/?id=6031280970";
  272. ["leaderboard"] = "http://www.roblox.com/asset/?id=6026568216";
  273. ["view_quilt"] = "http://www.roblox.com/asset/?id=6031079155";
  274. ["note_add"] = "http://www.roblox.com/asset/?id=6031084749";
  275. ["theaters"] = "http://www.roblox.com/asset/?id=6031229335";
  276. ["alarm"] = "http://www.roblox.com/asset/?id=6023426910";
  277. ["settings_input_composite"] = "http://www.roblox.com/asset/?id=6031280896";
  278. ["grade"] = "http://www.roblox.com/asset/?id=6026568189";
  279. ["tab_unselected"] = "http://www.roblox.com/asset/?id=6031251505";
  280. ["swap_vert"] = "http://www.roblox.com/asset/?id=6031233847";
  281. ["assignment_return"] = "http://www.roblox.com/asset/?id=6023426931";
  282. ["highlight_alt"] = "http://www.roblox.com/asset/?id=6023565913";
  283. ["shopping_bag"] = "http://www.roblox.com/asset/?id=6031265970";
  284. ["contact_support"] = "http://www.roblox.com/asset/?id=6022668879";
  285. ["flip_to_front"] = "http://www.roblox.com/asset/?id=6023565894";
  286. ["touch_app"] = "http://www.roblox.com/asset/?id=6031229361";
  287. ["room"] = "http://www.roblox.com/asset/?id=6031154875";
  288. ["send_and_archive"] = "http://www.roblox.com/asset/?id=6031280889";
  289. ["view_array"] = "http://www.roblox.com/asset/?id=6031225842";
  290. ["settings_power"] = "http://www.roblox.com/asset/?id=6031289446";
  291. ["admin_panel_settings"] = "http://www.roblox.com/asset/?id=6022668961";
  292. ["open_in_browser"] = "http://www.roblox.com/asset/?id=6026568266";
  293. ["card_membership"] = "http://www.roblox.com/asset/?id=6023426942";
  294. ["rule"] = "http://www.roblox.com/asset/?id=6031154859";
  295. ["schedule_send"] = "http://www.roblox.com/asset/?id=6031154866";
  296. ["calendar_today"] = "http://www.roblox.com/asset/?id=6022668917";
  297. ["info_outline"] = "http://www.roblox.com/asset/?id=6026568210";
  298. ["description"] = "http://www.roblox.com/asset/?id=6022668888";
  299. ["dashboard_customize"] = "http://www.roblox.com/asset/?id=6022668899";
  300. ["rowing"] = "http://www.roblox.com/asset/?id=6031154857";
  301. ["swap_horizontal_circle"] = "http://www.roblox.com/asset/?id=6031233833";
  302. ["account_balance_wallet"] = "http://www.roblox.com/asset/?id=6022668892";
  303. ["view_agenda"] = "http://www.roblox.com/asset/?id=6031225831";
  304. ["shop_two"] = "http://www.roblox.com/asset/?id=6031289461";
  305. ["done"] = "http://www.roblox.com/asset/?id=6023426926";
  306. ["circle_notifications"] = "http://www.roblox.com/asset/?id=6023426923";
  307. ["compress"] = "http://www.roblox.com/asset/?id=6022668878";
  308. ["calendar_view_day"] = "http://www.roblox.com/asset/?id=6023426946";
  309. ["thumbs_up_down"] = "http://www.roblox.com/asset/?id=6031229373";
  310. ["account_balance"] = "http://www.roblox.com/asset/?id=6022668900";
  311. ["play_for_work"] = "http://www.roblox.com/asset/?id=6031260776";
  312. ["pets"] = "http://www.roblox.com/asset/?id=6031260782";
  313. ["view_column"] = "http://www.roblox.com/asset/?id=6031079172";
  314. ["search"] = "http://www.roblox.com/asset/?id=6031154871";
  315. ["autorenew"] = "http://www.roblox.com/asset/?id=6023565901";
  316. ["copyright"] = "http://www.roblox.com/asset/?id=6023565898";
  317. ["privacy_tip"] = "http://www.roblox.com/asset/?id=6031260784";
  318. ["arrow_right_alt"] = "http://www.roblox.com/asset/?id=6022668890";
  319. ["delete"] = "http://www.roblox.com/asset/?id=6022668885";
  320. ["nightlight_round"] = "http://www.roblox.com/asset/?id=6031084743";
  321. ["batch_prediction"] = "http://www.roblox.com/asset/?id=6022860334";
  322. ["shopping_cart"] = "http://www.roblox.com/asset/?id=6031265976";
  323. ["login"] = "http://www.roblox.com/asset/?id=6031082527";
  324. ["settings_input_svideo"] = "http://www.roblox.com/asset/?id=6031289444";
  325. ["payment"] = "http://www.roblox.com/asset/?id=6031084751";
  326. ["update"] = "http://www.roblox.com/asset/?id=6031225810";
  327. ["text_rotation_none"] = "http://www.roblox.com/asset/?id=6031229344";
  328. ["perm_contact_calendar"] = "http://www.roblox.com/asset/?id=6031215990";
  329. ["explore"] = "http://www.roblox.com/asset/?id=6023426941";
  330. ["delete_forever"] = "http://www.roblox.com/asset/?id=6022668939";
  331. ["rounded_corner"] = "http://www.roblox.com/asset/?id=6031154861";
  332. ["book_online"] = "http://www.roblox.com/asset/?id=6022860332";
  333. ["quickreply"] = "http://www.roblox.com/asset/?id=6031243319";
  334. ["bug_report"] = "http://www.roblox.com/asset/?id=6022852107";
  335. ["subtitles_off"] = "http://www.roblox.com/asset/?id=6031289466";
  336. ["close_fullscreen"] = "http://www.roblox.com/asset/?id=6023426928";
  337. ["horizontal_split"] = "http://www.roblox.com/asset/?id=6026568194";
  338. ["minimize"] = "http://www.roblox.com/asset/?id=6026568240";
  339. ["filter_list_alt"] = "http://www.roblox.com/asset/?id=6023426955";
  340. ["add_shopping_cart"] = "http://www.roblox.com/asset/?id=6022668875";
  341. ["next_plan"] = "http://www.roblox.com/asset/?id=6026568231";
  342. ["view_list"] = "http://www.roblox.com/asset/?id=6031079156";
  343. ["receipt"] = "http://www.roblox.com/asset/?id=6031086173";
  344. ["polymer"] = "http://www.roblox.com/asset/?id=6031260785";
  345. ["spellcheck"] = "http://www.roblox.com/asset/?id=6031289450";
  346. ["wifi_protected_setup"] = "http://www.roblox.com/asset/?id=6031075926";
  347. ["label_outline"] = "http://www.roblox.com/asset/?id=6026568207";
  348. ["highlight_off"] = "http://www.roblox.com/asset/?id=6023565916";
  349. ["turned_in_not"] = "http://www.roblox.com/asset/?id=6031225806";
  350. ["edit_off"] = "http://www.roblox.com/asset/?id=6023426983";
  351. ["question_answer"] = "http://www.roblox.com/asset/?id=6031086172";
  352. ["settings_overscan"] = "http://www.roblox.com/asset/?id=6031289459";
  353. ["trending_up"] = "http://www.roblox.com/asset/?id=6031225816";
  354. ["verified"] = "http://www.roblox.com/asset/?id=6031225809";
  355. ["flight_takeoff"] = "http://www.roblox.com/asset/?id=6023565891";
  356. ["grading"] = "http://www.roblox.com/asset/?id=6026568191";
  357. ["dashboard"] = "http://www.roblox.com/asset/?id=6022668883";
  358. ["expand"] = "http://www.roblox.com/asset/?id=6022668891";
  359. ["backup_table"] = "http://www.roblox.com/asset/?id=6022860338";
  360. ["analytics"] = "http://www.roblox.com/asset/?id=6022668884";
  361. ["picture_in_picture"] = "http://www.roblox.com/asset/?id=6031215994";
  362. ["settings"] = "http://www.roblox.com/asset/?id=6031280882";
  363. ["accessible_forward"] = "http://www.roblox.com/asset/?id=6022668906";
  364. ["pan_tool"] = "http://www.roblox.com/asset/?id=6031084771";
  365. ["https"] = "http://www.roblox.com/asset/?id=6026568200";
  366. ["filter_alt"] = "http://www.roblox.com/asset/?id=6023426984";
  367. ["thumb_up_off_alt"] = "http://www.roblox.com/asset/?id=6031229342";
  368. ["record_voice_over"] = "http://www.roblox.com/asset/?id=6031243318";
  369. ["help_outline"] = "http://www.roblox.com/asset/?id=6026568201";
  370. ["check_circle"] = "http://www.roblox.com/asset/?id=6023426945";
  371. ["comment_bank"] = "http://www.roblox.com/asset/?id=6023426937";
  372. ["perm_phone_msg"] = "http://www.roblox.com/asset/?id=6031215986";
  373. ["settings_applications"] = "http://www.roblox.com/asset/?id=6031280894";
  374. ["exit_to_app"] = "http://www.roblox.com/asset/?id=6023426922";
  375. ["saved_search"] = "http://www.roblox.com/asset/?id=6031154867";
  376. ["toll"] = "http://www.roblox.com/asset/?id=6031229343";
  377. ["not_started"] = "http://www.roblox.com/asset/?id=6026568232";
  378. ["subject"] = "http://www.roblox.com/asset/?id=6031289452";
  379. ["redeem"] = "http://www.roblox.com/asset/?id=6031086170";
  380. ["input"] = "http://www.roblox.com/asset/?id=6026568225";
  381. ["settings_input_component"] = "http://www.roblox.com/asset/?id=6031280884";
  382. ["assignment_ind"] = "http://www.roblox.com/asset/?id=6022668935";
  383. ["swap_horiz"] = "http://www.roblox.com/asset/?id=6031233841";
  384. ["fullscreen"] = "http://www.roblox.com/asset/?id=6031094681";
  385. ["cancel"] = "http://www.roblox.com/asset/?id=6031094677";
  386. ["subdirectory_arrow_left"] = "http://www.roblox.com/asset/?id=6031104654";
  387. ["close"] = "http://www.roblox.com/asset/?id=6031094678";
  388. ["arrow_back_ios"] = "http://www.roblox.com/asset/?id=6031091003";
  389. ["east"] = "http://www.roblox.com/asset/?id=6031094675";
  390. ["unfold_more"] = "http://www.roblox.com/asset/?id=6031104644";
  391. ["south"] = "http://www.roblox.com/asset/?id=6031104646";
  392. ["arrow_drop_up"] = "http://www.roblox.com/asset/?id=6031090990";
  393. ["arrow_back"] = "http://www.roblox.com/asset/?id=6031091000";
  394. ["arrow_downward"] = "http://www.roblox.com/asset/?id=6031090991";
  395. ["west"] = "http://www.roblox.com/asset/?id=6031104677";
  396. ["legend_toggle"] = "http://www.roblox.com/asset/?id=6031097233";
  397. ["fullscreen_exit"] = "http://www.roblox.com/asset/?id=6031094691";
  398. ["last_page"] = "http://www.roblox.com/asset/?id=6031094686";
  399. ["switch_right"] = "http://www.roblox.com/asset/?id=6031104649";
  400. ["check"] = "http://www.roblox.com/asset/?id=6031094667";
  401. ["home_work"] = "http://www.roblox.com/asset/?id=6031094683";
  402. ["north_east"] = "http://www.roblox.com/asset/?id=6031097228";
  403. ["double_arrow"] = "http://www.roblox.com/asset/?id=6031094674";
  404. ["more_vert"] = "http://www.roblox.com/asset/?id=6031104648";
  405. ["chevron_left"] = "http://www.roblox.com/asset/?id=6031094670";
  406. ["more_horiz"] = "http://www.roblox.com/asset/?id=6031104650";
  407. ["unfold_less"] = "http://www.roblox.com/asset/?id=6031104681";
  408. ["first_page"] = "http://www.roblox.com/asset/?id=6031094682";
  409. ["payments"] = "http://www.roblox.com/asset/?id=6031097227";
  410. ["arrow_right"] = "http://www.roblox.com/asset/?id=6031090994";
  411. ["offline_share"] = "http://www.roblox.com/asset/?id=6031097267";
  412. ["south_west"] = "http://www.roblox.com/asset/?id=6031104652";
  413. ["expand_less"] = "http://www.roblox.com/asset/?id=6031094679";
  414. ["south_east"] = "http://www.roblox.com/asset/?id=6031104642";
  415. ["assistant_navigation"] = "http://www.roblox.com/asset/?id=6031091006";
  416. ["apps"] = "http://www.roblox.com/asset/?id=6031090999";
  417. ["arrow_upward"] = "http://www.roblox.com/asset/?id=6031090997";
  418. ["app_settings_alt"] = "http://www.roblox.com/asset/?id=6031090998";
  419. ["subdirectory_arrow_right"] = "http://www.roblox.com/asset/?id=6031104647";
  420. ["north_west"] = "http://www.roblox.com/asset/?id=6031104630";
  421. ["switch_left"] = "http://www.roblox.com/asset/?id=6031104651";
  422. ["chevron_right"] = "http://www.roblox.com/asset/?id=6031094680";
  423. ["arrow_forward"] = "http://www.roblox.com/asset/?id=6031090995";
  424. ["arrow_forward_ios"] = "http://www.roblox.com/asset/?id=6031091008";
  425. ["arrow_drop_down"] = "http://www.roblox.com/asset/?id=6031091004";
  426. ["refresh"] = "http://www.roblox.com/asset/?id=6031097226";
  427. ["pivot_table_chart"] = "http://www.roblox.com/asset/?id=6031097234";
  428. ["expand_more"] = "http://www.roblox.com/asset/?id=6031094687";
  429. ["campaign"] = "http://www.roblox.com/asset/?id=6031094666";
  430. ["arrow_left"] = "http://www.roblox.com/asset/?id=6031091002";
  431. ["arrow_drop_down_circle"] = "http://www.roblox.com/asset/?id=6031091001";
  432. ["menu_open"] = "http://www.roblox.com/asset/?id=6031097229";
  433. ["waterfall_chart"] = "http://www.roblox.com/asset/?id=6031104632";
  434. ["assistant_direction"] = "http://www.roblox.com/asset/?id=6031091005";
  435. ["menu"] = "http://www.roblox.com/asset/?id=6031097225";
  436. ["personal_video"] = "http://www.roblox.com/asset/?id=6034457070";
  437. ["power_off"] = "http://www.roblox.com/asset/?id=6034457087";
  438. ["wifi_off"] = "http://www.roblox.com/asset/?id=6034461625";
  439. ["adb"] = "http://www.roblox.com/asset/?id=6034418515";
  440. ["airline_seat_recline_normal"] = "http://www.roblox.com/asset/?id=6034418512";
  441. ["sync_problem"] = "http://www.roblox.com/asset/?id=6034452653";
  442. ["network_check"] = "http://www.roblox.com/asset/?id=6034461631";
  443. ["event_busy"] = "http://www.roblox.com/asset/?id=6034439634";
  444. ["airline_seat_flat"] = "http://www.roblox.com/asset/?id=6034418511";
  445. ["disc_full"] = "http://www.roblox.com/asset/?id=6034418518";
  446. ["sd_card"] = "http://www.roblox.com/asset/?id=6034457089";
  447. ["time_to_leave"] = "http://www.roblox.com/asset/?id=6034452660";
  448. ["phone_bluetooth_speaker"] = "http://www.roblox.com/asset/?id=6034457057";
  449. ["phone_paused"] = "http://www.roblox.com/asset/?id=6034457066";
  450. ["phone_locked"] = "http://www.roblox.com/asset/?id=6034457058";
  451. ["more"] = "http://www.roblox.com/asset/?id=6034461627";
  452. ["add_call"] = "http://www.roblox.com/asset/?id=6034418524";
  453. ["account_tree"] = "http://www.roblox.com/asset/?id=6034418507";
  454. ["do_not_disturb_on"] = "http://www.roblox.com/asset/?id=6034439649";
  455. ["event_note"] = "http://www.roblox.com/asset/?id=6034439637";
  456. ["sync_disabled"] = "http://www.roblox.com/asset/?id=6034452649";
  457. ["mms"] = "http://www.roblox.com/asset/?id=6034461621";
  458. ["airline_seat_flat_angled"] = "http://www.roblox.com/asset/?id=6034418513";
  459. ["bluetooth_audio"] = "http://www.roblox.com/asset/?id=6034418522";
  460. ["vibration"] = "http://www.roblox.com/asset/?id=6034452651";
  461. ["system_update"] = "http://www.roblox.com/asset/?id=6034452663";
  462. ["enhanced_encryption"] = "http://www.roblox.com/asset/?id=6034439652";
  463. ["wc"] = "http://www.roblox.com/asset/?id=6034452643";
  464. ["live_tv"] = "http://www.roblox.com/asset/?id=6034439648";
  465. ["folder_special"] = "http://www.roblox.com/asset/?id=6034439639";
  466. ["phone_missed"] = "http://www.roblox.com/asset/?id=6034457056";
  467. ["airline_seat_recline_extra"] = "http://www.roblox.com/asset/?id=6034418528";
  468. ["sms"] = "http://www.roblox.com/asset/?id=6034452645";
  469. ["tap_and_play"] = "http://www.roblox.com/asset/?id=6034452650";
  470. ["confirmation_number"] = "http://www.roblox.com/asset/?id=6034418519";
  471. ["event_available"] = "http://www.roblox.com/asset/?id=6034439643";
  472. ["sms_failed"] = "http://www.roblox.com/asset/?id=6034452676";
  473. ["do_not_disturb_alt"] = "http://www.roblox.com/asset/?id=6034461619";
  474. ["do_not_disturb"] = "http://www.roblox.com/asset/?id=6034439645";
  475. ["ondemand_video"] = "http://www.roblox.com/asset/?id=6034457065";
  476. ["no_encryption"] = "http://www.roblox.com/asset/?id=6034457059";
  477. ["airline_seat_legroom_extra"] = "http://www.roblox.com/asset/?id=6034418508";
  478. ["tv_off"] = "http://www.roblox.com/asset/?id=6034452646";
  479. ["sim_card_alert"] = "http://www.roblox.com/asset/?id=6034452641";
  480. ["airline_seat_legroom_normal"] = "http://www.roblox.com/asset/?id=6034418532";
  481. ["wifi"] = "http://www.roblox.com/asset/?id=6034461626";
  482. ["do_not_disturb_off"] = "http://www.roblox.com/asset/?id=6034439642";
  483. ["imagesearch_roller"] = "http://www.roblox.com/asset/?id=6034439635";
  484. ["power"] = "http://www.roblox.com/asset/?id=6034457105";
  485. ["airline_seat_legroom_reduced"] = "http://www.roblox.com/asset/?id=6034418520";
  486. ["phone_in_talk"] = "http://www.roblox.com/asset/?id=6034457067";
  487. ["airline_seat_individual_suite"] = "http://www.roblox.com/asset/?id=6034418514";
  488. ["priority_high"] = "http://www.roblox.com/asset/?id=6034457092";
  489. ["phone_callback"] = "http://www.roblox.com/asset/?id=6034457104";
  490. ["phone_forwarded"] = "http://www.roblox.com/asset/?id=6034457106";
  491. ["sync"] = "http://www.roblox.com/asset/?id=6034452662";
  492. ["vpn_lock"] = "http://www.roblox.com/asset/?id=6034452648";
  493. ["support_agent"] = "http://www.roblox.com/asset/?id=6034452656";
  494. ["network_locked"] = "http://www.roblox.com/asset/?id=6034457064";
  495. ["directions_off"] = "http://www.roblox.com/asset/?id=6034418517";
  496. ["drive_eta"] = "http://www.roblox.com/asset/?id=6034464371";
  497. ["sensor_window"] = "http://www.roblox.com/asset/?id=6031067242";
  498. ["sensor_door"] = "http://www.roblox.com/asset/?id=6031067241";
  499. ["keyboard_return"] = "http://www.roblox.com/asset/?id=6034818370";
  500. ["monitor"] = "http://www.roblox.com/asset/?id=6034837803";
  501. ["device_hub"] = "http://www.roblox.com/asset/?id=6034789877";
  502. ["keyboard"] = "http://www.roblox.com/asset/?id=6034818398";
  503. ["keyboard_voice"] = "http://www.roblox.com/asset/?id=6034818360";
  504. ["cast"] = "http://www.roblox.com/asset/?id=6034789876";
  505. ["developer_board"] = "http://www.roblox.com/asset/?id=6034789883";
  506. ["tablet"] = "http://www.roblox.com/asset/?id=6034848733";
  507. ["keyboard_hide"] = "http://www.roblox.com/asset/?id=6034818386";
  508. ["dock"] = "http://www.roblox.com/asset/?id=6034789888";
  509. ["phonelink"] = "http://www.roblox.com/asset/?id=6034837801";
  510. ["device_unknown"] = "http://www.roblox.com/asset/?id=6034789884";
  511. ["speaker_group"] = "http://www.roblox.com/asset/?id=6034848732";
  512. ["desktop_mac"] = "http://www.roblox.com/asset/?id=6034789898";
  513. ["point_of_sale"] = "http://www.roblox.com/asset/?id=6034837798";
  514. ["memory"] = "http://www.roblox.com/asset/?id=6034837807";
  515. ["keyboard_tab"] = "http://www.roblox.com/asset/?id=6034818363";
  516. ["router"] = "http://www.roblox.com/asset/?id=6034837806";
  517. ["sim_card"] = "http://www.roblox.com/asset/?id=6034837800";
  518. ["headset"] = "http://www.roblox.com/asset/?id=6034789880";
  519. ["gamepad"] = "http://www.roblox.com/asset/?id=6034789879";
  520. ["speaker"] = "http://www.roblox.com/asset/?id=6034848746";
  521. ["devices_other"] = "http://www.roblox.com/asset/?id=6034789873";
  522. ["laptop"] = "http://www.roblox.com/asset/?id=6034818367";
  523. ["scanner"] = "http://www.roblox.com/asset/?id=6034837799";
  524. ["tv"] = "http://www.roblox.com/asset/?id=6034848740";
  525. ["headset_mic"] = "http://www.roblox.com/asset/?id=6034818383";
  526. ["browser_not_supported"] = "http://www.roblox.com/asset/?id=6034789875";
  527. ["computer"] = "http://www.roblox.com/asset/?id=6034789874";
  528. ["connected_tv"] = "http://www.roblox.com/asset/?id=6034789870";
  529. ["phonelink_off"] = "http://www.roblox.com/asset/?id=6034837804";
  530. ["headset_off"] = "http://www.roblox.com/asset/?id=6034818402";
  531. ["cast_connected"] = "http://www.roblox.com/asset/?id=6034789895";
  532. ["watch"] = "http://www.roblox.com/asset/?id=6034848747";
  533. ["keyboard_arrow_up"] = "http://www.roblox.com/asset/?id=6034818379";
  534. ["keyboard_backspace"] = "http://www.roblox.com/asset/?id=6034818381";
  535. ["laptop_chromebook"] = "http://www.roblox.com/asset/?id=6034818364";
  536. ["phone_iphone"] = "http://www.roblox.com/asset/?id=6034837811";
  537. ["smartphone"] = "http://www.roblox.com/asset/?id=6034848731";
  538. ["power_input"] = "http://www.roblox.com/asset/?id=6034837794";
  539. ["videogame_asset"] = "http://www.roblox.com/asset/?id=6034848748";
  540. ["desktop_windows"] = "http://www.roblox.com/asset/?id=6034789893";
  541. ["keyboard_arrow_down"] = "http://www.roblox.com/asset/?id=6034818372";
  542. ["laptop_mac"] = "http://www.roblox.com/asset/?id=6034837808";
  543. ["laptop_windows"] = "http://www.roblox.com/asset/?id=6034837796";
  544. ["keyboard_arrow_right"] = "http://www.roblox.com/asset/?id=6034818365";
  545. ["cast_for_education"] = "http://www.roblox.com/asset/?id=6034789872";
  546. ["keyboard_capslock"] = "http://www.roblox.com/asset/?id=6034818403";
  547. ["toys"] = "http://www.roblox.com/asset/?id=6034848752";
  548. ["tablet_android"] = "http://www.roblox.com/asset/?id=6034848734";
  549. ["mouse"] = "http://www.roblox.com/asset/?id=6034837797";
  550. ["phone_android"] = "http://www.roblox.com/asset/?id=6034837793";
  551. ["keyboard_arrow_left"] = "http://www.roblox.com/asset/?id=6034818375";
  552. ["security"] = "http://www.roblox.com/asset/?id=6034837802";
  553. ["dry_cleaning"] = "http://www.roblox.com/asset/?id=6034754456";
  554. ["bakery_dining"] = "http://www.roblox.com/asset/?id=6034767610";
  555. ["place"] = "http://www.roblox.com/asset/?id=6034503372";
  556. ["run_circle"] = "http://www.roblox.com/asset/?id=6034503367";
  557. ["local_post_office"] = "http://www.roblox.com/asset/?id=6034513883";
  558. ["takeout_dining"] = "http://www.roblox.com/asset/?id=6034467808";
  559. ["nightlife"] = "http://www.roblox.com/asset/?id=6034510003";
  560. ["design_services"] = "http://www.roblox.com/asset/?id=6034754453";
  561. ["celebration"] = "http://www.roblox.com/asset/?id=6034767613";
  562. ["near_me_disabled"] = "http://www.roblox.com/asset/?id=6034509988";
  563. ["add_location_alt"] = "http://www.roblox.com/asset/?id=6034483678";
  564. ["directions_run"] = "http://www.roblox.com/asset/?id=6034754445";
  565. ["local_fire_department"] = "http://www.roblox.com/asset/?id=6034684949";
  566. ["add_road"] = "http://www.roblox.com/asset/?id=6034483677";
  567. ["my_location"] = "http://www.roblox.com/asset/?id=6034509987";
  568. ["dinner_dining"] = "http://www.roblox.com/asset/?id=6034754457";
  569. ["local_airport"] = "http://www.roblox.com/asset/?id=6034687951";
  570. ["zoom_out_map"] = "http://www.roblox.com/asset/?id=6035229856";
  571. ["pin_drop"] = "http://www.roblox.com/asset/?id=6034470807";
  572. ["subway"] = "http://www.roblox.com/asset/?id=6034467790";
  573. ["electric_moped"] = "http://www.roblox.com/asset/?id=6034744027";
  574. ["restaurant_menu"] = "http://www.roblox.com/asset/?id=6034503378";
  575. ["local_gas_station"] = "http://www.roblox.com/asset/?id=6034684935";
  576. ["local_cafe"] = "http://www.roblox.com/asset/?id=6034687954";
  577. ["theater_comedy"] = "http://www.roblox.com/asset/?id=6034467796";
  578. ["directions_bus"] = "http://www.roblox.com/asset/?id=6034754434";
  579. ["hail"] = "http://www.roblox.com/asset/?id=6034744033";
  580. ["satellite"] = "http://www.roblox.com/asset/?id=6034503370";
  581. ["local_phone"] = "http://www.roblox.com/asset/?id=6034513884";
  582. ["electric_bike"] = "http://www.roblox.com/asset/?id=6034744032";
  583. ["local_see"] = "http://www.roblox.com/asset/?id=6034513887";
  584. ["transit_enterexit"] = "http://www.roblox.com/asset/?id=6034467805";
  585. ["local_convenience_store"] = "http://www.roblox.com/asset/?id=6034687956";
  586. ["local_offer"] = "http://www.roblox.com/asset/?id=6034513891";
  587. ["electric_car"] = "http://www.roblox.com/asset/?id=6034744029";
  588. ["beenhere"] = "http://www.roblox.com/asset/?id=6034483675";
  589. ["miscellaneous_services"] = "http://www.roblox.com/asset/?id=6034509993";
  590. ["maps_ugc"] = "http://www.roblox.com/asset/?id=6034509992";
  591. ["moped"] = "http://www.roblox.com/asset/?id=6034509999";
  592. ["medical_services"] = "http://www.roblox.com/asset/?id=6034510001";
  593. ["money"] = "http://www.roblox.com/asset/?id=6034509997";
  594. ["transfer_within_a_station"] = "http://www.roblox.com/asset/?id=6034467809";
  595. ["electrical_services"] = "http://www.roblox.com/asset/?id=6034744038";
  596. ["museum"] = "http://www.roblox.com/asset/?id=6034510005";
  597. ["add_location"] = "http://www.roblox.com/asset/?id=6034483672";
  598. ["layers"] = "http://www.roblox.com/asset/?id=6034687957";
  599. ["handyman"] = "http://www.roblox.com/asset/?id=6034744057";
  600. ["local_pharmacy"] = "http://www.roblox.com/asset/?id=6034513903";
  601. ["electric_rickshaw"] = "http://www.roblox.com/asset/?id=6034744043";
  602. ["alt_route"] = "http://www.roblox.com/asset/?id=6034483670";
  603. ["no_transfer"] = "http://www.roblox.com/asset/?id=6034503363";
  604. ["pedal_bike"] = "http://www.roblox.com/asset/?id=6034503374";
  605. ["directions_transit"] = "http://www.roblox.com/asset/?id=6034754436";
  606. ["railway_alert"] = "http://www.roblox.com/asset/?id=6034470823";
  607. ["local_police"] = "http://www.roblox.com/asset/?id=6034513895";
  608. ["directions_car"] = "http://www.roblox.com/asset/?id=6034754441";
  609. ["category"] = "http://www.roblox.com/asset/?id=6034767621";
  610. ["attractions"] = "http://www.roblox.com/asset/?id=6034767620";
  611. ["person_pin_circle"] = "http://www.roblox.com/asset/?id=6034503375";
  612. ["cleaning_services"] = "http://www.roblox.com/asset/?id=6034767619";
  613. ["terrain"] = "http://www.roblox.com/asset/?id=6034467794";
  614. ["no_meals"] = "http://www.roblox.com/asset/?id=6034510024";
  615. ["train"] = "http://www.roblox.com/asset/?id=6034467803";
  616. ["delivery_dining"] = "http://www.roblox.com/asset/?id=6034767644";
  617. ["pest_control"] = "http://www.roblox.com/asset/?id=6034470809";
  618. ["directions"] = "http://www.roblox.com/asset/?id=6034754449";
  619. ["atm"] = "http://www.roblox.com/asset/?id=6034767614";
  620. ["rate_review"] = "http://www.roblox.com/asset/?id=6034503385";
  621. ["local_bar"] = "http://www.roblox.com/asset/?id=6034687950";
  622. ["local_drink"] = "http://www.roblox.com/asset/?id=6034687965";
  623. ["directions_railway"] = "http://www.roblox.com/asset/?id=6034754433";
  624. ["person_pin"] = "http://www.roblox.com/asset/?id=6034503364";
  625. ["ev_station"] = "http://www.roblox.com/asset/?id=6034744037";
  626. ["home_repair_service"] = "http://www.roblox.com/asset/?id=6034744064";
  627. ["bus_alert"] = "http://www.roblox.com/asset/?id=6034767618";
  628. ["agriculture"] = "http://www.roblox.com/asset/?id=6034483674";
  629. ["volunteer_activism"] = "http://www.roblox.com/asset/?id=6034467799";
  630. ["breakfast_dining"] = "http://www.roblox.com/asset/?id=6034483671";
  631. ["layers_clear"] = "http://www.roblox.com/asset/?id=6034687975";
  632. ["plumbing"] = "http://www.roblox.com/asset/?id=6034470800";
  633. ["taxi_alert"] = "http://www.roblox.com/asset/?id=6034467792";
  634. ["add_business"] = "http://www.roblox.com/asset/?id=6034483666";
  635. ["badge"] = "http://www.roblox.com/asset/?id=6034767607";
  636. ["edit_attributes"] = "http://www.roblox.com/asset/?id=6034754443";
  637. ["directions_walk"] = "http://www.roblox.com/asset/?id=6034754448";
  638. ["local_play"] = "http://www.roblox.com/asset/?id=6034513889";
  639. ["bike_scooter"] = "http://www.roblox.com/asset/?id=6034483669";
  640. ["two_wheeler"] = "http://www.roblox.com/asset/?id=6034467795";
  641. ["local_florist"] = "http://www.roblox.com/asset/?id=6034684940";
  642. ["local_hotel"] = "http://www.roblox.com/asset/?id=6034684939";
  643. ["no_meals_ouline"] = "http://www.roblox.com/asset/?id=6034510025";
  644. ["festival"] = "http://www.roblox.com/asset/?id=6034744031";
  645. ["local_shipping"] = "http://www.roblox.com/asset/?id=6034684926";
  646. ["directions_boat"] = "http://www.roblox.com/asset/?id=6034754442";
  647. ["wrong_location"] = "http://www.roblox.com/asset/?id=6034467801";
  648. ["restaurant"] = "http://www.roblox.com/asset/?id=6034503366";
  649. ["directions_subway"] = "http://www.roblox.com/asset/?id=6034754440";
  650. ["not_listed_location"] = "http://www.roblox.com/asset/?id=6034503380";
  651. ["electric_scooter"] = "http://www.roblox.com/asset/?id=6034744041";
  652. ["ramen_dining"] = "http://www.roblox.com/asset/?id=6034503377";
  653. ["edit_road"] = "http://www.roblox.com/asset/?id=6034744035";
  654. ["local_printshop"] = "http://www.roblox.com/asset/?id=6034513897";
  655. ["map"] = "http://www.roblox.com/asset/?id=6034684930";
  656. ["car_rental"] = "http://www.roblox.com/asset/?id=6034767641";
  657. ["multiple_stop"] = "http://www.roblox.com/asset/?id=6034510026";
  658. ["brunch_dining"] = "http://www.roblox.com/asset/?id=6034767611";
  659. ["local_laundry_service"] = "http://www.roblox.com/asset/?id=6034684943";
  660. ["set_meal"] = "http://www.roblox.com/asset/?id=6034503368";
  661. ["local_car_wash"] = "http://www.roblox.com/asset/?id=6034687976";
  662. ["pest_control_rodent"] = "http://www.roblox.com/asset/?id=6034470803";
  663. ["local_pizza"] = "http://www.roblox.com/asset/?id=6034513885";
  664. ["local_grocery_store"] = "http://www.roblox.com/asset/?id=6034684933";
  665. ["traffic"] = "http://www.roblox.com/asset/?id=6034467797";
  666. ["departure_board"] = "http://www.roblox.com/asset/?id=6034767615";
  667. ["icecream"] = "http://www.roblox.com/asset/?id=6034687967";
  668. ["navigation"] = "http://www.roblox.com/asset/?id=6034509984";
  669. ["near_me"] = "http://www.roblox.com/asset/?id=6034509996";
  670. ["fastfood"] = "http://www.roblox.com/asset/?id=6034744034";
  671. ["local_library"] = "http://www.roblox.com/asset/?id=6034684931";
  672. ["local_activity"] = "http://www.roblox.com/asset/?id=6034687955";
  673. ["local_hospital"] = "http://www.roblox.com/asset/?id=6034684956";
  674. ["menu_book"] = "http://www.roblox.com/asset/?id=6034509994";
  675. ["directions_bike"] = "http://www.roblox.com/asset/?id=6034754459";
  676. ["store_mall_directory"] = "http://www.roblox.com/asset/?id=6034470811";
  677. ["trip_origin"] = "http://www.roblox.com/asset/?id=6034467804";
  678. ["tram"] = "http://www.roblox.com/asset/?id=6034467806";
  679. ["edit_location"] = "http://www.roblox.com/asset/?id=6034754439";
  680. ["streetview"] = "http://www.roblox.com/asset/?id=6034470805";
  681. ["hvac"] = "http://www.roblox.com/asset/?id=6034687960";
  682. ["lunch_dining"] = "http://www.roblox.com/asset/?id=6034684928";
  683. ["car_repair"] = "http://www.roblox.com/asset/?id=6034767617";
  684. ["compass_calibration"] = "http://www.roblox.com/asset/?id=6034767623";
  685. ["360"] = "http://www.roblox.com/asset/?id=6034767608";
  686. ["flight"] = "http://www.roblox.com/asset/?id=6034744030";
  687. ["local_mall"] = "http://www.roblox.com/asset/?id=6034684934";
  688. ["hotel"] = "http://www.roblox.com/asset/?id=6034687977";
  689. ["local_parking"] = "http://www.roblox.com/asset/?id=6034513893";
  690. ["hardware"] = "http://www.roblox.com/asset/?id=6034744036";
  691. ["local_dining"] = "http://www.roblox.com/asset/?id=6034687963";
  692. ["park"] = "http://www.roblox.com/asset/?id=6034503369";
  693. ["location_pin"] = "http://www.roblox.com/asset/?id=6034684937";
  694. ["local_movies"] = "http://www.roblox.com/asset/?id=6034684936";
  695. ["local_atm"] = "http://www.roblox.com/asset/?id=6034687953";
  696. ["local_taxi"] = "http://www.roblox.com/asset/?id=6034684927";
  697. ["brightness_low"] = "http://www.roblox.com/asset/?id=6034989542";
  698. ["screen_lock_landscape"] = "http://www.roblox.com/asset/?id=6034996700";
  699. ["graphic_eq"] = "http://www.roblox.com/asset/?id=6034989551";
  700. ["screen_lock_rotation"] = "http://www.roblox.com/asset/?id=6034996710";
  701. ["signal_cellular_4_bar"] = "http://www.roblox.com/asset/?id=6035030076";
  702. ["airplanemode_inactive"] = "http://www.roblox.com/asset/?id=6034983848";
  703. ["signal_wifi_0_bar"] = "http://www.roblox.com/asset/?id=6035030067";
  704. ["battery_full"] = "http://www.roblox.com/asset/?id=6034983854";
  705. ["gps_fixed"] = "http://www.roblox.com/asset/?id=6034989550";
  706. ["brightness_high"] = "http://www.roblox.com/asset/?id=6034989541";
  707. ["ad_units"] = "http://www.roblox.com/asset/?id=6034983845";
  708. ["signal_cellular_alt"] = "http://www.roblox.com/asset/?id=6035030079";
  709. ["bluetooth_connected"] = "http://www.roblox.com/asset/?id=6034983855";
  710. ["wifi_tethering"] = "http://www.roblox.com/asset/?id=6035039430";
  711. ["dvr"] = "http://www.roblox.com/asset/?id=6034989561";
  712. ["screen_search_desktop"] = "http://www.roblox.com/asset/?id=6034996711";
  713. ["network_wifi"] = "http://www.roblox.com/asset/?id=6034996712";
  714. ["access_alarms"] = "http://www.roblox.com/asset/?id=6034983853";
  715. ["nfc"] = "http://www.roblox.com/asset/?id=6034996698";
  716. ["location_disabled"] = "http://www.roblox.com/asset/?id=6034996694";
  717. ["signal_wifi_4_bar"] = "http://www.roblox.com/asset/?id=6035030077";
  718. ["access_time"] = "http://www.roblox.com/asset/?id=6034983856";
  719. ["mobile_off"] = "http://www.roblox.com/asset/?id=6034996702";
  720. ["battery_unknown"] = "http://www.roblox.com/asset/?id=6034983842";
  721. ["signal_cellular_null"] = "http://www.roblox.com/asset/?id=6035030075";
  722. ["bluetooth_disabled"] = "http://www.roblox.com/asset/?id=6034989562";
  723. ["developer_mode"] = "http://www.roblox.com/asset/?id=6034989549";
  724. ["network_cell"] = "http://www.roblox.com/asset/?id=6034996709";
  725. ["sd_storage"] = "http://www.roblox.com/asset/?id=6034996719";
  726. ["signal_cellular_no_sim"] = "http://www.roblox.com/asset/?id=6035030078";
  727. ["devices"] = "http://www.roblox.com/asset/?id=6034989540";
  728. ["screen_rotation"] = "http://www.roblox.com/asset/?id=6034996701";
  729. ["device_thermostat"] = "http://www.roblox.com/asset/?id=6034989544";
  730. ["signal_wifi_off"] = "http://www.roblox.com/asset/?id=6035030074";
  731. ["widgets"] = "http://www.roblox.com/asset/?id=6035039429";
  732. ["bluetooth"] = "http://www.roblox.com/asset/?id=6034983880";
  733. ["battery_charging_full"] = "http://www.roblox.com/asset/?id=6034983849";
  734. ["mobile_friendly"] = "http://www.roblox.com/asset/?id=6034996699";
  735. ["signal_cellular_0_bar"] = "http://www.roblox.com/asset/?id=6035030072";
  736. ["storage"] = "http://www.roblox.com/asset/?id=6035030083";
  737. ["send_to_mobile"] = "http://www.roblox.com/asset/?id=6034996697";
  738. ["location_searching"] = "http://www.roblox.com/asset/?id=6034996695";
  739. ["brightness_auto"] = "http://www.roblox.com/asset/?id=6034989545";
  740. ["wifi_lock"] = "http://www.roblox.com/asset/?id=6035039428";
  741. ["gps_not_fixed"] = "http://www.roblox.com/asset/?id=6034989547";
  742. ["access_alarm"] = "http://www.roblox.com/asset/?id=6034983844";
  743. ["battery_alert"] = "http://www.roblox.com/asset/?id=6034983843";
  744. ["signal_cellular_off"] = "http://www.roblox.com/asset/?id=6035030084";
  745. ["signal_cellular_connected_no_internet_4"] = "http://www.roblox.com/asset/?id=6035229858";
  746. ["gps_off"] = "http://www.roblox.com/asset/?id=6034989548";
  747. ["add_alarm"] = "http://www.roblox.com/asset/?id=6034983850";
  748. ["brightness_medium"] = "http://www.roblox.com/asset/?id=6034989543";
  749. ["usb"] = "http://www.roblox.com/asset/?id=6035030080";
  750. ["airplanemode_active"] = "http://www.roblox.com/asset/?id=6034983864";
  751. ["reset_tv"] = "http://www.roblox.com/asset/?id=6034996696";
  752. ["wallpaper"] = "http://www.roblox.com/asset/?id=6035030102";
  753. ["settings_system_daydream"] = "http://www.roblox.com/asset/?id=6035030081";
  754. ["bluetooth_searching"] = "http://www.roblox.com/asset/?id=6034989553";
  755. ["add_to_home_screen"] = "http://www.roblox.com/asset/?id=6034983858";
  756. ["screen_lock_portrait"] = "http://www.roblox.com/asset/?id=6034996706";
  757. ["data_usage"] = "http://www.roblox.com/asset/?id=6034989568";
  758. ["_auto_delete"] = "http://www.roblox.com/asset/?id=6031071068";
  759. ["_error"] = "http://www.roblox.com/asset/?id=6031071057";
  760. ["_notification_important"] = "http://www.roblox.com/asset/?id=6031071056";
  761. ["_add_alert"] = "http://www.roblox.com/asset/?id=6031071067";
  762. ["_warning"] = "http://www.roblox.com/asset/?id=6031071053";
  763. ["_error_outline"] = "http://www.roblox.com/asset/?id=6031071050";
  764. ["check_box_outline_blank"] = "http://www.roblox.com/asset/?id=6031068420";
  765. ["toggle_off"] = "http://www.roblox.com/asset/?id=6031068429";
  766. ["indeterminate_check_box"] = "http://www.roblox.com/asset/?id=6031068445";
  767. ["radio_button_checked"] = "http://www.roblox.com/asset/?id=6031068426";
  768. ["toggle_on"] = "http://www.roblox.com/asset/?id=6031068430";
  769. ["check_box"] = "http://www.roblox.com/asset/?id=6031068421";
  770. ["radio_button_unchecked"] = "http://www.roblox.com/asset/?id=6031068433";
  771. ["star"] = "http://www.roblox.com/asset/?id=6031068423";
  772. ["star_border"] = "http://www.roblox.com/asset/?id=6031068425";
  773. ["star_half"] = "http://www.roblox.com/asset/?id=6031068427";
  774. ["star_outline"] = "http://www.roblox.com/asset/?id=6031068428";
  775. ["multiline_chart"] = "http://www.roblox.com/asset/?id=6034941721";
  776. ["pie_chart"] = "http://www.roblox.com/asset/?id=6034973076";
  777. ["format_line_spacing"] = "http://www.roblox.com/asset/?id=6034910905";
  778. ["format_align_left"] = "http://www.roblox.com/asset/?id=6034900727";
  779. ["linear_scale"] = "http://www.roblox.com/asset/?id=6034941707";
  780. ["insert_photo"] = "http://www.roblox.com/asset/?id=6034941703";
  781. ["scatter_plot"] = "http://www.roblox.com/asset/?id=6034973094";
  782. ["post_add"] = "http://www.roblox.com/asset/?id=6034973083";
  783. ["format_textdirection_r_to_l"] = "http://www.roblox.com/asset/?id=6034925623";
  784. ["format_size"] = "http://www.roblox.com/asset/?id=6034910908";
  785. ["format_color_fill"] = "http://www.roblox.com/asset/?id=6034910903";
  786. ["format_paint"] = "http://www.roblox.com/asset/?id=6034925618";
  787. ["format_underlined"] = "http://www.roblox.com/asset/?id=6034925627";
  788. ["format_shapes"] = "http://www.roblox.com/asset/?id=6034910909";
  789. ["title"] = "http://www.roblox.com/asset/?id=6034934042";
  790. ["highlight"] = "http://www.roblox.com/asset/?id=6034925617";
  791. ["bar_chart"] = "http://www.roblox.com/asset/?id=6034898096";
  792. ["format_indent_increase"] = "http://www.roblox.com/asset/?id=6034900724";
  793. ["merge_type"] = "http://www.roblox.com/asset/?id=6034941705";
  794. ["bubble_chart"] = "http://www.roblox.com/asset/?id=6034925612";
  795. ["publish"] = "http://www.roblox.com/asset/?id=6034973085";
  796. ["format_indent_decrease"] = "http://www.roblox.com/asset/?id=6034900733";
  797. ["margin"] = "http://www.roblox.com/asset/?id=6034941701";
  798. ["table_rows"] = "http://www.roblox.com/asset/?id=6034934025";
  799. ["stacked_line_chart"] = "http://www.roblox.com/asset/?id=6034934039";
  800. ["border_clear"] = "http://www.roblox.com/asset/?id=6034898135";
  801. ["border_color"] = "http://www.roblox.com/asset/?id=6034898100";
  802. ["border_inner"] = "http://www.roblox.com/asset/?id=6034898131";
  803. ["insert_chart"] = "http://www.roblox.com/asset/?id=6034925628";
  804. ["border_top"] = "http://www.roblox.com/asset/?id=6034900726";
  805. ["padding"] = "http://www.roblox.com/asset/?id=6034973078";
  806. ["border_vertical"] = "http://www.roblox.com/asset/?id=6034900725";
  807. ["score"] = "http://www.roblox.com/asset/?id=6034934041";
  808. ["border_right"] = "http://www.roblox.com/asset/?id=6034898120";
  809. ["add_chart"] = "http://www.roblox.com/asset/?id=6034898093";
  810. ["space_bar"] = "http://www.roblox.com/asset/?id=6034934037";
  811. ["border_outer"] = "http://www.roblox.com/asset/?id=6034898104";
  812. ["mode_comment"] = "http://www.roblox.com/asset/?id=6034941700";
  813. ["attach_money"] = "http://www.roblox.com/asset/?id=6034898098";
  814. ["drag_handle"] = "http://www.roblox.com/asset/?id=6034910907";
  815. ["format_align_right"] = "http://www.roblox.com/asset/?id=6034900723";
  816. ["pie_chart_outlined"] = "http://www.roblox.com/asset/?id=6034973077";
  817. ["horizontal_rule"] = "http://www.roblox.com/asset/?id=6034925610";
  818. ["border_all"] = "http://www.roblox.com/asset/?id=6034898101";
  819. ["border_style"] = "http://www.roblox.com/asset/?id=6034898097";
  820. ["insert_comment"] = "http://www.roblox.com/asset/?id=6034925609";
  821. ["vertical_align_top"] = "http://www.roblox.com/asset/?id=6034973080";
  822. ["vertical_align_center"] = "http://www.roblox.com/asset/?id=6034934051";
  823. ["format_color_text"] = "http://www.roblox.com/asset/?id=6034910910";
  824. ["format_quote"] = "http://www.roblox.com/asset/?id=6034925629";
  825. ["height"] = "http://www.roblox.com/asset/?id=6034925613";
  826. ["add_comment"] = "http://www.roblox.com/asset/?id=6034898128";
  827. ["format_strikethrough"] = "http://www.roblox.com/asset/?id=6034910904";
  828. ["strikethrough_s"] = "http://www.roblox.com/asset/?id=6034934030";
  829. ["border_left"] = "http://www.roblox.com/asset/?id=6034898099";
  830. ["format_list_bulleted"] = "http://www.roblox.com/asset/?id=6034925620";
  831. ["format_italic"] = "http://www.roblox.com/asset/?id=6034910912";
  832. ["format_list_numbered"] = "http://www.roblox.com/asset/?id=6034925622";
  833. ["attach_file"] = "http://www.roblox.com/asset/?id=6034898102";
  834. ["wrap_text"] = "http://www.roblox.com/asset/?id=6034973118";
  835. ["insert_invitation"] = "http://www.roblox.com/asset/?id=6034973091";
  836. ["format_list_numbered_rtl"] = "http://www.roblox.com/asset/?id=6034910906";
  837. ["border_horizontal"] = "http://www.roblox.com/asset/?id=6034898105";
  838. ["format_align_center"] = "http://www.roblox.com/asset/?id=6034900718";
  839. ["format_textdirection_l_to_r"] = "http://www.roblox.com/asset/?id=6034925619";
  840. ["show_chart"] = "http://www.roblox.com/asset/?id=6034934032";
  841. ["insert_chart_outlined"] = "http://www.roblox.com/asset/?id=6034925606";
  842. ["vertical_align_bottom"] = "http://www.roblox.com/asset/?id=6034934023";
  843. ["subscript"] = "http://www.roblox.com/asset/?id=6034934059";
  844. ["format_align_justify"] = "http://www.roblox.com/asset/?id=6034900721";
  845. ["format_clear"] = "http://www.roblox.com/asset/?id=6034910902";
  846. ["notes"] = "http://www.roblox.com/asset/?id=6034973084";
  847. ["insert_drive_file"] = "http://www.roblox.com/asset/?id=6034941697";
  848. ["functions"] = "http://www.roblox.com/asset/?id=6034925614";
  849. ["insert_emoticon"] = "http://www.roblox.com/asset/?id=6034973079";
  850. ["insert_link"] = "http://www.roblox.com/asset/?id=6034973074";
  851. ["format_color_reset"] = "http://www.roblox.com/asset/?id=6034900743";
  852. ["monetization_on"] = "http://www.roblox.com/asset/?id=6034973115";
  853. ["short_text"] = "http://www.roblox.com/asset/?id=6034934035";
  854. ["mode_edit"] = "http://www.roblox.com/asset/?id=6034941708";
  855. ["superscript"] = "http://www.roblox.com/asset/?id=6034934034";
  856. ["table_chart"] = "http://www.roblox.com/asset/?id=6034973081";
  857. ["format_bold"] = "http://www.roblox.com/asset/?id=6034900732";
  858. ["money_off"] = "http://www.roblox.com/asset/?id=6034973088";
  859. ["border_bottom"] = "http://www.roblox.com/asset/?id=6034898094";
  860. ["text_fields"] = "http://www.roblox.com/asset/?id=6034934040";
  861. ["note"] = "http://www.roblox.com/asset/?id=6026663734";
  862. ["shuffle"] = "http://www.roblox.com/asset/?id=6026667003";
  863. ["library_books"] = "http://www.roblox.com/asset/?id=6026660085";
  864. ["library_music"] = "http://www.roblox.com/asset/?id=6026660075";
  865. ["surround_sound"] = "http://www.roblox.com/asset/?id=6026671209";
  866. ["forward_30"] = "http://www.roblox.com/asset/?id=6026660088";
  867. ["music_video"] = "http://www.roblox.com/asset/?id=6026663704";
  868. ["videocam_off"] = "http://www.roblox.com/asset/?id=6026671212";
  869. ["control_camera"] = "http://www.roblox.com/asset/?id=6026647916";
  870. ["explicit"] = "http://www.roblox.com/asset/?id=6026647913";
  871. ["3k_plus"] = "http://www.roblox.com/asset/?id=6026681598";
  872. ["fiber_pin"] = "http://www.roblox.com/asset/?id=6026660064";
  873. ["skip_previous"] = "http://www.roblox.com/asset/?id=6026667011";
  874. ["pause_circle_filled"] = "http://www.roblox.com/asset/?id=6026663718";
  875. ["video_settings"] = "http://www.roblox.com/asset/?id=6026671211";
  876. ["movie"] = "http://www.roblox.com/asset/?id=6026660081";
  877. ["add_to_queue"] = "http://www.roblox.com/asset/?id=6026647903";
  878. ["6k"] = "http://www.roblox.com/asset/?id=6026681579";
  879. ["web_asset"] = "http://www.roblox.com/asset/?id=6026671239";
  880. ["play_circle_outline"] = "http://www.roblox.com/asset/?id=6026663726";
  881. ["volume_off"] = "http://www.roblox.com/asset/?id=6026671224";
  882. ["mic_off"] = "http://www.roblox.com/asset/?id=6026660076";
  883. ["featured_play_list"] = "http://www.roblox.com/asset/?id=6026647932";
  884. ["pause_circle_outline"] = "http://www.roblox.com/asset/?id=6026663701";
  885. ["slow_motion_video"] = "http://www.roblox.com/asset/?id=6026681583";
  886. ["7k"] = "http://www.roblox.com/asset/?id=6026681584";
  887. ["playlist_add"] = "http://www.roblox.com/asset/?id=6026663728";
  888. ["fiber_smart_record"] = "http://www.roblox.com/asset/?id=6026660080";
  889. ["8k"] = "http://www.roblox.com/asset/?id=6026643014";
  890. ["hd"] = "http://www.roblox.com/asset/?id=6026660065";
  891. ["repeat_one_on"] = "http://www.roblox.com/asset/?id=6026666992";
  892. ["recent_actors"] = "http://www.roblox.com/asset/?id=6026663773";
  893. ["fiber_new"] = "http://www.roblox.com/asset/?id=6026647930";
  894. ["fiber_dvr"] = "http://www.roblox.com/asset/?id=6026647912";
  895. ["hearing_disabled"] = "http://www.roblox.com/asset/?id=6026660068";
  896. ["forward_10"] = "http://www.roblox.com/asset/?id=6026660062";
  897. ["4k_plus"] = "http://www.roblox.com/asset/?id=6026643005";
  898. ["repeat_one"] = "http://www.roblox.com/asset/?id=6026681590";
  899. ["equalizer"] = "http://www.roblox.com/asset/?id=6026647906";
  900. ["stop"] = "http://www.roblox.com/asset/?id=6026681576";
  901. ["2k"] = "http://www.roblox.com/asset/?id=6026643032";
  902. ["playlist_add_check"] = "http://www.roblox.com/asset/?id=6026663727";
  903. ["not_interested"] = "http://www.roblox.com/asset/?id=6026663743";
  904. ["videocam"] = "http://www.roblox.com/asset/?id=6026671213";
  905. ["sort_by_alpha"] = "http://www.roblox.com/asset/?id=6026667009";
  906. ["library_add"] = "http://www.roblox.com/asset/?id=6026660063";
  907. ["stop_circle"] = "http://www.roblox.com/asset/?id=6026681577";
  908. ["pause"] = "http://www.roblox.com/asset/?id=6026663719";
  909. ["new_releases"] = "http://www.roblox.com/asset/?id=6026663730";
  910. ["album"] = "http://www.roblox.com/asset/?id=6026647905";
  911. ["sd"] = "http://www.roblox.com/asset/?id=6026681582";
  912. ["volume_up"] = "http://www.roblox.com/asset/?id=6026671215";
  913. ["replay_5"] = "http://www.roblox.com/asset/?id=6026666993";
  914. ["high_quality"] = "http://www.roblox.com/asset/?id=6026660059";
  915. ["shuffle_on"] = "http://www.roblox.com/asset/?id=6026666996";
  916. ["play_arrow"] = "http://www.roblox.com/asset/?id=6026663699";
  917. ["snooze"] = "http://www.roblox.com/asset/?id=6026667006";
  918. ["closed_caption_disabled"] = "http://www.roblox.com/asset/?id=6026647900";
  919. ["subscriptions"] = "http://www.roblox.com/asset/?id=6026671207";
  920. ["skip_next"] = "http://www.roblox.com/asset/?id=6026667005";
  921. ["branding_watermark"] = "http://www.roblox.com/asset/?id=6026647911";
  922. ["speed"] = "http://www.roblox.com/asset/?id=6026681578";
  923. ["art_track"] = "http://www.roblox.com/asset/?id=6026647908";
  924. ["3k"] = "http://www.roblox.com/asset/?id=6026681574";
  925. ["4k"] = "http://www.roblox.com/asset/?id=6026643017";
  926. ["volume_mute"] = "http://www.roblox.com/asset/?id=6026671214";
  927. ["playlist_play"] = "http://www.roblox.com/asset/?id=6026663723";
  928. ["remove_from_queue"] = "http://www.roblox.com/asset/?id=6026663771";
  929. ["fast_forward"] = "http://www.roblox.com/asset/?id=6026647902";
  930. ["play_disabled"] = "http://www.roblox.com/asset/?id=6026663702";
  931. ["fast_rewind"] = "http://www.roblox.com/asset/?id=6026647942";
  932. ["5k"] = "http://www.roblox.com/asset/?id=6026681575";
  933. ["replay_10"] = "http://www.roblox.com/asset/?id=6026667007";
  934. ["video_library"] = "http://www.roblox.com/asset/?id=6026671208";
  935. ["loop"] = "http://www.roblox.com/asset/?id=6026660087";
  936. ["replay_circle_filled"] = "http://www.roblox.com/asset/?id=6026667002";
  937. ["5g"] = "http://www.roblox.com/asset/?id=6026643007";
  938. ["library_add_check"] = "http://www.roblox.com/asset/?id=6026660083";
  939. ["repeat"] = "http://www.roblox.com/asset/?id=6026666998";
  940. ["queue_play_next"] = "http://www.roblox.com/asset/?id=6026663700";
  941. ["forward_5"] = "http://www.roblox.com/asset/?id=6026660067";
  942. ["web"] = "http://www.roblox.com/asset/?id=6026671234";
  943. ["mic_none"] = "http://www.roblox.com/asset/?id=6026660066";
  944. ["queue"] = "http://www.roblox.com/asset/?id=6026663724";
  945. ["closed_caption_off"] = "http://www.roblox.com/asset/?id=6026647943";
  946. ["hearing"] = "http://www.roblox.com/asset/?id=6026660060";
  947. ["queue_music"] = "http://www.roblox.com/asset/?id=6026663725";
  948. ["airplay"] = "http://www.roblox.com/asset/?id=6026647929";
  949. ["9k"] = "http://www.roblox.com/asset/?id=6026643013";
  950. ["video_label"] = "http://www.roblox.com/asset/?id=6026671204";
  951. ["8k_plus"] = "http://www.roblox.com/asset/?id=6026643003";
  952. ["play_circle_filled"] = "http://www.roblox.com/asset/?id=6026663705";
  953. ["1k"] = "http://www.roblox.com/asset/?id=6026643002";
  954. ["fiber_manual_record"] = "http://www.roblox.com/asset/?id=6026647909";
  955. ["closed_caption"] = "http://www.roblox.com/asset/?id=6026647896";
  956. ["subtitles"] = "http://www.roblox.com/asset/?id=6026671203";
  957. ["featured_video"] = "http://www.roblox.com/asset/?id=6026647910";
  958. ["replay_30"] = "http://www.roblox.com/asset/?id=6026667010";
  959. ["10k"] = "http://www.roblox.com/asset/?id=6026643035";
  960. ["5k_plus"] = "http://www.roblox.com/asset/?id=6026643028";
  961. ["6k_plus"] = "http://www.roblox.com/asset/?id=6026643019";
  962. ["replay"] = "http://www.roblox.com/asset/?id=6026666999";
  963. ["repeat_on"] = "http://www.roblox.com/asset/?id=6026666994";
  964. ["1k_plus"] = "http://www.roblox.com/asset/?id=6026681580";
  965. ["2k_plus"] = "http://www.roblox.com/asset/?id=6026681588";
  966. ["games"] = "http://www.roblox.com/asset/?id=6026660074";
  967. ["volume_down"] = "http://www.roblox.com/asset/?id=6026671206";
  968. ["mic"] = "http://www.roblox.com/asset/?id=6026660078";
  969. ["call_to_action"] = "http://www.roblox.com/asset/?id=6026647898";
  970. ["7k_plus"] = "http://www.roblox.com/asset/?id=6026643012";
  971. ["av_timer"] = "http://www.roblox.com/asset/?id=6026647934";
  972. ["9k_plus"] = "http://www.roblox.com/asset/?id=6026681585";
  973. ["radio"] = "http://www.roblox.com/asset/?id=6026663698";
  974. ["10mp"] = "http://www.roblox.com/asset/?id=6031328149";
  975. ["20mp"] = "http://www.roblox.com/asset/?id=6031488940";
  976. ["wb_twighlight"] = "http://www.roblox.com/asset/?id=6034412760";
  977. ["movie_creation"] = "http://www.roblox.com/asset/?id=6034323681";
  978. ["crop_portrait"] = "http://www.roblox.com/asset/?id=6031630198";
  979. ["filter_5"] = "http://www.roblox.com/asset/?id=6031597518";
  980. ["broken_image"] = "http://www.roblox.com/asset/?id=6031471480";
  981. ["flip_camera_android"] = "http://www.roblox.com/asset/?id=6034333280";
  982. ["flip_camera_ios"] = "http://www.roblox.com/asset/?id=6034333267";
  983. ["circle"] = "http://www.roblox.com/asset/?id=6031625146";
  984. ["photo_camera_front"] = "http://www.roblox.com/asset/?id=6031771000";
  985. ["assistant"] = "http://www.roblox.com/asset/?id=6031360356";
  986. ["face_retouching_natural"] = "http://www.roblox.com/asset/?id=6034333274";
  987. ["palette"] = "http://www.roblox.com/asset/?id=6034316009";
  988. ["nature_people"] = "http://www.roblox.com/asset/?id=6034323711";
  989. ["14mp"] = "http://www.roblox.com/asset/?id=6031328161";
  990. ["gradient"] = "http://www.roblox.com/asset/?id=6034333261";
  991. ["filter_4"] = "http://www.roblox.com/asset/?id=6031597512";
  992. ["panorama_wide_angle_select"] = "http://www.roblox.com/asset/?id=6031770990";
  993. ["photo"] = "http://www.roblox.com/asset/?id=6031770993";
  994. ["grid_off"] = "http://www.roblox.com/asset/?id=6034333286";
  995. ["leak_add"] = "http://www.roblox.com/asset/?id=6034407074";
  996. ["landscape"] = "http://www.roblox.com/asset/?id=6034407069";
  997. ["exposure_plus_1"] = "http://www.roblox.com/asset/?id=6034328970";
  998. ["slideshow"] = "http://www.roblox.com/asset/?id=6031754546";
  999. ["camera_alt"] = "http://www.roblox.com/asset/?id=6031572307";
  1000. ["audiotrack"] = "http://www.roblox.com/asset/?id=6031471489";
  1001. ["filter_none"] = "http://www.roblox.com/asset/?id=6031600815";
  1002. ["blur_off"] = "http://www.roblox.com/asset/?id=6031371055";
  1003. ["crop_16_9"] = "http://www.roblox.com/asset/?id=6031630205";
  1004. ["blur_on"] = "http://www.roblox.com/asset/?id=6031371068";
  1005. ["brightness_4"] = "http://www.roblox.com/asset/?id=6031471483";
  1006. ["details"] = "http://www.roblox.com/asset/?id=6034328968";
  1007. ["panorama_horizontal"] = "http://www.roblox.com/asset/?id=6034315966";
  1008. ["camera_rear"] = "http://www.roblox.com/asset/?id=6031572316";
  1009. ["hdr_weak"] = "http://www.roblox.com/asset/?id=6034407083";
  1010. ["collections"] = "http://www.roblox.com/asset/?id=6031625145";
  1011. ["hdr_enhanced_select"] = "http://www.roblox.com/asset/?id=6034333281";
  1012. ["adjust"] = "http://www.roblox.com/asset/?id=6031339048";
  1013. ["burst_mode"] = "http://www.roblox.com/asset/?id=6031572306";
  1014. ["nature"] = "http://www.roblox.com/asset/?id=6034323695";
  1015. ["brightness_6"] = "http://www.roblox.com/asset/?id=6031572309";
  1016. ["19mp"] = "http://www.roblox.com/asset/?id=6031339054";
  1017. ["grain"] = "http://www.roblox.com/asset/?id=6034333288";
  1018. ["receipt_long"] = "http://www.roblox.com/asset/?id=6031763428";
  1019. ["photo_filter"] = "http://www.roblox.com/asset/?id=6031770992";
  1020. ["edit"] = "http://www.roblox.com/asset/?id=6034328955";
  1021. ["healing"] = "http://www.roblox.com/asset/?id=6034407071";
  1022. ["exposure_neg_1"] = "http://www.roblox.com/asset/?id=6034328957";
  1023. ["exposure"] = "http://www.roblox.com/asset/?id=6034328962";
  1024. ["wb_shade"] = "http://www.roblox.com/asset/?id=6034315974";
  1025. ["compare"] = "http://www.roblox.com/asset/?id=6031625151";
  1026. ["cases"] = "http://www.roblox.com/asset/?id=6031572324";
  1027. ["timer_3"] = "http://www.roblox.com/asset/?id=6031754540";
  1028. ["exposure_plus_2"] = "http://www.roblox.com/asset/?id=6034328961";
  1029. ["12mp"] = "http://www.roblox.com/asset/?id=6031328140";
  1030. ["22mp"] = "http://www.roblox.com/asset/?id=6031360353";
  1031. ["timer_off"] = "http://www.roblox.com/asset/?id=6031734881";
  1032. ["auto_stories"] = "http://www.roblox.com/asset/?id=6031360360";
  1033. ["rotate_left"] = "http://www.roblox.com/asset/?id=6031763427";
  1034. ["wb_iridescent"] = "http://www.roblox.com/asset/?id=6034315972";
  1035. ["shutter_speed"] = "http://www.roblox.com/asset/?id=6031763443";
  1036. ["switch_video"] = "http://www.roblox.com/asset/?id=6031754536";
  1037. ["23mp"] = "http://www.roblox.com/asset/?id=6031339045";
  1038. ["euro"] = "http://www.roblox.com/asset/?id=6034328963";
  1039. ["15mp"] = "http://www.roblox.com/asset/?id=6031328158";
  1040. ["filter_center_focus"] = "http://www.roblox.com/asset/?id=6031600817";
  1041. ["photo_library"] = "http://www.roblox.com/asset/?id=6031770998";
  1042. ["mp"] = "http://www.roblox.com/asset/?id=6034323674";
  1043. ["looks_4"] = "http://www.roblox.com/asset/?id=6034407089";
  1044. ["filter_2"] = "http://www.roblox.com/asset/?id=6031597521";
  1045. ["crop_3_2"] = "http://www.roblox.com/asset/?id=6034328956";
  1046. ["auto_fix_normal"] = "http://www.roblox.com/asset/?id=6031371074";
  1047. ["auto_fix_off"] = "http://www.roblox.com/asset/?id=6031360381";
  1048. ["wb_auto"] = "http://www.roblox.com/asset/?id=6031734875";
  1049. ["switch_camera"] = "http://www.roblox.com/asset/?id=6031754550";
  1050. ["filter_vintage"] = "http://www.roblox.com/asset/?id=6031600811";
  1051. ["photo_size_select_small"] = "http://www.roblox.com/asset/?id=6031763457";
  1052. ["blur_linear"] = "http://www.roblox.com/asset/?id=6031488930";
  1053. ["hdr_on"] = "http://www.roblox.com/asset/?id=6034333279";
  1054. ["tag_faces"] = "http://www.roblox.com/asset/?id=6031754560";
  1055. ["21mp"] = "http://www.roblox.com/asset/?id=6031339065";
  1056. ["camera"] = "http://www.roblox.com/asset/?id=6031572312";
  1057. ["image_aspect_ratio"] = "http://www.roblox.com/asset/?id=6034407073";
  1058. ["filter_b_and_w"] = "http://www.roblox.com/asset/?id=6031600824";
  1059. ["crop_landscape"] = "http://www.roblox.com/asset/?id=6031630202";
  1060. ["13mp"] = "http://www.roblox.com/asset/?id=6031328137";
  1061. ["grid_on"] = "http://www.roblox.com/asset/?id=6034333276";
  1062. ["motion_photos_pause"] = "http://www.roblox.com/asset/?id=6034323668";
  1063. ["filter_6"] = "http://www.roblox.com/asset/?id=6031597524";
  1064. ["linked_camera"] = "http://www.roblox.com/asset/?id=6034407082";
  1065. ["panorama_fish_eye"] = "http://www.roblox.com/asset/?id=6034315969";
  1066. ["panorama"] = "http://www.roblox.com/asset/?id=6034315955";
  1067. ["color_lens"] = "http://www.roblox.com/asset/?id=6031625148";
  1068. ["lens"] = "http://www.roblox.com/asset/?id=6034407081";
  1069. ["crop_din"] = "http://www.roblox.com/asset/?id=6031630208";
  1070. ["exposure_neg_2"] = "http://www.roblox.com/asset/?id=6034328973";
  1071. ["mic_external_off"] = "http://www.roblox.com/asset/?id=6034323672";
  1072. ["crop_free"] = "http://www.roblox.com/asset/?id=6031630212";
  1073. ["crop_original"] = "http://www.roblox.com/asset/?id=6031630204";
  1074. ["panorama_photosphere_select"] = "http://www.roblox.com/asset/?id=6034315975";
  1075. ["photo_size_select_actual"] = "http://www.roblox.com/asset/?id=6031771012";
  1076. ["leak_remove"] = "http://www.roblox.com/asset/?id=6034407080";
  1077. ["collections_bookmark"] = "http://www.roblox.com/asset/?id=6034328965";
  1078. ["straighten"] = "http://www.roblox.com/asset/?id=6031754545";
  1079. ["timelapse"] = "http://www.roblox.com/asset/?id=6031754541";
  1080. ["picture_as_pdf"] = "http://www.roblox.com/asset/?id=6031763425";
  1081. ["crop_rotate"] = "http://www.roblox.com/asset/?id=6031630203";
  1082. ["control_point_duplicate"] = "http://www.roblox.com/asset/?id=6034328959";
  1083. ["photo_camera_back"] = "http://www.roblox.com/asset/?id=6031771007";
  1084. ["looks_3"] = "http://www.roblox.com/asset/?id=6034407088";
  1085. ["motion_photos_off"] = "http://www.roblox.com/asset/?id=6034323670";
  1086. ["rotate_right"] = "http://www.roblox.com/asset/?id=6031763429";
  1087. ["view_compact"] = "http://www.roblox.com/asset/?id=6031734878";
  1088. ["crop_7_5"] = "http://www.roblox.com/asset/?id=6031630197";
  1089. ["style"] = "http://www.roblox.com/asset/?id=6031754538";
  1090. ["exposure_zero"] = "http://www.roblox.com/asset/?id=6034329000";
  1091. ["camera_front"] = "http://www.roblox.com/asset/?id=6031572318";
  1092. ["hdr_strong"] = "http://www.roblox.com/asset/?id=6034333272";
  1093. ["view_comfy"] = "http://www.roblox.com/asset/?id=6031734876";
  1094. ["panorama_vertical"] = "http://www.roblox.com/asset/?id=6034315963";
  1095. ["panorama_vertical_select"] = "http://www.roblox.com/asset/?id=6034315961";
  1096. ["looks_two"] = "http://www.roblox.com/asset/?id=6034412757";
  1097. ["filter_drama"] = "http://www.roblox.com/asset/?id=6031600813";
  1098. ["center_focus_strong"] = "http://www.roblox.com/asset/?id=6031625147";
  1099. ["18mp"] = "http://www.roblox.com/asset/?id=6031339064";
  1100. ["7mp"] = "http://www.roblox.com/asset/?id=6031328139";
  1101. ["wb_sunny"] = "http://www.roblox.com/asset/?id=6034412758";
  1102. ["filter_9_plus"] = "http://www.roblox.com/asset/?id=6031600812";
  1103. ["crop"] = "http://www.roblox.com/asset/?id=6034328964";
  1104. ["vignette"] = "http://www.roblox.com/asset/?id=6031734905";
  1105. ["brightness_2"] = "http://www.roblox.com/asset/?id=6031488938";
  1106. ["crop_square"] = "http://www.roblox.com/asset/?id=6031630222";
  1107. ["looks_5"] = "http://www.roblox.com/asset/?id=6034412764";
  1108. ["flip"] = "http://www.roblox.com/asset/?id=6034333275";
  1109. ["looks_one"] = "http://www.roblox.com/asset/?id=6034412761";
  1110. ["flash_off"] = "http://www.roblox.com/asset/?id=6034333270";
  1111. ["hdr_off"] = "http://www.roblox.com/asset/?id=6034333266";
  1112. ["photo_album"] = "http://www.roblox.com/asset/?id=6031770989";
  1113. ["motion_photos_paused"] = "http://www.roblox.com/asset/?id=6034323675";
  1114. ["photo_camera"] = "http://www.roblox.com/asset/?id=6031770997";
  1115. ["2mp"] = "http://www.roblox.com/asset/?id=6031328138";
  1116. ["3mp"] = "http://www.roblox.com/asset/?id=6031328136";
  1117. ["24mp"] = "http://www.roblox.com/asset/?id=6031360352";
  1118. ["filter_9"] = "http://www.roblox.com/asset/?id=6031597534";
  1119. ["6mp"] = "http://www.roblox.com/asset/?id=6031328131";
  1120. ["remove_red_eye"] = "http://www.roblox.com/asset/?id=6031763426";
  1121. ["4mp"] = "http://www.roblox.com/asset/?id=6031328152";
  1122. ["add_a_photo"] = "http://www.roblox.com/asset/?id=6031339049";
  1123. ["filter_3"] = "http://www.roblox.com/asset/?id=6031597513";
  1124. ["crop_5_4"] = "http://www.roblox.com/asset/?id=6034328960";
  1125. ["8mp"] = "http://www.roblox.com/asset/?id=6031328133";
  1126. ["camera_roll"] = "http://www.roblox.com/asset/?id=6031572314";
  1127. ["panorama_wide_angle"] = "http://www.roblox.com/asset/?id=6031770995";
  1128. ["transform"] = "http://www.roblox.com/asset/?id=6031734873";
  1129. ["flare"] = "http://www.roblox.com/asset/?id=6031600816";
  1130. ["image_search"] = "http://www.roblox.com/asset/?id=6034407084";
  1131. ["auto_awesome"] = "http://www.roblox.com/asset/?id=6031360365";
  1132. ["motion_photos_on"] = "http://www.roblox.com/asset/?id=6034323669";
  1133. ["rotate_90_degrees_ccw"] = "http://www.roblox.com/asset/?id=6031763456";
  1134. ["filter_1"] = "http://www.roblox.com/asset/?id=6031597511";
  1135. ["filter_tilt_shift"] = "http://www.roblox.com/asset/?id=6031600814";
  1136. ["image"] = "http://www.roblox.com/asset/?id=6034407078";
  1137. ["center_focus_weak"] = "http://www.roblox.com/asset/?id=6031625144";
  1138. ["blur_circular"] = "http://www.roblox.com/asset/?id=6031488945";
  1139. ["bedtime"] = "http://www.roblox.com/asset/?id=6031371054";
  1140. ["auto_fix_high"] = "http://www.roblox.com/asset/?id=6031360355";
  1141. ["monochrome_photos"] = "http://www.roblox.com/asset/?id=6034323678";
  1142. ["flash_auto"] = "http://www.roblox.com/asset/?id=6034333287";
  1143. ["5mp"] = "http://www.roblox.com/asset/?id=6031328144";
  1144. ["photo_size_select_large"] = "http://www.roblox.com/asset/?id=6031763423";
  1145. ["assistant_photo"] = "http://www.roblox.com/asset/?id=6031339052";
  1146. ["animation"] = "http://www.roblox.com/asset/?id=6031625150";
  1147. ["looks"] = "http://www.roblox.com/asset/?id=6034407096";
  1148. ["17mp"] = "http://www.roblox.com/asset/?id=6031339055";
  1149. ["panorama_horizontal_select"] = "http://www.roblox.com/asset/?id=6034315965";
  1150. ["flash_on"] = "http://www.roblox.com/asset/?id=6034333271";
  1151. ["iso"] = "http://www.roblox.com/asset/?id=6034407106";
  1152. ["music_note"] = "http://www.roblox.com/asset/?id=6034323673";
  1153. ["music_off"] = "http://www.roblox.com/asset/?id=6034323679";
  1154. ["navigate_next"] = "http://www.roblox.com/asset/?id=6034315956";
  1155. ["timer"] = "http://www.roblox.com/asset/?id=6031754564";
  1156. ["loupe"] = "http://www.roblox.com/asset/?id=6034412770";
  1157. ["navigate_before"] = "http://www.roblox.com/asset/?id=6034323696";
  1158. ["brightness_1"] = "http://www.roblox.com/asset/?id=6031471488";
  1159. ["brightness_7"] = "http://www.roblox.com/asset/?id=6031471491";
  1160. ["tonality"] = "http://www.roblox.com/asset/?id=6031734891";
  1161. ["brush"] = "http://www.roblox.com/asset/?id=6031572320";
  1162. ["colorize"] = "http://www.roblox.com/asset/?id=6031625161";
  1163. ["filter_7"] = "http://www.roblox.com/asset/?id=6031597515";
  1164. ["16mp"] = "http://www.roblox.com/asset/?id=6031328168";
  1165. ["timer_10"] = "http://www.roblox.com/asset/?id=6031734880";
  1166. ["portrait"] = "http://www.roblox.com/asset/?id=6031763434";
  1167. ["tune"] = "http://www.roblox.com/asset/?id=6031734877";
  1168. ["image_not_supported"] = "http://www.roblox.com/asset/?id=6034407076";
  1169. ["wb_cloudy"] = "http://www.roblox.com/asset/?id=6031734907";
  1170. ["auto_awesome_motion"] = "http://www.roblox.com/asset/?id=6031360370";
  1171. ["filter_8"] = "http://www.roblox.com/asset/?id=6031597532";
  1172. ["brightness_5"] = "http://www.roblox.com/asset/?id=6031471479";
  1173. ["movie_filter"] = "http://www.roblox.com/asset/?id=6034323687";
  1174. ["add_photo_alternate"] = "http://www.roblox.com/asset/?id=6031471484";
  1175. ["add_to_photos"] = "http://www.roblox.com/asset/?id=6031371075";
  1176. ["texture"] = "http://www.roblox.com/asset/?id=6031754553";
  1177. ["11mp"] = "http://www.roblox.com/asset/?id=6031328141";
  1178. ["mic_external_on"] = "http://www.roblox.com/asset/?id=6034323671";
  1179. ["looks_6"] = "http://www.roblox.com/asset/?id=6034412759";
  1180. ["dehaze"] = "http://www.roblox.com/asset/?id=6031630200";
  1181. ["control_point"] = "http://www.roblox.com/asset/?id=6031625131";
  1182. ["panorama_photosphere"] = "http://www.roblox.com/asset/?id=6034412763";
  1183. ["filter_frames"] = "http://www.roblox.com/asset/?id=6031600833";
  1184. ["auto_awesome_mosaic"] = "http://www.roblox.com/asset/?id=6031371053";
  1185. ["9mp"] = "http://www.roblox.com/asset/?id=6031328146";
  1186. ["filter"] = "http://www.roblox.com/asset/?id=6031597514";
  1187. ["brightness_3"] = "http://www.roblox.com/asset/?id=6031572317";
  1188. ["dirty_lens"] = "http://www.roblox.com/asset/?id=6034328967";
  1189. ["wb_incandescent"] = "http://www.roblox.com/asset/?id=6034316010";
  1190. ["filter_hdr"] = "http://www.roblox.com/asset/?id=6031600819";
  1191. ["textsms"] = "http://www.roblox.com/asset/?id=6035202006";
  1192. ["comment"] = "http://www.roblox.com/asset/?id=6035181871";
  1193. ["call_end"] = "http://www.roblox.com/asset/?id=6035173845";
  1194. ["qr_code_scanner"] = "http://www.roblox.com/asset/?id=6035202022";
  1195. ["phonelink_setup"] = "http://www.roblox.com/asset/?id=6035202025";
  1196. ["call_merge"] = "http://www.roblox.com/asset/?id=6035173843";
  1197. ["phonelink_erase"] = "http://www.roblox.com/asset/?id=6035202085";
  1198. ["contact_mail"] = "http://www.roblox.com/asset/?id=6035181868";
  1199. ["contact_phone"] = "http://www.roblox.com/asset/?id=6035181861";
  1200. ["screen_share"] = "http://www.roblox.com/asset/?id=6035202008";
  1201. ["present_to_all"] = "http://www.roblox.com/asset/?id=6035202020";
  1202. ["stay_primary_portrait"] = "http://www.roblox.com/asset/?id=6035202009";
  1203. ["message"] = "http://www.roblox.com/asset/?id=6035202033";
  1204. ["sentiment_satisfied_alt"] = "http://www.roblox.com/asset/?id=6035202069";
  1205. ["stay_current_portrait"] = "http://www.roblox.com/asset/?id=6035202004";
  1206. ["voicemail"] = "http://www.roblox.com/asset/?id=6035202019";
  1207. ["business"] = "http://www.roblox.com/asset/?id=6035173853";
  1208. ["mail_outline"] = "http://www.roblox.com/asset/?id=6035190844";
  1209. ["vpn_key"] = "http://www.roblox.com/asset/?id=6035202034";
  1210. ["forward_to_inbox"] = "http://www.roblox.com/asset/?id=6035190840";
  1211. ["contacts"] = "http://www.roblox.com/asset/?id=6035181864";
  1212. ["phonelink_ring"] = "http://www.roblox.com/asset/?id=6035202066";
  1213. ["domain_disabled"] = "http://www.roblox.com/asset/?id=6035181862";
  1214. ["person_add_disabled"] = "http://www.roblox.com/asset/?id=6035202007";
  1215. ["stay_primary_landscape"] = "http://www.roblox.com/asset/?id=6035202026";
  1216. ["alternate_email"] = "http://www.roblox.com/asset/?id=6035173865";
  1217. ["phone_disabled"] = "http://www.roblox.com/asset/?id=6035202028";
  1218. ["email"] = "http://www.roblox.com/asset/?id=6035181866";
  1219. ["mobile_screen_share"] = "http://www.roblox.com/asset/?id=6035202021";
  1220. ["live_help"] = "http://www.roblox.com/asset/?id=6035190836";
  1221. ["chat_bubble"] = "http://www.roblox.com/asset/?id=6035181858";
  1222. ["stop_screen_share"] = "http://www.roblox.com/asset/?id=6035202042";
  1223. ["location_on"] = "http://www.roblox.com/asset/?id=6035190846";
  1224. ["chat_bubble_outline"] = "http://www.roblox.com/asset/?id=6035181869";
  1225. ["dialer_sip"] = "http://www.roblox.com/asset/?id=6035181865";
  1226. ["no_sim"] = "http://www.roblox.com/asset/?id=6035202030";
  1227. ["list_alt"] = "http://www.roblox.com/asset/?id=6035190838";
  1228. ["call"] = "http://www.roblox.com/asset/?id=6035173859";
  1229. ["pause_presentation"] = "http://www.roblox.com/asset/?id=6035202015";
  1230. ["invert_colors_off"] = "http://www.roblox.com/asset/?id=6035190842";
  1231. ["call_missed_outgoing"] = "http://www.roblox.com/asset/?id=6035173847";
  1232. ["stay_current_landscape"] = "http://www.roblox.com/asset/?id=6035202011";
  1233. ["import_export"] = "http://www.roblox.com/asset/?id=6035202040";
  1234. ["add_ic_call"] = "http://www.roblox.com/asset/?id=6035173839";
  1235. ["dialpad"] = "http://www.roblox.com/asset/?id=6035181892";
  1236. ["nat"] = "http://www.roblox.com/asset/?id=6035202082";
  1237. ["unsubscribe"] = "http://www.roblox.com/asset/?id=6035202044";
  1238. ["mark_chat_unread"] = "http://www.roblox.com/asset/?id=6035190841";
  1239. ["portable_wifi_off"] = "http://www.roblox.com/asset/?id=6035202091";
  1240. ["location_off"] = "http://www.roblox.com/asset/?id=6035202049";
  1241. ["person_search"] = "http://www.roblox.com/asset/?id=6035202013";
  1242. ["phonelink_lock"] = "http://www.roblox.com/asset/?id=6035202064";
  1243. ["desktop_access_disabled"] = "http://www.roblox.com/asset/?id=6035181863";
  1244. ["import_contacts"] = "http://www.roblox.com/asset/?id=6035190854";
  1245. ["rss_feed"] = "http://www.roblox.com/asset/?id=6035202016";
  1246. ["chat"] = "http://www.roblox.com/asset/?id=6035173838";
  1247. ["print_disabled"] = "http://www.roblox.com/asset/?id=6035202041";
  1248. ["mark_email_read"] = "http://www.roblox.com/asset/?id=6035202038";
  1249. ["hourglass_top"] = "http://www.roblox.com/asset/?id=6035190886";
  1250. ["clear_all"] = "http://www.roblox.com/asset/?id=6035181870";
  1251. ["forum"] = "http://www.roblox.com/asset/?id=6035202002";
  1252. ["qr_code"] = "http://www.roblox.com/asset/?id=6035202012";
  1253. ["speaker_phone"] = "http://www.roblox.com/asset/?id=6035202018";
  1254. ["rtt"] = "http://www.roblox.com/asset/?id=6035202010";
  1255. ["domain_verification"] = "http://www.roblox.com/asset/?id=6035181867";
  1256. ["app_registration"] = "http://www.roblox.com/asset/?id=6035173870";
  1257. ["call_split"] = "http://www.roblox.com/asset/?id=6035173861";
  1258. ["cell_wifi"] = "http://www.roblox.com/asset/?id=6035173852";
  1259. ["phone_enabled"] = "http://www.roblox.com/asset/?id=6035202089";
  1260. ["call_made"] = "http://www.roblox.com/asset/?id=6035173858";
  1261. ["call_received"] = "http://www.roblox.com/asset/?id=6035173844";
  1262. ["phone"] = "http://www.roblox.com/asset/?id=6035202017";
  1263. ["ring_volume"] = "http://www.roblox.com/asset/?id=6035202032";
  1264. ["mark_email_unread"] = "http://www.roblox.com/asset/?id=6035202027";
  1265. ["hourglass_bottom"] = "http://www.roblox.com/asset/?id=6035202043";
  1266. ["read_more"] = "http://www.roblox.com/asset/?id=6035202014";
  1267. ["duo"] = "http://www.roblox.com/asset/?id=6035181860";
  1268. ["more_time"] = "http://www.roblox.com/asset/?id=6035202036";
  1269. ["wifi_calling"] = "http://www.roblox.com/asset/?id=6035202065";
  1270. ["swap_calls"] = "http://www.roblox.com/asset/?id=6035202037";
  1271. ["cancel_presentation"] = "http://www.roblox.com/asset/?id=6035173837";
  1272. ["call_missed"] = "http://www.roblox.com/asset/?id=6035173850";
  1273. ["mark_chat_read"] = "http://www.roblox.com/asset/?id=6035202031";
  1274. ["text_snippet"] = "http://www.roblox.com/asset/?id=6031302995";
  1275. ["snippet_folder"] = "http://www.roblox.com/asset/?id=6031302947";
  1276. ["workspaces_outline"] = "http://www.roblox.com/asset/?id=6031302952";
  1277. ["file_download"] = "http://www.roblox.com/asset/?id=6031302931";
  1278. ["request_quote"] = "http://www.roblox.com/asset/?id=6031302941";
  1279. ["approval"] = "http://www.roblox.com/asset/?id=6031302928";
  1280. ["drive_folder_upload"] = "http://www.roblox.com/asset/?id=6031302929";
  1281. ["rule_folder"] = "http://www.roblox.com/asset/?id=6031302940";
  1282. ["attach_email"] = "http://www.roblox.com/asset/?id=6031302935";
  1283. ["topic"] = "http://www.roblox.com/asset/?id=6031302976";
  1284. ["upload_file"] = "http://www.roblox.com/asset/?id=6031302959";
  1285. ["attachment"] = "http://www.roblox.com/asset/?id=6031302921";
  1286. ["file_download_done"] = "http://www.roblox.com/asset/?id=6031302926";
  1287. ["drive_file_move_outline"] = "http://www.roblox.com/asset/?id=6031302924";
  1288. ["cloud_upload"] = "http://www.roblox.com/asset/?id=6031302992";
  1289. ["cloud_circle"] = "http://www.roblox.com/asset/?id=6031302919";
  1290. ["folder_shared"] = "http://www.roblox.com/asset/?id=6031302945";
  1291. ["cloud_download"] = "http://www.roblox.com/asset/?id=6031302917";
  1292. ["file_upload"] = "http://www.roblox.com/asset/?id=6031302996";
  1293. ["workspaces_filled"] = "http://www.roblox.com/asset/?id=6031302961";
  1294. ["cloud_queue"] = "http://www.roblox.com/asset/?id=6031302916";
  1295. ["cloud"] = "http://www.roblox.com/asset/?id=6031302918";
  1296. ["folder_open"] = "http://www.roblox.com/asset/?id=6031302934";
  1297. ["grid_view"] = "http://www.roblox.com/asset/?id=6031302950";
  1298. ["cloud_off"] = "http://www.roblox.com/asset/?id=6031302993";
  1299. ["create_new_folder"] = "http://www.roblox.com/asset/?id=6031302933";
  1300. ["cloud_done"] = "http://www.roblox.com/asset/?id=6031302927";
  1301. ["folder"] = "http://www.roblox.com/asset/?id=6031302932";
  1302. ["drive_file_move"] = "http://www.roblox.com/asset/?id=6031302922";
  1303. ["drive_file_rename_outline"] = "http://www.roblox.com/asset/?id=6031302994";
  1304. ["notifications_active"] = "http://www.roblox.com/asset/?id=6034304908";
  1305. ["sentiment_neutral"] = "http://www.roblox.com/asset/?id=6034230636";
  1306. ["sick"] = "http://www.roblox.com/asset/?id=6034230642";
  1307. ["poll"] = "http://www.roblox.com/asset/?id=6034267991";
  1308. ["emoji_events"] = "http://www.roblox.com/asset/?id=6034275726";
  1309. ["groups"] = "http://www.roblox.com/asset/?id=6034281935";
  1310. ["sports_soccer"] = "http://www.roblox.com/asset/?id=6034227075";
  1311. ["person_add"] = "http://www.roblox.com/asset/?id=6034287514";
  1312. ["mood_bad"] = "http://www.roblox.com/asset/?id=6034295706";
  1313. ["person_remove_alt_1"] = "http://www.roblox.com/asset/?id=6034287515";
  1314. ["king_bed"] = "http://www.roblox.com/asset/?id=6034281948";
  1315. ["architecture"] = "http://www.roblox.com/asset/?id=6034275730";
  1316. ["deck"] = "http://www.roblox.com/asset/?id=6034295703";
  1317. ["group_add"] = "http://www.roblox.com/asset/?id=6034281909";
  1318. ["sports_basketball"] = "http://www.roblox.com/asset/?id=6034230649";
  1319. ["emoji_symbols"] = "http://www.roblox.com/asset/?id=6034281899";
  1320. ["switch_account"] = "http://www.roblox.com/asset/?id=6034227138";
  1321. ["remove_moderator"] = "http://www.roblox.com/asset/?id=6034267998";
  1322. ["coronavirus"] = "http://www.roblox.com/asset/?id=6034275724";
  1323. ["people"] = "http://www.roblox.com/asset/?id=6034287513";
  1324. ["person"] = "http://www.roblox.com/asset/?id=6034287594";
  1325. ["elderly"] = "http://www.roblox.com/asset/?id=6034295698";
  1326. ["clean_hands"] = "http://www.roblox.com/asset/?id=6034275729";
  1327. ["emoji_flags"] = "http://www.roblox.com/asset/?id=6034304898";
  1328. ["psychology"] = "http://www.roblox.com/asset/?id=6034287516";
  1329. ["person_add_alt"] = "http://www.roblox.com/asset/?id=6034267994";
  1330. ["sports_volleyball"] = "http://www.roblox.com/asset/?id=6034227139";
  1331. ["domain"] = "http://www.roblox.com/asset/?id=6034275722";
  1332. ["emoji_objects"] = "http://www.roblox.com/asset/?id=6034281900";
  1333. ["ios_share"] = "http://www.roblox.com/asset/?id=6034281941";
  1334. ["history_edu"] = "http://www.roblox.com/asset/?id=6034281934";
  1335. ["share"] = "http://www.roblox.com/asset/?id=6034230648";
  1336. ["military_tech"] = "http://www.roblox.com/asset/?id=6034295711";
  1337. ["sports_kabaddi"] = "http://www.roblox.com/asset/?id=6034227141";
  1338. ["cake"] = "http://www.roblox.com/asset/?id=6034295702";
  1339. ["engineering"] = "http://www.roblox.com/asset/?id=6034281908";
  1340. ["emoji_food_beverage"] = "http://www.roblox.com/asset/?id=6034304883";
  1341. ["notifications_none"] = "http://www.roblox.com/asset/?id=6034308947";
  1342. ["emoji_people"] = "http://www.roblox.com/asset/?id=6034281904";
  1343. ["thumb_down_alt"] = "http://www.roblox.com/asset/?id=6034227069";
  1344. ["sentiment_very_satisfied"] = "http://www.roblox.com/asset/?id=6034230650";
  1345. ["nights_stay"] = "http://www.roblox.com/asset/?id=6034304881";
  1346. ["reduce_capacity"] = "http://www.roblox.com/asset/?id=6034268013";
  1347. ["add_moderator"] = "http://www.roblox.com/asset/?id=6034295699";
  1348. ["science"] = "http://www.roblox.com/asset/?id=6034230640";
  1349. ["pages"] = "http://www.roblox.com/asset/?id=6034304892";
  1350. ["sentiment_satisfied"] = "http://www.roblox.com/asset/?id=6034230668";
  1351. ["plus_one"] = "http://www.roblox.com/asset/?id=6034268012";
  1352. ["party_mode"] = "http://www.roblox.com/asset/?id=6034287521";
  1353. ["person_remove"] = "http://www.roblox.com/asset/?id=6034267996";
  1354. ["single_bed"] = "http://www.roblox.com/asset/?id=6034230651";
  1355. ["mood"] = "http://www.roblox.com/asset/?id=6034295704";
  1356. ["public"] = "http://www.roblox.com/asset/?id=6034287522";
  1357. ["sports_rugby"] = "http://www.roblox.com/asset/?id=6034227073";
  1358. ["sports_handball"] = "http://www.roblox.com/asset/?id=6034227074";
  1359. ["person_add_alt_1"] = "http://www.roblox.com/asset/?id=6034287519";
  1360. ["people_alt"] = "http://www.roblox.com/asset/?id=6034287518";
  1361. ["notifications_off"] = "http://www.roblox.com/asset/?id=6034304894";
  1362. ["whatshot"] = "http://www.roblox.com/asset/?id=6034287525";
  1363. ["emoji_transportation"] = "http://www.roblox.com/asset/?id=6034281894";
  1364. ["outdoor_grill"] = "http://www.roblox.com/asset/?id=6034304900";
  1365. ["sentiment_very_dissatisfied"] = "http://www.roblox.com/asset/?id=6034230659";
  1366. ["masks"] = "http://www.roblox.com/asset/?id=6034295710";
  1367. ["luggage"] = "http://www.roblox.com/asset/?id=6034295708";
  1368. ["sports_motorsports"] = "http://www.roblox.com/asset/?id=6034227071";
  1369. ["sports_esports"] = "http://www.roblox.com/asset/?id=6034227061";
  1370. ["location_city"] = "http://www.roblox.com/asset/?id=6034304889";
  1371. ["sports_golf"] = "http://www.roblox.com/asset/?id=6034227060";
  1372. ["sentiment_dissatisfied"] = "http://www.roblox.com/asset/?id=6034230637";
  1373. ["no_luggage"] = "http://www.roblox.com/asset/?id=6034304891";
  1374. ["fireplace"] = "http://www.roblox.com/asset/?id=6034281910";
  1375. ["emoji_nature"] = "http://www.roblox.com/asset/?id=6034281896";
  1376. ["group"] = "http://www.roblox.com/asset/?id=6034281901";
  1377. ["thumb_up_alt"] = "http://www.roblox.com/asset/?id=6034227076";
  1378. ["sports_tennis"] = "http://www.roblox.com/asset/?id=6034227068";
  1379. ["facebook"] = "http://www.roblox.com/asset/?id=6034281898";
  1380. ["sports_mma"] = "http://www.roblox.com/asset/?id=6034227072";
  1381. ["person_outline"] = "http://www.roblox.com/asset/?id=6034268008";
  1382. ["sports_baseball"] = "http://www.roblox.com/asset/?id=6034230652";
  1383. ["sports_cricket"] = "http://www.roblox.com/asset/?id=6034230660";
  1384. ["people_outline"] = "http://www.roblox.com/asset/?id=6034287528";
  1385. ["notifications_paused"] = "http://www.roblox.com/asset/?id=6034304896";
  1386. ["emoji_emotions"] = "http://www.roblox.com/asset/?id=6034275731";
  1387. ["follow_the_signs"] = "http://www.roblox.com/asset/?id=6034281911";
  1388. ["sanitizer"] = "http://www.roblox.com/asset/?id=6034287586";
  1389. ["self_improvement"] = "http://www.roblox.com/asset/?id=6034230634";
  1390. ["notifications"] = "http://www.roblox.com/asset/?id=6034308946";
  1391. ["public_off"] = "http://www.roblox.com/asset/?id=6034287538";
  1392. ["recommend"] = "http://www.roblox.com/asset/?id=6034287524";
  1393. ["sports_football"] = "http://www.roblox.com/asset/?id=6034227067";
  1394. ["sports_hockey"] = "http://www.roblox.com/asset/?id=6034227064";
  1395. ["school"] = "http://www.roblox.com/asset/?id=6034230641";
  1396. ["connect_without_contact"] = "http://www.roblox.com/asset/?id=6034275800";
  1397. ["sports"] = "http://www.roblox.com/asset/?id=6034230647";
  1398. ["construction"] = "http://www.roblox.com/asset/?id=6034275725";
  1399. ["inventory"] = "http://www.roblox.com/asset/?id=6035056487";
  1400. ["add_box"] = "http://www.roblox.com/asset/?id=6035047375";
  1401. ["how_to_reg"] = "http://www.roblox.com/asset/?id=6035053288";
  1402. ["unarchive"] = "http://www.roblox.com/asset/?id=6035078921";
  1403. ["block_flipped"] = "http://www.roblox.com/asset/?id=6035047378";
  1404. ["file_copy"] = "http://www.roblox.com/asset/?id=6035053293";
  1405. ["bolt"] = "http://www.roblox.com/asset/?id=6035047381";
  1406. ["remove_circle_outline"] = "http://www.roblox.com/asset/?id=6035067843";
  1407. ["move_to_inbox"] = "http://www.roblox.com/asset/?id=6035067838";
  1408. ["save_alt"] = "http://www.roblox.com/asset/?id=6035067842";
  1409. ["weekend"] = "http://www.roblox.com/asset/?id=6035078894";
  1410. ["where_to_vote"] = "http://www.roblox.com/asset/?id=6035078913";
  1411. ["biotech"] = "http://www.roblox.com/asset/?id=6035047385";
  1412. ["report_off"] = "http://www.roblox.com/asset/?id=6035067830";
  1413. ["clear"] = "http://www.roblox.com/asset/?id=6035047409";
  1414. ["redo"] = "http://www.roblox.com/asset/?id=6035056483";
  1415. ["link"] = "http://www.roblox.com/asset/?id=6035056475";
  1416. ["drafts"] = "http://www.roblox.com/asset/?id=6035053297";
  1417. ["push_pin"] = "http://www.roblox.com/asset/?id=6035056481";
  1418. ["reply"] = "http://www.roblox.com/asset/?id=6035067844";
  1419. ["undo"] = "http://www.roblox.com/asset/?id=6035078896";
  1420. ["archive"] = "http://www.roblox.com/asset/?id=6035047379";
  1421. ["add"] = "http://www.roblox.com/asset/?id=6035047377";
  1422. ["insights"] = "http://www.roblox.com/asset/?id=6035067839";
  1423. ["flag"] = "http://www.roblox.com/asset/?id=6035053279";
  1424. ["save"] = "http://www.roblox.com/asset/?id=6035067857";
  1425. ["text_format"] = "http://www.roblox.com/asset/?id=6035078890";
  1426. ["content_cut"] = "http://www.roblox.com/asset/?id=6035053280";
  1427. ["ballot"] = "http://www.roblox.com/asset/?id=6035047386";
  1428. ["remove"] = "http://www.roblox.com/asset/?id=6035067836";
  1429. ["calculate"] = "http://www.roblox.com/asset/?id=6035047384";
  1430. ["report"] = "http://www.roblox.com/asset/?id=6035067826";
  1431. ["markunread"] = "http://www.roblox.com/asset/?id=6035056476";
  1432. ["delete_sweep"] = "http://www.roblox.com/asset/?id=6035053301";
  1433. ["gesture"] = "http://www.roblox.com/asset/?id=6035053287";
  1434. ["link_off"] = "http://www.roblox.com/asset/?id=6035056484";
  1435. ["forward"] = "http://www.roblox.com/asset/?id=6035053298";
  1436. ["reply_all"] = "http://www.roblox.com/asset/?id=6035067824";
  1437. ["how_to_vote"] = "http://www.roblox.com/asset/?id=6035053295";
  1438. ["square_foot"] = "http://www.roblox.com/asset/?id=6035078918";
  1439. ["outlined_flag"] = "http://www.roblox.com/asset/?id=6035056486";
  1440. ["add_circle"] = "http://www.roblox.com/asset/?id=6035047380";
  1441. ["stacked_bar_chart"] = "http://www.roblox.com/asset/?id=6035078892";
  1442. ["policy"] = "http://www.roblox.com/asset/?id=6035056512";
  1443. ["backspace"] = "http://www.roblox.com/asset/?id=6035047397";
  1444. ["sort"] = "http://www.roblox.com/asset/?id=6035078888";
  1445. ["content_paste"] = "http://www.roblox.com/asset/?id=6035053285";
  1446. ["low_priority"] = "http://www.roblox.com/asset/?id=6035056491";
  1447. ["font_download"] = "http://www.roblox.com/asset/?id=6035053275";
  1448. ["shield"] = "http://www.roblox.com/asset/?id=6035078889";
  1449. ["waves"] = "http://www.roblox.com/asset/?id=6035078898";
  1450. ["select_all"] = "http://www.roblox.com/asset/?id=6035067834";
  1451. ["dynamic_feed"] = "http://www.roblox.com/asset/?id=6035053289";
  1452. ["mail"] = "http://www.roblox.com/asset/?id=6035056477";
  1453. ["amp_stories"] = "http://www.roblox.com/asset/?id=6035047382";
  1454. ["filter_list"] = "http://www.roblox.com/asset/?id=6035053294";
  1455. ["send"] = "http://www.roblox.com/asset/?id=6035067832";
  1456. ["create"] = "http://www.roblox.com/asset/?id=6035053304";
  1457. ["stream"] = "http://www.roblox.com/asset/?id=6035078897";
  1458. ["next_week"] = "http://www.roblox.com/asset/?id=6035067835";
  1459. ["inbox"] = "http://www.roblox.com/asset/?id=6035067831";
  1460. ["add_link"] = "http://www.roblox.com/asset/?id=6035047374";
  1461. ["content_copy"] = "http://www.roblox.com/asset/?id=6035053278";
  1462. ["remove_circle"] = "http://www.roblox.com/asset/?id=6035067837";
  1463. ["add_circle_outline"] = "http://www.roblox.com/asset/?id=6035047391";
  1464. ["block"] = "http://www.roblox.com/asset/?id=6035047387";
  1465. ["tag"] = "http://www.roblox.com/asset/?id=6035078895";
  1466. ["beach_access"] = "http://www.roblox.com/asset/?id=6035107923";
  1467. ["stroller"] = "http://www.roblox.com/asset/?id=6035161535";
  1468. ["family_restroom"] = "http://www.roblox.com/asset/?id=6035121916";
  1469. ["corporate_fare"] = "http://www.roblox.com/asset/?id=6035121908";
  1470. ["no_meeting_room"] = "http://www.roblox.com/asset/?id=6035153649";
  1471. ["do_not_touch"] = "http://www.roblox.com/asset/?id=6035121915";
  1472. ["ac_unit"] = "http://www.roblox.com/asset/?id=6035107929";
  1473. ["business_center"] = "http://www.roblox.com/asset/?id=6035107933";
  1474. ["spa"] = "http://www.roblox.com/asset/?id=6035153639";
  1475. ["no_flash"] = "http://www.roblox.com/asset/?id=6035145424";
  1476. ["no_cell"] = "http://www.roblox.com/asset/?id=6035145376";
  1477. ["room_service"] = "http://www.roblox.com/asset/?id=6035153648";
  1478. ["tapas"] = "http://www.roblox.com/asset/?id=6035161533";
  1479. ["microwave"] = "http://www.roblox.com/asset/?id=6035145367";
  1480. ["meeting_room"] = "http://www.roblox.com/asset/?id=6035145361";
  1481. ["wash"] = "http://www.roblox.com/asset/?id=6035161540";
  1482. ["escalator"] = "http://www.roblox.com/asset/?id=6035121939";
  1483. ["house_siding"] = "http://www.roblox.com/asset/?id=6035145393";
  1484. ["food_bank"] = "http://www.roblox.com/asset/?id=6035121921";
  1485. ["foundation"] = "http://www.roblox.com/asset/?id=6035121918";
  1486. ["elevator"] = "http://www.roblox.com/asset/?id=6035121912";
  1487. ["room_preferences"] = "http://www.roblox.com/asset/?id=6035153642";
  1488. ["do_not_step"] = "http://www.roblox.com/asset/?id=6035121910";
  1489. ["free_breakfast"] = "http://www.roblox.com/asset/?id=6035145363";
  1490. ["house"] = "http://www.roblox.com/asset/?id=6035145364";
  1491. ["child_care"] = "http://www.roblox.com/asset/?id=6035107927";
  1492. ["night_shelter"] = "http://www.roblox.com/asset/?id=6035145378";
  1493. ["child_friendly"] = "http://www.roblox.com/asset/?id=6035121942";
  1494. ["checkroom"] = "http://www.roblox.com/asset/?id=6035107931";
  1495. ["hot_tub"] = "http://www.roblox.com/asset/?id=6035145382";
  1496. ["dry"] = "http://www.roblox.com/asset/?id=6035121909";
  1497. ["charging_station"] = "http://www.roblox.com/asset/?id=6035107925";
  1498. ["all_inclusive"] = "http://www.roblox.com/asset/?id=6035107920";
  1499. ["bento"] = "http://www.roblox.com/asset/?id=6035107924";
  1500. ["no_backpack"] = "http://www.roblox.com/asset/?id=6035145368";
  1501. ["storefront"] = "http://www.roblox.com/asset/?id=6035161534";
  1502. ["no_food"] = "http://www.roblox.com/asset/?id=6035145372";
  1503. ["backpack"] = "http://www.roblox.com/asset/?id=6035107928";
  1504. ["stairs"] = "http://www.roblox.com/asset/?id=6035153637";
  1505. ["carpenter"] = "http://www.roblox.com/asset/?id=6035107955";
  1506. ["no_stroller"] = "http://www.roblox.com/asset/?id=6035153661";
  1507. ["roofing"] = "http://www.roblox.com/asset/?id=6035153656";
  1508. ["umbrella"] = "http://www.roblox.com/asset/?id=6035161550";
  1509. ["sports_bar"] = "http://www.roblox.com/asset/?id=6035153638";
  1510. ["apartment"] = "http://www.roblox.com/asset/?id=6035107922";
  1511. ["smoke_free"] = "http://www.roblox.com/asset/?id=6035153647";
  1512. ["pool"] = "http://www.roblox.com/asset/?id=6035153655";
  1513. ["bathtub"] = "http://www.roblox.com/asset/?id=6035107939";
  1514. ["no_drinks"] = "http://www.roblox.com/asset/?id=6035145390";
  1515. ["escalator_warning"] = "http://www.roblox.com/asset/?id=6035121930";
  1516. ["wheelchair_pickup"] = "http://www.roblox.com/asset/?id=6035161536";
  1517. ["smoking_rooms"] = "http://www.roblox.com/asset/?id=6035153636";
  1518. ["rice_bowl"] = "http://www.roblox.com/asset/?id=6035153662";
  1519. ["tty"] = "http://www.roblox.com/asset/?id=6035161541";
  1520. ["no_photography"] = "http://www.roblox.com/asset/?id=6035153664";
  1521. ["casino"] = "http://www.roblox.com/asset/?id=6035107936";
  1522. ["fence"] = "http://www.roblox.com/asset/?id=6035121923";
  1523. ["grass"] = "http://www.roblox.com/asset/?id=6035145359";
  1524. ["countertops"] = "http://www.roblox.com/asset/?id=6035121914";
  1525. ["kitchen"] = "http://www.roblox.com/asset/?id=6035145362";
  1526. ["golf_course"] = "http://www.roblox.com/asset/?id=6035145423";
  1527. ["soap"] = "http://www.roblox.com/asset/?id=6035153645";
  1528. ["water_damage"] = "http://www.roblox.com/asset/?id=6035161563";
  1529. ["airport_shuttle"] = "http://www.roblox.com/asset/?id=6035107921";
  1530. ["fitness_center"] = "http://www.roblox.com/asset/?id=6035121907";
  1531. ["baby_changing_station"] = "http://www.roblox.com/asset/?id=6035107930";
  1532. ["fire_extinguisher"] = "http://www.roblox.com/asset/?id=6035121913";
  1533. ["sparkle"] = "http://www.roblox.com/asset/?id=4483362748"
  1534. }
  1535. }
  1536.  
  1537. -- Other Variables
  1538. local request = (syn and syn.request) or (http and http.request) or http_request or nil
  1539. local tweeninfo = TweenInfo.new(0.3, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out)
  1540. local PresetGradients = {
  1541. ["Nightlight (Classic)"] = {Color3.fromRGB(147, 255, 239), Color3.fromRGB(201,211,233), Color3.fromRGB(255, 167, 227)},
  1542. ["Nightlight (Neo)"] = {Color3.fromRGB(117, 164, 206), Color3.fromRGB(123, 201, 201), Color3.fromRGB(224, 138, 175)},
  1543. Starlight = {Color3.fromRGB(147, 255, 239), Color3.fromRGB(181, 206, 241), Color3.fromRGB(214, 158, 243)},
  1544. Solar = {Color3.fromRGB(242, 157, 76), Color3.fromRGB(240, 179, 81), Color3.fromRGB(238, 201, 86)},
  1545. Sparkle = {Color3.fromRGB(199, 130, 242), Color3.fromRGB(221, 130, 238), Color3.fromRGB(243, 129, 233)},
  1546. Lime = {Color3.fromRGB(170, 255, 127), Color3.fromRGB(163, 220, 138), Color3.fromRGB(155, 185, 149)},
  1547. Vine = {Color3.fromRGB(0, 191, 143), Color3.fromRGB(0, 126, 94), Color3.fromRGB(0, 61, 46)},
  1548. Cherry = {Color3.fromRGB(148, 54, 54), Color3.fromRGB(168, 67, 70), Color3.fromRGB(188, 80, 86)},
  1549. Daylight = {Color3.fromRGB(51, 156, 255), Color3.fromRGB(89, 171, 237), Color3.fromRGB(127, 186, 218)},
  1550. Blossom = {Color3.fromRGB(255, 165, 243), Color3.fromRGB(213, 129, 231), Color3.fromRGB(170, 92, 218)},
  1551. }
  1552.  
  1553. local function GetIcon(icon, source)
  1554. if source == "Custom" then
  1555. return "rbxassetid://" .. icon
  1556. elseif source == "Lucide" then
  1557. -- full credit to latte softworks :)
  1558. local iconData = not isStudio and game:HttpGet("https://raw.githubusercontent.com/latte-soft/lucide-roblox/refs/heads/master/lib/Icons.luau")
  1559. local icons = isStudio and IconModule.Lucide or loadstring(iconData)()
  1560. if not isStudio then
  1561. icon = string.match(string.lower(icon), "^%s*(.*)%s*$") :: string
  1562. local sizedicons = icons['48px']
  1563.  
  1564. local r = sizedicons[icon]
  1565. if not r then
  1566. error("Lucide Icons: Failed to find icon by the name of \"" .. icon .. "\.", 2)
  1567. end
  1568.  
  1569. local rirs = r[2]
  1570. local riro = r[3]
  1571.  
  1572. if type(r[1]) ~= "number" or type(rirs) ~= "table" or type(riro) ~= "table" then
  1573. error("Lucide Icons: Internal error: Invalid auto-generated asset entry")
  1574. end
  1575.  
  1576. local irs = Vector2.new(rirs[1], rirs[2])
  1577. local iro = Vector2.new(riro[1], riro[2])
  1578.  
  1579. local asset = {
  1580. id = r[1],
  1581. imageRectSize = irs,
  1582. imageRectOffset = iro,
  1583. }
  1584.  
  1585. return asset
  1586. else
  1587. return "rbxassetid://10723434557"
  1588. end
  1589. else
  1590. if icon ~= nil and IconModule[source] then
  1591. local sourceicon = IconModule[source]
  1592. return sourceicon[icon]
  1593. else
  1594. return nil
  1595. end
  1596. end
  1597. end
  1598.  
  1599. local function RemoveTable(tablre, value)
  1600. for i,v in pairs(tablre) do
  1601. if tostring(v) == tostring(value) then
  1602. table.remove(tablre, i)
  1603. end
  1604. end
  1605. end
  1606.  
  1607. local function Kwargify(defaults, passed)
  1608. for i, v in pairs(defaults) do
  1609. if passed[i] == nil then
  1610. passed[i] = v
  1611. end
  1612. end
  1613. return passed
  1614. end
  1615.  
  1616. local function PackColor(Color)
  1617. return {R = Color.R * 255, G = Color.G * 255, B = Color.B * 255}
  1618. end
  1619.  
  1620. local function UnpackColor(Color)
  1621. return Color3.fromRGB(Color.R, Color.G, Color.B)
  1622. end
  1623.  
  1624. function tween(object, goal, callback, tweenin)
  1625. local tween = TweenService:Create(object,tweenin or tweeninfo, goal)
  1626. tween.Completed:Connect(callback or function() end)
  1627. tween:Play()
  1628. end
  1629.  
  1630. local function BlurModule(Frame)
  1631. local RunService = game:GetService('RunService')
  1632. local camera = workspace.CurrentCamera
  1633. local MTREL = "Glass"
  1634. local binds = {}
  1635. local root = Instance.new('Folder', camera)
  1636. root.Name = 'LunaBlur'
  1637.  
  1638. local gTokenMH = 99999999
  1639. local gToken = math.random(1, gTokenMH)
  1640.  
  1641. local DepthOfField = Instance.new('DepthOfFieldEffect', game:GetService('Lighting'))
  1642. DepthOfField.FarIntensity = 0
  1643. DepthOfField.FocusDistance = 51.6
  1644. DepthOfField.InFocusRadius = 50
  1645. DepthOfField.NearIntensity = 6
  1646. DepthOfField.Name = "DPT_"..gToken
  1647.  
  1648. local frame = Instance.new('Frame')
  1649. frame.Parent = Frame
  1650. frame.Size = UDim2.new(0.95, 0, 0.95, 0)
  1651. frame.Position = UDim2.new(0.5, 0, 0.5, 0)
  1652. frame.AnchorPoint = Vector2.new(0.5, 0.5)
  1653. frame.BackgroundTransparency = 1
  1654.  
  1655. local GenUid; do -- Generate unique names for RenderStepped bindings
  1656. local id = 0
  1657. function GenUid()
  1658. id = id + 1
  1659. return 'neon::'..tostring(id)
  1660. end
  1661. end
  1662.  
  1663. do
  1664. local function IsNotNaN(x)
  1665. return x == x
  1666. end
  1667. local continue = IsNotNaN(camera:ScreenPointToRay(0,0).Origin.x)
  1668. while not continue do
  1669. RunService.RenderStepped:wait()
  1670. continue = IsNotNaN(camera:ScreenPointToRay(0,0).Origin.x)
  1671. end
  1672. end
  1673.  
  1674. local DrawQuad; do
  1675.  
  1676. local acos, max, pi, sqrt = math.acos, math.max, math.pi, math.sqrt
  1677. local sz = 0.22
  1678. local function DrawTriangle(v1, v2, v3, p0, p1) -- I think Stravant wrote this function
  1679.  
  1680. local s1 = (v1 - v2).magnitude
  1681. local s2 = (v2 - v3).magnitude
  1682. local s3 = (v3 - v1).magnitude
  1683. local smax = max(s1, s2, s3)
  1684. local A, B, C
  1685. if s1 == smax then
  1686. A, B, C = v1, v2, v3
  1687. elseif s2 == smax then
  1688. A, B, C = v2, v3, v1
  1689. elseif s3 == smax then
  1690. A, B, C = v3, v1, v2
  1691. end
  1692.  
  1693. local para = ( (B-A).x*(C-A).x + (B-A).y*(C-A).y + (B-A).z*(C-A).z ) / (A-B).magnitude
  1694. local perp = sqrt((C-A).magnitude^2 - para*para)
  1695. local dif_para = (A - B).magnitude - para
  1696.  
  1697. local st = CFrame.new(B, A)
  1698. local za = CFrame.Angles(pi/2,0,0)
  1699.  
  1700. local cf0 = st
  1701.  
  1702. local Top_Look = (cf0 * za).lookVector
  1703. local Mid_Point = A + CFrame.new(A, B).lookVector * para
  1704. local Needed_Look = CFrame.new(Mid_Point, C).lookVector
  1705. local dot = Top_Look.x*Needed_Look.x + Top_Look.y*Needed_Look.y + Top_Look.z*Needed_Look.z
  1706.  
  1707. local ac = CFrame.Angles(0, 0, acos(dot))
  1708.  
  1709. cf0 = cf0 * ac
  1710. if ((cf0 * za).lookVector - Needed_Look).magnitude > 0.01 then
  1711. cf0 = cf0 * CFrame.Angles(0, 0, -2*acos(dot))
  1712. end
  1713. cf0 = cf0 * CFrame.new(0, perp/2, -(dif_para + para/2))
  1714.  
  1715. local cf1 = st * ac * CFrame.Angles(0, pi, 0)
  1716. if ((cf1 * za).lookVector - Needed_Look).magnitude > 0.01 then
  1717. cf1 = cf1 * CFrame.Angles(0, 0, 2*acos(dot))
  1718. end
  1719. cf1 = cf1 * CFrame.new(0, perp/2, dif_para/2)
  1720.  
  1721. if not p0 then
  1722. p0 = Instance.new('Part')
  1723. p0.FormFactor = 'Custom'
  1724. p0.TopSurface = 0
  1725. p0.BottomSurface = 0
  1726. p0.Anchored = true
  1727. p0.CanCollide = false
  1728. p0.CastShadow = false
  1729. p0.Material = MTREL
  1730. p0.Size = Vector3.new(sz, sz, sz)
  1731. local mesh = Instance.new('SpecialMesh', p0)
  1732. mesh.MeshType = 2
  1733. mesh.Name = 'WedgeMesh'
  1734. end
  1735. p0.WedgeMesh.Scale = Vector3.new(0, perp/sz, para/sz)
  1736. p0.CFrame = cf0
  1737.  
  1738. if not p1 then
  1739. p1 = p0:clone()
  1740. end
  1741. p1.WedgeMesh.Scale = Vector3.new(0, perp/sz, dif_para/sz)
  1742. p1.CFrame = cf1
  1743.  
  1744. return p0, p1
  1745. end
  1746.  
  1747. function DrawQuad(v1, v2, v3, v4, parts)
  1748. parts[1], parts[2] = DrawTriangle(v1, v2, v3, parts[1], parts[2])
  1749. parts[3], parts[4] = DrawTriangle(v3, v2, v4, parts[3], parts[4])
  1750. end
  1751. end
  1752.  
  1753. if binds[frame] then
  1754. return binds[frame].parts
  1755. end
  1756.  
  1757. local uid = GenUid()
  1758. local parts = {}
  1759. local f = Instance.new('Folder', root)
  1760. f.Name = frame.Name
  1761.  
  1762. local parents = {}
  1763. do
  1764. local function add(child)
  1765. if child:IsA'GuiObject' then
  1766. parents[#parents + 1] = child
  1767. add(child.Parent)
  1768. end
  1769. end
  1770. add(frame)
  1771. end
  1772.  
  1773. local function UpdateOrientation(fetchProps)
  1774. local properties = {
  1775. Transparency = 0.98;
  1776. BrickColor = BrickColor.new('Institutional white');
  1777. }
  1778. local zIndex = 1 - 0.05*frame.ZIndex
  1779.  
  1780. local tl, br = frame.AbsolutePosition, frame.AbsolutePosition + frame.AbsoluteSize
  1781. local tr, bl = Vector2.new(br.x, tl.y), Vector2.new(tl.x, br.y)
  1782. do
  1783. local rot = 0;
  1784. for _, v in ipairs(parents) do
  1785. rot = rot + v.Rotation
  1786. end
  1787. if rot ~= 0 and rot%180 ~= 0 then
  1788. local mid = tl:lerp(br, 0.5)
  1789. local s, c = math.sin(math.rad(rot)), math.cos(math.rad(rot))
  1790. local vec = tl
  1791. tl = Vector2.new(c*(tl.x - mid.x) - s*(tl.y - mid.y), s*(tl.x - mid.x) + c*(tl.y - mid.y)) + mid
  1792. tr = Vector2.new(c*(tr.x - mid.x) - s*(tr.y - mid.y), s*(tr.x - mid.x) + c*(tr.y - mid.y)) + mid
  1793. bl = Vector2.new(c*(bl.x - mid.x) - s*(bl.y - mid.y), s*(bl.x - mid.x) + c*(bl.y - mid.y)) + mid
  1794. br = Vector2.new(c*(br.x - mid.x) - s*(br.y - mid.y), s*(br.x - mid.x) + c*(br.y - mid.y)) + mid
  1795. end
  1796. end
  1797. DrawQuad(
  1798. camera:ScreenPointToRay(tl.x, tl.y, zIndex).Origin,
  1799. camera:ScreenPointToRay(tr.x, tr.y, zIndex).Origin,
  1800. camera:ScreenPointToRay(bl.x, bl.y, zIndex).Origin,
  1801. camera:ScreenPointToRay(br.x, br.y, zIndex).Origin,
  1802. parts
  1803. )
  1804. if fetchProps then
  1805. for _, pt in pairs(parts) do
  1806. pt.Parent = f
  1807. end
  1808. for propName, propValue in pairs(properties) do
  1809. for _, pt in pairs(parts) do
  1810. pt[propName] = propValue
  1811. end
  1812. end
  1813. end
  1814.  
  1815. end
  1816.  
  1817. UpdateOrientation(true)
  1818. RunService:BindToRenderStep(uid, 2000, UpdateOrientation)
  1819. end
  1820.  
  1821. local function unpackt(array : table)
  1822.  
  1823. local val = ""
  1824. local i = 0
  1825. for _,v in pairs(array) do
  1826. if i < 3 then
  1827. val = val .. v .. ", "
  1828. i += 1
  1829. else
  1830. val = "Various"
  1831. break
  1832. end
  1833. end
  1834.  
  1835. return val
  1836. end
  1837.  
  1838. -- Interface Management
  1839. local LunaUI = isStudio and script.Parent:WaitForChild("Luna UI") or game:GetObjects("rbxassetid://86467455075715")[1]
  1840.  
  1841. local SizeBleh = nil
  1842.  
  1843. local function Hide(Window, bind, notif)
  1844. SizeBleh = Window.Size
  1845. bind = string.split(tostring(bind), "Enum.KeyCode.")
  1846. bind = bind[2]
  1847. if notif then
  1848. 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"})
  1849. end
  1850. tween(Window, {BackgroundTransparency = 1})
  1851. tween(Window.Elements, {BackgroundTransparency = 1})
  1852. tween(Window.Line, {BackgroundTransparency = 1})
  1853. tween(Window.Title.Title, {TextTransparency = 1})
  1854. tween(Window.Title.subtitle, {TextTransparency = 1})
  1855. tween(Window.Logo, {ImageTransparency = 1})
  1856. tween(Window.Navigation.Line, {BackgroundTransparency = 1})
  1857.  
  1858. for _, TopbarButton in ipairs(Window.Controls:GetChildren()) do
  1859. if TopbarButton.ClassName == "Frame" then
  1860. tween(TopbarButton, {BackgroundTransparency = 1})
  1861. tween(TopbarButton.UIStroke, {Transparency = 1})
  1862. tween(TopbarButton.ImageLabel, {ImageTransparency = 1})
  1863. TopbarButton.Visible = false
  1864. end
  1865. end
  1866. for _, tabbtn in ipairs(Window.Navigation.Tabs:GetChildren()) do
  1867. if tabbtn.ClassName == "Frame" and tabbtn.Name ~= "InActive Template" then
  1868. TweenService:Create(tabbtn, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {BackgroundTransparency = 1}):Play()
  1869. TweenService:Create(tabbtn.ImageLabel, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {ImageTransparency = 1}):Play()
  1870. TweenService:Create(tabbtn.DropShadowHolder.DropShadow, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {ImageTransparency = 1}):Play()
  1871. TweenService:Create(tabbtn.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  1872. end
  1873. end
  1874.  
  1875. task.wait(0.28)
  1876. Window.Size = UDim2.new(0,0,0,0)
  1877. Window.Parent.ShadowHolder.Visible = false
  1878. task.wait()
  1879. Window.Elements.Parent.Visible = false
  1880. Window.Visible = false
  1881. end
  1882.  
  1883.  
  1884. if gethui then
  1885. LunaUI.Parent = gethui()
  1886. elseif syn and syn.protect_gui then
  1887. syn.protect_gui(LunaUI)
  1888. LunaUI.Parent = CoreGui
  1889. elseif not isStudio and CoreGui:FindFirstChild("RobloxGui") then
  1890. LunaUI.Parent = CoreGui:FindFirstChild("RobloxGui")
  1891. elseif not isStudio then
  1892. LunaUI.Parent = CoreGui
  1893. end
  1894.  
  1895. if gethui then
  1896. for _, Interface in ipairs(gethui():GetChildren()) do
  1897. if Interface.Name == LunaUI.Name and Interface ~= LunaUI then
  1898. Hide(Interface.SmartWindow)
  1899. Interface.Enabled = false
  1900. Interface.Name = "Luna-Old"
  1901. end
  1902. end
  1903. elseif not isStudio then
  1904. for _, Interface in ipairs(CoreGui:GetChildren()) do
  1905. if Interface.Name == LunaUI.Name and Interface ~= LunaUI then
  1906. Hide(Interface.SmartWindow)
  1907. Interface.Enabled = false
  1908. Interface.Name = "Luna-Old"
  1909. end
  1910. end
  1911. end
  1912.  
  1913. LunaUI.Enabled = false
  1914. LunaUI.SmartWindow.Visible = false
  1915. LunaUI.Notifications.Template.Visible = false
  1916. LunaUI.DisplayOrder = 1000000000
  1917.  
  1918. local Main : Frame = LunaUI.SmartWindow
  1919. local Dragger = Main.Drag
  1920. local dragBar = LunaUI.Drag
  1921. local dragInteract = dragBar and dragBar.Interact or nil
  1922. local dragBarCosmetic = dragBar and dragBar.Drag or nil
  1923. local Elements = Main.Elements.Interactions
  1924. local LoadingFrame = Main.LoadingFrame
  1925. local Navigation = Main.Navigation
  1926. local Tabs = Navigation.Tabs
  1927. local Notifications = LunaUI.Notifications
  1928. local KeySystem : Frame = Main.KeySystem
  1929.  
  1930. -- local function LoadConfiguration(Configuration, autoload)
  1931. -- local Data = HttpService:JSONDecode(Configuration)
  1932. -- local changed
  1933. -- local notified = false
  1934.  
  1935. -- -- Iterate through current UI elements' flags
  1936. -- for FlagName, Flag in pairs(Luna.Flags) do
  1937. -- local FlagValue = Data[FlagName]
  1938.  
  1939. -- if FlagValue then
  1940. -- task.spawn(function()
  1941. -- if Flag.Type == "ColorPicker" then
  1942. -- changed = true
  1943. -- Flag:Set(UnpackColor(FlagValue))
  1944. -- else
  1945. -- if (Flag.CurrentValue or Flag.CurrentKeybind or Flag.CurrentOption or Flag.Color) ~= FlagValue then
  1946. -- changed = true
  1947. -- Flag:Set(FlagValue)
  1948. -- end
  1949. -- end
  1950. -- end)
  1951. -- else
  1952. -- notified = true
  1953. -- Luna:Notification({Title = "Config Error", Content = "Luna was unable to load or find '"..FlagName.. "'' in the current script. Check ".. website .." for help.", Icon = "flag"})
  1954. -- end
  1955. -- end
  1956. -- if autoload and notified == false then
  1957. -- Luna:Notification({
  1958. -- Title = "Config Autoloaded",
  1959. -- Content = "The Configuration Has Been Automatically Loaded. Thank You For Using Luna Library",
  1960. -- Icon = "file-code-2",
  1961. -- ImageSource = "Lucide"
  1962. -- })
  1963. -- elseif notified == false then
  1964. -- Luna:Notification({
  1965. -- Title = "Config Loaded",
  1966. -- Content = "The Configuration Has Been Loaded. Thank You For Using Luna Library",
  1967. -- Icon = "file-code-2",
  1968. -- ImageSource = "Lucide"
  1969. -- })
  1970. -- end
  1971.  
  1972. -- return changed
  1973. -- end
  1974.  
  1975. -- local function SaveConfiguration(Configuration, ConfigFolder, hasRoot)
  1976. -- local Data = {}
  1977. -- for i,v in pairs(Luna.Flags) do
  1978. -- if v.Type == "ColorPicker" then
  1979. -- Data[i] = PackColor(v.Color)
  1980. -- else
  1981. -- Data[i] = v.CurrentValue or v.CurrentBind or v.CurrentOption or v.Color
  1982. -- end
  1983. -- end
  1984. -- if hasRoot then
  1985. -- writefile(ConfigurationFolder .. "/" .. hasRoot .. "/" .. ConfigFolder .. "/" .. Configuration .. ConfigurationExtension, tostring(HttpService:JSONEncode(Data)))
  1986. -- else
  1987. -- writefile(ConfigurationFolder .. "/" .. "/" .. ConfigFolder .. Configuration .. ConfigurationExtension, tostring(HttpService:JSONEncode(Data)))
  1988. -- end
  1989. -- end
  1990.  
  1991. -- local function SetAutoload(ConfigName, ConfigFolder, hasRoot)
  1992. -- if hasRoot then
  1993. -- writefile(ConfigurationFolder .. "/" .. hasRoot .. "/" .. ConfigFolder .. "/" .. "autoload.txt", tostring(ConfigName) .. ConfigurationExtension)
  1994. -- else
  1995. -- writefile(ConfigurationFolder .. "/" .. "/" .. ConfigFolder .. "autoload.txt", tostring(ConfigName) .. ConfigurationExtension)
  1996. -- end
  1997. -- end
  1998.  
  1999. -- local function LoadAutoLoad(ConfigFolder, hasRoot)
  2000. -- local autoload = isfile(ConfigurationFolder .. "/" .. "/" .. ConfigFolder .. "autoload.txt")
  2001. -- if hasRoot then
  2002. -- autoload = isfile(ConfigurationFolder .. "/" .. hasRoot .. "/" .. ConfigFolder .. "/" .. "autoload.txt")
  2003. -- end
  2004.  
  2005. -- if autoload then
  2006. -- if hasRoot then
  2007. -- LoadConfiguration(readfile(ConfigurationFolder .. "/" .. hasRoot .. "/" .. ConfigFolder .. "/" .. readfile(ConfigurationFolder .. "/" .. hasRoot .. "/" .. ConfigFolder .. "/" .. "autoload.txt")), true)
  2008. -- else
  2009. -- LoadConfiguration(readfile(ConfigurationFolder .. "/" .. ConfigFolder .. "/" .. readfile(ConfigurationFolder .. "/" .. ConfigFolder .. "/" .. "autoload.txt")), true)
  2010. -- end
  2011. -- end
  2012. -- end
  2013.  
  2014. local function Draggable(Bar, Window, enableTaptic, tapticOffset)
  2015. pcall(function()
  2016. local Dragging, DragInput, MousePos, FramePos
  2017.  
  2018. local function connectFunctions()
  2019. if dragBar and enableTaptic then
  2020. dragBar.MouseEnter:Connect(function()
  2021. if not Dragging then
  2022. TweenService:Create(dragBarCosmetic, TweenInfo.new(0.25, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {BackgroundTransparency = 0.5, Size = UDim2.new(0, 120, 0, 4)}):Play()
  2023. end
  2024. end)
  2025.  
  2026. dragBar.MouseLeave:Connect(function()
  2027. if not Dragging then
  2028. TweenService:Create(dragBarCosmetic, TweenInfo.new(0.25, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {BackgroundTransparency = 0.7, Size = UDim2.new(0, 100, 0, 4)}):Play()
  2029. end
  2030. end)
  2031. end
  2032. end
  2033.  
  2034. connectFunctions()
  2035.  
  2036. Bar.InputBegan:Connect(function(Input)
  2037. if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then
  2038. Dragging = true
  2039. MousePos = Input.Position
  2040. FramePos = Window.Position
  2041.  
  2042. if enableTaptic then
  2043. TweenService:Create(dragBarCosmetic, TweenInfo.new(0.35, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Size = UDim2.new(0, 110, 0, 4), BackgroundTransparency = 0}):Play()
  2044. end
  2045.  
  2046. Input.Changed:Connect(function()
  2047. if Input.UserInputState == Enum.UserInputState.End then
  2048. Dragging = false
  2049. connectFunctions()
  2050.  
  2051. if enableTaptic then
  2052. TweenService:Create(dragBarCosmetic, TweenInfo.new(0.35, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Size = UDim2.new(0, 100, 0, 4), BackgroundTransparency = 0.7}):Play()
  2053. end
  2054. end
  2055. end)
  2056. end
  2057. end)
  2058.  
  2059. Bar.InputChanged:Connect(function(Input)
  2060. if Input.UserInputType == Enum.UserInputType.MouseMovement or Input.UserInputType == Enum.UserInputType.Touch then
  2061. DragInput = Input
  2062. end
  2063. end)
  2064.  
  2065. UserInputService.InputChanged:Connect(function(Input)
  2066. if Input == DragInput and Dragging then
  2067. local Delta = Input.Position - MousePos
  2068.  
  2069. local newMainPosition = UDim2.new(FramePos.X.Scale, FramePos.X.Offset + Delta.X, FramePos.Y.Scale, FramePos.Y.Offset + Delta.Y)
  2070. TweenService:Create(Window, TweenInfo.new(0.35, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Position = newMainPosition}):Play()
  2071.  
  2072. if dragBar then
  2073. local newDragBarPosition = UDim2.new(FramePos.X.Scale, FramePos.X.Offset + Delta.X, FramePos.Y.Scale, FramePos.Y.Offset + Delta.Y + 240)
  2074. dragBar.Position = newDragBarPosition
  2075. end
  2076. end
  2077. end)
  2078.  
  2079. end)
  2080. end
  2081.  
  2082. function Luna:Notification(data) -- action e.g open messages
  2083. task.spawn(function()
  2084. data = Kwargify({
  2085. Title = "Missing Title",
  2086. Content = "Missing or Unknown Content",
  2087. Icon = "view_in_ar",
  2088. ImageSource = "Material"
  2089. }, data or {})
  2090.  
  2091. -- Notification Object Creation
  2092. local newNotification = Notifications.Template:Clone()
  2093. newNotification.Name = data.Title
  2094. newNotification.Parent = Notifications
  2095. newNotification.LayoutOrder = #Notifications:GetChildren()
  2096. newNotification.Visible = false
  2097. BlurModule(newNotification)
  2098.  
  2099. -- Set Data
  2100. newNotification.Title.Text = data.Title
  2101. newNotification.Description.Text = data.Content
  2102. newNotification.Icon.Image = GetIcon(data.Icon, data.ImageSource)
  2103.  
  2104. -- Set initial transparency values
  2105. newNotification.BackgroundTransparency = 1
  2106. newNotification.Title.TextTransparency = 1
  2107. newNotification.Description.TextTransparency = 1
  2108. newNotification.UIStroke.Transparency = 1
  2109. newNotification.Shadow.ImageTransparency = 1
  2110. newNotification.Icon.ImageTransparency = 1
  2111. newNotification.Icon.BackgroundTransparency = 1
  2112.  
  2113. task.wait()
  2114.  
  2115. -- Calculate textbounds and set initial values
  2116. newNotification.Size = UDim2.new(1, 0, 0, -Notifications:FindFirstChild("UIListLayout").Padding.Offset)
  2117.  
  2118. newNotification.Icon.Size = UDim2.new(0, 28, 0, 28)
  2119. newNotification.Icon.Position = UDim2.new(0, 16, 0.5, -1)
  2120.  
  2121. newNotification.Visible = true
  2122.  
  2123. newNotification.Description.Size = UDim2.new(1, -65, 0, math.huge)
  2124. local bounds = newNotification.Description.TextBounds.Y + 55
  2125. newNotification.Description.Size = UDim2.new(1,-65,0, bounds - 35)
  2126. newNotification.Size = UDim2.new(1, 0, 0, -Notifications:FindFirstChild("UIListLayout").Padding.Offset)
  2127. TweenService:Create(newNotification, TweenInfo.new(0.6, Enum.EasingStyle.Exponential), {Size = UDim2.new(1, 0, 0, bounds)}):Play()
  2128.  
  2129. task.wait(0.15)
  2130. TweenService:Create(newNotification, TweenInfo.new(0.4, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.45}):Play()
  2131. TweenService:Create(newNotification.Title, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  2132.  
  2133. task.wait(0.05)
  2134.  
  2135. TweenService:Create(newNotification.Icon, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {ImageTransparency = 0}):Play()
  2136.  
  2137. task.wait(0.05)
  2138. TweenService:Create(newNotification.Description, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0.35}):Play()
  2139. TweenService:Create(newNotification.UIStroke, TweenInfo.new(0.4, Enum.EasingStyle.Exponential), {Transparency = 0.95}):Play()
  2140. TweenService:Create(newNotification.Shadow, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {ImageTransparency = 0.82}):Play()
  2141.  
  2142. local waitDuration = math.min(math.max((#newNotification.Description.Text * 0.1) + 2.5, 3), 10)
  2143. task.wait(data.Duration or waitDuration)
  2144.  
  2145. newNotification.Icon.Visible = false
  2146. TweenService:Create(newNotification, TweenInfo.new(0.4, Enum.EasingStyle.Exponential), {BackgroundTransparency = 1}):Play()
  2147. TweenService:Create(newNotification.UIStroke, TweenInfo.new(0.4, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  2148. TweenService:Create(newNotification.Shadow, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {ImageTransparency = 1}):Play()
  2149. TweenService:Create(newNotification.Title, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 1}):Play()
  2150. TweenService:Create(newNotification.Description, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 1}):Play()
  2151.  
  2152. TweenService:Create(newNotification, TweenInfo.new(1, Enum.EasingStyle.Exponential), {Size = UDim2.new(1, -90, 0, 0)}):Play()
  2153.  
  2154. task.wait(1)
  2155.  
  2156. TweenService:Create(newNotification, TweenInfo.new(1, Enum.EasingStyle.Exponential), {Size = UDim2.new(1, -90, 0, -Notifications:FindFirstChild("UIListLayout").Padding.Offset)}):Play()
  2157.  
  2158. newNotification.Visible = false
  2159. newNotification:Destroy()
  2160. end)
  2161. end
  2162.  
  2163. local function Unhide(Window, currentTab)
  2164. Window.Size = SizeBleh
  2165. Window.Elements.Visible = true
  2166. Window.Visible = true
  2167. task.wait()
  2168. tween(Window, {BackgroundTransparency = 0.2})
  2169. tween(Window.Elements, {BackgroundTransparency = 0.08})
  2170. tween(Window.Line, {BackgroundTransparency = 0})
  2171. tween(Window.Title.Title, {TextTransparency = 0})
  2172. tween(Window.Title.subtitle, {TextTransparency = 0})
  2173. tween(Window.Logo, {ImageTransparency = 0})
  2174. tween(Window.Navigation.Line, {BackgroundTransparency = 0})
  2175.  
  2176. for _, TopbarButton in ipairs(Window.Controls:GetChildren()) do
  2177. if TopbarButton.ClassName == "Frame" and TopbarButton.Name ~= "Theme" then
  2178. TopbarButton.Visible = true
  2179. tween(TopbarButton, {BackgroundTransparency = 0.25})
  2180. tween(TopbarButton.UIStroke, {Transparency = 0.5})
  2181. tween(TopbarButton.ImageLabel, {ImageTransparency = 0.25})
  2182. end
  2183. end
  2184. for _, tabbtn in ipairs(Window.Navigation.Tabs:GetChildren()) do
  2185. if tabbtn.ClassName == "Frame" and tabbtn.Name ~= "InActive Template" then
  2186. if tabbtn.Name == currentTab then
  2187. TweenService:Create(tabbtn, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  2188. TweenService:Create(tabbtn.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {Transparency = 0.41}):Play()
  2189. end
  2190. TweenService:Create(tabbtn.ImageLabel, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {ImageTransparency = 0}):Play()
  2191. TweenService:Create(tabbtn.DropShadowHolder.DropShadow, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {ImageTransparency = 1}):Play()
  2192. end
  2193. end
  2194.  
  2195. end
  2196.  
  2197. local MainSize
  2198. local MinSize
  2199. if Camera.ViewportSize.X > 774 and Camera.ViewportSize.Y > 503 then
  2200. MainSize = UDim2.fromOffset(675, 424)
  2201. MinSize = UDim2.fromOffset(500, 42)
  2202. else
  2203. MainSize = UDim2.fromOffset(Camera.ViewportSize.X - 100, Camera.ViewportSize.Y - 100)
  2204. MinSize = UDim2.fromOffset(Camera.ViewportSize.X - 275, 42)
  2205. end
  2206.  
  2207. local function Maximise(Window)
  2208. Window.Controls.ToggleSize.ImageLabel.Image = "rbxassetid://10137941941"
  2209. tween(Window, {Size = MainSize})
  2210. Window.Elements.Visible = true
  2211. Window.Navigation.Visible = true
  2212. end
  2213.  
  2214. local function Minimize(Window)
  2215. Window.Controls.ToggleSize.ImageLabel.Image = "rbxassetid://11036884234"
  2216. Window.Elements.Visible = false
  2217. Window.Navigation.Visible = false
  2218. tween(Window, {Size = MinSize})
  2219. end
  2220.  
  2221.  
  2222. function Luna:CreateWindow(WindowSettings)
  2223.  
  2224. WindowSettings = Kwargify({
  2225. Name = "Luna UI Example Window",
  2226. Subtitle = "",
  2227. LogoID = "6031097225",
  2228. LoadingEnabled = true,
  2229. LoadingTitle = "Luna Interface Suite",
  2230. LoadingSubtitle = "by Nebula Softworks",
  2231.  
  2232. ConfigSettings = {},
  2233.  
  2234. KeySystem = false,
  2235. KeySettings = {}
  2236. }, WindowSettings or {})
  2237.  
  2238. WindowSettings.ConfigSettings = Kwargify({
  2239. RootFolder = nil,
  2240. ConfigFolder = "Big Hub"
  2241. }, WindowSettings.ConfigSettings or {})
  2242.  
  2243. WindowSettings.KeySettings = Kwargify({
  2244. Title = WindowSettings.Name,
  2245. Subtitle = "Key System",
  2246. Note = "No Instructions",
  2247. SaveInRoot = false, -- Enabling will save the key in your RootFolder (YOU MUST HAVE ONE BEFORE ENABLING THIS OPTION)
  2248. SaveKey = true, -- The user's key will be saved, but if you change the key, they will be unable to use your script
  2249. 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 bypass
  2250. SecondAction = {}
  2251. }, WindowSettings.KeySettings or {})
  2252.  
  2253. WindowSettings.KeySettings.SecondAction = Kwargify({
  2254. Enabled = false,
  2255. Type = "Discord", -- Link/Discord
  2256. Parameter = "" -- for discord, add the invite link like home tab. for link, type the link of ur key sys
  2257. }, WindowSettings.KeySettings.SecondAction)
  2258.  
  2259. local Passthrough = false
  2260.  
  2261. local Window = { Bind = Enum.KeyCode.K, CurrentTab = nil, State = true, Size = false, Settings = nil }
  2262.  
  2263. Main.Title.Title.Text = WindowSettings.Name
  2264. Main.Title.subtitle.Text = WindowSettings.Subtitle
  2265. Main.Logo.Image = "rbxassetid://" .. WindowSettings.LogoID
  2266. Main.Visible = true
  2267. Main.BackgroundTransparency = 1
  2268. Main.Size = MainSize
  2269. Main.Size = UDim2.fromOffset(Main.Size.X.Offset - 70, Main.Size.Y.Offset - 55)
  2270. Main.Parent.ShadowHolder.Size = Main.Size
  2271. LoadingFrame.Frame.Frame.Title.TextTransparency = 1
  2272. LoadingFrame.Frame.Frame.Subtitle.TextTransparency = 1
  2273. LoadingFrame.Version.TextTransparency = 1
  2274. LoadingFrame.Frame.ImageLabel.ImageTransparency = 1
  2275.  
  2276. tween(Elements.Parent, {BackgroundTransparency = 1})
  2277. Elements.Parent.Visible = false
  2278.  
  2279. LoadingFrame.Frame.Frame.Title.Text = WindowSettings.LoadingTitle
  2280. LoadingFrame.Frame.Frame.Subtitle.Text = WindowSettings.LoadingSubtitle
  2281. LoadingFrame.Version.Text = LoadingFrame.Frame.Frame.Title.Text == "Luna Interface Suite" and Release or "Dev Naaellx"
  2282.  
  2283. Navigation.Player.icon.ImageLabel.Image = Players:GetUserThumbnailAsync(Players.LocalPlayer.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size48x48)
  2284. Navigation.Player.Namez.Text = Players.LocalPlayer.DisplayName
  2285. Navigation.Player.TextLabel.Text = Players.LocalPlayer.Name
  2286.  
  2287. for i,v in pairs(Main.Controls:GetChildren()) do
  2288. v.Visible = false
  2289. end
  2290.  
  2291. Main:GetPropertyChangedSignal("Position"):Connect(function()
  2292. Main.Parent.ShadowHolder.Position = Main.Position
  2293. end)
  2294. Main:GetPropertyChangedSignal("Size"):Connect(function()
  2295. Main.Parent.ShadowHolder.Size = Main.Size
  2296. end)
  2297.  
  2298. LoadingFrame.Visible = true
  2299.  
  2300. -- pcall(function()
  2301. -- if not isfolder(ConfigurationFolder) then
  2302. -- makefolder(ConfigurationFolder)
  2303. -- end
  2304. -- if WindowSettings.ConfigSettings.RootFolder then
  2305. -- if not isfolder(ConfigurationFolder .. WindowSettings.ConfigSettings.RootFolder) then
  2306. -- makefolder(ConfigurationFolder .. WindowSettings.ConfigSettings.RootFolder)
  2307. -- if not isfolder(ConfigurationFolder .. WindowSettings.ConfigSettings.RootFolder .. WindowSettings.ConfigSettings.ConfigFolder) then
  2308. -- makefolder(ConfigurationFolder .. WindowSettings.ConfigSettings.RootFolder .. WindowSettings.ConfigSettings.ConfigFolder)
  2309. -- end
  2310. -- end
  2311. -- else
  2312. -- if not isfolder(ConfigurationFolder .. WindowSettings.ConfigSettings.ConfigFolder) then
  2313. -- makefolder(ConfigurationFolder .. WindowSettings.ConfigSettings.ConfigFolder)
  2314. -- end
  2315. -- end
  2316.  
  2317. -- LoadAutoLoad(WindowSettings.ConfigSettings.ConfigFolder, WindowSettings.ConfigSettings.RootFolder)
  2318. -- end)
  2319.  
  2320. LunaUI.Enabled = true
  2321.  
  2322. BlurModule(Main)
  2323.  
  2324. if WindowSettings.KeySystem then
  2325. local KeySettings = WindowSettings.KeySettings
  2326.  
  2327. Draggable(Dragger, Main)
  2328. Draggable(LunaUI.MobileSupport, LunaUI.MobileSupport)
  2329. if dragBar then Draggable(dragInteract, Main, true, 255) end
  2330.  
  2331. if not WindowSettings.KeySettings then
  2332. Passthrough = true
  2333. return
  2334. end
  2335.  
  2336. WindowSettings.KeySettings.FileName = "key"
  2337.  
  2338. if typeof(WindowSettings.KeySettings.Key) == "string" then WindowSettings.KeySettings.Key = {WindowSettings.KeySettings.Key} end
  2339.  
  2340. local direc = WindowSettings.KeySettings.SaveInRoot and "Luna/Configurations/" .. WindowSettings.ConfigSettings.RootFolder .. "/" .. WindowSettings.ConfigSettings.ConfigFolder .. "/Key System/" or "Luna/Configurations/" .. WindowSettings.ConfigSettings.ConfigFolder .. "/Key System/"
  2341.  
  2342. if isfile and isfile(direc .. WindowSettings.KeySettings.FileName .. ".luna") then
  2343. for i, Key in ipairs(WindowSettings.KeySettings.Key) do
  2344. if string.find(readfile(direc .. WindowSettings.KeySettings.FileName .. ".luna"), Key) then
  2345. Passthrough = true
  2346. break
  2347. end
  2348. end
  2349. end
  2350.  
  2351. if not Passthrough then
  2352.  
  2353. local Btn = KeySystem.Action.Copy
  2354. local typesys = KeySettings.SecondAction.Type
  2355.  
  2356. if typesys == "Discord" then
  2357. Btn = KeySystem.Action.Discord
  2358. end
  2359.  
  2360. local AttemptsRemaining = math.random(2, 5)
  2361.  
  2362. KeySystem.Visible = true
  2363. KeySystem.Title.Text = WindowSettings.KeySettings.Title
  2364. KeySystem.Subtitle.Text = WindowSettings.KeySettings.Subtitle
  2365. KeySystem.textshit.Text = WindowSettings.KeySettings.Note
  2366.  
  2367. if KeySettings.SecondAction.Enabled == true then
  2368. Btn.Visible = true
  2369. end
  2370.  
  2371. Btn.Interact.MouseButton1Click:Connect(function()
  2372. if typesys == "Discord" then
  2373. setclipboard(tostring("https://discord.gg/"..KeySettings.SecondAction.Parameter)) -- Hunter if you see this I added copy also was too lazy to send u msg
  2374. if request then
  2375. request({
  2376. Url = 'http://127.0.0.1:6463/rpc?v=1',
  2377. Method = 'POST',
  2378. Headers = {
  2379. ['Content-Type'] = 'application/json',
  2380. Origin = 'https://discord.com'
  2381. },
  2382. Body = HttpService:JSONEncode({
  2383. cmd = 'INVITE_BROWSER',
  2384. nonce = HttpService:GenerateGUID(false),
  2385. args = {code = KeySettings.SecondAction.Parameter}
  2386. })
  2387. })
  2388. end
  2389. else
  2390. setclipboard(tostring(KeySettings.SecondAction.Parameter))
  2391. end
  2392. end)
  2393.  
  2394. KeySystem.Action.Submit.Interact.MouseButton1Click:Connect(function()
  2395. if #KeySystem.Input.InputBox.Text == 0 then return end
  2396. local KeyFound = false
  2397. local FoundKey = ''
  2398. for _, Key in ipairs(WindowSettings.KeySettings.Key) do
  2399. if KeySystem.Input.InputBox.Text == Key then
  2400. KeyFound = true
  2401. FoundKey = Key
  2402. break
  2403. end
  2404. end
  2405. if KeyFound then
  2406. for _, instance in pairs(KeySystem:GetDescendants()) do
  2407. if instance.ClassName ~= "UICorner" and instance.ClassName ~= "UIPadding" then
  2408. if instance.ClassName ~= "UIStroke" then
  2409. tween(instance, {BackgroundTransparency = 1}, nil,TweenInfo.new(0.6, Enum.EasingStyle.Exponential))
  2410. end
  2411. if instance.ClassName == "ImageButton" then
  2412. tween(instance, {ImageTransparency = 1}, nil,TweenInfo.new(0.5, Enum.EasingStyle.Exponential))
  2413. end
  2414. if instance.ClassName == "TextLabel" then
  2415. tween(instance, {TextTransparency = 1}, nil,TweenInfo.new(0.4, Enum.EasingStyle.Exponential))
  2416. end
  2417. if instance.ClassName == "UIStroke" then
  2418. tween(instance, {Transparency = 1}, nil,TweenInfo.new(0.5, Enum.EasingStyle.Exponential))
  2419. end
  2420. end
  2421. end
  2422. tween(KeySystem, {BackgroundTransparency = 1}, nil,TweenInfo.new(0.6, Enum.EasingStyle.Exponential))
  2423. task.wait(0.51)
  2424. Passthrough = true
  2425. KeySystem.Visible = false
  2426. if WindowSettings.KeySettings.SaveKey then
  2427. if writefile then
  2428. writefile(direc .. WindowSettings.KeySettings.FileName .. ".luna", FoundKey)
  2429. end
  2430. Luna:Notification({Title = "Key System", Content = "The key for this script has been saved successfully.", Icon = "lock_open"})
  2431. end
  2432. else
  2433. if AttemptsRemaining == 0 then
  2434.  
  2435. game.Players.LocalPlayer:Kick("No Attempts Remaining")
  2436. game:Shutdown()
  2437. end
  2438. KeySystem.Input.InputBox.Text = "Incorrect Key"
  2439. AttemptsRemaining = AttemptsRemaining - 1
  2440. task.wait(0.4)
  2441. KeySystem.Input.InputBox.Text = ""
  2442. end
  2443. end)
  2444.  
  2445. KeySystem.Close.MouseButton1Click:Connect(function()
  2446.  
  2447. Luna:Destroy()
  2448. end)
  2449. end
  2450. end
  2451.  
  2452. if WindowSettings.KeySystem then
  2453. repeat task.wait() until Passthrough
  2454. end
  2455.  
  2456. if WindowSettings.LoadingEnabled then
  2457. task.wait(0.3)
  2458. TweenService:Create(LoadingFrame.Frame.Frame.Title, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  2459. TweenService:Create(LoadingFrame.Frame.ImageLabel, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {ImageTransparency = 0}):Play()
  2460. task.wait(0.05)
  2461. TweenService:Create(LoadingFrame.Frame.Frame.Subtitle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  2462. TweenService:Create(LoadingFrame.Version, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  2463. task.wait(0.29)
  2464. TweenService:Create(LoadingFrame.Frame.ImageLabel, TweenInfo.new(1.7, Enum.EasingStyle.Back, Enum.EasingDirection.Out, 2, false, 0.2), {Rotation = 450}):Play()
  2465.  
  2466. task.wait(3.32)
  2467.  
  2468. TweenService:Create(LoadingFrame.Frame.Frame.Title, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 1}):Play()
  2469. TweenService:Create(LoadingFrame.Frame.ImageLabel, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {ImageTransparency = 1}):Play()
  2470. task.wait(0.05)
  2471. TweenService:Create(LoadingFrame.Frame.Frame.Subtitle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 1}):Play()
  2472. TweenService:Create(LoadingFrame.Version, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 1}):Play()
  2473. wait(0.3)
  2474. TweenService:Create(LoadingFrame, TweenInfo.new(0.5, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {BackgroundTransparency = 1}):Play()
  2475. end
  2476.  
  2477. TweenService:Create(Main, TweenInfo.new(0.5, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {BackgroundTransparency = 0.2, Size = MainSize}):Play()
  2478. TweenService:Create(Main.Parent.ShadowHolder, TweenInfo.new(0.5, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Size = MainSize}):Play()
  2479. TweenService:Create(Main.Title.Title, TweenInfo.new(0.35, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {TextTransparency = 0}):Play()
  2480. TweenService:Create(Main.Title.subtitle, TweenInfo.new(0.35, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {TextTransparency = 0}):Play()
  2481. TweenService:Create(Main.Logo, TweenInfo.new(0.35, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {ImageTransparency = 0}):Play()
  2482. TweenService:Create(Navigation.Player.icon.ImageLabel, TweenInfo.new(0.35, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {ImageTransparency = 0}):Play()
  2483. TweenService:Create(Navigation.Player.icon.UIStroke, TweenInfo.new(0.35, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Transparency = 0}):Play()
  2484. TweenService:Create(Main.Line, TweenInfo.new(0.35, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {BackgroundTransparency = 0}):Play()
  2485. wait(0.4)
  2486. LoadingFrame.Visible = false
  2487.  
  2488. Draggable(Dragger, Main)
  2489. Draggable(LunaUI.MobileSupport, LunaUI.MobileSupport)
  2490. if dragBar then Draggable(dragInteract, Main, true, 255) end
  2491.  
  2492. Elements.Template.LayoutOrder = 1000000000
  2493. Elements.Template.Visible = false
  2494. Navigation.Tabs["InActive Template"].LayoutOrder = 1000000000
  2495. Navigation.Tabs["InActive Template"].Visible = false
  2496.  
  2497. local FirstTab = true
  2498.  
  2499. function Window:CreateHomeTab(HomeTabSettings)
  2500.  
  2501. HomeTabSettings = Kwargify({
  2502. Icon = 1,
  2503. 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 LIST
  2504. DiscordInvite = "noinvitelink" -- The disvord invite link. Do not include the link so for example if my invite was discord.gg/nebula I would put nebula
  2505. }, HomeTabSettings or {})
  2506.  
  2507. local HomeTab = {}
  2508.  
  2509. local HomeTabButton = Navigation.Tabs.Home
  2510. HomeTabButton.Visible = true
  2511. if HomeTabSettings.Icon == 2 then
  2512. HomeTabButton.ImageLabel.Image = GetIcon("dashboard", "Material")
  2513. end
  2514.  
  2515. local HomeTabPage = Elements.Home
  2516. HomeTabPage.Visible = true
  2517.  
  2518. function HomeTab:Activate()
  2519. tween(HomeTabButton.ImageLabel, {ImageColor3 = Color3.fromRGB(255,255,255)})
  2520. tween(HomeTabButton, {BackgroundTransparency = 0})
  2521. tween(HomeTabButton.UIStroke, {Transparency = 0.41})
  2522.  
  2523. Elements.UIPageLayout:JumpTo(HomeTabPage)
  2524.  
  2525. task.wait(0.05)
  2526.  
  2527. for _, OtherTabButton in ipairs(Navigation.Tabs:GetChildren()) do
  2528. if OtherTabButton.Name ~= "InActive Template" and OtherTabButton.ClassName == "Frame" and OtherTabButton ~= HomeTabButton then
  2529. tween(OtherTabButton.ImageLabel, {ImageColor3 = Color3.fromRGB(221,221,221)})
  2530. tween(OtherTabButton, {BackgroundTransparency = 1})
  2531. tween(OtherTabButton.UIStroke, {Transparency = 1})
  2532. end
  2533.  
  2534. end
  2535.  
  2536. Window.CurrentTab = "Home"
  2537. end
  2538.  
  2539. HomeTab:Activate()
  2540. FirstTab = false
  2541. HomeTabButton.Interact.MouseButton1Click:Connect(function()
  2542. HomeTab:Activate()
  2543. end)
  2544.  
  2545.  
  2546. HomeTabPage.icon.ImageLabel.Image = Players:GetUserThumbnailAsync(Players.LocalPlayer.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
  2547. HomeTabPage.player.Text.Text = "Hello, " .. Players.LocalPlayer.DisplayName
  2548. HomeTabPage.player.user.Text = Players.LocalPlayer.Name .. " - ".. WindowSettings.Name
  2549.  
  2550. HomeTabPage.detailsholder.dashboard.Client.Title.Text = (isStudio and "Debugging (Studio)" or identifyexecutor()) or "Your Executor Does Not Support identifyexecutor."
  2551. for i,v in pairs(HomeTabSettings.SupportedExecutors) do
  2552. if isStudio then HomeTabPage.detailsholder.dashboard.Client.Subtitle.Text = "Luna Interface Suite - Debugging Mode" break end
  2553. if v == identifyexecutor() then
  2554. HomeTabPage.detailsholder.dashboard.Client.Subtitle.Text = "Your Executor Supports This Script."
  2555. else
  2556. HomeTabPage.detailsholder.dashboard.Client.Subtitle.Text = "Your Executor Isn't Officialy Supported By This Script."
  2557. end
  2558. end
  2559.  
  2560. -- Stolen From Sirius Stuff Begins Here
  2561.  
  2562. HomeTabPage.detailsholder.dashboard.Discord.Interact.MouseButton1Click:Connect(function()
  2563. setclipboard(tostring("https://discord.gg/"..HomeTabSettings.DiscordInvite)) -- Hunter if you see this I added copy also was too lazy to send u msg
  2564. if request then
  2565. request({
  2566. Url = 'http://127.0.0.1:6463/rpc?v=1',
  2567. Method = 'POST',
  2568. Headers = {
  2569. ['Content-Type'] = 'application/json',
  2570. Origin = 'https://discord.com'
  2571. },
  2572. Body = HttpService:JSONEncode({
  2573. cmd = 'INVITE_BROWSER',
  2574. nonce = HttpService:GenerateGUID(false),
  2575. args = {code = HomeTabSettings.DiscordInvite}
  2576. })
  2577. })
  2578. end
  2579. end)
  2580.  
  2581. local friendsCooldown = 0
  2582. local function getPing() return math.clamp(game:GetService("Stats").Network.ServerStatsItem["Data Ping"]:GetValue(), 10, 700) end
  2583.  
  2584. local function checkFriends()
  2585. if friendsCooldown == 0 then
  2586.  
  2587. friendsCooldown = 25
  2588.  
  2589. local playersFriends = {}
  2590. local friendsInTotal = 0
  2591. local onlineFriends = 0
  2592. local friendsInGame = 0
  2593.  
  2594. local list = Players:GetFriendsAsync(Player.UserId)
  2595. while true do -- loop through all the pages
  2596. for _, data in list:GetCurrentPage() do
  2597. friendsInTotal +=1
  2598. table.insert(playersFriends, Data)
  2599. end
  2600.  
  2601. if list.IsFinished then
  2602. -- stop the loop since this is the last page
  2603. break
  2604. else
  2605. -- go to the next page
  2606. list:AdvanceToNextPageAsync()
  2607. end
  2608. end
  2609. for i, v in pairs(Player:GetFriendsOnline()) do
  2610. onlineFriends += 1
  2611. end
  2612.  
  2613. for i,v in pairs(playersFriends) do
  2614. if Players:FindFirstChild(v.Username) then
  2615. friendsInGame = friendsInGame + 1
  2616. end
  2617. end
  2618.  
  2619. HomeTabPage.detailsholder.dashboard.Friends.All.Value.Text = tostring(friendsInTotal).." friends"
  2620. HomeTabPage.detailsholder.dashboard.Friends.Offline.Value.Text = tostring(friendsInTotal - onlineFriends).." friends"
  2621. HomeTabPage.detailsholder.dashboard.Friends.Online.Value.Text = tostring(onlineFriends).." friends"
  2622. HomeTabPage.detailsholder.dashboard.Friends.InGame.Value.Text = tostring(friendsInGame).." friends"
  2623.  
  2624. else
  2625. friendsCooldown -= 1
  2626. end
  2627. end
  2628.  
  2629. local function format(Int)
  2630. return string.format("%02i", Int)
  2631. end
  2632.  
  2633. local function convertToHMS(Seconds)
  2634. local Minutes = (Seconds - Seconds%60)/60
  2635. Seconds = Seconds - Minutes*60
  2636. local Hours = (Minutes - Minutes%60)/60
  2637. Minutes = Minutes - Hours*60
  2638. return format(Hours)..":"..format(Minutes)..":"..format(Seconds)
  2639. end
  2640.  
  2641. coroutine.wrap(function()
  2642. while task.wait() do
  2643.  
  2644.  
  2645. -- Players
  2646. HomeTabPage.detailsholder.dashboard.Server.Players.Value.Text = #Players:GetPlayers().." playing"
  2647. HomeTabPage.detailsholder.dashboard.Server.MaxPlayers.Value.Text = Players.MaxPlayers.." players can join this server"
  2648.  
  2649. -- Ping
  2650. 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")
  2651.  
  2652. -- Time
  2653. HomeTabPage.detailsholder.dashboard.Server.Time.Value.Text = convertToHMS(time())
  2654.  
  2655. -- Region
  2656. HomeTabPage.detailsholder.dashboard.Server.Region.Value.Text = Localization:GetCountryRegionForPlayerAsync(Players.LocalPlayer)
  2657.  
  2658. checkFriends()
  2659. end
  2660. end)()
  2661.  
  2662. -- Stolen From Sirius Stuff ends here
  2663.  
  2664. end
  2665.  
  2666. function Window:CreateTab(TabSettings)
  2667.  
  2668. local Tab = {}
  2669.  
  2670. TabSettings = Kwargify({
  2671. Name = "Tab",
  2672. ShowTitle = true,
  2673. Icon = "view_in_ar",
  2674. ImageSource = "Material"
  2675. }, TabSettings or {})
  2676.  
  2677. local TabButton = Navigation.Tabs["InActive Template"]:Clone()
  2678.  
  2679. TabButton.Name = TabSettings.Name
  2680. TabButton.TextLabel.Text = TabSettings.Name
  2681. TabButton.Parent = Navigation.Tabs
  2682. TabButton.ImageLabel.Image = GetIcon(TabSettings.Icon, TabSettings.ImageSource)
  2683.  
  2684. TabButton.Visible = true
  2685.  
  2686. local TabPage = Elements.Template:Clone()
  2687. TabPage.Name = TabSettings.Name
  2688. TabPage.Title.Visible = TabSettings.ShowTitle
  2689. TabPage.Title.Text = TabSettings.Name
  2690. TabPage.Visible = true
  2691.  
  2692. Tab.Page = TabPage
  2693.  
  2694. if TabSettings.ShowTitle == false then
  2695. TabPage.UIPadding.PaddingTop = UDim.new(0,10)
  2696. end
  2697.  
  2698. TabPage.LayoutOrder = #Elements:GetChildren() - 3
  2699.  
  2700. for _, TemplateElement in ipairs(TabPage:GetChildren()) do
  2701. if TemplateElement.ClassName == "Frame" or TemplateElement.ClassName == "TextLabel" and TemplateElement.Name ~= "Title" then
  2702. TemplateElement:Destroy()
  2703. end
  2704. end
  2705. TabPage.Parent = Elements
  2706.  
  2707. function Tab:Activate()
  2708. tween(TabButton.ImageLabel, {ImageColor3 = Color3.fromRGB(255,255,255)})
  2709. tween(TabButton, {BackgroundTransparency = 0})
  2710. tween(TabButton.UIStroke, {Transparency = 0.41})
  2711.  
  2712. Elements.UIPageLayout:JumpTo(TabPage)
  2713.  
  2714. task.wait(0.05)
  2715.  
  2716. for _, OtherTabButton in ipairs(Navigation.Tabs:GetChildren()) do
  2717. if OtherTabButton.Name ~= "InActive Template" and OtherTabButton.ClassName == "Frame" and OtherTabButton ~= TabButton then
  2718. tween(OtherTabButton.ImageLabel, {ImageColor3 = Color3.fromRGB(221,221,221)})
  2719. tween(OtherTabButton, {BackgroundTransparency = 1})
  2720. tween(OtherTabButton.UIStroke, {Transparency = 1})
  2721. end
  2722.  
  2723. end
  2724.  
  2725. Window.CurrentTab = TabSettings.Name
  2726. end
  2727.  
  2728. if FirstTab then
  2729. Tab:Activate()
  2730. end
  2731.  
  2732. task.wait(0.01)
  2733.  
  2734. TabButton.Interact.MouseButton1Click:Connect(function()
  2735. Tab:Activate()
  2736. end)
  2737.  
  2738. FirstTab = false
  2739.  
  2740. -- Section
  2741. function Tab:CreateSection(name : string)
  2742.  
  2743. local Section = {}
  2744.  
  2745. if name == nil then name = "Section" end
  2746.  
  2747. Section.Name = name
  2748.  
  2749. local Sectiont = Elements.Template.Section:Clone()
  2750. Sectiont.Text = name
  2751. Sectiont.Visible = true
  2752. Sectiont.Parent = TabPage
  2753. local TabPage = Sectiont.Frame
  2754.  
  2755. Sectiont.TextTransparency = 1
  2756. tween(Sectiont, {TextTransparency = 0})
  2757.  
  2758. function Section:Set(NewSection)
  2759. Sectiont.Text = NewSection
  2760. end
  2761.  
  2762. function Section:Destroy()
  2763. Section:Destroy()
  2764. end
  2765.  
  2766. -- Divider
  2767. function Section:CreateDivider()
  2768. TabPage.Position = UDim2.new(0,0,0,28)
  2769. local b = Elements.Template.Divider:Clone()
  2770. b.Parent = TabPage
  2771. b.Size = UDim2.new(1,0,0,18)
  2772. b.Line.BackgroundTransparency = 1
  2773. tween(b.Line, {BackgroundTransparency = 0})
  2774. end
  2775.  
  2776. -- Button
  2777. function Section:CreateButton(ButtonSettings)
  2778. TabPage.Position = UDim2.new(0,0,0,28)
  2779.  
  2780. ButtonSettings = Kwargify({
  2781. Name = "Button",
  2782. Description = nil,
  2783. Callback = function()
  2784.  
  2785. end,
  2786. }, ButtonSettings or {})
  2787.  
  2788. local ButtonV = {
  2789. Hover = false,
  2790. Settings = ButtonSettings
  2791. }
  2792.  
  2793.  
  2794. local Button
  2795. if ButtonSettings.Description == nil and ButtonSettings.Description ~= "" then
  2796. Button = Elements.Template.Button:Clone()
  2797. else
  2798. Button = Elements.Template.ButtonDesc:Clone()
  2799. end
  2800. Button.Name = ButtonSettings.Name
  2801. Button.Title.Text = ButtonSettings.Name
  2802. if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" then
  2803. Button.Desc.Text = ButtonSettings.Description
  2804. end
  2805. Button.Visible = true
  2806. Button.Parent = TabPage
  2807.  
  2808. Button.UIStroke.Transparency = 1
  2809. Button.Title.TextTransparency = 1
  2810. if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" then
  2811. Button.Desc.TextTransparency = 1
  2812. end
  2813.  
  2814. TweenService:Create(Button, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  2815. TweenService:Create(Button.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  2816. TweenService:Create(Button.Title, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  2817. if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" then
  2818. TweenService:Create(Button.Desc, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  2819. end
  2820.  
  2821. Button.Interact["MouseButton1Click"]:Connect(function()
  2822. local Success,Response = pcall(ButtonSettings.Callback)
  2823.  
  2824. if not Success then
  2825. TweenService:Create(Button, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  2826. TweenService:Create(Button, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  2827. TweenService:Create(Button.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  2828. Button.Title.Text = "Callback Error"
  2829. print("Luna Interface Suite | "..ButtonSettings.Name.." Callback Error " ..tostring(Response))
  2830. wait(0.5)
  2831. Button.Title.Text = ButtonSettings.Name
  2832. TweenService:Create(Button, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  2833. TweenService:Create(Button, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  2834. TweenService:Create(Button.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  2835. else
  2836. tween(Button.UIStroke, {Color = Color3.fromRGB(136, 131, 163)})
  2837. wait(0.2)
  2838. if ButtonV.Hover then
  2839. tween(Button.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  2840. else
  2841. tween(Button.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  2842. end
  2843. end
  2844. end)
  2845.  
  2846. Button["MouseEnter"]:Connect(function()
  2847. ButtonV.Hover = true
  2848. tween(Button.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  2849. end)
  2850.  
  2851. Button["MouseLeave"]:Connect(function()
  2852. ButtonV.Hover = false
  2853. tween(Button.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  2854. end)
  2855.  
  2856. function ButtonV:Set(ButtonSettings2)
  2857. ButtonSettings2 = Kwargify({
  2858. Name = ButtonSettings.Name,
  2859. Description = ButtonSettings.Description,
  2860. Callback = ButtonSettings.Callback
  2861. }, ButtonSettings2 or {})
  2862.  
  2863. ButtonSettings = ButtonSettings2
  2864. ButtonV.Settings = ButtonSettings2
  2865.  
  2866. Button.Name = ButtonSettings.Name
  2867. Button.Title.Text = ButtonSettings.Name
  2868. if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" and Button.Desc ~= nil then
  2869. Button.Desc.Text = ButtonSettings.Description
  2870. end
  2871. end
  2872.  
  2873. function ButtonV:Destroy()
  2874. Button.Visible = false
  2875. Button:Destroy()
  2876. end
  2877.  
  2878. return ButtonV
  2879. end
  2880.  
  2881. -- Label
  2882. function Section:CreateLabel(LabelSettings)
  2883. TabPage.Position = UDim2.new(0,0,0,28)
  2884.  
  2885. local LabelV = {}
  2886.  
  2887. LabelSettings = Kwargify({
  2888. Text = "Label",
  2889. Style = 1
  2890. }, LabelSettings or {})
  2891.  
  2892. LabelV.Settings = LabelSettings
  2893.  
  2894. local Label
  2895. if LabelSettings.Style == 1 then
  2896. Label = Elements.Template.Label:Clone()
  2897. elseif LabelSettings.Style == 2 then
  2898. Label = Elements.Template.Info:Clone()
  2899. elseif LabelSettings.Style == 3 then
  2900. Label = Elements.Template.Warn:Clone()
  2901. end
  2902.  
  2903. Label.Text.Text = LabelSettings.Text
  2904. Label.Visible = true
  2905. Label.Parent = TabPage
  2906.  
  2907. Label.BackgroundTransparency = 1
  2908. Label.UIStroke.Transparency = 1
  2909. Label.Text.TextTransparency = 1
  2910.  
  2911. if LabelSettings.Style ~= 1 then
  2912. TweenService:Create(Label, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.8}):Play()
  2913. else
  2914. TweenService:Create(Label, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 1}):Play()
  2915. end
  2916. TweenService:Create(Label.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  2917. TweenService:Create(Label.Text, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  2918.  
  2919. function LabelV:Set(NewLabel)
  2920. LabelSettings.Text = NewLabel
  2921. LabelV.Settings = LabelSettings
  2922. Label.Text.Text = NewLabel
  2923. end
  2924.  
  2925. function LabelV:Destroy()
  2926. Label.Visible = false
  2927. Label:Destroy()
  2928. end
  2929.  
  2930. return LabelV
  2931. end
  2932.  
  2933. -- Paragraph
  2934. function Section:CreateParagraph(ParagraphSettings)
  2935. TabPage.Position = UDim2.new(0,0,0,28)
  2936.  
  2937. ParagraphSettings = Kwargify({
  2938. Title = "Paragraph",
  2939. 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."
  2940. }, ParagraphSettings or {})
  2941.  
  2942. local ParagraphV = {
  2943. Settings = ParagraphSettings
  2944. }
  2945.  
  2946. local Paragraph = Elements.Template.Paragraph:Clone()
  2947. Paragraph.Title.Text = ParagraphSettings.Title
  2948. Paragraph.Text.Text = ParagraphSettings.Text
  2949. Paragraph.Visible = true
  2950. Paragraph.Parent = TabPage
  2951.  
  2952. Paragraph.BackgroundTransparency = 1
  2953. Paragraph.UIStroke.Transparency = 1
  2954. Paragraph.Title.TextTransparency = 1
  2955. Paragraph.Text.TextTransparency = 1
  2956.  
  2957. TweenService:Create(Paragraph, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 1}):Play()
  2958. TweenService:Create(Paragraph.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  2959. TweenService:Create(Paragraph.Title, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  2960. TweenService:Create(Paragraph.Text, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  2961.  
  2962. function ParagraphV:Update()
  2963. Paragraph.Text.Size = UDim2.new(Paragraph.Text.Size.X.Scale, Paragraph.Text.Size.X.Offset, 0, math.huge)
  2964. Paragraph.Text.Size = UDim2.new(Paragraph.Text.Size.X.Scale, Paragraph.Text.Size.X.Offset, 0, Paragraph.Text.TextBounds.Y)
  2965. tween(Paragraph, {Size = UDim2.new(Paragraph.Size.X.Scale, Paragraph.Size.X.Offset, 0, Paragraph.Text.TextBounds.Y + 40)})
  2966. end
  2967.  
  2968. function ParagraphV:Set(NewParagraphSettings)
  2969.  
  2970. NewParagraphSettings = Kwargify({
  2971. Title = ParagraphSettings.Title,
  2972. Text = ParagraphSettings.Text
  2973. }, NewParagraphSettings or {})
  2974.  
  2975. ParagraphV.Settings = NewParagraphSettings
  2976.  
  2977. Paragraph.Title.Text = NewParagraphSettings.Title
  2978. Paragraph.Text.Text = NewParagraphSettings.Text
  2979.  
  2980. ParagraphV:Update()
  2981.  
  2982. end
  2983.  
  2984. function ParagraphV:Destroy()
  2985. Paragraph.Visible = false
  2986. Paragraph:Destroy()
  2987. end
  2988.  
  2989. ParagraphV:Update()
  2990.  
  2991. return ParagraphV
  2992. end
  2993.  
  2994. -- Slider
  2995. function Section:CreateSlider(SliderSettings, Flag)
  2996. TabPage.Position = UDim2.new(0,0,0,28)
  2997. local SliderV = { IgnoreConfig = false, Class = "Slider", Settings = SliderSettings }
  2998.  
  2999. SliderSettings = Kwargify({
  3000. Name = "Slider",
  3001. Range = {0, 200},
  3002. Increment = 1,
  3003. CurrentValue = 100,
  3004. Callback = function(Value)
  3005.  
  3006. end,
  3007. }, SliderSettings or {})
  3008.  
  3009. local SLDragging = false
  3010. local Slider = Elements.Template.Slider:Clone()
  3011. Slider.Name = SliderSettings.Name .. " - Slider"
  3012. Slider.Title.Text = SliderSettings.Name
  3013. Slider.Visible = true
  3014. Slider.Parent = TabPage
  3015.  
  3016. Slider.BackgroundTransparency = 1
  3017. Slider.UIStroke.Transparency = 1
  3018. Slider.Title.TextTransparency = 1
  3019.  
  3020. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3021. TweenService:Create(Slider.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3022. TweenService:Create(Slider.Title, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  3023.  
  3024. 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)
  3025.  
  3026. Slider.Value.Text = tostring(SliderSettings.CurrentValue)
  3027. SliderV.CurrentValue = Slider.Value.Text
  3028.  
  3029. SliderSettings.Callback(SliderSettings.CurrentValue)
  3030.  
  3031. Slider["MouseEnter"]:Connect(function()
  3032. tween(Slider.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  3033. end)
  3034.  
  3035. Slider["MouseLeave"]:Connect(function()
  3036. tween(Slider.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  3037. end)
  3038.  
  3039. Slider.Interact.InputBegan:Connect(function(Input)
  3040. if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then
  3041. SLDragging = true
  3042. end
  3043. end)
  3044.  
  3045. Slider.Interact.InputEnded:Connect(function(Input)
  3046. if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then
  3047. SLDragging = false
  3048. end
  3049. end)
  3050.  
  3051. Slider.Interact.MouseButton1Down:Connect(function()
  3052. local Current = Slider.Main.Progress.AbsolutePosition.X + Slider.Main.Progress.AbsoluteSize.X
  3053. local Start = Current
  3054. local Location
  3055. local Loop; Loop = RunService.Stepped:Connect(function()
  3056. if SLDragging then
  3057. Location = UserInputService:GetMouseLocation().X
  3058. Current = Current + 0.025 * (Location - Start)
  3059.  
  3060. if Location < Slider.Main.AbsolutePosition.X then
  3061. Location = Slider.Main.AbsolutePosition.X
  3062. elseif Location > Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X then
  3063. Location = Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X
  3064. end
  3065.  
  3066. if Current < Slider.Main.AbsolutePosition.X + 5 then
  3067. Current = Slider.Main.AbsolutePosition.X + 5
  3068. elseif Current > Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X then
  3069. Current = Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X
  3070. end
  3071.  
  3072. if Current <= Location and (Location - Start) < 0 then
  3073. Start = Location
  3074. elseif Current >= Location and (Location - Start) > 0 then
  3075. Start = Location
  3076. end
  3077. Slider.Main.Progress.Size = UDim2.new(0, Location - Slider.Main.AbsolutePosition.X, 1, 0)
  3078. local NewValue = SliderSettings.Range[1] + (Location - Slider.Main.AbsolutePosition.X) / Slider.Main.AbsoluteSize.X * (SliderSettings.Range[2] - SliderSettings.Range[1])
  3079.  
  3080. NewValue = math.floor(NewValue / SliderSettings.Increment + 0.5) * (SliderSettings.Increment * 10000000) / 10000000
  3081.  
  3082. Slider.Value.Text = tostring(NewValue)
  3083.  
  3084. if SliderSettings.CurrentValue ~= NewValue then
  3085. local Success, Response = pcall(function()
  3086. SliderSettings.Callback(NewValue)
  3087. end)
  3088. if not Success then
  3089. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  3090. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  3091. TweenService:Create(Slider.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  3092. Slider.Title.Text = "Callback Error"
  3093. print("Luna Interface Suite | "..SliderSettings.Name.." Callback Error " ..tostring(Response))
  3094. wait(0.5)
  3095. Slider.Title.Text = SliderSettings.Name
  3096. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3097. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  3098. TweenService:Create(Slider.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3099. end
  3100.  
  3101. SliderSettings.CurrentValue = NewValue
  3102. SliderV.CurrentValue = SliderSettings.CurrentValue
  3103. -- Luna.Flags[SliderSettings.Flag] = SliderSettings
  3104. end
  3105. else
  3106. TweenService:Create(Slider.Main.Progress, TweenInfo.new(0.1, Enum.EasingStyle.Back, Enum.EasingDirection.In, 0, false), {Size = UDim2.new(0, Location - Slider.Main.AbsolutePosition.X > 5 and Location - Slider.Main.AbsolutePosition.X or 5, 1, 0)}):Play()
  3107. Loop:Disconnect()
  3108. end
  3109. end)
  3110. end)
  3111.  
  3112. local function Set(NewVal, bleh)
  3113.  
  3114. NewVal = NewVal or SliderSettings.CurrentValue
  3115.  
  3116. TweenService:Create(Slider.Main.Progress, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.InOut), {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()
  3117. if not bleh then Slider.Value.Text = tostring(NewVal) end
  3118. local Success, Response = pcall(function()
  3119. SliderSettings.Callback(NewVal)
  3120. end)
  3121. if not Success then
  3122. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  3123. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  3124. TweenService:Create(Slider.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  3125. Slider.Title.Text = "Callback Error"
  3126. print("Luna Interface Suite | "..SliderSettings.Name.." Callback Error " ..tostring(Response))
  3127. wait(0.5)
  3128. Slider.Title.Text = SliderSettings.Name
  3129. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3130. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(30, 33, 40)}):Play()
  3131. TweenService:Create(Slider.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3132. end
  3133.  
  3134. SliderSettings.CurrentValue = NewVal
  3135. SliderV.CurrentValue = SliderSettings.CurrentValue
  3136. -- Luna.Flags[SliderSettings.Flag] = SliderSettings
  3137.  
  3138. end
  3139.  
  3140. function SliderV:UpdateValue(Value)
  3141. Set(tonumber(Value))
  3142. end
  3143.  
  3144. Slider.Value:GetPropertyChangedSignal("Text"):Connect(function()
  3145. local text = Slider.Value.Text
  3146. if not tonumber(text) and text ~= "." then
  3147. Slider.Value.Text = text:match("[0-9.]*") or ""
  3148. end
  3149. if SliderSettings.Range[2] < (tonumber(Slider.Value.Text) or 0) then Slider.Value.Text = SliderSettings.Range[2] end
  3150. Slider.Value.Size = UDim2.fromOffset(Slider.Value.TextBounds.X, 23)
  3151. Set(tonumber(Slider.Value.Text), true)
  3152. end)
  3153.  
  3154. function SliderV:Set(NewSliderSettings)
  3155. NewSliderSettings = Kwargify({
  3156. Name = SliderSettings.Name,
  3157. Range = SliderSettings.Range,
  3158. Increment = SliderSettings.Increment,
  3159. CurrentValue = SliderSettings.CurrentValue,
  3160. Callback = SliderSettings.Callback
  3161. }, NewSliderSettings or {})
  3162.  
  3163. SliderSettings = NewSliderSettings
  3164. SliderV.Settings = NewSliderSettings
  3165.  
  3166. Slider.Name = SliderSettings.Name .. " - Slider"
  3167. Slider.Title.Text = SliderSettings.Name
  3168.  
  3169. Set()
  3170.  
  3171. -- Luna.Flags[SliderSettings.Flag] = SliderSettings
  3172. end
  3173.  
  3174. function SliderV:Destroy()
  3175. Slider.Visible = false
  3176. Slider:Destroy()
  3177. end
  3178.  
  3179. if Flag then
  3180. Luna.Options[Flag] = SliderV
  3181. end
  3182.  
  3183. LunaUI.ThemeRemote:GetPropertyChangedSignal("Value"):Connect(function()
  3184. Slider.Main.color.Color = Luna.ThemeGradient
  3185. Slider.Main.UIStroke.color.Color = Luna.ThemeGradient
  3186. end)
  3187.  
  3188. return SliderV
  3189.  
  3190. end
  3191.  
  3192. -- Toggle
  3193. function Section:CreateToggle(ToggleSettings, Flag)
  3194. TabPage.Position = UDim2.new(0,0,0,28)
  3195. local ToggleV = { IgnoreConfig = false, Class = "Toggle" }
  3196.  
  3197. ToggleSettings = Kwargify({
  3198. Name = "Toggle",
  3199. Description = nil,
  3200. CurrentValue = false,
  3201. Callback = function(Value)
  3202. end,
  3203. }, ToggleSettings or {})
  3204.  
  3205.  
  3206. local Toggle
  3207.  
  3208. if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then
  3209. Toggle = Elements.Template.ToggleDesc:Clone()
  3210. else
  3211. Toggle = Elements.Template.Toggle:Clone()
  3212. end
  3213.  
  3214. Toggle.Visible = true
  3215. Toggle.Parent = TabPage
  3216.  
  3217. Toggle.Name = ToggleSettings.Name .. " - Toggle"
  3218. Toggle.Title.Text = ToggleSettings.Name
  3219. if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then
  3220. Toggle.Desc.Text = ToggleSettings.Description
  3221. end
  3222.  
  3223. Toggle.UIStroke.Transparency = 1
  3224. Toggle.Title.TextTransparency = 1
  3225. if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then
  3226. Toggle.Desc.TextTransparency = 1
  3227. end
  3228.  
  3229. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3230. if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then
  3231. TweenService:Create(Toggle.Desc, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  3232. end
  3233. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3234. TweenService:Create(Toggle.Title, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  3235.  
  3236. local function Set(bool)
  3237. if bool then
  3238. Toggle.toggle.color.Enabled = true
  3239. tween(Toggle.toggle, {BackgroundTransparency = 0})
  3240.  
  3241. Toggle.toggle.UIStroke.color.Enabled = true
  3242. tween(Toggle.toggle.UIStroke, {Color = Color3.new(255,255,255)})
  3243.  
  3244. tween(Toggle.toggle.val, {BackgroundColor3 = Color3.fromRGB(255,255,255), Position = UDim2.new(1,-23,0.5,0), BackgroundTransparency = 0.45})
  3245. else
  3246. Toggle.toggle.color.Enabled = false
  3247. Toggle.toggle.UIStroke.color.Enabled = false
  3248.  
  3249. Toggle.toggle.UIStroke.Color = Color3.fromRGB(97,97,97)
  3250.  
  3251. tween(Toggle.toggle, {BackgroundTransparency = 1})
  3252.  
  3253. tween(Toggle.toggle.val, {BackgroundColor3 = Color3.fromRGB(97,97,97), Position = UDim2.new(0,5,0.5,0), BackgroundTransparency = 0})
  3254. end
  3255.  
  3256. ToggleV.CurrentValue = bool
  3257. end
  3258.  
  3259. Toggle.Interact.MouseButton1Click:Connect(function()
  3260. ToggleSettings.CurrentValue = not ToggleSettings.CurrentValue
  3261. Set(ToggleSettings.CurrentValue)
  3262.  
  3263. local Success, Response = pcall(function()
  3264. ToggleSettings.Callback(ToggleSettings.CurrentValue)
  3265. end)
  3266. if not Success then
  3267. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  3268. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  3269. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  3270. Toggle.Title.Text = "Callback Error"
  3271. print("Luna Interface Suite | "..ToggleSettings.Name.." Callback Error " ..tostring(Response))
  3272. wait(0.5)
  3273. Toggle.Title.Text = ToggleSettings.Name
  3274. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3275. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  3276. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3277. end
  3278. end)
  3279.  
  3280. Toggle["MouseEnter"]:Connect(function()
  3281. tween(Toggle.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  3282. end)
  3283.  
  3284. Toggle["MouseLeave"]:Connect(function()
  3285. tween(Toggle.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  3286. end)
  3287.  
  3288. if ToggleSettings.CurrentValue then
  3289. Set(ToggleSettings.CurrentValue)
  3290. local Success, Response = pcall(function()
  3291. ToggleSettings.Callback(ToggleSettings.CurrentValue)
  3292. end)
  3293. if not Success then
  3294. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  3295. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  3296. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  3297. Toggle.Title.Text = "Callback Error"
  3298. print("Luna Interface Suite | "..ToggleSettings.Name.." Callback Error " ..tostring(Response))
  3299. wait(0.5)
  3300. Toggle.Title.Text = ToggleSettings.Name
  3301. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3302. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  3303. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3304. end
  3305. end
  3306.  
  3307. function ToggleV:UpdateState(State)
  3308. ToggleSettings.CurrentValue = State
  3309. Set(ToggleSettings.CurrentValue)
  3310. end
  3311.  
  3312. function ToggleV:Set(NewToggleSettings)
  3313.  
  3314. NewToggleSettings = Kwargify({
  3315. Name = ToggleSettings.Name,
  3316. Description = ToggleSettings.Description,
  3317. CurrentValue = ToggleSettings.CurrentValue,
  3318. Callback = ToggleSettings.Callback
  3319. }, NewToggleSettings or {})
  3320.  
  3321. ToggleV.Settings = NewToggleSettings
  3322. ToggleSettings = NewToggleSettings
  3323.  
  3324. Toggle.Name = ToggleSettings.Name .. " - Toggle"
  3325. Toggle.Title.Text = ToggleSettings.Name
  3326. if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" and Toggle.Desc ~= nil then
  3327. Toggle.Desc.Text = ToggleSettings.Description
  3328. end
  3329.  
  3330. Set(ToggleSettings.CurrentValue)
  3331.  
  3332. ToggleV.CurrentValue = ToggleSettings.CurrentValue
  3333.  
  3334. local Success, Response = pcall(function()
  3335. ToggleSettings.Callback(ToggleSettings.CurrentValue)
  3336. end)
  3337. if not Success then
  3338. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  3339. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  3340. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0}):Play()
  3341. Toggle.Title.Text = "Callback Error"
  3342. print("Luna Interface Suite | "..ToggleSettings.Name.." Callback Error " ..tostring(Response))
  3343. wait(0.5)
  3344. Toggle.Title.Text = ToggleSettings.Name
  3345. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3346. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  3347. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3348. end
  3349. end
  3350.  
  3351. function ToggleV:Destroy()
  3352. Toggle.Visible = false
  3353. Toggle:Destroy()
  3354. end
  3355.  
  3356. LunaUI.ThemeRemote:GetPropertyChangedSignal("Value"):Connect(function()
  3357. Toggle.toggle.color.Color = Luna.ThemeGradient
  3358. Toggle.toggle.UIStroke.color.Color = Luna.ThemeGradient
  3359. end)
  3360.  
  3361. if Flag then
  3362. Luna.Options[Flag] = ToggleV
  3363. end
  3364.  
  3365. return ToggleV
  3366.  
  3367. end
  3368.  
  3369. -- Bind
  3370. function Section:CreateBind(BindSettings, Flag)
  3371. TabPage.Position = UDim2.new(0,0,0,28)
  3372. local BindV = { Class = "Keybind", IgnoreConfig = false, Settings = BindSettings, Active = false }
  3373.  
  3374. BindSettings = Kwargify({
  3375. Name = "Bind",
  3376. Description = nil,
  3377. CurrentBind = "Q",
  3378. HoldToInteract = false, -- setting this makes the Bind in toggle mode
  3379. Callback = function(Bind)
  3380. -- The function that takes place when the Bind is pressed
  3381. -- 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 active
  3382. end,
  3383.  
  3384. OnChangedCallback = function(Bind)
  3385. -- The function that takes place when the binded key changes
  3386. -- The variable (Bind) is a Enum.KeyCode for the new Binded Key
  3387. end,
  3388. }, BindSettings or {})
  3389.  
  3390. local CheckingForKey = false
  3391.  
  3392. local Bind
  3393. if BindSettings.Description ~= nil and BindSettings.Description ~= "" then
  3394. Bind = Elements.Template.BindDesc:Clone()
  3395. else
  3396. Bind = Elements.Template.Bind:Clone()
  3397. end
  3398.  
  3399. Bind.Visible = true
  3400. Bind.Parent = TabPage
  3401.  
  3402. Bind.Name = BindSettings.Name
  3403. Bind.Title.Text = BindSettings.Name
  3404. if BindSettings.Description ~= nil and BindSettings.Description ~= "" then
  3405. Bind.Desc.Text = BindSettings.Description
  3406. end
  3407.  
  3408. Bind.Title.TextTransparency = 1
  3409. if BindSettings.Description ~= nil and BindSettings.Description ~= "" then
  3410. Bind.Desc.TextTransparency = 1
  3411. end
  3412. Bind.BindFrame.BackgroundTransparency = 1
  3413. Bind.BindFrame.UIStroke.Transparency = 1
  3414. Bind.BindFrame.BindBox.TextTransparency = 1
  3415.  
  3416. TweenService:Create(Bind, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3417. TweenService:Create(Bind.Title, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  3418. if BindSettings.Description ~= nil and BindSettings.Description ~= "" then
  3419. TweenService:Create(Bind.Desc, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  3420. end
  3421. TweenService:Create(Bind.BindFrame, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.9}):Play()
  3422. TweenService:Create(Bind.BindFrame.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {Transparency = 0.3}):Play()
  3423. TweenService:Create(Bind.BindFrame.BindBox, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  3424.  
  3425.  
  3426. Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind
  3427. Bind.BindFrame.BindBox.Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 20, 0, 42)
  3428.  
  3429. Bind.BindFrame.BindBox.Focused:Connect(function()
  3430. CheckingForKey = true
  3431. Bind.BindFrame.BindBox.Text = ""
  3432. end)
  3433.  
  3434. Bind.BindFrame.BindBox.FocusLost:Connect(function()
  3435. CheckingForKey = false
  3436. if Bind.BindFrame.BindBox.Text == (nil or "") then
  3437. Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind
  3438. end
  3439. end)
  3440.  
  3441. Bind["MouseEnter"]:Connect(function()
  3442. tween(Bind.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  3443. end)
  3444.  
  3445. Bind["MouseLeave"]:Connect(function()
  3446. tween(Bind.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  3447. end)
  3448. UserInputService.InputBegan:Connect(function(input, processed)
  3449.  
  3450. if CheckingForKey then
  3451. if input.KeyCode ~= Enum.KeyCode.Unknown and input.KeyCode ~= Window.Bind then
  3452. local SplitMessage = string.split(tostring(input.KeyCode), ".")
  3453. local NewKeyNoEnum = SplitMessage[3]
  3454. Bind.BindFrame.BindBox.Text = tostring(NewKeyNoEnum)
  3455. BindSettings.CurrentBind = tostring(NewKeyNoEnum)
  3456. local Success, Response = pcall(function()
  3457. BindSettings.Callback(BindSettings.CurrentBind)
  3458. end)
  3459. if not Success then
  3460. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  3461. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  3462. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  3463. Bind.Title.Text = "Callback Error"
  3464. print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))
  3465. wait(0.5)
  3466. Bind.Title.Text = BindSettings.Name
  3467. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3468. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  3469. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3470. end
  3471. Bind.BindFrame.BindBox:ReleaseFocus()
  3472. end
  3473. elseif BindSettings.CurrentBind ~= nil and (input.KeyCode == Enum.KeyCode[BindSettings.CurrentBind] and not processed) then -- Test
  3474. local Held = true
  3475. local Connection
  3476. Connection = input.Changed:Connect(function(prop)
  3477. if prop == "UserInputState" then
  3478. Connection:Disconnect()
  3479. Held = false
  3480. end
  3481. end)
  3482.  
  3483. if not BindSettings.HoldToInteract then
  3484. BindV.Active = not BindV.Active
  3485. local Success, Response = pcall(function()
  3486. BindSettings.Callback(BindV.Active)
  3487. end)
  3488. if not Success then
  3489. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  3490. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  3491. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  3492. Bind.Title.Text = "Callback Error"
  3493. print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))
  3494. wait(0.5)
  3495. Bind.Title.Text = BindSettings.Name
  3496. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3497. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  3498. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3499. end
  3500. else
  3501. wait(0.1)
  3502. if Held then
  3503. local Loop; Loop = RunService.Stepped:Connect(function()
  3504. if not Held then
  3505. local Success, Response = pcall(function()
  3506. BindSettings.Callback(false)
  3507. end)
  3508. if not Success then
  3509. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  3510. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  3511. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  3512. Bind.Title.Text = "Callback Error"
  3513. print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))
  3514. wait(0.5)
  3515. Bind.Title.Text = BindSettings.Name
  3516. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3517. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  3518. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3519. end
  3520. Loop:Disconnect()
  3521. else
  3522. local Success, Response = pcall(function()
  3523. BindSettings.Callback(true)
  3524. end)
  3525. if not Success then
  3526. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  3527. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  3528. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  3529. Bind.Title.Text = "Callback Error"
  3530. print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))
  3531. wait(0.5)
  3532. Bind.Title.Text = BindSettings.Name
  3533. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3534. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  3535. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3536. end
  3537. end
  3538. end)
  3539. end
  3540. end
  3541. end
  3542. end)
  3543.  
  3544. Bind.BindFrame.BindBox:GetPropertyChangedSignal("Text"):Connect(function()
  3545. 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()
  3546. end)
  3547.  
  3548. function BindV:Set(NewBindSettings)
  3549.  
  3550. NewBindSettings = Kwargify({
  3551. Name = BindSettings.Name,
  3552. Description = BindSettings.Description,
  3553. CurrentBind = BindSettings.CurrentBind,
  3554. HoldToInteract = BindSettings.HoldToInteract,
  3555. Callback = BindSettings.Callback
  3556. }, NewBindSettings or {})
  3557.  
  3558. BindV.Settings = NewBindSettings
  3559. BindSettings = NewBindSettings
  3560.  
  3561. Bind.Name = BindSettings.Name
  3562. Bind.Title.Text = BindSettings.Name
  3563. if BindSettings.Description ~= nil and BindSettings.Description ~= "" and Bind.Desc ~= nil then
  3564. Bind.Desc.Text = BindSettings.Description
  3565. end
  3566.  
  3567. Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind
  3568. Bind.BindFrame.Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 20, 0, 42)
  3569.  
  3570.  
  3571. BindV.CurrentBind = BindSettings.CurrentBind
  3572. end
  3573.  
  3574. function BindV:Destroy()
  3575. Bind.Visible = false
  3576. Bind:Destroy()
  3577. end
  3578.  
  3579. if Flag then
  3580. Luna.Options[Flag] = BindV
  3581. end
  3582.  
  3583. -- Luna.Flags[BindSettings.Flag] = BindSettings
  3584.  
  3585. return BindV
  3586.  
  3587. end
  3588.  
  3589. -- Dynamic Input
  3590. function Section:CreateInput(InputSettings, Flag)
  3591. TabPage.Position = UDim2.new(0,0,0,28)
  3592. local InputV = { IgnoreConfig = false, Class = "Input", Settings = InputSettings }
  3593.  
  3594. InputSettings = Kwargify({
  3595. Name = "Dynamic Input",
  3596. Description = nil,
  3597. CurrentValue = "",
  3598. PlaceholderText = "Input Placeholder",
  3599. RemoveTextAfterFocusLost = false,
  3600. Numeric = false,
  3601. Enter = false,
  3602. MaxCharacters = nil,
  3603. Callback = function(Text)
  3604.  
  3605. end, -- 52
  3606. }, InputSettings or {})
  3607.  
  3608. InputV.CurrentValue = InputSettings.CurrentValue
  3609.  
  3610. local descriptionbool
  3611. if InputSettings.Description ~= nil and InputSettings.Description ~= "" then
  3612. descriptionbool = true
  3613. end
  3614.  
  3615. local Input
  3616. if descriptionbool then
  3617. Input = Elements.Template.InputDesc:Clone()
  3618. else
  3619. Input = Elements.Template.Input:Clone()
  3620. end
  3621.  
  3622. Input.Name = InputSettings.Name
  3623. Input.Title.Text = InputSettings.Name
  3624. if descriptionbool then Input.Desc.Text = InputSettings.Description end
  3625. Input.Visible = true
  3626. Input.Parent = TabPage
  3627.  
  3628. Input.BackgroundTransparency = 1
  3629. Input.UIStroke.Transparency = 1
  3630. Input.Title.TextTransparency = 1
  3631. if descriptionbool then Input.Desc.TextTransparency = 1 end
  3632. Input.InputFrame.BackgroundTransparency = 1
  3633. Input.InputFrame.UIStroke.Transparency = 1
  3634. Input.InputFrame.InputBox.TextTransparency = 1
  3635.  
  3636. TweenService:Create(Input, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3637. TweenService:Create(Input.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3638. TweenService:Create(Input.Title, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  3639. if descriptionbool then TweenService:Create(Input.Desc, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play() end
  3640. TweenService:Create(Input.InputFrame, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.9}):Play()
  3641. TweenService:Create(Input.InputFrame.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {Transparency = 0.3}):Play()
  3642. TweenService:Create(Input.InputFrame.InputBox, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  3643.  
  3644. Input.InputFrame.InputBox.PlaceholderText = InputSettings.PlaceholderText
  3645. Input.InputFrame.Size = UDim2.new(0, Input.InputFrame.InputBox.TextBounds.X + 52, 0, 30)
  3646.  
  3647. Input.InputFrame.InputBox.FocusLost:Connect(function(bleh)
  3648.  
  3649. if InputSettings.Enter then
  3650. if bleh then
  3651. local Success, Response = pcall(function()
  3652. InputSettings.Callback(Input.InputFrame.InputBox.Text)
  3653. InputV.CurrentValue = Input.InputFrame.InputBox.Text
  3654. end)
  3655. if not Success then
  3656. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  3657. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  3658. TweenService:Create(Input.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  3659. Input.Title.Text = "Callback Error"
  3660. print("Luna Interface Suite | "..InputSettings.Name.." Callback Error " ..tostring(Response))
  3661. wait(0.5)
  3662. Input.Title.Text = InputSettings.Name
  3663. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3664. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  3665. TweenService:Create(Input.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3666. end
  3667. end
  3668. end
  3669.  
  3670. if InputSettings.RemoveTextAfterFocusLost then
  3671. Input.InputFrame.InputBox.Text = ""
  3672. end
  3673.  
  3674. end)
  3675.  
  3676. if InputSettings.Numeric then
  3677. Input.InputFrame.InputBox:GetPropertyChangedSignal("Text"):Connect(function()
  3678. local text = Input.InputFrame.InputBox.Text
  3679. if not tonumber(text) and text ~= "." then
  3680. Input.InputFrame.InputBox.Text = text:match("[0-9.]*") or ""
  3681. end
  3682. end)
  3683. end
  3684.  
  3685. Input.InputFrame.InputBox:GetPropertyChangedSignal("Text"):Connect(function()
  3686. if tonumber(InputSettings.MaxCharacters) then
  3687. if (#Input.InputFrame.InputBox.Text - 1) == InputSettings.MaxCharacters then
  3688. Input.InputFrame.InputBox.Text = Input.InputFrame.InputBox.Text:sub(1, InputSettings.MaxCharacters)
  3689. end
  3690. end
  3691. 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()
  3692. if not InputSettings.Enter then
  3693. local Success, Response = pcall(function()
  3694. InputSettings.Callback(Input.InputFrame.InputBox.Text)
  3695. end)
  3696. if not Success then
  3697. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  3698. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  3699. TweenService:Create(Input.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  3700. Input.Title.Text = "Callback Error"
  3701. print("Luna Interface Suite | "..InputSettings.Name.." Callback Error " ..tostring(Response))
  3702. wait(0.5)
  3703. Input.Title.Text = InputSettings.Name
  3704. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3705. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  3706. TweenService:Create(Input.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3707. end
  3708. end
  3709. InputV.CurrentValue = Input.InputFrame.InputBox.Text
  3710. end)
  3711.  
  3712. Input["MouseEnter"]:Connect(function()
  3713. tween(Input.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  3714. end)
  3715.  
  3716. Input["MouseLeave"]:Connect(function()
  3717. tween(Input.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  3718. end)
  3719.  
  3720.  
  3721. function InputV:Set(NewInputSettings)
  3722.  
  3723. NewInputSettings = Kwargify(InputSettings, NewInputSettings or {})
  3724.  
  3725. InputV.Settings = NewInputSettings
  3726. InputSettings = NewInputSettings
  3727.  
  3728. Input.Name = InputSettings.Name
  3729. Input.Title.Text = InputSettings.Name
  3730. if InputSettings.Description ~= nil and InputSettings.Description ~= "" and Input.Desc ~= nil then
  3731. Input.Desc.Text = InputSettings.Description
  3732. end
  3733.  
  3734. Input.InputFrame.InputBox:CaptureFocus()
  3735. Input.InputFrame.InputBox.Text = tostring(InputSettings.CurrentValue)
  3736. Input.InputFrame.InputBox:ReleaseFocus()
  3737. Input.InputFrame.Size = UDim2.new(0, Input.InputFrame.InputBox.TextBounds.X + 52, 0, 42)
  3738.  
  3739. InputV.CurrentValue = InputSettings.CurrentValue
  3740. end
  3741.  
  3742. function InputV:Destroy()
  3743. Input.Visible = false
  3744. Input:Destroy()
  3745. end
  3746.  
  3747. if Flag then
  3748. Luna.Options[Flag] = InputV
  3749. end
  3750.  
  3751.  
  3752. return InputV
  3753.  
  3754. end
  3755.  
  3756. -- Dropdown
  3757. function Section:CreateDropdown(DropdownSettings, Flag)
  3758. TabPage.Position = UDim2.new(0,0,0,28)
  3759. local DropdownV = { IgnoreConfig = false, Class = "Dropdown", Settings = DropdownSettings}
  3760.  
  3761. DropdownSettings = Kwargify({
  3762. Name = "Dropdown",
  3763. Description = nil,
  3764. Options = {"Option 1", "Option 2"},
  3765. CurrentOption = {"Option 1"},
  3766. MultipleOptions = false,
  3767. SpecialType = nil, -- currently onl player, might add more soon
  3768. Callback = function(Options)
  3769. -- The function that takes place when the selected option is changed
  3770. -- The variable (Options) is a table of strings for the current selected options or a string if multioptions is false
  3771. end,
  3772. }, DropdownSettings or {})
  3773.  
  3774. DropdownV.CurrentOption = DropdownSettings.CurrentOption
  3775.  
  3776. local descriptionbool = false
  3777. if DropdownSettings.Description ~= nil and DropdownSettings.Description ~= "" then
  3778. descriptionbool = true
  3779. end
  3780. local closedsize
  3781. local openedsize
  3782. if descriptionbool then
  3783. closedsize = 48
  3784. openedsize = 170
  3785. elseif not descriptionbool then
  3786. closedsize = 38
  3787. openedsize = 160
  3788. end
  3789. local opened = false
  3790.  
  3791. local Dropdown
  3792. if descriptionbool then Dropdown = Elements.Template.DropdownDesc:Clone() else Dropdown = Elements.Template.Dropdown:Clone() end
  3793.  
  3794. Dropdown.Name = DropdownSettings.Name
  3795. Dropdown.Title.Text = DropdownSettings.Name
  3796. if descriptionbool then Dropdown.Desc.Text = DropdownSettings.Description end
  3797.  
  3798. Dropdown.Parent = TabPage
  3799. Dropdown.Visible = true
  3800.  
  3801. local function Toggle()
  3802. opened = not opened
  3803. if opened then
  3804. tween(Dropdown.icon, {Rotation = 180})
  3805. tween(Dropdown, {Size = UDim2.new(1, -25, 0, openedsize)})
  3806. else
  3807. tween(Dropdown.icon, {Rotation = 0})
  3808. tween(Dropdown, {Size = UDim2.new(1, -25, 0, closedsize)})
  3809. end
  3810. end
  3811.  
  3812. local function SafeCallback(param, c2)
  3813. local Success, Response = pcall(function()
  3814. DropdownSettings.Callback(param)
  3815. end)
  3816. if not Success then
  3817. TweenService:Create(Dropdown, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  3818. TweenService:Create(Dropdown, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  3819. TweenService:Create(Dropdown.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  3820. Dropdown.Title.Text = "Callback Error"
  3821. print("Luna Interface Suite | "..DropdownSettings.Name.." Callback Error " ..tostring(Response))
  3822. wait(0.5)
  3823. Dropdown.Title.Text = DropdownSettings.Name
  3824. TweenService:Create(Dropdown, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  3825. TweenService:Create(Dropdown, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  3826. TweenService:Create(Dropdown.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  3827. end
  3828. if Success and c2 then
  3829. c2()
  3830. end
  3831. end
  3832.  
  3833. -- fixed by justhey
  3834. Dropdown.Selected:GetPropertyChangedSignal("Text"):Connect(function()
  3835. local text = Dropdown.Selected.Text:lower()
  3836. for _, Item in ipairs(Dropdown.List:GetChildren()) do
  3837. if Item:IsA("TextLabel") and Item.Name ~= "Template" then
  3838. Item.Visible = text == "" or string.find(Item.Name:lower(), text, 1, true) ~= nil
  3839. end
  3840. end
  3841. end)
  3842.  
  3843.  
  3844. local function Clear()
  3845. for _, option in ipairs(Dropdown.List:GetChildren()) do
  3846. if option.ClassName == "TextLabel" and option.Name ~= "Template" then
  3847. option:Destroy()
  3848. end
  3849. end
  3850. end
  3851.  
  3852. local function ActivateColorSingle(name)
  3853. for _, Option in pairs(Dropdown.List:GetChildren()) do
  3854. if Option.ClassName == "TextLabel" and Option.Name ~= "Template" then
  3855. tween(Option, {BackgroundTransparency = 0.98})
  3856. end
  3857. end
  3858.  
  3859. Toggle()
  3860. tween(Dropdown.List[name], {BackgroundTransparency = 0.95, TextColor3 = Color3.fromRGB(240,240,240)})
  3861. end
  3862.  
  3863. local function Refresh()
  3864. Clear()
  3865. for i,v in pairs(DropdownSettings.Options) do
  3866. local Option = Dropdown.List.Template:Clone()
  3867. local optionhover = false
  3868. Option.Text = v
  3869. if v == "Template" then v = "Template (Name)" end
  3870. Option.Name = v
  3871. Option.Interact.MouseButton1Click:Connect(function()
  3872. local bleh
  3873. if DropdownSettings.MultipleOptions then
  3874. if table.find(DropdownSettings.CurrentOption, v) then
  3875. RemoveTable(DropdownSettings.CurrentOption, v)
  3876. DropdownV.CurrentOption = DropdownSettings.CurrentOption
  3877. if not optionhover then
  3878. tween(Option, {TextColor3 = Color3.fromRGB(200,200,200)})
  3879. end
  3880. tween(Option, {BackgroundTransparency = 0.98})
  3881. else
  3882. table.insert(DropdownSettings.CurrentOption, v)
  3883. DropdownV.CurrentOption = DropdownSettings.CurrentOption
  3884. tween(Option, {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})
  3885. end
  3886. bleh = DropdownSettings.CurrentOption
  3887. else
  3888. DropdownSettings.CurrentOption = {v}
  3889. bleh = v
  3890. DropdownV.CurrentOption = bleh
  3891. ActivateColorSingle(v)
  3892. end
  3893.  
  3894. SafeCallback(bleh, function()
  3895. if DropdownSettings.MultipleOptions then
  3896. if DropdownSettings.CurrentOption and type(DropdownSettings.CurrentOption) == "table" then
  3897. if #DropdownSettings.CurrentOption == 1 then
  3898. Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1]
  3899. elseif #DropdownSettings.CurrentOption == 0 then
  3900. Dropdown.Selected.PlaceholderText = "None"
  3901. else
  3902. Dropdown.Selected.PlaceholderText = unpackt(DropdownSettings.CurrentOption)
  3903. end
  3904. else
  3905. DropdownSettings.CurrentOption = {}
  3906. Dropdown.Selected.PlaceholderText = "None"
  3907. end
  3908. end
  3909. if not DropdownSettings.MultipleOptions then
  3910. Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1] or "None"
  3911. end
  3912. Dropdown.Selected.Text = ""
  3913. end)
  3914. end)
  3915. Option.Visible = true
  3916. Option.Parent = Dropdown.List
  3917. Option.MouseEnter:Connect(function()
  3918. optionhover = true
  3919. if Option.BackgroundTransparency == 0.95 then
  3920. return
  3921. else
  3922. tween(Option, {TextColor3 = Color3.fromRGB(240,240,240)})
  3923. end
  3924. end)
  3925. Option.MouseLeave:Connect(function()
  3926. optionhover = false
  3927. if Option.BackgroundTransparency == 0.95 then
  3928. return
  3929. else
  3930. tween(Option, {TextColor3 = Color3.fromRGB(200,200,200)})
  3931. end
  3932. end)
  3933. end
  3934. end
  3935.  
  3936. local function PlayerTableRefresh()
  3937. for i,v in pairs(DropdownSettings.Options) do
  3938. table.remove(DropdownSettings.Options, i)
  3939. end
  3940.  
  3941. for i,v in pairs(Players:GetChildren()) do
  3942. table.insert(DropdownSettings.Options, v.Name)
  3943. end
  3944. end
  3945.  
  3946. Dropdown.Interact.MouseButton1Click:Connect(function()
  3947. Toggle()
  3948. end)
  3949.  
  3950. Dropdown["MouseEnter"]:Connect(function()
  3951. tween(Dropdown.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  3952. end)
  3953.  
  3954. Dropdown["MouseLeave"]:Connect(function()
  3955. tween(Dropdown.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  3956. end)
  3957.  
  3958. if DropdownSettings.SpecialType == "Player" then
  3959.  
  3960. for i,v in pairs(DropdownSettings.Options) do
  3961. table.remove(DropdownSettings.Options, i)
  3962. end
  3963. PlayerTableRefresh()
  3964. DropdownSettings.CurrentOption = DropdownSettings.Options[1]
  3965.  
  3966. Players.PlayerAdded:Connect(function() PlayerTableRefresh() end)
  3967. Players.PlayerRemoving:Connect(function() PlayerTableRefresh() end)
  3968.  
  3969. end
  3970.  
  3971. Refresh()
  3972.  
  3973. if DropdownSettings.CurrentOption then
  3974. if type(DropdownSettings.CurrentOption) == "string" then
  3975. DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption}
  3976. end
  3977. if not DropdownSettings.MultipleOptions and type(DropdownSettings.CurrentOption) == "table" then
  3978. DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption[1]}
  3979. end
  3980. else
  3981. DropdownSettings.CurrentOption = {}
  3982. end
  3983.  
  3984. local bleh, ind = nil,0
  3985. for i,v in pairs(DropdownSettings.CurrentOption) do
  3986. ind = ind + 1
  3987. end
  3988. if ind == 1 then bleh = DropdownSettings.CurrentOption[1] else bleh = DropdownSettings.CurrentOption end
  3989. SafeCallback(bleh)
  3990. if type(bleh) == "string" then
  3991. tween(Dropdown.List[bleh], {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})
  3992. else
  3993. for i,v in pairs(bleh) do
  3994. tween(Dropdown.List[v], {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})
  3995. end
  3996. end
  3997.  
  3998. if DropdownSettings.MultipleOptions then
  3999. if DropdownSettings.CurrentOption and type(DropdownSettings.CurrentOption) == "table" then
  4000. if #DropdownSettings.CurrentOption == 1 then
  4001. Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1]
  4002. elseif #DropdownSettings.CurrentOption == 0 then
  4003. Dropdown.Selected.PlaceholderText = "None"
  4004. else
  4005. Dropdown.Selected.PlaceholderText = unpackt(DropdownSettings.CurrentOption)
  4006. end
  4007. else
  4008. DropdownSettings.CurrentOption = {}
  4009. Dropdown.Selected.PlaceholderText = "None"
  4010. end
  4011. for _, name in pairs(DropdownSettings.CurrentOption) do
  4012. tween(Dropdown.List[name], {TextColor3 = Color3.fromRGB(227,227,227), BackgroundTransparency = 0.95})
  4013. end
  4014. else
  4015. Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1] or "None"
  4016. end
  4017. Dropdown.Selected.Text = ""
  4018.  
  4019. function DropdownV:Set(NewDropdownSettings)
  4020. NewDropdownSettings = Kwargify(DropdownSettings, NewDropdownSettings or {})
  4021.  
  4022. DropdownV.Settings = NewDropdownSettings
  4023. DropdownSettings = NewDropdownSettings
  4024.  
  4025. Dropdown.Name = DropdownSettings.Name
  4026. Dropdown.Title.Text = DropdownSettings.Name
  4027. if DropdownSettings.Description ~= nil and DropdownSettings.Description ~= "" and Dropdown.Desc ~= nil then
  4028. Dropdown.Desc.Text = DropdownSettings.Description
  4029. end
  4030.  
  4031. if DropdownSettings.SpecialType == "Player" then
  4032.  
  4033. for i,v in pairs(DropdownSettings.Options) do
  4034. table.remove(DropdownSettings.Options, i)
  4035. end
  4036. PlayerTableRefresh()
  4037. DropdownSettings.CurrentOption = DropdownSettings.Options[1]
  4038. Players.PlayerAdded:Connect(function() PlayerTableRefresh() end)
  4039. Players.PlayerRemoving:Connect(function() PlayerTableRefresh() end)
  4040.  
  4041. end
  4042.  
  4043. Refresh()
  4044.  
  4045. if DropdownSettings.CurrentOption then
  4046. if type(DropdownSettings.CurrentOption) == "string" then
  4047. DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption}
  4048. end
  4049. if not DropdownSettings.MultipleOptions and type(DropdownSettings.CurrentOption) == "table" then
  4050. DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption[1]}
  4051. end
  4052. else
  4053. DropdownSettings.CurrentOption = {}
  4054. end
  4055.  
  4056. local bleh, ind = nil,0
  4057. for i,v in pairs(DropdownSettings.CurrentOption) do
  4058. ind = ind + 1
  4059. end
  4060. if ind == 1 then bleh = DropdownSettings.CurrentOption[1] else bleh = DropdownSettings.CurrentOption end
  4061. SafeCallback(bleh)
  4062. for _, Option in pairs(Dropdown.List:GetChildren()) do
  4063. if Option.ClassName == "TextLabel" then
  4064. tween(Option, {TextColor3 = Color3.fromRGB(200,200,200), BackgroundTransparency = 0.98})
  4065. end
  4066. end
  4067. tween(Dropdown.List[bleh], {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})
  4068.  
  4069. if DropdownSettings.MultipleOptions then
  4070. if DropdownSettings.CurrentOption and type(DropdownSettings.CurrentOption) == "table" then
  4071. if #DropdownSettings.CurrentOption == 1 then
  4072. Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1]
  4073. elseif #DropdownSettings.CurrentOption == 0 then
  4074. Dropdown.Selected.PlaceholderText = "None"
  4075. else
  4076. Dropdown.Selected.PlaceholderText = unpackt(DropdownSettings.CurrentOption)
  4077. end
  4078. else
  4079. DropdownSettings.CurrentOption = {}
  4080. Dropdown.Selected.PlaceholderText = "None"
  4081. end
  4082. for _, name in pairs(DropdownSettings.CurrentOption) do
  4083. tween(Dropdown.List[name], {TextColor3 = Color3.fromRGB(227,227,227), BackgroundTransparency = 0.95})
  4084. end
  4085. else
  4086. Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1] or "None"
  4087. end
  4088. Dropdown.Selected.Text = ""
  4089.  
  4090. -- Luna.Flags[DropdownSettings.Flag] = DropdownSettings
  4091.  
  4092. end
  4093.  
  4094. function DropdownV:Destroy()
  4095. Dropdown.Visible = false
  4096. Dropdown:Destroy()
  4097. end
  4098.  
  4099. if Flag then
  4100. Luna.Options[Flag] = DropdownV
  4101. end
  4102.  
  4103. -- Luna.Flags[DropdownSettings.Flag] = DropdownSettings
  4104.  
  4105. return DropdownV
  4106.  
  4107. end
  4108.  
  4109. -- Color Picker
  4110. function Section:CreateColorPicker(ColorPickerSettings, Flag) -- by Rayfield/Throit
  4111. TabPage.Position = UDim2.new(0,0,0,28)
  4112. local ColorPickerV = {IgnoreClass = false, Class = "Colorpicker", Settings = ColorPickerSettings}
  4113.  
  4114. ColorPickerSettings = Kwargify({
  4115. Name = "Color Picker",
  4116. Color = Color3.fromRGB(255,255,255),
  4117. Callback = function(Value)
  4118. -- The function that takes place every time the color picker is moved/changed
  4119. -- The variable (Value) is a Color3fromRGB value based on which color is selected
  4120. end
  4121. }, ColorPickerSettings or {})
  4122.  
  4123. local function Color3ToHex(color)
  4124. return string.format("#%02X%02X%02X", math.floor(color.R * 255), math.floor(color.G * 255), math.floor(color.B * 255))
  4125. end
  4126.  
  4127. ColorPickerV.Color = Color3ToHex(ColorPickerSettings.Color)
  4128.  
  4129. local closedsize = UDim2.new(0, 75, 0, 22)
  4130. local openedsize = UDim2.new(0, 219, 0, 129)
  4131.  
  4132. local ColorPicker = Elements.Template.ColorPicker:Clone()
  4133. local Background = ColorPicker.CPBackground
  4134. local Display = Background.Display
  4135. local Main = Background.MainCP
  4136. local Slider = ColorPicker.ColorSlider
  4137.  
  4138. ColorPicker.Name = ColorPickerSettings.Name
  4139. ColorPicker.Title.Text = ColorPickerSettings.Name
  4140. ColorPicker.Visible = true
  4141. ColorPicker.Parent = TabPage
  4142. ColorPicker.Size = UDim2.new(1.042, -25,0, 38)
  4143. Background.Size = closedsize
  4144. Display.BackgroundTransparency = 0
  4145.  
  4146. ColorPicker["MouseEnter"]:Connect(function()
  4147. tween(ColorPicker.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  4148. end)
  4149. ColorPicker["MouseLeave"]:Connect(function()
  4150. tween(ColorPicker.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  4151. end)
  4152.  
  4153. local function SafeCallback(param, c2)
  4154. local Success, Response = pcall(function()
  4155. ColorPickerSettings.Callback(param)
  4156. end)
  4157. if not Success then
  4158. TweenService:Create(ColorPicker, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  4159. TweenService:Create(ColorPicker, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  4160. TweenService:Create(ColorPicker.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  4161. ColorPicker.Title.Text = "Callback Error"
  4162. print("Luna Interface Suite | "..ColorPickerSettings.Name.." Callback Error " ..tostring(Response))
  4163. wait(0.5)
  4164. ColorPicker.Title.Text = ColorPickerSettings.Name
  4165. TweenService:Create(ColorPicker, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  4166. TweenService:Create(ColorPicker, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  4167. TweenService:Create(ColorPicker.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  4168. end
  4169. if Success and c2 then
  4170. c2()
  4171. end
  4172. end
  4173.  
  4174. local opened = false
  4175.  
  4176. local mouse = game.Players.LocalPlayer:GetMouse()
  4177. Main.Image = "http://www.roblox.com/asset/?id=11415645739"
  4178. local mainDragging = false
  4179. local sliderDragging = false
  4180. ColorPicker.Interact.MouseButton1Down:Connect(function()
  4181. if not opened then
  4182. opened = true
  4183. tween(ColorPicker, {Size = UDim2.new( 1.042, -25,0, 165)}, nil, TweenInfo.new(0.6, Enum.EasingStyle.Exponential))
  4184. tween(Background, {Size = openedsize})
  4185. tween(Display, {BackgroundTransparency = 1})
  4186. else
  4187. opened = false
  4188. tween(ColorPicker, {Size = UDim2.new(1.042, -25,0, 38)}, nil, TweenInfo.new(0.6, Enum.EasingStyle.Exponential))
  4189. tween(Background, {Size = closedsize})
  4190. tween(Display, {BackgroundTransparency = 0})
  4191. end
  4192. end)
  4193. UserInputService.InputEnded:Connect(function(input, gameProcessed) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
  4194. mainDragging = false
  4195. sliderDragging = false
  4196. end end)
  4197. Main.MouseButton1Down:Connect(function()
  4198. if opened then
  4199. mainDragging = true
  4200. end
  4201. end)
  4202. Main.MainPoint.MouseButton1Down:Connect(function()
  4203. if opened then
  4204. mainDragging = true
  4205. end
  4206. end)
  4207. Slider.MouseButton1Down:Connect(function()
  4208. sliderDragging = true
  4209. end)
  4210. Slider.SliderPoint.MouseButton1Down:Connect(function()
  4211. sliderDragging = true
  4212. end)
  4213. local h,s,v = ColorPickerSettings.Color:ToHSV()
  4214. local color = Color3.fromHSV(h,s,v)
  4215. local r,g,b = math.floor((h*255)+0.5),math.floor((s*255)+0.5),math.floor((v*255)+0.5)
  4216. local hex = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)
  4217. ColorPicker.HexInput.InputBox.Text = hex
  4218. local function setDisplay(hp,sp,vp)
  4219. --Main
  4220. Main.MainPoint.Position = UDim2.new(s,-Main.MainPoint.AbsoluteSize.X/2,1-v,-Main.MainPoint.AbsoluteSize.Y/2)
  4221. Main.MainPoint.ImageColor3 = Color3.fromHSV(hp,sp,vp)
  4222. Background.BackgroundColor3 = Color3.fromHSV(hp,1,1)
  4223. Display.BackgroundColor3 = Color3.fromHSV(hp,sp,vp)
  4224. --Slider
  4225. local x = hp * Slider.AbsoluteSize.X
  4226. Slider.SliderPoint.Position = UDim2.new(0,x-Slider.SliderPoint.AbsoluteSize.X/2,0.5,0)
  4227. Slider.SliderPoint.ImageColor3 = Color3.fromHSV(hp,1,1)
  4228. local color = Color3.fromHSV(hp,sp,vp)
  4229. 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)
  4230. ColorPicker.RInput.InputBox.Text = tostring(r)
  4231. ColorPicker.GInput.InputBox.Text = tostring(g)
  4232. ColorPicker.BInput.InputBox.Text = tostring(b)
  4233. hex = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)
  4234. ColorPicker.HexInput.InputBox.Text = hex
  4235. end
  4236. setDisplay(h,s,v)
  4237. ColorPicker.HexInput.InputBox.FocusLost:Connect(function()
  4238. if not pcall(function()
  4239. local r, g, b = string.match(ColorPicker.HexInput.InputBox.Text, "^#?(%w%w)(%w%w)(%w%w)$")
  4240. local rgbColor = Color3.fromRGB(tonumber(r, 16),tonumber(g, 16), tonumber(b, 16))
  4241. h,s,v = rgbColor:ToHSV()
  4242. hex = ColorPicker.HexInput.InputBox.Text
  4243. setDisplay()
  4244. ColorPickerSettings.Color = rgbColor
  4245. end)
  4246. then
  4247. ColorPicker.HexInput.InputBox.Text = hex
  4248. end
  4249. local r,g,b = math.floor((h*255)+0.5),math.floor((s*255)+0.5),math.floor((v*255)+0.5)
  4250. ColorPickerSettings.Color = Color3.fromRGB(r,g,b)
  4251. SafeCallback( Color3.fromRGB(r,g,b))
  4252. end)
  4253. --RGB
  4254. local function rgbBoxes(box,toChange)
  4255. local value = tonumber(box.Text)
  4256. local color = Color3.fromHSV(h,s,v)
  4257. 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)
  4258. local save
  4259. if toChange == "R" then save = oldR;oldR = value elseif toChange == "G" then save = oldG;oldG = value else save = oldB;oldB = value end
  4260. if value then
  4261. value = math.clamp(value,0,255)
  4262. h,s,v = Color3.fromRGB(oldR,oldG,oldB):ToHSV()
  4263. setDisplay()
  4264. else
  4265. box.Text = tostring(save)
  4266. end
  4267. 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)
  4268. ColorPickerSettings.Color = Color3.fromRGB(r,g,b)
  4269. end
  4270. ColorPicker.RInput.InputBox.FocusLost:connect(function()
  4271. rgbBoxes(ColorPicker.RInput.InputBox,"R")
  4272. SafeCallback(Color3.fromRGB(r,g,b))
  4273. end)
  4274. ColorPicker.GInput.InputBox.FocusLost:connect(function()
  4275. rgbBoxes(ColorPicker.GInput.InputBox,"G")
  4276. SafeCallback(Color3.fromRGB(r,g,b))
  4277. end)
  4278. ColorPicker.BInput.InputBox.FocusLost:connect(function()
  4279. rgbBoxes(ColorPicker.BInput.InputBox,"B")
  4280. SafeCallback(Color3.fromRGB(r,g,b))
  4281. end)
  4282. RunService.RenderStepped:connect(function()
  4283. if mainDragging then
  4284. local localX = math.clamp(mouse.X-Main.AbsolutePosition.X,0,Main.AbsoluteSize.X)
  4285. local localY = math.clamp(mouse.Y-Main.AbsolutePosition.Y,0,Main.AbsoluteSize.Y)
  4286. Main.MainPoint.Position = UDim2.new(0,localX-Main.MainPoint.AbsoluteSize.X/2,0,localY-Main.MainPoint.AbsoluteSize.Y/2)
  4287. s = localX / Main.AbsoluteSize.X
  4288. v = 1 - (localY / Main.AbsoluteSize.Y)
  4289. Display.BackgroundColor3 = Color3.fromHSV(h,s,v)
  4290. Main.MainPoint.ImageColor3 = Color3.fromHSV(h,s,v)
  4291. Background.BackgroundColor3 = Color3.fromHSV(h,1,1)
  4292. local color = Color3.fromHSV(h,s,v)
  4293. 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)
  4294. ColorPicker.RInput.InputBox.Text = tostring(r)
  4295. ColorPicker.GInput.InputBox.Text = tostring(g)
  4296. ColorPicker.BInput.InputBox.Text = tostring(b)
  4297. ColorPicker.HexInput.InputBox.Text = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)
  4298. SafeCallback(Color3.fromRGB(r,g,b))
  4299. ColorPickerSettings.Color = Color3.fromRGB(r,g,b)
  4300. ColorPickerV.Color = ColorPickerSettings.Color
  4301. end
  4302. if sliderDragging then
  4303. local localX = math.clamp(mouse.X-Slider.AbsolutePosition.X,0,Slider.AbsoluteSize.X)
  4304. h = localX / Slider.AbsoluteSize.X
  4305. Display.BackgroundColor3 = Color3.fromHSV(h,s,v)
  4306. Slider.SliderPoint.Position = UDim2.new(0,localX-Slider.SliderPoint.AbsoluteSize.X/2,0.5,0)
  4307. Slider.SliderPoint.ImageColor3 = Color3.fromHSV(h,1,1)
  4308. Background.BackgroundColor3 = Color3.fromHSV(h,1,1)
  4309. Main.MainPoint.ImageColor3 = Color3.fromHSV(h,s,v)
  4310. local color = Color3.fromHSV(h,s,v)
  4311. 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)
  4312. ColorPicker.RInput.InputBox.Text = tostring(r)
  4313. ColorPicker.GInput.InputBox.Text = tostring(g)
  4314. ColorPicker.BInput.InputBox.Text = tostring(b)
  4315. ColorPicker.HexInput.InputBox.Text = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)
  4316. SafeCallback(Color3.fromRGB(r,g,b))
  4317. ColorPickerSettings.Color = Color3.fromRGB(r,g,b)
  4318. ColorPickerV.Color = ColorPickerSettings.Color
  4319. end
  4320. end)
  4321.  
  4322. function ColorPickerV:Set(NewColorPickerSettings)
  4323.  
  4324. NewColorPickerSettings = Kwargify(ColorPickerSettings, NewColorPickerSettings or {})
  4325.  
  4326. ColorPickerV.Settings = NewColorPickerSettings
  4327. ColorPickerSettings = NewColorPickerSettings
  4328.  
  4329. ColorPicker.Name = ColorPickerSettings.Name
  4330. ColorPicker.Title.Text = ColorPickerSettings.Name
  4331. ColorPicker.Visible = true
  4332.  
  4333. local h,s,v = ColorPickerSettings.Color:ToHSV()
  4334. local color = Color3.fromHSV(h,s,v)
  4335. 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)
  4336. local hex = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)
  4337. ColorPicker.HexInput.InputBox.Text = hex
  4338. setDisplay(h,s,v)
  4339. SafeCallback(Color3.fromRGB(r,g,b))
  4340.  
  4341. ColorPickerV.Color = ColorPickerSettings.Color
  4342. end
  4343.  
  4344. function ColorPickerV:Destroy()
  4345. ColorPicker:Destroy()
  4346. end
  4347.  
  4348. if Flag then
  4349. Luna.Options[Flag] = ColorPickerV
  4350. end
  4351.  
  4352. SafeCallback(ColorPickerSettings.Color)
  4353.  
  4354. return ColorPickerV
  4355. end
  4356.  
  4357. return Section
  4358.  
  4359. end
  4360.  
  4361. -- Divider
  4362. function Tab:CreateDivider()
  4363. local b = Elements.Template.Divider:Clone()
  4364. b.Parent = TabPage
  4365. b.Line.BackgroundTransparency = 1
  4366. tween(b.Line, {BackgroundTransparency = 0})
  4367. end
  4368.  
  4369. -- Button
  4370. function Tab:CreateButton(ButtonSettings)
  4371.  
  4372. ButtonSettings = Kwargify({
  4373. Name = "Button",
  4374. Description = nil,
  4375. Callback = function()
  4376.  
  4377. end,
  4378. }, ButtonSettings or {})
  4379.  
  4380. local ButtonV = {
  4381. Hover = false,
  4382. Settings = ButtonSettings
  4383. }
  4384.  
  4385.  
  4386. local Button
  4387. if ButtonSettings.Description == nil and ButtonSettings.Description ~= "" then
  4388. Button = Elements.Template.Button:Clone()
  4389. else
  4390. Button = Elements.Template.ButtonDesc:Clone()
  4391. end
  4392. Button.Name = ButtonSettings.Name
  4393. Button.Title.Text = ButtonSettings.Name
  4394. if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" then
  4395. Button.Desc.Text = ButtonSettings.Description
  4396. end
  4397. Button.Visible = true
  4398. Button.Parent = TabPage
  4399.  
  4400. Button.UIStroke.Transparency = 1
  4401. Button.Title.TextTransparency = 1
  4402. if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" then
  4403. Button.Desc.TextTransparency = 1
  4404. end
  4405.  
  4406. TweenService:Create(Button, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  4407. TweenService:Create(Button.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  4408. TweenService:Create(Button.Title, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  4409. if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" then
  4410. TweenService:Create(Button.Desc, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  4411. end
  4412.  
  4413. Button.Interact["MouseButton1Click"]:Connect(function()
  4414. local Success,Response = pcall(ButtonSettings.Callback)
  4415.  
  4416. if not Success then
  4417. TweenService:Create(Button, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  4418. TweenService:Create(Button, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  4419. TweenService:Create(Button.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  4420. Button.Title.Text = "Callback Error"
  4421. print("Luna Interface Suite | "..ButtonSettings.Name.." Callback Error " ..tostring(Response))
  4422. wait(0.5)
  4423. Button.Title.Text = ButtonSettings.Name
  4424. TweenService:Create(Button, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  4425. TweenService:Create(Button, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  4426. TweenService:Create(Button.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  4427. else
  4428. tween(Button.UIStroke, {Color = Color3.fromRGB(136, 131, 163)})
  4429. wait(0.2)
  4430. if ButtonV.Hover then
  4431. tween(Button.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  4432. else
  4433. tween(Button.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  4434. end
  4435. end
  4436. end)
  4437.  
  4438. Button["MouseEnter"]:Connect(function()
  4439. ButtonV.Hover = true
  4440. tween(Button.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  4441. end)
  4442.  
  4443. Button["MouseLeave"]:Connect(function()
  4444. ButtonV.Hover = false
  4445. tween(Button.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  4446. end)
  4447.  
  4448. function ButtonV:Set(ButtonSettings2)
  4449. ButtonSettings2 = Kwargify({
  4450. Name = ButtonSettings.Name,
  4451. Description = ButtonSettings.Description,
  4452. Callback = ButtonSettings.Callback
  4453. }, ButtonSettings2 or {})
  4454.  
  4455. ButtonSettings = ButtonSettings2
  4456. ButtonV.Settings = ButtonSettings2
  4457.  
  4458. Button.Name = ButtonSettings.Name
  4459. Button.Title.Text = ButtonSettings.Name
  4460. if ButtonSettings.Description ~= nil and ButtonSettings.Description ~= "" and Button.Desc ~= nil then
  4461. Button.Desc.Text = ButtonSettings.Description
  4462. end
  4463. end
  4464.  
  4465. function ButtonV:Destroy()
  4466. Button.Visible = false
  4467. Button:Destroy()
  4468. end
  4469.  
  4470. return ButtonV
  4471. end
  4472.  
  4473. -- Label
  4474. function Tab:CreateLabel(LabelSettings)
  4475.  
  4476. local LabelV = {}
  4477.  
  4478. LabelSettings = Kwargify({
  4479. Text = "Label",
  4480. Style = 1
  4481. }, LabelSettings or {})
  4482.  
  4483. LabelV.Settings = LabelSettings
  4484.  
  4485. local Label
  4486. if LabelSettings.Style == 1 then
  4487. Label = Elements.Template.Label:Clone()
  4488. elseif LabelSettings.Style == 2 then
  4489. Label = Elements.Template.Info:Clone()
  4490. elseif LabelSettings.Style == 3 then
  4491. Label = Elements.Template.Warn:Clone()
  4492. end
  4493.  
  4494. Label.Text.Text = LabelSettings.Text
  4495. Label.Visible = true
  4496. Label.Parent = TabPage
  4497.  
  4498. Label.BackgroundTransparency = 1
  4499. Label.UIStroke.Transparency = 1
  4500. Label.Text.TextTransparency = 1
  4501.  
  4502. if LabelSettings.Style ~= 1 then
  4503. TweenService:Create(Label, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.8}):Play()
  4504. else
  4505. TweenService:Create(Label, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 1}):Play()
  4506. end
  4507. TweenService:Create(Label.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  4508. TweenService:Create(Label.Text, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  4509.  
  4510. function LabelV:Set(NewLabel)
  4511. LabelSettings.Text = NewLabel
  4512. LabelV.Settings = LabelSettings
  4513. Label.Text.Text = NewLabel
  4514. end
  4515.  
  4516. function LabelV:Destroy()
  4517. Label.Visible = false
  4518. Label:Destroy()
  4519. end
  4520.  
  4521. return LabelV
  4522. end
  4523.  
  4524. -- Paragraph
  4525. function Tab:CreateParagraph(ParagraphSettings)
  4526.  
  4527. ParagraphSettings = Kwargify({
  4528. Title = "Paragraph",
  4529. 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."
  4530. }, ParagraphSettings or {})
  4531.  
  4532. local ParagraphV = {
  4533. Settings = ParagraphSettings
  4534. }
  4535.  
  4536. local Paragraph = Elements.Template.Paragraph:Clone()
  4537. Paragraph.Title.Text = ParagraphSettings.Title
  4538. Paragraph.Text.Text = ParagraphSettings.Text
  4539. Paragraph.Visible = true
  4540. Paragraph.Parent = TabPage
  4541.  
  4542. Paragraph.BackgroundTransparency = 1
  4543. Paragraph.UIStroke.Transparency = 1
  4544. Paragraph.Title.TextTransparency = 1
  4545. Paragraph.Text.TextTransparency = 1
  4546.  
  4547. TweenService:Create(Paragraph, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 1}):Play()
  4548. TweenService:Create(Paragraph.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  4549. TweenService:Create(Paragraph.Title, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  4550. TweenService:Create(Paragraph.Text, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  4551.  
  4552. function ParagraphV:Update()
  4553. Paragraph.Text.Size = UDim2.new(Paragraph.Text.Size.X.Scale, Paragraph.Text.Size.X.Offset, 0, math.huge)
  4554. Paragraph.Text.Size = UDim2.new(Paragraph.Text.Size.X.Scale, Paragraph.Text.Size.X.Offset, 0, Paragraph.Text.TextBounds.Y)
  4555. tween(Paragraph, {Size = UDim2.new(Paragraph.Size.X.Scale, Paragraph.Size.X.Offset, 0, Paragraph.Text.TextBounds.Y + 40)})
  4556. end
  4557.  
  4558. function ParagraphV:Set(NewParagraphSettings)
  4559.  
  4560. NewParagraphSettings = Kwargify({
  4561. Title = ParagraphSettings.Title,
  4562. Text = ParagraphSettings.Text
  4563. }, NewParagraphSettings or {})
  4564.  
  4565. ParagraphV.Settings = NewParagraphSettings
  4566.  
  4567. Paragraph.Title.Text = NewParagraphSettings.Title
  4568. Paragraph.Text.Text = NewParagraphSettings.Text
  4569.  
  4570. ParagraphV:Update()
  4571.  
  4572. end
  4573.  
  4574. function ParagraphV:Destroy()
  4575. Paragraph.Visible = false
  4576. Paragraph:Destroy()
  4577. end
  4578.  
  4579. ParagraphV:Update()
  4580.  
  4581. return ParagraphV
  4582. end
  4583.  
  4584. -- Slider
  4585. function Tab:CreateSlider(SliderSettings, Flag)
  4586. local SliderV = { IgnoreConfig = false, Class = "Slider", Settings = SliderSettings }
  4587.  
  4588. SliderSettings = Kwargify({
  4589. Name = "Slider",
  4590. Range = {0, 200},
  4591. Increment = 1,
  4592. CurrentValue = 100,
  4593. Callback = function(Value)
  4594.  
  4595. end,
  4596. }, SliderSettings or {})
  4597.  
  4598. local SLDragging = false
  4599. local Slider = Elements.Template.Slider:Clone()
  4600. Slider.Name = SliderSettings.Name .. " - Slider"
  4601. Slider.Title.Text = SliderSettings.Name
  4602. Slider.Visible = true
  4603. Slider.Parent = TabPage
  4604.  
  4605. Slider.BackgroundTransparency = 1
  4606. Slider.UIStroke.Transparency = 1
  4607. Slider.Title.TextTransparency = 1
  4608.  
  4609. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  4610. TweenService:Create(Slider.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  4611. TweenService:Create(Slider.Title, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  4612.  
  4613. 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)
  4614.  
  4615. Slider.Value.Text = tostring(SliderSettings.CurrentValue)
  4616. SliderV.CurrentValue = Slider.Value.Text
  4617.  
  4618. SliderSettings.Callback(SliderSettings.CurrentValue)
  4619.  
  4620. Slider["MouseEnter"]:Connect(function()
  4621. tween(Slider.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  4622. end)
  4623.  
  4624. Slider["MouseLeave"]:Connect(function()
  4625. tween(Slider.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  4626. end)
  4627.  
  4628. Slider.Interact.InputBegan:Connect(function(Input)
  4629. if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then
  4630. SLDragging = true
  4631. end
  4632. end)
  4633.  
  4634. Slider.Interact.InputEnded:Connect(function(Input)
  4635. if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then
  4636. SLDragging = false
  4637. end
  4638. end)
  4639.  
  4640. Slider.Interact.MouseButton1Down:Connect(function()
  4641. local Current = Slider.Main.Progress.AbsolutePosition.X + Slider.Main.Progress.AbsoluteSize.X
  4642. local Start = Current
  4643. local Location
  4644. local Loop; Loop = RunService.Stepped:Connect(function()
  4645. if SLDragging then
  4646. Location = UserInputService:GetMouseLocation().X
  4647. Current = Current + 0.025 * (Location - Start)
  4648.  
  4649. if Location < Slider.Main.AbsolutePosition.X then
  4650. Location = Slider.Main.AbsolutePosition.X
  4651. elseif Location > Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X then
  4652. Location = Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X
  4653. end
  4654.  
  4655. if Current < Slider.Main.AbsolutePosition.X + 5 then
  4656. Current = Slider.Main.AbsolutePosition.X + 5
  4657. elseif Current > Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X then
  4658. Current = Slider.Main.AbsolutePosition.X + Slider.Main.AbsoluteSize.X
  4659. end
  4660.  
  4661. if Current <= Location and (Location - Start) < 0 then
  4662. Start = Location
  4663. elseif Current >= Location and (Location - Start) > 0 then
  4664. Start = Location
  4665. end
  4666. Slider.Main.Progress.Size = UDim2.new(0, Location - Slider.Main.AbsolutePosition.X, 1, 0)
  4667. local NewValue = SliderSettings.Range[1] + (Location - Slider.Main.AbsolutePosition.X) / Slider.Main.AbsoluteSize.X * (SliderSettings.Range[2] - SliderSettings.Range[1])
  4668.  
  4669. NewValue = math.floor(NewValue / SliderSettings.Increment + 0.5) * (SliderSettings.Increment * 10000000) / 10000000
  4670.  
  4671. Slider.Value.Text = tostring(NewValue)
  4672.  
  4673. if SliderSettings.CurrentValue ~= NewValue then
  4674. local Success, Response = pcall(function()
  4675. SliderSettings.Callback(NewValue)
  4676. end)
  4677. if not Success then
  4678. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  4679. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  4680. TweenService:Create(Slider.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  4681. Slider.Title.Text = "Callback Error"
  4682. print("Luna Interface Suite | "..SliderSettings.Name.." Callback Error " ..tostring(Response))
  4683. wait(0.5)
  4684. Slider.Title.Text = SliderSettings.Name
  4685. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  4686. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  4687. TweenService:Create(Slider.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  4688. end
  4689.  
  4690. SliderSettings.CurrentValue = NewValue
  4691. SliderV.CurrentValue = SliderSettings.CurrentValue
  4692. -- Luna.Flags[SliderSettings.Flag] = SliderSettings
  4693. end
  4694. else
  4695. TweenService:Create(Slider.Main.Progress, TweenInfo.new(0.1, Enum.EasingStyle.Back, Enum.EasingDirection.In, 0, false), {Size = UDim2.new(0, Location - Slider.Main.AbsolutePosition.X > 5 and Location - Slider.Main.AbsolutePosition.X or 5, 1, 0)}):Play()
  4696. Loop:Disconnect()
  4697. end
  4698. end)
  4699. end)
  4700.  
  4701. local function Set(NewVal, bleh)
  4702.  
  4703. NewVal = NewVal or SliderSettings.CurrentValue
  4704.  
  4705. TweenService:Create(Slider.Main.Progress, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.InOut), {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()
  4706. if not bleh then Slider.Value.Text = tostring(NewVal) end
  4707. local Success, Response = pcall(function()
  4708. SliderSettings.Callback(NewVal)
  4709. end)
  4710. if not Success then
  4711. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  4712. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  4713. TweenService:Create(Slider.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  4714. Slider.Title.Text = "Callback Error"
  4715. print("Luna Interface Suite | "..SliderSettings.Name.." Callback Error " ..tostring(Response))
  4716. wait(0.5)
  4717. Slider.Title.Text = SliderSettings.Name
  4718. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  4719. TweenService:Create(Slider, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(30, 33, 40)}):Play()
  4720. TweenService:Create(Slider.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  4721. end
  4722.  
  4723. SliderSettings.CurrentValue = NewVal
  4724. SliderV.CurrentValue = SliderSettings.CurrentValue
  4725. -- Luna.Flags[SliderSettings.Flag] = SliderSettings
  4726.  
  4727. end
  4728.  
  4729. function SliderV:UpdateValue(Value)
  4730. Set(tonumber(Value))
  4731. end
  4732.  
  4733. Slider.Value:GetPropertyChangedSignal("Text"):Connect(function()
  4734. local text = Slider.Value.Text
  4735. if not tonumber(text) and text ~= "." then
  4736. Slider.Value.Text = text:match("[0-9.]*") or ""
  4737. end
  4738. if SliderSettings.Range[2] < (tonumber(Slider.Value.Text) or 0) then Slider.Value.Text = SliderSettings.Range[2] end
  4739. Slider.Value.Size = UDim2.fromOffset(Slider.Value.TextBounds.X, 23)
  4740. Set(tonumber(Slider.Value.Text), true)
  4741. end)
  4742.  
  4743. function SliderV:Set(NewSliderSettings)
  4744. NewSliderSettings = Kwargify({
  4745. Name = SliderSettings.Name,
  4746. Range = SliderSettings.Range,
  4747. Increment = SliderSettings.Increment,
  4748. CurrentValue = SliderSettings.CurrentValue,
  4749. Callback = SliderSettings.Callback
  4750. }, NewSliderSettings or {})
  4751.  
  4752. SliderSettings = NewSliderSettings
  4753. SliderV.Settings = NewSliderSettings
  4754.  
  4755. Slider.Name = SliderSettings.Name .. " - Slider"
  4756. Slider.Title.Text = SliderSettings.Name
  4757.  
  4758. Set()
  4759.  
  4760. -- Luna.Flags[SliderSettings.Flag] = SliderSettings
  4761. end
  4762.  
  4763. function SliderV:Destroy()
  4764. Slider.Visible = false
  4765. Slider:Destroy()
  4766. end
  4767.  
  4768. if Flag then
  4769. Luna.Options[Flag] = SliderV
  4770. end
  4771.  
  4772. LunaUI.ThemeRemote:GetPropertyChangedSignal("Value"):Connect(function()
  4773. Slider.Main.color.Color = Luna.ThemeGradient
  4774. Slider.Main.UIStroke.color.Color = Luna.ThemeGradient
  4775. end)
  4776.  
  4777. return SliderV
  4778.  
  4779. end
  4780.  
  4781. -- Toggle
  4782. function Tab:CreateToggle(ToggleSettings, Flag)
  4783. local ToggleV = { IgnoreConfig = false, Class = "Toggle" }
  4784.  
  4785. ToggleSettings = Kwargify({
  4786. Name = "Toggle",
  4787. Description = nil,
  4788. CurrentValue = false,
  4789. Callback = function(Value)
  4790. end,
  4791. }, ToggleSettings or {})
  4792.  
  4793.  
  4794. local Toggle
  4795.  
  4796. if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then
  4797. Toggle = Elements.Template.ToggleDesc:Clone()
  4798. else
  4799. Toggle = Elements.Template.Toggle:Clone()
  4800. end
  4801.  
  4802. Toggle.Visible = true
  4803. Toggle.Parent = TabPage
  4804.  
  4805. Toggle.Name = ToggleSettings.Name .. " - Toggle"
  4806. Toggle.Title.Text = ToggleSettings.Name
  4807. if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then
  4808. Toggle.Desc.Text = ToggleSettings.Description
  4809. end
  4810.  
  4811. Toggle.UIStroke.Transparency = 1
  4812. Toggle.Title.TextTransparency = 1
  4813. if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then
  4814. Toggle.Desc.TextTransparency = 1
  4815. end
  4816.  
  4817. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  4818. if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" then
  4819. TweenService:Create(Toggle.Desc, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  4820. end
  4821. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  4822. TweenService:Create(Toggle.Title, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  4823.  
  4824. local function Set(bool)
  4825. if bool then
  4826. Toggle.toggle.color.Enabled = true
  4827. tween(Toggle.toggle, {BackgroundTransparency = 0})
  4828.  
  4829. Toggle.toggle.UIStroke.color.Enabled = true
  4830. tween(Toggle.toggle.UIStroke, {Color = Color3.new(255,255,255)})
  4831.  
  4832. tween(Toggle.toggle.val, {BackgroundColor3 = Color3.fromRGB(255,255,255), Position = UDim2.new(1,-23,0.5,0), BackgroundTransparency = 0.45})
  4833. else
  4834. Toggle.toggle.color.Enabled = false
  4835. Toggle.toggle.UIStroke.color.Enabled = false
  4836.  
  4837. Toggle.toggle.UIStroke.Color = Color3.fromRGB(97,97,97)
  4838.  
  4839. tween(Toggle.toggle, {BackgroundTransparency = 1})
  4840.  
  4841. tween(Toggle.toggle.val, {BackgroundColor3 = Color3.fromRGB(97,97,97), Position = UDim2.new(0,5,0.5,0), BackgroundTransparency = 0})
  4842. end
  4843.  
  4844. ToggleV.CurrentValue = bool
  4845. end
  4846.  
  4847. Toggle.Interact.MouseButton1Click:Connect(function()
  4848. ToggleSettings.CurrentValue = not ToggleSettings.CurrentValue
  4849. Set(ToggleSettings.CurrentValue)
  4850.  
  4851. local Success, Response = pcall(function()
  4852. ToggleSettings.Callback(ToggleSettings.CurrentValue)
  4853. end)
  4854. if not Success then
  4855. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  4856. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  4857. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  4858. Toggle.Title.Text = "Callback Error"
  4859. print("Luna Interface Suite | "..ToggleSettings.Name.." Callback Error " ..tostring(Response))
  4860. wait(0.5)
  4861. Toggle.Title.Text = ToggleSettings.Name
  4862. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  4863. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  4864. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  4865. end
  4866. end)
  4867.  
  4868. Toggle["MouseEnter"]:Connect(function()
  4869. tween(Toggle.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  4870. end)
  4871.  
  4872. Toggle["MouseLeave"]:Connect(function()
  4873. tween(Toggle.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  4874. end)
  4875.  
  4876. if ToggleSettings.CurrentValue then
  4877. Set(ToggleSettings.CurrentValue)
  4878. local Success, Response = pcall(function()
  4879. ToggleSettings.Callback(ToggleSettings.CurrentValue)
  4880. end)
  4881. if not Success then
  4882. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  4883. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  4884. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  4885. Toggle.Title.Text = "Callback Error"
  4886. print("Luna Interface Suite | "..ToggleSettings.Name.." Callback Error " ..tostring(Response))
  4887. wait(0.5)
  4888. Toggle.Title.Text = ToggleSettings.Name
  4889. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  4890. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  4891. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  4892. end
  4893. end
  4894.  
  4895. function ToggleV:UpdateState(State)
  4896. ToggleSettings.CurrentValue = State
  4897. Set(ToggleSettings.CurrentValue)
  4898. end
  4899.  
  4900. function ToggleV:Set(NewToggleSettings)
  4901.  
  4902. NewToggleSettings = Kwargify({
  4903. Name = ToggleSettings.Name,
  4904. Description = ToggleSettings.Description,
  4905. CurrentValue = ToggleSettings.CurrentValue,
  4906. Callback = ToggleSettings.Callback
  4907. }, NewToggleSettings or {})
  4908.  
  4909. ToggleV.Settings = NewToggleSettings
  4910. ToggleSettings = NewToggleSettings
  4911.  
  4912. Toggle.Name = ToggleSettings.Name .. " - Toggle"
  4913. Toggle.Title.Text = ToggleSettings.Name
  4914. if ToggleSettings.Description ~= nil and ToggleSettings.Description ~= "" and Toggle.Desc ~= nil then
  4915. Toggle.Desc.Text = ToggleSettings.Description
  4916. end
  4917.  
  4918. Set(ToggleSettings.CurrentValue)
  4919.  
  4920. ToggleV.CurrentValue = ToggleSettings.CurrentValue
  4921.  
  4922. local Success, Response = pcall(function()
  4923. ToggleSettings.Callback(ToggleSettings.CurrentValue)
  4924. end)
  4925. if not Success then
  4926. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  4927. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  4928. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0}):Play()
  4929. Toggle.Title.Text = "Callback Error"
  4930. print("Luna Interface Suite | "..ToggleSettings.Name.." Callback Error " ..tostring(Response))
  4931. wait(0.5)
  4932. Toggle.Title.Text = ToggleSettings.Name
  4933. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  4934. TweenService:Create(Toggle, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  4935. TweenService:Create(Toggle.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  4936. end
  4937. end
  4938.  
  4939. function ToggleV:Destroy()
  4940. Toggle.Visible = false
  4941. Toggle:Destroy()
  4942. end
  4943.  
  4944. LunaUI.ThemeRemote:GetPropertyChangedSignal("Value"):Connect(function()
  4945. Toggle.toggle.color.Color = Luna.ThemeGradient
  4946. Toggle.toggle.UIStroke.color.Color = Luna.ThemeGradient
  4947. end)
  4948.  
  4949. if Flag then
  4950. Luna.Options[Flag] = ToggleV
  4951. end
  4952.  
  4953. return ToggleV
  4954.  
  4955. end
  4956.  
  4957. -- Bind
  4958. function Tab:CreateBind(BindSettings, Flag)
  4959. local BindV = { Class = "Keybind", IgnoreConfig = false, Settings = BindSettings, Active = false }
  4960.  
  4961. BindSettings = Kwargify({
  4962. Name = "Bind",
  4963. Description = nil,
  4964. CurrentBind = "Q",
  4965. HoldToInteract = false, -- setting this makes the Bind in toggle mode
  4966. Callback = function(Bind)
  4967. -- The function that takes place when the Bind is pressed
  4968. -- 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 active
  4969. end,
  4970.  
  4971. OnChangedCallback = function(Bind)
  4972. -- The function that takes place when the binded key changes
  4973. -- The variable (Bind) is a Enum.KeyCode for the new Binded Key
  4974. end,
  4975. }, BindSettings or {})
  4976.  
  4977. local CheckingForKey = false
  4978.  
  4979. local Bind
  4980. if BindSettings.Description ~= nil and BindSettings.Description ~= "" then
  4981. Bind = Elements.Template.BindDesc:Clone()
  4982. else
  4983. Bind = Elements.Template.Bind:Clone()
  4984. end
  4985.  
  4986. Bind.Visible = true
  4987. Bind.Parent = TabPage
  4988.  
  4989. Bind.Name = BindSettings.Name
  4990. Bind.Title.Text = BindSettings.Name
  4991. if BindSettings.Description ~= nil and BindSettings.Description ~= "" then
  4992. Bind.Desc.Text = BindSettings.Description
  4993. end
  4994.  
  4995. Bind.Title.TextTransparency = 1
  4996. if BindSettings.Description ~= nil and BindSettings.Description ~= "" then
  4997. Bind.Desc.TextTransparency = 1
  4998. end
  4999. Bind.BindFrame.BackgroundTransparency = 1
  5000. Bind.BindFrame.UIStroke.Transparency = 1
  5001. Bind.BindFrame.BindBox.TextTransparency = 1
  5002.  
  5003. TweenService:Create(Bind, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5004. TweenService:Create(Bind.Title, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  5005. if BindSettings.Description ~= nil and BindSettings.Description ~= "" then
  5006. TweenService:Create(Bind.Desc, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  5007. end
  5008. TweenService:Create(Bind.BindFrame, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.9}):Play()
  5009. TweenService:Create(Bind.BindFrame.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {Transparency = 0.3}):Play()
  5010. TweenService:Create(Bind.BindFrame.BindBox, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  5011.  
  5012.  
  5013. Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind
  5014. Bind.BindFrame.BindBox.Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 20, 0, 42)
  5015.  
  5016. Bind.BindFrame.BindBox.Focused:Connect(function()
  5017. CheckingForKey = true
  5018. Bind.BindFrame.BindBox.Text = ""
  5019. end)
  5020.  
  5021. Bind.BindFrame.BindBox.FocusLost:Connect(function()
  5022. CheckingForKey = false
  5023. if Bind.BindFrame.BindBox.Text == (nil or "") then
  5024. Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind
  5025. end
  5026. end)
  5027.  
  5028. Bind["MouseEnter"]:Connect(function()
  5029. tween(Bind.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  5030. end)
  5031.  
  5032. Bind["MouseLeave"]:Connect(function()
  5033. tween(Bind.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  5034. end)
  5035. UserInputService.InputBegan:Connect(function(input, processed)
  5036.  
  5037. if CheckingForKey then
  5038. if input.KeyCode ~= Enum.KeyCode.Unknown and input.KeyCode ~= Window.Bind then
  5039. local SplitMessage = string.split(tostring(input.KeyCode), ".")
  5040. local NewKeyNoEnum = SplitMessage[3]
  5041. Bind.BindFrame.BindBox.Text = tostring(NewKeyNoEnum)
  5042. BindSettings.CurrentBind = tostring(NewKeyNoEnum)
  5043. local Success, Response = pcall(function()
  5044. BindSettings.Callback(BindSettings.CurrentBind)
  5045. end)
  5046. if not Success then
  5047. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  5048. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  5049. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  5050. Bind.Title.Text = "Callback Error"
  5051. print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))
  5052. wait(0.5)
  5053. Bind.Title.Text = BindSettings.Name
  5054. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5055. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  5056. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  5057. end
  5058. Bind.BindFrame.BindBox:ReleaseFocus()
  5059. end
  5060. elseif BindSettings.CurrentBind ~= nil and (input.KeyCode == Enum.KeyCode[BindSettings.CurrentBind] and not processed) then -- Test
  5061. local Held = true
  5062. local Connection
  5063. Connection = input.Changed:Connect(function(prop)
  5064. if prop == "UserInputState" then
  5065. Connection:Disconnect()
  5066. Held = false
  5067. end
  5068. end)
  5069.  
  5070. if not BindSettings.HoldToInteract then
  5071. BindV.Active = not BindV.Active
  5072. local Success, Response = pcall(function()
  5073. BindSettings.Callback(BindV.Active)
  5074. end)
  5075. if not Success then
  5076. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  5077. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  5078. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  5079. Bind.Title.Text = "Callback Error"
  5080. print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))
  5081. wait(0.5)
  5082. Bind.Title.Text = BindSettings.Name
  5083. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5084. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  5085. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  5086. end
  5087. else
  5088. wait(0.1)
  5089. if Held then
  5090. local Loop; Loop = RunService.Stepped:Connect(function()
  5091. if not Held then
  5092. local Success, Response = pcall(function()
  5093. BindSettings.Callback(false)
  5094. end)
  5095. if not Success then
  5096. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  5097. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  5098. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  5099. Bind.Title.Text = "Callback Error"
  5100. print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))
  5101. wait(0.5)
  5102. Bind.Title.Text = BindSettings.Name
  5103. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5104. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  5105. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  5106. end
  5107. Loop:Disconnect()
  5108. else
  5109. local Success, Response = pcall(function()
  5110. BindSettings.Callback(true)
  5111. end)
  5112. if not Success then
  5113. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  5114. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  5115. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  5116. Bind.Title.Text = "Callback Error"
  5117. print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))
  5118. wait(0.5)
  5119. Bind.Title.Text = BindSettings.Name
  5120. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5121. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  5122. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  5123. end
  5124. end
  5125. end)
  5126. end
  5127. end
  5128. end
  5129. end)
  5130.  
  5131. Bind.BindFrame.BindBox:GetPropertyChangedSignal("Text"):Connect(function()
  5132. 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()
  5133. end)
  5134.  
  5135. function BindV:Set(NewBindSettings)
  5136.  
  5137. NewBindSettings = Kwargify({
  5138. Name = BindSettings.Name,
  5139. Description = BindSettings.Description,
  5140. CurrentBind = BindSettings.CurrentBind,
  5141. HoldToInteract = BindSettings.HoldToInteract,
  5142. Callback = BindSettings.Callback
  5143. }, NewBindSettings or {})
  5144.  
  5145. BindV.Settings = NewBindSettings
  5146. BindSettings = NewBindSettings
  5147.  
  5148. Bind.Name = BindSettings.Name
  5149. Bind.Title.Text = BindSettings.Name
  5150. if BindSettings.Description ~= nil and BindSettings.Description ~= "" and Bind.Desc ~= nil then
  5151. Bind.Desc.Text = BindSettings.Description
  5152. end
  5153.  
  5154. Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind
  5155. Bind.BindFrame.Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 20, 0, 42)
  5156.  
  5157.  
  5158. BindV.CurrentBind = BindSettings.CurrentBind
  5159. end
  5160.  
  5161. function BindV:Destroy()
  5162. Bind.Visible = false
  5163. Bind:Destroy()
  5164. end
  5165.  
  5166. if Flag then
  5167. Luna.Options[Flag] = BindV
  5168. end
  5169.  
  5170. -- Luna.Flags[BindSettings.Flag] = BindSettings
  5171.  
  5172. return BindV
  5173.  
  5174. end
  5175.  
  5176. function Tab:CreateKeybind(BindSettings)
  5177.  
  5178. BindSettings = Kwargify({
  5179. Name = "Bind",
  5180. Description = nil,
  5181. CurrentBind = "Q",
  5182. HoldToInteract = false, -- setting this makes the Bind in toggle mode
  5183. Callback = function(Bind)
  5184. -- The function that takes place when the Bind is pressed
  5185. -- 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 active
  5186. end
  5187. }, BindSettings or {})
  5188.  
  5189. local BindV = { Settings = BindSettings, Active = false }
  5190. local CheckingForKey = false
  5191.  
  5192. local Bind
  5193. if BindSettings.Description ~= nil and BindSettings.Description ~= "" then
  5194. Bind = Elements.Template.BindDesc:Clone()
  5195. else
  5196. Bind = Elements.Template.Bind:Clone()
  5197. end
  5198.  
  5199. Bind.Visible = true
  5200. Bind.Parent = TabPage
  5201.  
  5202. Bind.Name = BindSettings.Name
  5203. Bind.Title.Text = BindSettings.Name
  5204. if BindSettings.Description ~= nil and BindSettings.Description ~= "" then
  5205. Bind.Desc.Text = BindSettings.Description
  5206. end
  5207.  
  5208. Bind.Title.TextTransparency = 1
  5209. if BindSettings.Description ~= nil and BindSettings.Description ~= "" then
  5210. Bind.Desc.TextTransparency = 1
  5211. end
  5212. Bind.BindFrame.BackgroundTransparency = 1
  5213. Bind.BindFrame.UIStroke.Transparency = 1
  5214. Bind.BindFrame.BindBox.TextTransparency = 1
  5215.  
  5216. TweenService:Create(Bind, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5217. TweenService:Create(Bind.Title, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  5218. if BindSettings.Description ~= nil and BindSettings.Description ~= "" then
  5219. TweenService:Create(Bind.Desc, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  5220. end
  5221. TweenService:Create(Bind.BindFrame, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.9}):Play()
  5222. TweenService:Create(Bind.BindFrame.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {Transparency = 0.3}):Play()
  5223. TweenService:Create(Bind.BindFrame.BindBox, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  5224.  
  5225.  
  5226. Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind
  5227. Bind.BindFrame.BindBox.Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 16, 0, 42)
  5228.  
  5229. Bind.BindFrame.BindBox.Focused:Connect(function()
  5230. CheckingForKey = true
  5231. Bind.BindFrame.BindBox.Text = ""
  5232. end)
  5233.  
  5234. Bind.BindFrame.BindBox.FocusLost:Connect(function()
  5235. CheckingForKey = false
  5236. if Bind.BindFrame.BindBox.Text == (nil or "") then
  5237. Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind
  5238. end
  5239. end)
  5240.  
  5241. Bind["MouseEnter"]:Connect(function()
  5242. tween(Bind.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  5243. end)
  5244.  
  5245. Bind["MouseLeave"]:Connect(function()
  5246. tween(Bind.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  5247. end)
  5248. UserInputService.InputBegan:Connect(function(input, processed)
  5249.  
  5250. if CheckingForKey then
  5251. if input.KeyCode ~= Enum.KeyCode.Unknown and input.KeyCode ~= Enum.KeyCode.K then
  5252. local SplitMessage = string.split(tostring(input.KeyCode), ".")
  5253. local NewKeyNoEnum = SplitMessage[3]
  5254. Bind.BindFrame.BindBox.Text = tostring(NewKeyNoEnum)
  5255. BindSettings.CurrentBind = tostring(NewKeyNoEnum)
  5256. Bind.BindFrame.BindBox:ReleaseFocus()
  5257. end
  5258. elseif BindSettings.CurrentBind ~= nil and (input.KeyCode == Enum.KeyCode[BindSettings.CurrentBind] and not processed) then -- Test
  5259. local Held = true
  5260. local Connection
  5261. Connection = input.Changed:Connect(function(prop)
  5262. if prop == "UserInputState" then
  5263. Connection:Disconnect()
  5264. Held = false
  5265. end
  5266. end)
  5267.  
  5268. if not BindSettings.HoldToInteract then
  5269. BindV.Active = not BindV.Active
  5270. local Success, Response = pcall(function()
  5271. BindSettings.Callback(BindV.Active)
  5272. end)
  5273. if not Success then
  5274. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  5275. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  5276. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  5277. Bind.Title.Text = "Callback Error"
  5278. print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))
  5279. wait(0.5)
  5280. Bind.Title.Text = BindSettings.Name
  5281. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5282. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  5283. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  5284. end
  5285. else
  5286. wait(0.1)
  5287. if Held then
  5288. local Loop; Loop = RunService.Stepped:Connect(function()
  5289. if not Held then
  5290. local Success, Response = pcall(function()
  5291. BindSettings.Callback(false)
  5292. end)
  5293. if not Success then
  5294. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  5295. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  5296. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  5297. Bind.Title.Text = "Callback Error"
  5298. print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))
  5299. wait(0.5)
  5300. Bind.Title.Text = BindSettings.Name
  5301. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5302. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  5303. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  5304. end
  5305. Loop:Disconnect()
  5306. else
  5307. local Success, Response = pcall(function()
  5308. BindSettings.Callback(true)
  5309. end)
  5310. if not Success then
  5311. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  5312. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  5313. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  5314. Bind.Title.Text = "Callback Error"
  5315. print("Luna Interface Suite | "..BindSettings.Name.." Callback Error " ..tostring(Response))
  5316. wait(0.5)
  5317. Bind.Title.Text = BindSettings.Name
  5318. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5319. TweenService:Create(Bind, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  5320. TweenService:Create(Bind.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  5321. end
  5322. end
  5323. end)
  5324. end
  5325. end
  5326. end
  5327. end)
  5328.  
  5329. Bind.BindFrame.BindBox:GetPropertyChangedSignal("Text"):Connect(function()
  5330. 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()
  5331. end)
  5332.  
  5333. function BindV:Set(NewBindSettings)
  5334.  
  5335. NewBindSettings = Kwargify({
  5336. Name = BindSettings.Name,
  5337. Description = BindSettings.Description,
  5338. CurrentBind = BindSettings.CurrentBind,
  5339. HoldToInteract = BindSettings.HoldToInteract,
  5340. Callback = BindSettings.Callback
  5341. }, NewBindSettings or {})
  5342.  
  5343. BindV.Settings = NewBindSettings
  5344. BindSettings = NewBindSettings
  5345.  
  5346. Bind.Name = BindSettings.Name
  5347. Bind.Title.Text = BindSettings.Name
  5348. if BindSettings.Description ~= nil and BindSettings.Description ~= "" and Bind.Desc ~= nil then
  5349. Bind.Desc.Text = BindSettings.Description
  5350. end
  5351.  
  5352. Bind.BindFrame.BindBox.Text = BindSettings.CurrentBind
  5353. Bind.BindFrame.BindBox.Size = UDim2.new(0, Bind.BindFrame.BindBox.TextBounds.X + 16, 0, 42)
  5354.  
  5355. -- Luna.Flags[BindSettings.Flag] = BindSettings
  5356.  
  5357. end
  5358.  
  5359. function BindV:Destroy()
  5360. Bind.Visible = false
  5361. Bind:Destroy()
  5362. end
  5363.  
  5364. -- Luna.Flags[BindSettings.Flag] = BindSettings
  5365.  
  5366. return BindV
  5367.  
  5368. end
  5369.  
  5370. -- Dynamic Input
  5371. function Tab:CreateInput(InputSettings, Flag)
  5372. local InputV = { IgnoreConfig = false, Class = "Input", Settings = InputSettings }
  5373.  
  5374. InputSettings = Kwargify({
  5375. Name = "Dynamic Input",
  5376. Description = nil,
  5377. CurrentValue = "",
  5378. PlaceholderText = "Input Placeholder",
  5379. RemoveTextAfterFocusLost = false,
  5380. Numeric = false,
  5381. Enter = false,
  5382. MaxCharacters = nil,
  5383. Callback = function(Text)
  5384.  
  5385. end, -- 52
  5386. }, InputSettings or {})
  5387.  
  5388. InputV.CurrentValue = InputSettings.CurrentValue
  5389.  
  5390. local descriptionbool
  5391. if InputSettings.Description ~= nil and InputSettings.Description ~= "" then
  5392. descriptionbool = true
  5393. end
  5394.  
  5395. local Input
  5396. if descriptionbool then
  5397. Input = Elements.Template.InputDesc:Clone()
  5398. else
  5399. Input = Elements.Template.Input:Clone()
  5400. end
  5401.  
  5402. Input.Name = InputSettings.Name
  5403. Input.Title.Text = InputSettings.Name
  5404. if descriptionbool then Input.Desc.Text = InputSettings.Description end
  5405. Input.Visible = true
  5406. Input.Parent = TabPage
  5407.  
  5408. Input.BackgroundTransparency = 1
  5409. Input.UIStroke.Transparency = 1
  5410. Input.Title.TextTransparency = 1
  5411. if descriptionbool then Input.Desc.TextTransparency = 1 end
  5412. Input.InputFrame.BackgroundTransparency = 1
  5413. Input.InputFrame.UIStroke.Transparency = 1
  5414. Input.InputFrame.InputBox.TextTransparency = 1
  5415.  
  5416. TweenService:Create(Input, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5417. TweenService:Create(Input.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  5418. TweenService:Create(Input.Title, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  5419. if descriptionbool then TweenService:Create(Input.Desc, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play() end
  5420. TweenService:Create(Input.InputFrame, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.9}):Play()
  5421. TweenService:Create(Input.InputFrame.UIStroke, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {Transparency = 0.3}):Play()
  5422. TweenService:Create(Input.InputFrame.InputBox, TweenInfo.new(0.3, Enum.EasingStyle.Exponential), {TextTransparency = 0}):Play()
  5423.  
  5424. Input.InputFrame.InputBox.PlaceholderText = InputSettings.PlaceholderText
  5425. Input.InputFrame.Size = UDim2.new(0, Input.InputFrame.InputBox.TextBounds.X + 52, 0, 30)
  5426.  
  5427. Input.InputFrame.InputBox.FocusLost:Connect(function(bleh)
  5428.  
  5429. if InputSettings.Enter then
  5430. if bleh then
  5431. local Success, Response = pcall(function()
  5432. InputSettings.Callback(Input.InputFrame.InputBox.Text)
  5433. InputV.CurrentValue = Input.InputFrame.InputBox.Text
  5434. end)
  5435. if not Success then
  5436. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  5437. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  5438. TweenService:Create(Input.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  5439. Input.Title.Text = "Callback Error"
  5440. print("Luna Interface Suite | "..InputSettings.Name.." Callback Error " ..tostring(Response))
  5441. wait(0.5)
  5442. Input.Title.Text = InputSettings.Name
  5443. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5444. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  5445. TweenService:Create(Input.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  5446. end
  5447. end
  5448. end
  5449.  
  5450. if InputSettings.RemoveTextAfterFocusLost then
  5451. Input.InputFrame.InputBox.Text = ""
  5452. end
  5453.  
  5454. end)
  5455.  
  5456. if InputSettings.Numeric then
  5457. Input.InputFrame.InputBox:GetPropertyChangedSignal("Text"):Connect(function()
  5458. local text = Input.InputFrame.InputBox.Text
  5459. if not tonumber(text) and text ~= "." then
  5460. Input.InputFrame.InputBox.Text = text:match("[0-9.]*") or ""
  5461. end
  5462. end)
  5463. end
  5464.  
  5465. Input.InputFrame.InputBox:GetPropertyChangedSignal("Text"):Connect(function()
  5466. if tonumber(InputSettings.MaxCharacters) then
  5467. if (#Input.InputFrame.InputBox.Text - 1) == InputSettings.MaxCharacters then
  5468. Input.InputFrame.InputBox.Text = Input.InputFrame.InputBox.Text:sub(1, InputSettings.MaxCharacters)
  5469. end
  5470. end
  5471. 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()
  5472. if not InputSettings.Enter then
  5473. local Success, Response = pcall(function()
  5474. InputSettings.Callback(Input.InputFrame.InputBox.Text)
  5475. end)
  5476. if not Success then
  5477. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  5478. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  5479. TweenService:Create(Input.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  5480. Input.Title.Text = "Callback Error"
  5481. print("Luna Interface Suite | "..InputSettings.Name.." Callback Error " ..tostring(Response))
  5482. wait(0.5)
  5483. Input.Title.Text = InputSettings.Name
  5484. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5485. TweenService:Create(Input, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  5486. TweenService:Create(Input.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  5487. end
  5488. end
  5489. InputV.CurrentValue = Input.InputFrame.InputBox.Text
  5490. end)
  5491.  
  5492. Input["MouseEnter"]:Connect(function()
  5493. tween(Input.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  5494. end)
  5495.  
  5496. Input["MouseLeave"]:Connect(function()
  5497. tween(Input.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  5498. end)
  5499.  
  5500.  
  5501. function InputV:Set(NewInputSettings)
  5502.  
  5503. NewInputSettings = Kwargify(InputSettings, NewInputSettings or {})
  5504.  
  5505. InputV.Settings = NewInputSettings
  5506. InputSettings = NewInputSettings
  5507.  
  5508. Input.Name = InputSettings.Name
  5509. Input.Title.Text = InputSettings.Name
  5510. if InputSettings.Description ~= nil and InputSettings.Description ~= "" and Input.Desc ~= nil then
  5511. Input.Desc.Text = InputSettings.Description
  5512. end
  5513.  
  5514. Input.InputFrame.InputBox:CaptureFocus()
  5515. Input.InputFrame.InputBox.Text = tostring(InputSettings.CurrentValue)
  5516. Input.InputFrame.InputBox:ReleaseFocus()
  5517. Input.InputFrame.Size = UDim2.new(0, Input.InputFrame.InputBox.TextBounds.X + 52, 0, 42)
  5518.  
  5519. InputV.CurrentValue = InputSettings.CurrentValue
  5520. end
  5521.  
  5522. function InputV:Destroy()
  5523. Input.Visible = false
  5524. Input:Destroy()
  5525. end
  5526.  
  5527. if Flag then
  5528. Luna.Options[Flag] = InputV
  5529. end
  5530.  
  5531.  
  5532. return InputV
  5533.  
  5534. end
  5535.  
  5536. -- Dropdown
  5537. function Tab:CreateDropdown(DropdownSettings, Flag)
  5538. local DropdownV = { IgnoreConfig = false, Class = "Dropdown", Settings = DropdownSettings}
  5539.  
  5540. DropdownSettings = Kwargify({
  5541. Name = "Dropdown",
  5542. Description = nil,
  5543. Options = {"Option 1", "Option 2"},
  5544. CurrentOption = {"Option 1"},
  5545. MultipleOptions = false,
  5546. SpecialType = nil, -- currently onl player, might add more soon
  5547. Callback = function(Options)
  5548. -- The function that takes place when the selected option is changed
  5549. -- The variable (Options) is a table of strings for the current selected options or a string if multioptions is false
  5550. end,
  5551. }, DropdownSettings or {})
  5552.  
  5553. DropdownV.CurrentOption = DropdownSettings.CurrentOption
  5554.  
  5555. local descriptionbool = false
  5556. if DropdownSettings.Description ~= nil and DropdownSettings.Description ~= "" then
  5557. descriptionbool = true
  5558. end
  5559. local closedsize
  5560. local openedsize
  5561. if descriptionbool then
  5562. closedsize = 48
  5563. openedsize = 170
  5564. elseif not descriptionbool then
  5565. closedsize = 38
  5566. openedsize = 160
  5567. end
  5568. local opened = false
  5569.  
  5570. local Dropdown
  5571. if descriptionbool then Dropdown = Elements.Template.DropdownDesc:Clone() else Dropdown = Elements.Template.Dropdown:Clone() end
  5572.  
  5573. Dropdown.Name = DropdownSettings.Name
  5574. Dropdown.Title.Text = DropdownSettings.Name
  5575. if descriptionbool then Dropdown.Desc.Text = DropdownSettings.Description end
  5576.  
  5577. Dropdown.Parent = TabPage
  5578. Dropdown.Visible = true
  5579.  
  5580. local function Toggle()
  5581. opened = not opened
  5582. if opened then
  5583. tween(Dropdown.icon, {Rotation = 180})
  5584. tween(Dropdown, {Size = UDim2.new(1, -25, 0, openedsize)})
  5585. else
  5586. tween(Dropdown.icon, {Rotation = 0})
  5587. tween(Dropdown, {Size = UDim2.new(1, -25, 0, closedsize)})
  5588. end
  5589. end
  5590.  
  5591. local function SafeCallback(param, c2)
  5592. local Success, Response = pcall(function()
  5593. DropdownSettings.Callback(param)
  5594. end)
  5595. if not Success then
  5596. TweenService:Create(Dropdown, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  5597. TweenService:Create(Dropdown, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  5598. TweenService:Create(Dropdown.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  5599. Dropdown.Title.Text = "Callback Error"
  5600. print("Luna Interface Suite | "..DropdownSettings.Name.." Callback Error " ..tostring(Response))
  5601. wait(0.5)
  5602. Dropdown.Title.Text = DropdownSettings.Name
  5603. TweenService:Create(Dropdown, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5604. TweenService:Create(Dropdown, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  5605. TweenService:Create(Dropdown.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  5606. end
  5607. if Success and c2 then
  5608. c2()
  5609. end
  5610. end
  5611.  
  5612. -- fixed by justhey
  5613. Dropdown.Selected:GetPropertyChangedSignal("Text"):Connect(function()
  5614. local text = Dropdown.Selected.Text:lower()
  5615. for _, Item in ipairs(Dropdown.List:GetChildren()) do
  5616. if Item:IsA("TextLabel") and Item.Name ~= "Template" then
  5617. Item.Visible = text == "" or string.find(Item.Name:lower(), text, 1, true) ~= nil
  5618. end
  5619. end
  5620. end)
  5621.  
  5622.  
  5623. local function Clear()
  5624. for _, option in ipairs(Dropdown.List:GetChildren()) do
  5625. if option.ClassName == "TextLabel" and option.Name ~= "Template" then
  5626. option:Destroy()
  5627. end
  5628. end
  5629. end
  5630.  
  5631. local function ActivateColorSingle(name)
  5632. for _, Option in pairs(Dropdown.List:GetChildren()) do
  5633. if Option.ClassName == "TextLabel" and Option.Name ~= "Template" then
  5634. tween(Option, {BackgroundTransparency = 0.98})
  5635. end
  5636. end
  5637.  
  5638. Toggle()
  5639. tween(Dropdown.List[name], {BackgroundTransparency = 0.95, TextColor3 = Color3.fromRGB(240,240,240)})
  5640. end
  5641.  
  5642. local function Refresh()
  5643. Clear()
  5644. for i,v in pairs(DropdownSettings.Options) do
  5645. local Option = Dropdown.List.Template:Clone()
  5646. local optionhover = false
  5647. Option.Text = v
  5648. if v == "Template" then v = "Template (Name)" end
  5649. Option.Name = v
  5650. Option.Interact.MouseButton1Click:Connect(function()
  5651. local bleh
  5652. if DropdownSettings.MultipleOptions then
  5653. if table.find(DropdownSettings.CurrentOption, v) then
  5654. RemoveTable(DropdownSettings.CurrentOption, v)
  5655. DropdownV.CurrentOption = DropdownSettings.CurrentOption
  5656. if not optionhover then
  5657. tween(Option, {TextColor3 = Color3.fromRGB(200,200,200)})
  5658. end
  5659. tween(Option, {BackgroundTransparency = 0.98})
  5660. else
  5661. table.insert(DropdownSettings.CurrentOption, v)
  5662. DropdownV.CurrentOption = DropdownSettings.CurrentOption
  5663. tween(Option, {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})
  5664. end
  5665. bleh = DropdownSettings.CurrentOption
  5666. else
  5667. DropdownSettings.CurrentOption = {v}
  5668. bleh = v
  5669. DropdownV.CurrentOption = bleh
  5670. ActivateColorSingle(v)
  5671. end
  5672.  
  5673. SafeCallback(bleh, function()
  5674. if DropdownSettings.MultipleOptions then
  5675. if DropdownSettings.CurrentOption and type(DropdownSettings.CurrentOption) == "table" then
  5676. if #DropdownSettings.CurrentOption == 1 then
  5677. Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1]
  5678. elseif #DropdownSettings.CurrentOption == 0 then
  5679. Dropdown.Selected.PlaceholderText = "None"
  5680. else
  5681. Dropdown.Selected.PlaceholderText = unpackt(DropdownSettings.CurrentOption)
  5682. end
  5683. else
  5684. DropdownSettings.CurrentOption = {}
  5685. Dropdown.Selected.PlaceholderText = "None"
  5686. end
  5687. end
  5688. if not DropdownSettings.MultipleOptions then
  5689. Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1] or "None"
  5690. end
  5691. Dropdown.Selected.Text = ""
  5692. end)
  5693. end)
  5694. Option.Visible = true
  5695. Option.Parent = Dropdown.List
  5696. Option.MouseEnter:Connect(function()
  5697. optionhover = true
  5698. if Option.BackgroundTransparency == 0.95 then
  5699. return
  5700. else
  5701. tween(Option, {TextColor3 = Color3.fromRGB(240,240,240)})
  5702. end
  5703. end)
  5704. Option.MouseLeave:Connect(function()
  5705. optionhover = false
  5706. if Option.BackgroundTransparency == 0.95 then
  5707. return
  5708. else
  5709. tween(Option, {TextColor3 = Color3.fromRGB(200,200,200)})
  5710. end
  5711. end)
  5712. end
  5713. end
  5714.  
  5715. local function PlayerTableRefresh()
  5716. for i,v in pairs(DropdownSettings.Options) do
  5717. table.remove(DropdownSettings.Options, i)
  5718. end
  5719.  
  5720. for i,v in pairs(Players:GetChildren()) do
  5721. table.insert(DropdownSettings.Options, v.Name)
  5722. end
  5723. end
  5724.  
  5725. Dropdown.Interact.MouseButton1Click:Connect(function()
  5726. Toggle()
  5727. end)
  5728.  
  5729. Dropdown["MouseEnter"]:Connect(function()
  5730. tween(Dropdown.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  5731. end)
  5732.  
  5733. Dropdown["MouseLeave"]:Connect(function()
  5734. tween(Dropdown.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  5735. end)
  5736.  
  5737. if DropdownSettings.SpecialType == "Player" then
  5738.  
  5739. for i,v in pairs(DropdownSettings.Options) do
  5740. table.remove(DropdownSettings.Options, i)
  5741. end
  5742. PlayerTableRefresh()
  5743. DropdownSettings.CurrentOption = DropdownSettings.Options[1]
  5744.  
  5745. Players.PlayerAdded:Connect(function() PlayerTableRefresh() end)
  5746. Players.PlayerRemoving:Connect(function() PlayerTableRefresh() end)
  5747.  
  5748. end
  5749.  
  5750. Refresh()
  5751.  
  5752. if DropdownSettings.CurrentOption then
  5753. if type(DropdownSettings.CurrentOption) == "string" then
  5754. DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption}
  5755. end
  5756. if not DropdownSettings.MultipleOptions and type(DropdownSettings.CurrentOption) == "table" then
  5757. DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption[1]}
  5758. end
  5759. else
  5760. DropdownSettings.CurrentOption = {}
  5761. end
  5762.  
  5763. local bleh, ind = nil,0
  5764. for i,v in pairs(DropdownSettings.CurrentOption) do
  5765. ind = ind + 1
  5766. end
  5767. if ind == 1 then bleh = DropdownSettings.CurrentOption[1] else bleh = DropdownSettings.CurrentOption end
  5768. SafeCallback(bleh)
  5769. if type(bleh) == "string" then
  5770. tween(Dropdown.List[bleh], {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})
  5771. else
  5772. for i,v in pairs(bleh) do
  5773. tween(Dropdown.List[v], {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})
  5774. end
  5775. end
  5776.  
  5777. if DropdownSettings.MultipleOptions then
  5778. if DropdownSettings.CurrentOption and type(DropdownSettings.CurrentOption) == "table" then
  5779. if #DropdownSettings.CurrentOption == 1 then
  5780. Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1]
  5781. elseif #DropdownSettings.CurrentOption == 0 then
  5782. Dropdown.Selected.PlaceholderText = "None"
  5783. else
  5784. Dropdown.Selected.PlaceholderText = unpackt(DropdownSettings.CurrentOption)
  5785. end
  5786. else
  5787. DropdownSettings.CurrentOption = {}
  5788. Dropdown.Selected.PlaceholderText = "None"
  5789. end
  5790. for _, name in pairs(DropdownSettings.CurrentOption) do
  5791. tween(Dropdown.List[name], {TextColor3 = Color3.fromRGB(227,227,227), BackgroundTransparency = 0.95})
  5792. end
  5793. else
  5794. Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1] or "None"
  5795. end
  5796. Dropdown.Selected.Text = ""
  5797.  
  5798. function DropdownV:Set(NewDropdownSettings)
  5799. NewDropdownSettings = Kwargify(DropdownSettings, NewDropdownSettings or {})
  5800.  
  5801. DropdownV.Settings = NewDropdownSettings
  5802. DropdownSettings = NewDropdownSettings
  5803.  
  5804. Dropdown.Name = DropdownSettings.Name
  5805. Dropdown.Title.Text = DropdownSettings.Name
  5806. if DropdownSettings.Description ~= nil and DropdownSettings.Description ~= "" and Dropdown.Desc ~= nil then
  5807. Dropdown.Desc.Text = DropdownSettings.Description
  5808. end
  5809.  
  5810. if DropdownSettings.SpecialType == "Player" then
  5811.  
  5812. for i,v in pairs(DropdownSettings.Options) do
  5813. table.remove(DropdownSettings.Options, i)
  5814. end
  5815. PlayerTableRefresh()
  5816. DropdownSettings.CurrentOption = DropdownSettings.Options[1]
  5817. Players.PlayerAdded:Connect(function() PlayerTableRefresh() end)
  5818. Players.PlayerRemoving:Connect(function() PlayerTableRefresh() end)
  5819.  
  5820. end
  5821.  
  5822. Refresh()
  5823.  
  5824. if DropdownSettings.CurrentOption then
  5825. if type(DropdownSettings.CurrentOption) == "string" then
  5826. DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption}
  5827. end
  5828. if not DropdownSettings.MultipleOptions and type(DropdownSettings.CurrentOption) == "table" then
  5829. DropdownSettings.CurrentOption = {DropdownSettings.CurrentOption[1]}
  5830. end
  5831. else
  5832. DropdownSettings.CurrentOption = {}
  5833. end
  5834.  
  5835. local bleh, ind = nil,0
  5836. for i,v in pairs(DropdownSettings.CurrentOption) do
  5837. ind = ind + 1
  5838. end
  5839. if ind == 1 then bleh = DropdownSettings.CurrentOption[1] else bleh = DropdownSettings.CurrentOption end
  5840. SafeCallback(bleh)
  5841. for _, Option in pairs(Dropdown.List:GetChildren()) do
  5842. if Option.ClassName == "TextLabel" then
  5843. tween(Option, {TextColor3 = Color3.fromRGB(200,200,200), BackgroundTransparency = 0.98})
  5844. end
  5845. end
  5846. tween(Dropdown.List[bleh], {TextColor3 = Color3.fromRGB(240,240,240), BackgroundTransparency = 0.95})
  5847.  
  5848. if DropdownSettings.MultipleOptions then
  5849. if DropdownSettings.CurrentOption and type(DropdownSettings.CurrentOption) == "table" then
  5850. if #DropdownSettings.CurrentOption == 1 then
  5851. Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1]
  5852. elseif #DropdownSettings.CurrentOption == 0 then
  5853. Dropdown.Selected.PlaceholderText = "None"
  5854. else
  5855. Dropdown.Selected.PlaceholderText = unpackt(DropdownSettings.CurrentOption)
  5856. end
  5857. else
  5858. DropdownSettings.CurrentOption = {}
  5859. Dropdown.Selected.PlaceholderText = "None"
  5860. end
  5861. for _, name in pairs(DropdownSettings.CurrentOption) do
  5862. tween(Dropdown.List[name], {TextColor3 = Color3.fromRGB(227,227,227), BackgroundTransparency = 0.95})
  5863. end
  5864. else
  5865. Dropdown.Selected.PlaceholderText = DropdownSettings.CurrentOption[1] or "None"
  5866. end
  5867. Dropdown.Selected.Text = ""
  5868.  
  5869. -- Luna.Flags[DropdownSettings.Flag] = DropdownSettings
  5870.  
  5871. end
  5872.  
  5873. function DropdownV:Destroy()
  5874. Dropdown.Visible = false
  5875. Dropdown:Destroy()
  5876. end
  5877.  
  5878. if Flag then
  5879. Luna.Options[Flag] = DropdownV
  5880. end
  5881.  
  5882. -- Luna.Flags[DropdownSettings.Flag] = DropdownSettings
  5883.  
  5884. return DropdownV
  5885.  
  5886. end
  5887.  
  5888. -- Color Picker
  5889. function Tab:CreateColorPicker(ColorPickerSettings, Flag) -- by Rayfield/Throit
  5890. local ColorPickerV = {IgnoreClass = false, Class = "Colorpicker", Settings = ColorPickerSettings}
  5891.  
  5892. ColorPickerSettings = Kwargify({
  5893. Name = "Color Picker",
  5894. Color = Color3.fromRGB(255,255,255),
  5895. Callback = function(Value)
  5896. -- The function that takes place every time the color picker is moved/changed
  5897. -- The variable (Value) is a Color3fromRGB value based on which color is selected
  5898. end
  5899. }, ColorPickerSettings or {})
  5900.  
  5901. local function Color3ToHex(color)
  5902. return string.format("#%02X%02X%02X", math.floor(color.R * 255), math.floor(color.G * 255), math.floor(color.B * 255))
  5903. end
  5904.  
  5905. ColorPickerV.Color = Color3ToHex(ColorPickerSettings.Color)
  5906.  
  5907. local closedsize = UDim2.new(0, 75, 0, 22)
  5908. local openedsize = UDim2.new(0, 219, 0, 129)
  5909.  
  5910. local ColorPicker = Elements.Template.ColorPicker:Clone()
  5911. local Background = ColorPicker.CPBackground
  5912. local Display = Background.Display
  5913. local Main = Background.MainCP
  5914. local Slider = ColorPicker.ColorSlider
  5915.  
  5916. ColorPicker.Name = ColorPickerSettings.Name
  5917. ColorPicker.Title.Text = ColorPickerSettings.Name
  5918. ColorPicker.Visible = true
  5919. ColorPicker.Parent = TabPage
  5920. ColorPicker.Size = UDim2.new(1.042, -25,0, 38)
  5921. Background.Size = closedsize
  5922. Display.BackgroundTransparency = 0
  5923.  
  5924. ColorPicker["MouseEnter"]:Connect(function()
  5925. tween(ColorPicker.UIStroke, {Color = Color3.fromRGB(87, 84, 104)})
  5926. end)
  5927. ColorPicker["MouseLeave"]:Connect(function()
  5928. tween(ColorPicker.UIStroke, {Color = Color3.fromRGB(64,61,76)})
  5929. end)
  5930.  
  5931. local function SafeCallback(param, c2)
  5932. local Success, Response = pcall(function()
  5933. ColorPickerSettings.Callback(param)
  5934. end)
  5935. if not Success then
  5936. TweenService:Create(ColorPicker, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0}):Play()
  5937. TweenService:Create(ColorPicker, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(85, 0, 0)}):Play()
  5938. TweenService:Create(ColorPicker.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 1}):Play()
  5939. ColorPicker.Title.Text = "Callback Error"
  5940. print("Luna Interface Suite | "..ColorPickerSettings.Name.." Callback Error " ..tostring(Response))
  5941. wait(0.5)
  5942. ColorPicker.Title.Text = ColorPickerSettings.Name
  5943. TweenService:Create(ColorPicker, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundTransparency = 0.5}):Play()
  5944. TweenService:Create(ColorPicker, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {BackgroundColor3 = Color3.fromRGB(32, 30, 38)}):Play()
  5945. TweenService:Create(ColorPicker.UIStroke, TweenInfo.new(0.7, Enum.EasingStyle.Exponential), {Transparency = 0.5}):Play()
  5946. end
  5947. if Success and c2 then
  5948. c2()
  5949. end
  5950. end
  5951.  
  5952. local opened = false
  5953.  
  5954. local mouse = game.Players.LocalPlayer:GetMouse()
  5955. Main.Image = "http://www.roblox.com/asset/?id=11415645739"
  5956. local mainDragging = false
  5957. local sliderDragging = false
  5958. ColorPicker.Interact.MouseButton1Down:Connect(function()
  5959. if not opened then
  5960. opened = true
  5961. tween(ColorPicker, {Size = UDim2.new( 1.042, -25,0, 165)}, nil, TweenInfo.new(0.6, Enum.EasingStyle.Exponential))
  5962. tween(Background, {Size = openedsize})
  5963. tween(Display, {BackgroundTransparency = 1})
  5964. else
  5965. opened = false
  5966. tween(ColorPicker, {Size = UDim2.new(1.042, -25,0, 38)}, nil, TweenInfo.new(0.6, Enum.EasingStyle.Exponential))
  5967. tween(Background, {Size = closedsize})
  5968. tween(Display, {BackgroundTransparency = 0})
  5969. end
  5970. end)
  5971. UserInputService.InputEnded:Connect(function(input, gameProcessed) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
  5972. mainDragging = false
  5973. sliderDragging = false
  5974. end end)
  5975. Main.MouseButton1Down:Connect(function()
  5976. if opened then
  5977. mainDragging = true
  5978. end
  5979. end)
  5980. Main.MainPoint.MouseButton1Down:Connect(function()
  5981. if opened then
  5982. mainDragging = true
  5983. end
  5984. end)
  5985. Slider.MouseButton1Down:Connect(function()
  5986. sliderDragging = true
  5987. end)
  5988. Slider.SliderPoint.MouseButton1Down:Connect(function()
  5989. sliderDragging = true
  5990. end)
  5991. local h,s,v = ColorPickerSettings.Color:ToHSV()
  5992. local color = Color3.fromHSV(h,s,v)
  5993. local r,g,b = math.floor((h*255)+0.5),math.floor((s*255)+0.5),math.floor((v*255)+0.5)
  5994. local hex = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)
  5995. ColorPicker.HexInput.InputBox.Text = hex
  5996. local function setDisplay(hp,sp,vp)
  5997. --Main
  5998. Main.MainPoint.Position = UDim2.new(s,-Main.MainPoint.AbsoluteSize.X/2,1-v,-Main.MainPoint.AbsoluteSize.Y/2)
  5999. Main.MainPoint.ImageColor3 = Color3.fromHSV(hp,sp,vp)
  6000. Background.BackgroundColor3 = Color3.fromHSV(hp,1,1)
  6001. Display.BackgroundColor3 = Color3.fromHSV(hp,sp,vp)
  6002. --Slider
  6003. local x = hp * Slider.AbsoluteSize.X
  6004. Slider.SliderPoint.Position = UDim2.new(0,x-Slider.SliderPoint.AbsoluteSize.X/2,0.5,0)
  6005. Slider.SliderPoint.ImageColor3 = Color3.fromHSV(hp,1,1)
  6006. local color = Color3.fromHSV(hp,sp,vp)
  6007. 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)
  6008. ColorPicker.RInput.InputBox.Text = tostring(r)
  6009. ColorPicker.GInput.InputBox.Text = tostring(g)
  6010. ColorPicker.BInput.InputBox.Text = tostring(b)
  6011. hex = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)
  6012. ColorPicker.HexInput.InputBox.Text = hex
  6013. end
  6014. setDisplay(h,s,v)
  6015. ColorPicker.HexInput.InputBox.FocusLost:Connect(function()
  6016. if not pcall(function()
  6017. local r, g, b = string.match(ColorPicker.HexInput.InputBox.Text, "^#?(%w%w)(%w%w)(%w%w)$")
  6018. local rgbColor = Color3.fromRGB(tonumber(r, 16),tonumber(g, 16), tonumber(b, 16))
  6019. h,s,v = rgbColor:ToHSV()
  6020. hex = ColorPicker.HexInput.InputBox.Text
  6021. setDisplay()
  6022. ColorPickerSettings.Color = rgbColor
  6023. end)
  6024. then
  6025. ColorPicker.HexInput.InputBox.Text = hex
  6026. end
  6027. local r,g,b = math.floor((h*255)+0.5),math.floor((s*255)+0.5),math.floor((v*255)+0.5)
  6028. ColorPickerSettings.Color = Color3.fromRGB(r,g,b)
  6029. SafeCallback( Color3.fromRGB(r,g,b))
  6030. end)
  6031. --RGB
  6032. local function rgbBoxes(box,toChange)
  6033. local value = tonumber(box.Text)
  6034. local color = Color3.fromHSV(h,s,v)
  6035. 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)
  6036. local save
  6037. if toChange == "R" then save = oldR;oldR = value elseif toChange == "G" then save = oldG;oldG = value else save = oldB;oldB = value end
  6038. if value then
  6039. value = math.clamp(value,0,255)
  6040. h,s,v = Color3.fromRGB(oldR,oldG,oldB):ToHSV()
  6041. setDisplay()
  6042. else
  6043. box.Text = tostring(save)
  6044. end
  6045. 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)
  6046. ColorPickerSettings.Color = Color3.fromRGB(r,g,b)
  6047. end
  6048. ColorPicker.RInput.InputBox.FocusLost:connect(function()
  6049. rgbBoxes(ColorPicker.RInput.InputBox,"R")
  6050. SafeCallback(Color3.fromRGB(r,g,b))
  6051. end)
  6052. ColorPicker.GInput.InputBox.FocusLost:connect(function()
  6053. rgbBoxes(ColorPicker.GInput.InputBox,"G")
  6054. SafeCallback(Color3.fromRGB(r,g,b))
  6055. end)
  6056. ColorPicker.BInput.InputBox.FocusLost:connect(function()
  6057. rgbBoxes(ColorPicker.BInput.InputBox,"B")
  6058. SafeCallback(Color3.fromRGB(r,g,b))
  6059. end)
  6060. RunService.RenderStepped:connect(function()
  6061. if mainDragging then
  6062. local localX = math.clamp(mouse.X-Main.AbsolutePosition.X,0,Main.AbsoluteSize.X)
  6063. local localY = math.clamp(mouse.Y-Main.AbsolutePosition.Y,0,Main.AbsoluteSize.Y)
  6064. Main.MainPoint.Position = UDim2.new(0,localX-Main.MainPoint.AbsoluteSize.X/2,0,localY-Main.MainPoint.AbsoluteSize.Y/2)
  6065. s = localX / Main.AbsoluteSize.X
  6066. v = 1 - (localY / Main.AbsoluteSize.Y)
  6067. Display.BackgroundColor3 = Color3.fromHSV(h,s,v)
  6068. Main.MainPoint.ImageColor3 = Color3.fromHSV(h,s,v)
  6069. Background.BackgroundColor3 = Color3.fromHSV(h,1,1)
  6070. local color = Color3.fromHSV(h,s,v)
  6071. 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)
  6072. ColorPicker.RInput.InputBox.Text = tostring(r)
  6073. ColorPicker.GInput.InputBox.Text = tostring(g)
  6074. ColorPicker.BInput.InputBox.Text = tostring(b)
  6075. ColorPicker.HexInput.InputBox.Text = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)
  6076. SafeCallback(Color3.fromRGB(r,g,b))
  6077. ColorPickerSettings.Color = Color3.fromRGB(r,g,b)
  6078. ColorPickerV.Color = ColorPickerSettings.Color
  6079. end
  6080. if sliderDragging then
  6081. local localX = math.clamp(mouse.X-Slider.AbsolutePosition.X,0,Slider.AbsoluteSize.X)
  6082. h = localX / Slider.AbsoluteSize.X
  6083. Display.BackgroundColor3 = Color3.fromHSV(h,s,v)
  6084. Slider.SliderPoint.Position = UDim2.new(0,localX-Slider.SliderPoint.AbsoluteSize.X/2,0.5,0)
  6085. Slider.SliderPoint.ImageColor3 = Color3.fromHSV(h,1,1)
  6086. Background.BackgroundColor3 = Color3.fromHSV(h,1,1)
  6087. Main.MainPoint.ImageColor3 = Color3.fromHSV(h,s,v)
  6088. local color = Color3.fromHSV(h,s,v)
  6089. 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)
  6090. ColorPicker.RInput.InputBox.Text = tostring(r)
  6091. ColorPicker.GInput.InputBox.Text = tostring(g)
  6092. ColorPicker.BInput.InputBox.Text = tostring(b)
  6093. ColorPicker.HexInput.InputBox.Text = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)
  6094. SafeCallback(Color3.fromRGB(r,g,b))
  6095. ColorPickerSettings.Color = Color3.fromRGB(r,g,b)
  6096. ColorPickerV.Color = ColorPickerSettings.Color
  6097. end
  6098. end)
  6099.  
  6100. function ColorPickerV:Set(NewColorPickerSettings)
  6101.  
  6102. NewColorPickerSettings = Kwargify(ColorPickerSettings, NewColorPickerSettings or {})
  6103.  
  6104. ColorPickerV.Settings = NewColorPickerSettings
  6105. ColorPickerSettings = NewColorPickerSettings
  6106.  
  6107. ColorPicker.Name = ColorPickerSettings.Name
  6108. ColorPicker.Title.Text = ColorPickerSettings.Name
  6109. ColorPicker.Visible = true
  6110.  
  6111. local h,s,v = ColorPickerSettings.Color:ToHSV()
  6112. local color = Color3.fromHSV(h,s,v)
  6113. 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)
  6114. local hex = string.format("#%02X%02X%02X",color.R*0xFF,color.G*0xFF,color.B*0xFF)
  6115. ColorPicker.HexInput.InputBox.Text = hex
  6116. setDisplay(h,s,v)
  6117. SafeCallback(Color3.fromRGB(r,g,b))
  6118.  
  6119. ColorPickerV.Color = ColorPickerSettings.Color
  6120. end
  6121.  
  6122. function ColorPickerV:Destroy()
  6123. ColorPicker:Destroy()
  6124. end
  6125.  
  6126. if Flag then
  6127. Luna.Options[Flag] = ColorPickerV
  6128. end
  6129.  
  6130. SafeCallback(ColorPickerSettings.Color)
  6131.  
  6132. return ColorPickerV
  6133. end
  6134.  
  6135.  
  6136. function Tab:BuildConfigSection()
  6137. if isStudio then
  6138. Tab:CreateLabel({Text = "Config system unavailable. (Environment isStudio)", Style = 3})
  6139. return "Config system unavailable."
  6140. end
  6141.  
  6142. local inputPath = nil
  6143. local selectedConfig = nil
  6144.  
  6145. local Title = Elements.Template.Title:Clone()
  6146. Title.Text = "Configurations"
  6147. Title.Visible = true
  6148. Title.Parent = TabPage
  6149. Title.TextTransparency = 1
  6150. TweenService:Create(Title, TweenInfo.new(0.4, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {TextTransparency = 0}):Play()
  6151.  
  6152. Tab:CreateSection("Config Creator")
  6153.  
  6154. Tab:CreateInput({
  6155. Name = "Config Name",
  6156. Description = "Insert a name for your to be created config.",
  6157. PlaceholderText = "Name",
  6158. CurrentValue = "",
  6159. Numeric = false,
  6160. MaxCharacters = nil,
  6161. Enter = false,
  6162. Callback = function(input)
  6163. inputPath = input
  6164. end,
  6165. })
  6166.  
  6167. local configSelection
  6168.  
  6169. Tab:CreateButton({
  6170. Name = "Create Config",
  6171. Description = "Create a config with all of your current settings.",
  6172. Callback = function()
  6173. if not inputPath or string.gsub(inputPath, " ", "") == "" then
  6174. Luna:Notification({
  6175. Title = "Interface",
  6176. Icon = "warning",
  6177. ImageSource = "Material",
  6178. Content = "Config name cannot be empty."
  6179. })
  6180. return
  6181. end
  6182.  
  6183. local success, returned = Luna:SaveConfig(inputPath)
  6184. if not success then
  6185. Luna:Notification({
  6186. Title = "Interface",
  6187. Icon = "error",
  6188. ImageSource = "Material",
  6189. Content = "Unable to save config, return error: " .. returned
  6190. })
  6191. end
  6192.  
  6193. Luna:Notification({
  6194. Title = "Interface",
  6195. Icon = "info",
  6196. ImageSource = "Material",
  6197. Content = string.format("Created config %q", inputPath),
  6198. })
  6199.  
  6200. configSelection:Set({ Options = Luna:RefreshConfigList() })
  6201. end
  6202. })
  6203.  
  6204. Tab:CreateSection("Config Load/Settings")
  6205.  
  6206.  
  6207. configSelection = Tab:CreateDropdown({
  6208. Name = "Select Config",
  6209. Description = "Select a config to load your settings on.",
  6210. Options = Luna:RefreshConfigList(),
  6211. CurrentOption = {},
  6212. MultipleOptions = false,
  6213. SpecialType = nil,
  6214. Callback = function(Value)
  6215. selectedConfig = Value
  6216. end,
  6217. })
  6218.  
  6219. Tab:CreateButton({
  6220. Name = "Load Config",
  6221. Description = "Load your saved config settings.",
  6222. Callback = function()
  6223. local success, returned = Luna:LoadConfig(selectedConfig)
  6224. if not success then
  6225. Luna:Notification({
  6226. Title = "Interface",
  6227. Icon = "error",
  6228. ImageSource = "Material",
  6229. Content = "Unable to load config, return error: " .. returned
  6230. })
  6231. return
  6232. end
  6233.  
  6234. Luna:Notification({
  6235. Title = "Interface",
  6236. Icon = "info",
  6237. ImageSource = "Material",
  6238. Content = string.format("Loaded config %q", selectedConfig),
  6239. })
  6240. end
  6241. })
  6242.  
  6243. Tab:CreateButton({
  6244. Name = "Overwrite Config",
  6245. Description = "Overwrite your current config settings.",
  6246. Callback = function()
  6247. local success, returned = Luna:SaveConfig(selectedConfig)
  6248. if not success then
  6249. Luna:Notification({
  6250. Title = "Interface",
  6251. Icon = "error",
  6252. ImageSource = "Material",
  6253. Content = "Unable to overwrite config, return error: " .. returned
  6254. })
  6255. return
  6256. end
  6257.  
  6258. Luna:Notification({
  6259. Title = "Interface",
  6260. Icon = "info",
  6261. ImageSource = "Material",
  6262. Content = string.format("Overwrote config %q", selectedConfig),
  6263. })
  6264. end
  6265. })
  6266.  
  6267. Tab:CreateButton({
  6268. Name = "Refresh Config List",
  6269. Description = "Refresh the current config list.",
  6270. Callback = function()
  6271. configSelection:Set({ Options = Luna:RefreshConfigList() })
  6272. end,
  6273. })
  6274.  
  6275. local loadlabel
  6276. Tab:CreateButton({
  6277. Name = "Set as autoload",
  6278. Description = "Set a config to auto load setting in your next session.",
  6279. Callback = function()
  6280. local name = selectedConfig
  6281. writefile(Luna.Folder .. "/settings/autoload.txt", name)
  6282. loadlabel:Set({ Text = "Current autoload config: " .. name })
  6283.  
  6284. Luna:Notification({
  6285. Title = "Interface",
  6286. Icon = "info",
  6287. ImageSource = "Material",
  6288. Content = string.format("Set %q to auto load", name),
  6289. })
  6290. end,
  6291. })
  6292.  
  6293. loadlabel = Tab:CreateParagraph({
  6294. Title = "Current Auto Load",
  6295. Text = "None"
  6296. })
  6297.  
  6298. Tab:CreateButton({
  6299. Name = "Delete Autoload",
  6300. Description = "Delete The Autoload File",
  6301. Callback = function()
  6302. local name = selectedConfig
  6303. delfile(Luna.Folder .. "/settings/autoload.txt")
  6304. loadlabel:Set({ Text = "None" })
  6305.  
  6306. Luna:Notification({
  6307. Title = "Interface",
  6308. Icon = "info",
  6309. ImageSource = "Material",
  6310. Content = "Deleted Autoload",
  6311. })
  6312. end,
  6313. })
  6314.  
  6315. if isfile(Luna.Folder .. "/settings/autoload.txt") then
  6316. local name = readfile(Luna.Folder .. "/settings/autoload.txt")
  6317. loadlabel:Set( { Text = "Current autoload config: " .. name })
  6318. end
  6319. end
  6320.  
  6321. local ClassParser = {
  6322. ["Toggle"] = {
  6323. Save = function(Flag, data)
  6324. return {
  6325. type = "Toggle",
  6326. flag = Flag,
  6327. state = data.CurrentValue or false
  6328. }
  6329. end,
  6330. Load = function(Flag, data)
  6331. if Luna.Options[Flag] then
  6332. Luna.Options[Flag]:Set({ CurrentValue = data.state })
  6333. end
  6334. end
  6335. },
  6336. ["Slider"] = {
  6337. Save = function(Flag, data)
  6338. return {
  6339. type = "Slider",
  6340. flag = Flag,
  6341. value = (data.CurrentValue and tostring(data.CurrentValue)),
  6342. }
  6343. end,
  6344. Load = function(Flag, data)
  6345. if Luna.Options[Flag] and data.value then
  6346. Luna.Options[Flag]:Set({ CurrentValue = data.value })
  6347. end
  6348. end
  6349. },
  6350. ["Input"] = {
  6351. Save = function(Flag, data)
  6352. return {
  6353. type = "Input",
  6354. flag = Flag,
  6355. text = data.CurrentValue
  6356. }
  6357. end,
  6358. Load = function(Flag, data)
  6359. if Luna.Options[Flag] and data.text and type(data.text) == "string" then
  6360. Luna.Options[Flag]:Set({ CurrentValue = data.text })
  6361. end
  6362. end
  6363. },
  6364. ["Dropdown"] = {
  6365. Save = function(Flag, data)
  6366. return {
  6367. type = "Dropdown",
  6368. flag = Flag,
  6369. value = data.CurrentOption
  6370. }
  6371. end,
  6372. Load = function(Flag, data)
  6373. if Luna.Options[Flag] and data.value then
  6374. Luna.Options[Flag]:Set({ CurrentOption = data.value })
  6375. end
  6376. end
  6377. },
  6378. -- buggy as hell stil
  6379. ["Colorpicker"] = {
  6380. Save = function(Flag, data)
  6381. local function Color3ToHex(color)
  6382. return string.format("#%02X%02X%02X", math.floor(color.R * 255), math.floor(color.G * 255), math.floor(color.B * 255))
  6383. end
  6384.  
  6385. return {
  6386. type = "Colorpicker",
  6387. flag = Flag,
  6388. color = Color3ToHex(data.Color) or nil,
  6389. alpha = data.Alpha
  6390. }
  6391. end,
  6392. Load = function(Flag, data)
  6393. local function HexToColor3(hex)
  6394. local r = tonumber(hex:sub(2, 3), 16) / 255
  6395. local g = tonumber(hex:sub(4, 5), 16) / 255
  6396. local b = tonumber(hex:sub(6, 7), 16) / 255
  6397. return Color3.new(r, g, b)
  6398. end
  6399.  
  6400. if Luna.Options[Flag] and data.color then
  6401. Luna.Options[Flag]:Set({Color = HexToColor3(data.color)})
  6402. end
  6403. end
  6404. }
  6405. }
  6406.  
  6407.  
  6408. function Tab:BuildThemeSection()
  6409.  
  6410. local Title = Elements.Template.Title:Clone()
  6411. Title.Text = "Theming"
  6412. Title.Visible = true
  6413. Title.Parent = TabPage
  6414. Title.TextTransparency = 1
  6415. TweenService:Create(Title, TweenInfo.new(0.4, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {TextTransparency = 0}):Play()
  6416.  
  6417. Tab:CreateSection("Custom Editor")
  6418.  
  6419. local c1cp = Tab:CreateColorPicker({
  6420. Name = "Color 1",
  6421. Color = Color3.fromRGB(117, 164, 206),
  6422. }, "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 overlaps
  6423.  
  6424. local c2cp = Tab:CreateColorPicker({
  6425. Name = "Color 2",
  6426. Color = Color3.fromRGB(123, 201, 201),
  6427. }, "LunaInterfaceSuitePrebuiltCPC2")
  6428.  
  6429. local c3cp = Tab:CreateColorPicker({
  6430. Name = "Color 3",
  6431. Color = Color3.fromRGB(224, 138, 184),
  6432. }, "LunaInterfaceSuitePrebuiltCPC3")
  6433.  
  6434. task.wait(1)
  6435.  
  6436. c1cp:Set({
  6437. Callback = function(Value)
  6438. if c2cp and c3cp then
  6439. 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))}
  6440. LunaUI.ThemeRemote.Value = not LunaUI.ThemeRemote.Value
  6441. end
  6442. end
  6443. })
  6444.  
  6445. c2cp:Set({
  6446. Callback = function(Value)
  6447. if c1cp and c3cp then
  6448. 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))}
  6449. LunaUI.ThemeRemote.Value = not LunaUI.ThemeRemote.Value
  6450. end
  6451. end
  6452. })
  6453.  
  6454. c3cp:Set({
  6455. Callback = function(Valuex)
  6456. if c2cp and c1cp then
  6457. 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))}
  6458. LunaUI.ThemeRemote.Value = not LunaUI.ThemeRemote.Value
  6459. end
  6460. end
  6461. })
  6462.  
  6463. Tab:CreateSection("Preset Gradients")
  6464.  
  6465. for i,v in pairs(PresetGradients) do
  6466. Tab:CreateButton({
  6467. Name = tostring(i),
  6468. Callback = function()
  6469. c1cp:Set({ Color = v[1] })
  6470. c2cp:Set({ Color = v[2] })
  6471. c3cp:Set({ Color = v[3] })
  6472. end,
  6473. })
  6474. end
  6475.  
  6476. end
  6477.  
  6478.  
  6479. local function BuildFolderTree()
  6480. if isStudio then return "Config system unavailable." end
  6481. local paths = {
  6482. Luna.Folder,
  6483. Luna.Folder .. "/settings"
  6484. }
  6485.  
  6486. for i = 1, #paths do
  6487. local str = paths[i]
  6488. if not isfolder(str) then
  6489. makefolder(str)
  6490. end
  6491. end
  6492. end
  6493.  
  6494. local function SetFolder()
  6495.  
  6496. if isStudio then return "Config system unavailable." end
  6497.  
  6498. if WindowSettings.ConfigSettings.RootFolder ~= nil and WindowSettings.ConfigSettings.RootFolder ~= "" then
  6499. Luna.Folder = WindowSettings.ConfigSettings.RootFolder .. "/" .. WindowSettings.ConfigSettings.ConfigFolder
  6500. else
  6501. Luna.Folder = WindowSettings.ConfigSettings.ConfigFolder
  6502. end
  6503.  
  6504. BuildFolderTree()
  6505. end
  6506.  
  6507. SetFolder()
  6508.  
  6509. function Luna:SaveConfig(Path)
  6510. if isStudio then return "Config system unavailable." end
  6511.  
  6512. if (not Path) then
  6513. return false, "Please select a config file."
  6514. end
  6515.  
  6516. local fullPath = Luna.Folder .. "/settings/" .. Path .. ".luna"
  6517.  
  6518. local data = {
  6519. objects = {}
  6520. }
  6521.  
  6522. for flag, option in next, Luna.Options do
  6523. if not ClassParser[option.Class] then continue end
  6524. if option.IgnoreConfig then continue end
  6525.  
  6526. table.insert(data.objects, ClassParser[option.Class].Save(flag, option))
  6527. end
  6528.  
  6529. local success, encoded = pcall(HttpService.JSONEncode, HttpService, data)
  6530. if not success then
  6531. return false, "Unable to encode into JSON data"
  6532. end
  6533.  
  6534. writefile(fullPath, encoded)
  6535. return true
  6536. end
  6537.  
  6538. function Luna:LoadConfig(Path)
  6539. if isStudio then return "Config system unavailable." end
  6540.  
  6541. if (not Path) then
  6542. return false, "Please select a config file."
  6543. end
  6544.  
  6545. local file = Luna.Folder .. "/settings/" .. Path .. ".luna"
  6546. if not isfile(file) then return false, "Invalid file" end
  6547.  
  6548. local success, decoded = pcall(HttpService.JSONDecode, HttpService, readfile(file))
  6549. if not success then return false, "Unable to decode JSON data." end
  6550.  
  6551. for _, option in next, decoded.objects do
  6552. if ClassParser[option.type] then
  6553. task.spawn(function()
  6554. ClassParser[option.type].Load(option.flag, option)
  6555. end)
  6556. end
  6557. end
  6558.  
  6559. return true
  6560. end
  6561.  
  6562. function Luna:LoadAutoloadConfig()
  6563. if isfile(Luna.Folder .. "/settings/autoload.txt") then
  6564.  
  6565. if isStudio then return "Config system unavailable." end
  6566.  
  6567. local name = readfile(Luna.Folder .. "/settings/autoload.txt")
  6568.  
  6569. local success, err = Luna:LoadConfig(name)
  6570. if not success then
  6571. return Luna:Notification({
  6572. Title = "Interface",
  6573. Icon = "sparkle",
  6574. ImageSource = "Material",
  6575. Content = "Failed to load autoload config: " .. err,
  6576. })
  6577. end
  6578.  
  6579. Luna:Notification({
  6580. Title = "Interface",
  6581. Icon = "sparkle",
  6582. ImageSource = "Material",
  6583. Content = string.format("Auto loaded config %q", name),
  6584. })
  6585.  
  6586. end
  6587. end
  6588.  
  6589. function Luna:RefreshConfigList()
  6590. if isStudio then return "Config system unavailable." end
  6591.  
  6592. local list = listfiles(Luna.Folder .. "/settings")
  6593.  
  6594. local out = {}
  6595. for i = 1, #list do
  6596. local file = list[i]
  6597. if file:sub(-5) == ".luna" then
  6598. local pos = file:find(".luna", 1, true)
  6599. local start = pos
  6600.  
  6601. local char = file:sub(pos, pos)
  6602. while char ~= "/" and char ~= "\\" and char ~= "" do
  6603. pos = pos - 1
  6604. char = file:sub(pos, pos)
  6605. end
  6606.  
  6607. if char == "/" or char == "\\" then
  6608. local name = file:sub(pos + 1, start - 1)
  6609. if name ~= "options" then
  6610. table.insert(out, name)
  6611. end
  6612. end
  6613. end
  6614. end
  6615.  
  6616. return out
  6617. end
  6618. return Tab
  6619. end
  6620.  
  6621.  
  6622. Elements.Parent.Visible = true
  6623. tween(Elements.Parent, {BackgroundTransparency = 0.1})
  6624. Navigation.Visible = true
  6625. tween(Navigation.Line, {BackgroundTransparency = 0})
  6626.  
  6627. for _, TopbarButton in ipairs(Main.Controls:GetChildren()) do
  6628. if TopbarButton.ClassName == "Frame" and TopbarButton.Name ~= "Theme" then
  6629. TopbarButton.Visible = true
  6630. tween(TopbarButton, {BackgroundTransparency = 0.25})
  6631. tween(TopbarButton.UIStroke, {Transparency = 0.5})
  6632. tween(TopbarButton.ImageLabel, {ImageTransparency = 0.25})
  6633. end
  6634. end
  6635.  
  6636. Main.Controls.Close.ImageLabel.MouseButton1Click:Connect(function()
  6637. Hide(Main, Window.Bind, true)
  6638. dragBar.Visible = false
  6639. Window.State = false
  6640. if UserInputService.KeyboardEnabled == false then
  6641. LunaUI.MobileSupport.Visible = true
  6642. end
  6643. end)
  6644. Main.Controls.Close["MouseEnter"]:Connect(function()
  6645. tween(Main.Controls.Close.ImageLabel, {ImageColor3 = Color3.new(1,1,1)})
  6646. end)
  6647. Main.Controls.Close["MouseLeave"]:Connect(function()
  6648. tween(Main.Controls.Close.ImageLabel, {ImageColor3 = Color3.fromRGB(195,195,195)})
  6649. end)
  6650.  
  6651. UserInputService.InputBegan:Connect(function(input, gpe)
  6652. if gpe then return end
  6653. if Window.State then return end
  6654. if input.KeyCode == Window.Bind then
  6655. Unhide(Main, Window.CurrentTab)
  6656. LunaUI.MobileSupport.Visible = false
  6657. dragBar.Visible = true
  6658. Window.State = true
  6659. end
  6660. end)
  6661.  
  6662. Main.Logo.MouseButton1Click:Connect(function()
  6663. if Navigation.Size.X.Offset == 205 then
  6664. tween(Elements.Parent, {Size = UDim2.new(1, -55, Elements.Parent.Size.Y.Scale, Elements.Parent.Size.Y.Offset)})
  6665. tween(Navigation, {Size = UDim2.new(Navigation.Size.X.Scale, 55, Navigation.Size.Y.Scale, Navigation.Size.Y.Offset)})
  6666. else
  6667. tween(Elements.Parent, {Size = UDim2.new(1, -205, Elements.Parent.Size.Y.Scale, Elements.Parent.Size.Y.Offset)})
  6668. tween(Navigation, {Size = UDim2.new(Navigation.Size.X.Scale, 205, Navigation.Size.Y.Scale, Navigation.Size.Y.Offset)})
  6669. end
  6670. end)
  6671.  
  6672. Main.Controls.ToggleSize.ImageLabel.MouseButton1Click:Connect(function()
  6673. Window.Size = not Window.Size
  6674. if Window.Size then
  6675. Minimize(Main)
  6676. dragBar.Visible = false
  6677. else
  6678. Maximise(Main)
  6679. dragBar.Visible = true
  6680. end
  6681. end)
  6682. Main.Controls.ToggleSize["MouseEnter"]:Connect(function()
  6683. tween(Main.Controls.ToggleSize.ImageLabel, {ImageColor3 = Color3.new(1,1,1)})
  6684. end)
  6685. Main.Controls.ToggleSize["MouseLeave"]:Connect(function()
  6686. tween(Main.Controls.ToggleSize.ImageLabel, {ImageColor3 = Color3.fromRGB(195,195,195)})
  6687. end)
  6688.  
  6689. Main.Controls.Theme.ImageLabel.MouseButton1Click:Connect(function()
  6690. if Window.Settings then
  6691. Window.Settings:Activate()
  6692. Elements.Settings.CanvasPosition = Vector2.new(0,698)
  6693. end
  6694. end)
  6695. Main.Controls.Theme["MouseEnter"]:Connect(function()
  6696. tween(Main.Controls.Theme.ImageLabel, {ImageColor3 = Color3.new(1,1,1)})
  6697. end)
  6698. Main.Controls.Theme["MouseLeave"]:Connect(function()
  6699. tween(Main.Controls.Theme.ImageLabel, {ImageColor3 = Color3.fromRGB(195,195,195)})
  6700. end)
  6701.  
  6702.  
  6703. LunaUI.MobileSupport.Interact.MouseButton1Click:Connect(function()
  6704. Unhide(Main, Window.CurrentTab)
  6705. dragBar.Visible = true
  6706. Window.State = true
  6707. LunaUI.MobileSupport.Visible = false
  6708. end)
  6709.  
  6710. return Window
  6711. end
  6712.  
  6713. function Luna:Destroy()
  6714. Main.Visible = false
  6715. for _, Notification in ipairs(Notifications:GetChildren()) do
  6716. if Notification.ClassName == "Frame" then
  6717. Notification.Visible = false
  6718. Notification:Destroy()
  6719. end
  6720. end
  6721. LunaUI:Destroy()
  6722. end
  6723.  
  6724. if isStudio then
  6725. local Window = Luna:CreateWindow({
  6726. Name = "Nebula Client - Luna Hub | Blade Ball",
  6727. Subtitle = "by Nebula Softworks",
  6728. LogoID = "123795201100198",
  6729. LoadingEnabled = true,
  6730. LoadingTitle = "Nebula Client (Luna Hub)",
  6731. LoadingSubtitle = "Loading script for Blade Ball",
  6732. KeySystem = true,
  6733. KeySettings = {
  6734. Title = "Nebula Client | Key System",
  6735. Subtitle = "Blade Ball",
  6736. Note = "Please Enter Your Key To Use Nebula Client",
  6737. 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 instead
  6738. SaveKey = true, -- The user's key will be saved, but if you change the key, they will be unable to use your script
  6739. 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 bypass
  6740. SecondAction = {
  6741. Enabled = true,
  6742. Type = "Link", -- Link/Discord
  6743. Parameter = "" -- for discord, add the invite link like home tab. for link, type the link of ur key sys
  6744. }
  6745. }
  6746. })
  6747.  
  6748. --[[local Window = Luna:CreateWindow({
  6749. Name = "Luna Example Window",
  6750. Subtitle = "Test",
  6751. LogoID = "6031097225",
  6752. LoadingEnabled = true,
  6753. LoadingTitle = "Luna Interface Suite",
  6754. LoadingSubtitle = "by Nebula Softworks",
  6755. KeySystem = true,
  6756. KeySettings = {
  6757. Title = "Luna Example Key",
  6758. Subtitle = "Key System",
  6759. Note = "Please Enter Your Key To Use Example Hub",
  6760. 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 instead
  6761. SaveKey = true, -- The user's key will be saved, but if you change the key, they will be unable to use your script
  6762. 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 bypass
  6763. }
  6764. })
  6765.  
  6766. Luna:Notification({
  6767. Title = "Welcome to Luna",
  6768. Icon = "sparkle",
  6769. ImageSource = "Material",
  6770. 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 " .. website
  6771. })
  6772.  
  6773. local Tabs = {
  6774. Main = Window:CreateTab({
  6775. Name = "Tab Example 1",
  6776. Icon = "view_in_ar",
  6777. ImageSource = "Material",
  6778. ShowTitle = true
  6779. }),
  6780. Main2 = Window:CreateTab({
  6781. Name = "Tab Example 2",
  6782. Icon = "location_searching",
  6783. ImageSource = "Material",
  6784. ShowTitle = false
  6785. }),
  6786. Premium = Window:CreateTab({
  6787. Name = "Premium Tab",
  6788. Icon = "sparkle",
  6789. ImageSource = "Material",
  6790. ShowTitle = true
  6791. }),
  6792. Debug = Window:CreateTab({
  6793. Name = "Debug",
  6794. Icon = "settings"
  6795. })
  6796. }
  6797.  
  6798.  
  6799. Window:CreateHomeTab()
  6800. local bleh =Tabs.Debug:CreateColorPicker()
  6801. Tabs.Debug:CreateButton({
  6802. Callback = function()
  6803. bleh:Set({
  6804. Color = Color3.fromRGB(0,0,0)
  6805. })
  6806. end,
  6807. })
  6808.  
  6809. Tabs.Main:CreateSection("Section Example")
  6810. Tabs.Main:CreateButton({
  6811. Name = "Button Example!",
  6812. Description = "Every Element Except For Sliders Can Have a description like this"
  6813. })
  6814. Tabs.Main:CreateLabel({
  6815. Text = "Label Example",
  6816. Style = 1
  6817. })
  6818. Tabs.Main:CreateLabel({
  6819. Text = "Information Example",
  6820. Style = 2
  6821. })
  6822. Tabs.Main:CreateLabel({
  6823. Text = "Warning Example",
  6824. Style = 3
  6825. })
  6826. Tabs.Main:CreateParagraph({
  6827. Title = "Paragraph Example ",
  6828. 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?"
  6829. })
  6830. Tabs.Main:CreateSlider({
  6831. Name = "Slider Example",
  6832. Range = {0, 200},
  6833. Increment = 0.1,
  6834. CurrentValue = 100,
  6835. Flag = "Slider",
  6836. })
  6837. Tabs.Main:CreateToggle({
  6838. Name = "Toggle Example",
  6839. Description = "This Is A Toggle. See I Was Right? Sliders Don't Have Descriptions!",
  6840. CurrentValue = false,
  6841. })
  6842.  
  6843. Tabs.Main:CreateBind({
  6844. Name = "Bind Example",
  6845. Description = "Btw Using CreateKeybind is deprecated, use CreateBind For Future Binds :)",
  6846. CurrentKeybind = "Q",
  6847. HoldToInteract = false,
  6848. })
  6849. Tabs.Main:CreateInput({
  6850. Name = "Dynamic Input Example",
  6851. Description = "Every Element has :Set(). Sadly this one is broken;the text wont update :(",
  6852. PlaceholderText = "Input Placeholder",
  6853. CurrentValue = "",
  6854. Numeric = false,
  6855. MaxCharacters = nil,
  6856. Enter = false
  6857. })
  6858. Tabs.Main:CreateDropdown({
  6859. Name = "Dropdown Example",
  6860. Description = "U can access a element's values using .Settings!",
  6861. Options = {"Option 1","Option 2","Option 3","Option 4","Option 5","Option 6"},
  6862. CurrentOption = "Option 1",
  6863. MultipleOptions = false,
  6864. SpecialType = nil
  6865. })
  6866.  
  6867. Tabs.Main:CreateColorPicker({
  6868. Name = "Color Picker Example",
  6869. Color = Color3.fromRGB(86, 171, 128),
  6870. 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 overlaps
  6871. Callback = function(Value)
  6872. -- The function that takes place every time the color picker is moved/changed
  6873. -- The variable (Value) is a Color3fromRGB value based on which color is selected
  6874. end
  6875. })
  6876.  
  6877. Tabs.Main2:CreateSection("The Elements Here Are To Show Unique Features")
  6878. Tabs.Main2:CreateToggle({
  6879. Name = "Toggle - Default On",
  6880. Description = "Toggles Can be Onned By Default!",
  6881. CurrentValue = true
  6882. })
  6883. Tabs.Main2:CreateBind({
  6884. Name = "Hold To Interact - Walkspeed Example",
  6885. Description = "Binds Can Be Made to only Callback when held",
  6886. HoldToInteract = true,
  6887. CurrentBind = "E",
  6888. Callback = function(v)
  6889. if v then
  6890. Players.LocalPlayer.Character.Humanoid.WalkSpeed = 100
  6891. else
  6892. Players.LocalPlayer.Character.Humanoid.WalkSpeed = 16
  6893. end
  6894. end,
  6895. })
  6896. Tabs.Main2:CreateInput({
  6897. Name = "Numeric And 12 Max Characters",
  6898. Description = "You Can Limit The Max Characters or Allow Only Numbers",
  6899. Numeric = true,
  6900. MaxCharacters = 12
  6901. })
  6902. Tabs.Main2:CreateInput({
  6903. Name = "Require Enter",
  6904. Description = "You Can Only make the callback happen after user hits enter",
  6905. Enter = true
  6906. })
  6907. Tabs.Main2:CreateLabel({
  6908. Text = "Every Element Can be Destroyed as well!"
  6909. })
  6910. Tabs.Main2:CreateDropdown({
  6911. Name = "Dropdown - Multi Options",
  6912. Description = "Multiple Special Features can be used on the same element!",
  6913. Options = {"Option 1","Option 2","Option 3","Option 4","Option 5","Option 6"},
  6914. CurrentOption = {"Option 1","Option 3","Option 6"},
  6915. MultipleOptions = true
  6916. })
  6917. Tabs.Main2:CreateDropdown({
  6918. Name = "Dropdown - Players",
  6919. Description = "Luna's Dropdowns Has a built in Player Dropdown!",
  6920. Options = {"u can put anything here, it wont be shown anyway"},
  6921. CurrentOption = {"same here, itll be the first option"},
  6922. MultipleOptions = false,
  6923. SpecialType = "Player"
  6924. })
  6925.  
  6926. local s = Tabs.Premium:CreateSection("You can add elements inside section too")
  6927. s:CreateButton()
  6928. s:CreateLabel()
  6929. s:CreateDivider()
  6930. s:CreateDropdown()
  6931.  
  6932. Tabs.Premium:BuildConfigSection()
  6933. Tabs.Premium:BuildThemeSection()]]
  6934. end
  6935.  
  6936. -- THIS IS THE DEBUG DEMO, ONLY USED WHEN TESTING NEW ELEMENTS AND CODE
  6937. --[[if isStudio then
  6938. window = Luna:CreateWindow({LoadingEnabled = false})
  6939. t1 = window:CreateTab()
  6940. t2 = window:CreateTab({ Name = "Tab 2", Icon = "location_searching"})
  6941. Luna:Notification({
  6942. Title = "Welcome to Luna",
  6943. Icon = "sparkle",
  6944. ImageSource = "Material",
  6945. 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 " .. website
  6946. })
  6947. t1:CreateSection()
  6948. local btn = t1:CreateButton({Callback = "", Description = "This Is A Description"})
  6949. local l = t1:CreateLabel({ Style = 2})
  6950. local l2 = t1:CreateLabel({ Text = "Another Label" })
  6951. t2:CreateButton({ Callback = function()
  6952. l:Destroy()
  6953. l2:Set("New Text")
  6954. end})
  6955. t2:CreateLabel({Style = 3})
  6956. t1:CreateParagraph({Text = "Single String"})
  6957. 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})
  6958. s = t2:CreateSlider({ Callback = function(v) print(v) end })
  6959. t1:CreateButton({ Callback = function()
  6960. s:Set({Name = "new name", Callback = ""})
  6961. wait(5)
  6962. s:Destroy()
  6963. end})
  6964. t1:CreateColorPicker()
  6965. local toggle = t1:CreateToggle({Name = "test", Description = "test", CurrentValue = true, Callback = ""}, "toggle2")
  6966. t1:CreateToggle({Callback = function(Value) toggle:Destroy() print(Value) end})
  6967. local bind = t2:CreateBind({Name = "test", Description = "test", CurrentBind = "E", HoldToInteract = false, Callback = ""})
  6968. t2:CreateKeybind({HoldToInteract = true, Callback = function(v)
  6969. if v then
  6970. Players.LocalPlayer.Character.Humanoid.WalkSpeed = 100
  6971. else
  6972. Players.LocalPlayer.Character.Humanoid.WalkSpeed = 16
  6973. end
  6974. end,})
  6975. local input = t2:CreateInput({Name = "test",ClearTextAfterFocusLost = false, Description = "Numbers only, 8 max characters and enter required.",MaxCharacters = 8 ,Numeric = true, Enter = true, Callback = ""})
  6976. t2:CreateInput({Callback = function(text) print(text) end})
  6977. local d = t1:CreateDropdown({Name = "test", Options = {"Apples", "Bananas", "Strawberries", "Elixir"}, Description = "MultiOptions", MultipleOptions = true, Callback = function(t) print(t) end, CurrentOption = {"Apples", "Elixir"}})
  6978. t1:CreateDropdown({Callback = function(t) print(unpack(t)) end})
  6979. t1:CreateDropdown({Description = "Special Type - Player", Callback = "", SpecialType = "Player"})
  6980. end]]--
  6981. return Luna
  6982.  
Add Comment
Please, Sign In to add comment