SHOW:
|
|
- or go back to the newest paste.
1 | - | __AUTHOR__ = "amazingranma261" |
1 | + | __AUTHOR__ = "Guest537561" |
2 | local PLAYER = owner | |
3 | local CHARACTER = owner.Character | |
4 | local HEAD = CHARACTER:WaitForChild("Head") | |
5 | local MAX_VIEW_DISTANCE = 30 | |
6 | local GUI_HEIGHT = 5 | |
7 | local CHAT_BACKGROUND_COLOR = Color3.fromRGB(0,0,0) | |
8 | local CHAT_BACKGROUND_TRANSPARENCY = 1 | |
9 | local CHAT_FONT = 1 | |
10 | local chatGUIs = {} | |
11 | local s = Instance.new("Sound", HEAD) | |
12 | s.SoundId = "rbxassetid://418252437" | |
13 | s.Volume = 9e9 | |
14 | s.Pitch = 1 | |
15 | function updateChatPosition() | |
16 | for i, v in pairs(chatGUIs) do | |
17 | v.ExtentsOffsetWorldSpace = v.ExtentsOffsetWorldSpace + Vector3.new(0,1.5,0) | |
18 | end | |
19 | end | |
20 | ||
21 | function createChatBubble(seconds, message) | |
22 | assert(type(CHAT_FONT) == "number" and CHAT_FONT <17 and CHAT_FONT > -1, "Invalid font value, please enter a number between 0 and 16") | |
23 | updateChatPosition() | |
24 | ||
25 | local CHAT_GUI = Instance.new("BillboardGui",HEAD) | |
26 | CHAT_GUI.Adornee = CHAT_GUI.Parent | |
27 | CHAT_GUI.MaxDistance = MAX_VIEW_DISTANCE | |
28 | CHAT_GUI.ExtentsOffsetWorldSpace = Vector3.new(0,GUI_HEIGHT,0) | |
29 | CHAT_GUI.Size = UDim2.new(0,36*(#message/3),0.6,0) | |
30 | table.insert(chatGUIs, CHAT_GUI) | |
31 | ||
32 | local CHAT_FRAME = Instance.new("Frame",CHAT_GUI) | |
33 | CHAT_FRAME.Size = UDim2.new(1,0,1,0) | |
34 | CHAT_FRAME.BackgroundTransparency = CHAT_BACKGROUND_TRANSPARENCY | |
35 | CHAT_FRAME.BackgroundColor3 = CHAT_BACKGROUND_COLOR | |
36 | ||
37 | local CHAT_TEXT = Instance.new("TextBox",CHAT_FRAME) | |
38 | CHAT_TEXT.Size = UDim2.new(1,0,1,0) | |
39 | CHAT_TEXT.TextColor3 = Color3.new(1,1,1) | |
40 | CHAT_TEXT.TextSize = 20 | |
41 | CHAT_TEXT.MultiLine = true | |
42 | CHAT_TEXT.Font = CHAT_FONT | |
43 | CHAT_TEXT.BackgroundTransparency = 1 | |
44 | ||
45 | for i = 1,#message do | |
46 | CHAT_TEXT.Text = string.sub(message,1,i) | |
47 | s:Play() | |
48 | ||
49 | wait() | |
50 | end | |
51 | wait(seconds) | |
52 | table.remove(chatGUIs, 0) | |
53 | CHAT_GUI:Destroy() | |
54 | updateChatPosition() | |
55 | end | |
56 | ||
57 | ||
58 | PLAYER.Chatted:connect(function(msg) coroutine.wrap(createChatBubble)((#msg/5)+2,msg) end) |