xvc200

luna library no blur

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