Dark_EccentricYT

Untitled

Aug 22nd, 2020 (edited)
5,578
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.70 KB | None | 0 0
  1. -- // Notes:
  2. -- The emojis list is based from discord the list is here: https://raw.githubusercontent.com/Aidez/emojiscopy/master/main or https://pastebin.com/raw/719UsVji \\ --
  3. -- My code is ugly k dont read c:
  4.  
  5. -- // Configuration, super simple: \\ --
  6.  
  7. local config = {
  8. -- // Values should be "true" or "false" and make sure there's a "," or ";" after them. \\ --
  9. ['EmojiAutofill'] = true; -- Autofills potential emojis like :sungla with :sunglasses:, you can hit tab to fill
  10. ['EmojiReplace'] = true; -- Autofills emojis instantly after adding both ":"'s example: ":sunglasses:" will turn into "?"
  11. }
  12.  
  13. -- // Main (no need to modify( \\ --
  14.  
  15. if not game:IsLoaded() then
  16. game.Loaded:Wait()
  17. end
  18.  
  19. local jsondecode = function(arg)
  20. return game:GetService("HttpService"):JSONDecode(arg)
  21. end
  22.  
  23. local jsonencode = function(arg)
  24. return game:GetService("HttpService"):JSONEncode(arg)
  25. end
  26.  
  27. local getchat = function()
  28. return {
  29. main = game:GetService("Players").LocalPlayer.PlayerGui.Chat;
  30. chatbar = game:GetService("Players").LocalPlayer.PlayerGui.Chat.Frame.ChatBarParentFrame.Frame.BoxFrame.Frame.ChatBar;
  31. messages = game:GetService("Players").LocalPlayer.PlayerGui.Chat.Frame.ChatChannelParentFrame.Frame_MessageLogDisplay.Scroller
  32. }
  33. end
  34.  
  35. local scroller = function(obj)
  36. obj.ClipsDescendants = true;
  37. local Scroller = Instance.new("Frame")
  38. local CopyMessage = Instance.new("TextButton")
  39. local UIListLayout = Instance.new("UIListLayout")
  40. local CopyUser = Instance.new("TextButton")
  41. local DeleteMessage = Instance.new("TextButton")
  42. local Mute = Instance.new("TextButton")
  43. local Unmute = Instance.new("TextButton")
  44. local Tp = Instance.new("TextButton")
  45.  
  46. Scroller.Name = "Scroller"
  47. Scroller.Parent = obj;
  48. Scroller.AnchorPoint = Vector2.new(0.5, 1)
  49. Scroller.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  50. Scroller.BackgroundTransparency = 1.000
  51. Scroller.Position = UDim2.new(0, #obj.TextButton.Text * 14, 6.5, 0)
  52. Scroller.Size = UDim2.new(0, 206, 0, 99)
  53.  
  54. CopyMessage.Name = "CopyMessage"
  55. CopyMessage.Parent = Scroller
  56. CopyMessage.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
  57. CopyMessage.BackgroundTransparency = 0.500
  58. CopyMessage.BorderColor3 = Color3.fromRGB(27, 42, 53)
  59. CopyMessage.BorderSizePixel = 0
  60. CopyMessage.Position = UDim2.new(0, 49, 0, 50)
  61. CopyMessage.Size = UDim2.new(0, 200, 0, 15)
  62. CopyMessage.Font = Enum.Font.SourceSansBold
  63. CopyMessage.Text = "Copy message"
  64. CopyMessage.TextColor3 = Color3.fromRGB(255, 255, 255)
  65. CopyMessage.TextSize = 14.000
  66. CopyMessage.TextStrokeTransparency = 0.750
  67. CopyMessage.TextWrapped = true
  68.  
  69. UIListLayout.Parent = Scroller
  70. UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
  71. UIListLayout.Padding = UDim.new(0, 2)
  72.  
  73. CopyUser.Name = "CopyUser"
  74. CopyUser.Parent = Scroller
  75. CopyUser.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
  76. CopyUser.BackgroundTransparency = 0.500
  77. CopyUser.BorderColor3 = Color3.fromRGB(27, 42, 53)
  78. CopyUser.BorderSizePixel = 0
  79. CopyUser.Position = UDim2.new(0, 49, 0, 50)
  80. CopyUser.Size = UDim2.new(0, 200, 0, 15)
  81. CopyUser.Font = Enum.Font.SourceSansBold
  82. CopyUser.Text = "Copy username"
  83. CopyUser.TextColor3 = Color3.fromRGB(255, 255, 255)
  84. CopyUser.TextSize = 14.000
  85. CopyUser.TextStrokeTransparency = 0.750
  86. CopyUser.TextWrapped = true
  87.  
  88. DeleteMessage.Name = "DeleteMessage"
  89. DeleteMessage.Parent = Scroller
  90. DeleteMessage.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
  91. DeleteMessage.BackgroundTransparency = 0.500
  92. DeleteMessage.BorderColor3 = Color3.fromRGB(27, 42, 53)
  93. DeleteMessage.BorderSizePixel = 0
  94. DeleteMessage.Position = UDim2.new(0, 49, 0, 50)
  95. DeleteMessage.Size = UDim2.new(0, 200, 0, 15)
  96. DeleteMessage.Font = Enum.Font.SourceSansBold
  97. DeleteMessage.Text = "Delete (client)"
  98. DeleteMessage.TextColor3 = Color3.fromRGB(255, 255, 255)
  99. DeleteMessage.TextSize = 14.000
  100. DeleteMessage.TextStrokeTransparency = 0.750
  101. DeleteMessage.TextWrapped = true
  102.  
  103. Mute.Name = "Mute"
  104. Mute.Parent = Scroller
  105. Mute.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
  106. Mute.BackgroundTransparency = 0.500
  107. Mute.BorderColor3 = Color3.fromRGB(27, 42, 53)
  108. Mute.BorderSizePixel = 0
  109. Mute.Position = UDim2.new(0, 49, 0, 50)
  110. Mute.Size = UDim2.new(0, 200, 0, 15)
  111. Mute.Font = Enum.Font.SourceSansBold
  112. Mute.Text = "Mute (client)"
  113. Mute.TextColor3 = Color3.fromRGB(255, 255, 255)
  114. Mute.TextSize = 14.000
  115. Mute.TextStrokeTransparency = 0.750
  116. Mute.TextWrapped = true
  117.  
  118. Unmute.Name = "Unmute"
  119. Unmute.Parent = Scroller
  120. Unmute.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
  121. Unmute.BackgroundTransparency = 0.500
  122. Unmute.BorderColor3 = Color3.fromRGB(27, 42, 53)
  123. Unmute.BorderSizePixel = 0
  124. Unmute.Position = UDim2.new(0, 49, 0, 50)
  125. Unmute.Size = UDim2.new(0, 200, 0, 15)
  126. Unmute.Font = Enum.Font.SourceSansBold
  127. Unmute.Text = "Unmute (client)"
  128. Unmute.TextColor3 = Color3.fromRGB(255, 255, 255)
  129. Unmute.TextSize = 14.000
  130. Unmute.TextStrokeTransparency = 0.750
  131. Unmute.TextWrapped = true
  132.  
  133. Tp.Name = "Tp"
  134. Tp.Parent = Scroller
  135. Tp.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
  136. Tp.BackgroundTransparency = 0.500
  137. Tp.BorderColor3 = Color3.fromRGB(27, 42, 53)
  138. Tp.BorderSizePixel = 0
  139. Tp.Position = UDim2.new(0, 49, 0, 50)
  140. Tp.Size = UDim2.new(0, 200, 0, 15)
  141. Tp.Font = Enum.Font.SourceSansBold
  142. Tp.Text = "Teleport To Player"
  143. Tp.TextColor3 = Color3.fromRGB(255, 255, 255)
  144. Tp.TextSize = 14.000
  145. Tp.TextStrokeTransparency = 0.750
  146. Tp.TextWrapped = true
  147. return Scroller;
  148. end
  149.  
  150. local bindable = Instance.new("BindableEvent");
  151. local cache = {};
  152. local dependencies = {
  153. ['Emojis'] = jsondecode(game:HttpGet('https://pastebin.com/raw/719UsVji'));
  154. ['Chat'] = getchat();
  155. }
  156.  
  157. local sendmsg = function(m)
  158. if dependencies['Chat'] then
  159. game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer(m, "All")
  160. end
  161. end
  162.  
  163. local get = function(s)
  164. if dependencies['Emojis'][s] then
  165. return dependencies['Emojis'][s];
  166. else
  167. return nil;
  168. end
  169. end
  170.  
  171. local fillmatches = function(emojis, object)
  172. local t = object.Text;
  173. for i, v in pairs(emojis) do
  174. local emoji = get(v);
  175. if emoji then
  176. object.Text = string.gsub(object.Text, ":"..v..":", emoji)
  177. end
  178. end
  179. end
  180.  
  181. local last;
  182.  
  183. local autofill = function(tbl, object)
  184. local find = tbl[1];
  185. if #find >= 2 then
  186. else
  187. return;
  188. end
  189.  
  190. local start = tbl[2]
  191. last = tbl;
  192.  
  193. local match;
  194.  
  195. for i, v in pairs(dependencies['Emojis']) do
  196. if i:lower():sub(1, #find) == find:lower() then
  197. match = i;
  198. end
  199. end
  200.  
  201. object.Parent.AutofillBox.PlaceholderText = '';
  202.  
  203. if match then
  204. local s = object.Text:sub(1, start - 1);
  205. object.Parent.AutofillBox.PlaceholderText = s..':'..match..':'
  206. end
  207. end
  208.  
  209. local trueautofill = function(tbl, object)
  210. local find = tbl[1];
  211. local start = tbl[2]
  212.  
  213. local match;
  214. last = nil;
  215.  
  216. if #find >= 2 then
  217. else
  218. return;
  219. end
  220.  
  221. for i, v in pairs(dependencies['Emojis']) do
  222. if i:lower():sub(1, #find) == find:lower() then
  223. match = i;
  224. end
  225. end
  226.  
  227. if match then
  228. local s = object.Text:sub(1, start - 1);
  229. object.Text = s..':'..match..':'
  230. end
  231. end
  232.  
  233.  
  234. local match = function(t, obj)
  235. if t:find(":") then
  236. local start = 0;
  237. local scan = {};
  238. local autofills = {};
  239.  
  240. for i = 1, #t do
  241. local s = t:sub(i, i)
  242. if s == ':' then
  243. if start >= 1 then
  244. table.insert(scan, t:sub(start + 1, i - 1))
  245. start = 0;
  246. else
  247. start = i;
  248. end
  249. end
  250. end
  251.  
  252. start = 0;
  253.  
  254. for i = 1, #t do
  255. local s = t:sub(i, i)
  256. if s == ':' then
  257. if start >= 1 then
  258. start = 0;
  259. else
  260. start = i;
  261. end
  262. end
  263. end
  264.  
  265. obj.Parent.AutofillBox.PlaceholderText = '';
  266.  
  267. if start >= 1 then
  268. table.insert(autofills, t:sub(start + 1, #t))
  269. if config['EmojiAutofill'] == true then
  270. autofill({
  271. autofills[1],
  272. start
  273. }, obj)
  274. end
  275. else
  276. obj.Parent.AutofillBox.PlaceholderText = '';
  277. end
  278.  
  279. if config['EmojiReplace'] == true then
  280. fillmatches(scan, obj)
  281. end
  282. else
  283. return {}
  284. end
  285. end
  286.  
  287.  
  288. spawn(function()
  289. game:GetService("RunService").Heartbeat:Connect(function()
  290. if cache[dependencies['Chat'].chatbar] == nil then
  291. cache[dependencies['Chat'].chatbar] = true;
  292. dependencies['Chat'] = getchat()
  293. bindable:Fire(dependencies['Chat'])
  294. end
  295. end)
  296. end)
  297.  
  298. game:GetService("UserInputService").InputBegan:Connect(function(k)
  299. if k.KeyCode then
  300. if k.KeyCode == Enum.KeyCode.Tab then
  301. if focused then
  302. if last then
  303. local object = dependencies['Chat'].chatbar;
  304. trueautofill(last, object)
  305. wait()
  306. object.Text = object.Text:sub(1, #object.Text - 1)
  307. end
  308. end
  309. end
  310. end
  311. end)
  312.  
  313. local getplayer = function(t)
  314. for i = 1, #t do
  315. if t:sub(i, i) == ']' then
  316. return game:GetService("Players"):FindFirstChild(t:sub(2, i - 1));
  317. end
  318. end
  319. return nil;
  320. end
  321.  
  322. local getvalue = function(t)
  323. for i = 1,#t do
  324. if t:sub(i,i) == ' ' then
  325. else
  326. return t:sub(i,#t)
  327. end
  328. end
  329. return 'void'
  330. end
  331.  
  332. local scrollers = {};
  333.  
  334. game:GetService("UserInputService").InputBegan:Connect(function(input)
  335. if dependencies['Chat'] then
  336. if input.UserInputType == Enum.UserInputType.MouseButton2 then
  337. local m = game:GetService("Players").LocalPlayer:GetMouse()
  338. local objs = game:GetService("Players").LocalPlayer.PlayerGui:GetGuiObjectsAtPosition(m.X, m.Y)
  339. for i, v in pairs(objs) do
  340. if v:FindFirstChild("TextButton") then
  341. if v:FindFirstChild("Scroller") then
  342. return
  343. end
  344. local s = scroller(v);
  345.  
  346. for i, v in pairs(s:GetChildren()) do
  347. if v:IsA("TextButton") then
  348. v.ZIndex = 20;
  349. end
  350. end
  351.  
  352. table.insert(scrollers, s);
  353. if #scrollers >= 2 then
  354. scrollers[1]:Destroy()
  355. scrollers = {
  356. s
  357. }
  358. end
  359. s.Parent.ClipsDescendants = false;
  360. s.MouseLeave:Connect(function()
  361. s:Destroy();
  362. end)
  363.  
  364. s.CopyMessage.MouseButton1Click:Connect(function()
  365. setclipboard(getvalue(v.Text))
  366. s:Destroy();
  367. end)
  368.  
  369. s.DeleteMessage.MouseButton1Click:Connect(function()
  370. v:Destroy()
  371. end)
  372.  
  373. s.CopyUser.MouseButton1Click:Connect(function()
  374. local t = v.TextButton.Text;
  375. for i = 1, #t do
  376. if t:sub(i, i) == ']' then
  377. setclipboard(t:sub(2, i - 1));
  378. end
  379. end
  380. s:Destroy()
  381. end)
  382.  
  383. s.Unmute.MouseButton1Click:Connect(function()
  384. sendmsg("/unmute "..tostring(getplayer(v.TextButton.Text)))
  385. s:Destroy()
  386. end)
  387.  
  388. s.Mute.MouseButton1Click:Connect(function()
  389. sendmsg("/mute "..tostring(getplayer(v.TextButton.Text)))
  390. s:Destroy()
  391. end)
  392.  
  393. s.Tp.MouseButton1Click:Connect(function()
  394. local plr = getplayer(v.TextButton.Text)
  395. local hrp = game:GetService("Players").LocalPlayer.Character.HumanoidRootPart;
  396. local them = plr.Character:WaitForChild("HumanoidRootPart");
  397. hrp.CFrame = CFrame.new(them.Position)
  398. end)
  399. end
  400. end
  401. end
  402. end
  403. end)
  404.  
  405. bindable.Event:Connect(function(tbl)
  406. local bar = tbl.chatbar;
  407. bar.ZIndex = 2;
  408. bar.Parent.TextLabel.ZIndex = 3;
  409. local clone = bar:Clone();
  410. clone.Name = 'AutofillBox'
  411. clone.Parent = bar.Parent;
  412. clone.TextEditable = false;
  413. clone.ZIndex = 1;
  414. clone.TextTransparency = .5
  415. clone.PlaceholderColor3 = Color3.fromRGB(0, 0, 0)
  416.  
  417. bar:GetPropertyChangedSignal("Text"):Connect(function()
  418. focused = true;
  419. local txt = bar.Text;
  420. if txt == '' then
  421. clone.PlaceholderText = '';
  422. return;
  423. end
  424. match(txt, bar)
  425. end)
  426.  
  427. bar.FocusLost:Connect(function()
  428. clone.PlaceholderText = '';
  429. focused = false;
  430. end)
  431. end)
Add Comment
Please, Sign In to add comment