2013/processed/97188756.lua

1611 lines
38 KiB
Lua

print("[Mercury]: Loaded corescript 97188756")
local forceChatGUI = false
local WaitForChild
WaitForChild = function(parent, childName)
while not (parent:FindFirstChild(childName) ~= nil) do
parent.ChildAdded:wait(0.03)
end
return parent[childName]
end
local IsPhone
IsPhone = function()
local cGui = Game:GetService("CoreGui")
local rGui = WaitForChild(cGui, "RobloxGui")
if rGui.AbsoluteSize.Y < 600 then
return true
end
return false
end
local StringTrim
StringTrim = function(str)
return str:gsub("^%s*(.-)%s*$", "%1")
end
while not (Game.Players.LocalPlayer ~= nil) do
wait(0.03)
end
local Player = Game.Players.LocalPlayer
while not (Player.Character ~= nil) do
wait(0.03)
end
local Camera = Game.Workspace.CurrentCamera
local New
New = function(className, name, props)
if not (props ~= nil) then
props = name
name = nil
end
local obj = Instance.new(className)
if name then
obj.Name = name
end
local parent
for k, v in pairs(props) do
if type(k) == "string" then
if k == "Parent" then
parent = v
else
obj[k] = v
end
elseif type(k) == "number" and type(v) == "userdata" then
v.Parent = obj
end
end
obj.Parent = parent
return obj
end
local CoreGuiService = Game:GetService("CoreGui")
local PlayersService = Game:GetService("Players")
local GuiService = Game:GetService("GuiService")
local Enums = { }
local EnumName = { }
local CreateEnum
CreateEnum = function(enumName)
return function(t)
local e = {
[EnumName] = enumName
}
for i, name in pairs(t) do
local item = setmetatable({
Name = name,
Value = i,
Enum = e,
[EnumName] = enumName,
}, {
__call = function(self, value)
return value == self or value == self.Name or value == self.Value
end,
__tostring = function(self)
return "Enum." .. tostring(self[EnumName]) .. "." .. tostring(self.Name)
end
})
e[i] = item
e[name] = item
e[item] = item
end
Enums[enumName] = e
return setmetatable(e, {
__call = function(self, value)
return self[value] or self[tonumber(value)]
end,
__index = {
GetEnumItems = function(self)
t = { }
for i, item in pairs(self) do
if type(i) == "number" then
t[#t + 1] = item
end
end
table.sort(t, function(a, b)
return a.Value < b.Value
end)
return t
end
},
__tostring = function(self)
return "Enum." .. tostring(self[EnumName])
end
})
end
end
local Input = {
Mouse = Player:GetMouse(),
Speed = 0,
Simulating = false,
Configuration = {
DefaultSpeed = 1
},
UserIsScrolling = false
}
local Chat = {
ChatColors = {
BrickColor.new("Bright red"),
BrickColor.new("Bright blue"),
BrickColor.new("Earth green"),
BrickColor.new("Bright violet"),
BrickColor.new("Bright orange"),
BrickColor.new("Bright yellow"),
BrickColor.new("Light reddish violet"),
BrickColor.new("Brick yellow")
},
Gui = nil,
Frame = nil,
RenderFrame = nil,
TapToChatLabel = nil,
ClickToChatButton = nil,
ScrollingLock = false,
EventListener = nil,
MessageQueue = { },
Configuration = {
FontSize = Enum.FontSize.Size12,
NumFontSize = 12,
HistoryLength = 20,
Size = UDim2.new(0.38, 0, 0.20, 0),
MessageColor = Color3.new(1, 1, 1),
AdminMessageColor = Color3.new(1, 215 / 255, 0),
XScale = 0.025,
LifeTime = 45,
Position = UDim2.new(0, 2, 0.05, 0),
DefaultTweenSpeed = 0.15
},
SlotPositions_List = { },
CachedSpaceStrings_List = { },
MouseOnFrame = false,
GotFocus = false,
Messages_List = { },
MessageThread = nil,
Admins_List = {
"taskmanager",
"Heliodex",
"tako"
},
SafeChat_List = {
["Use the Chat menu to talk to me."] = {
"/sc0",
true
},
["I can only see menu chats."] = {
"/sc1",
true
},
Hello = {
Hi = {
"/sc2_0",
true,
["Hi there!"] = true,
["Hi everyone"] = true
},
Howdy = {
"/sc2_1",
true,
["Howdy partner!"] = true
},
Greetings = {
"/sc2_2",
true,
["Greetings everyone"] = true,
["Greetings Robloxians!"] = true,
["Seasons greetings!"] = true
},
Welcome = {
"/sc2_3",
true,
["Welcome to my place"] = true,
["Welcome to my barbeque"] = true,
["Welcome to our base"] = true
},
["Hey there!"] = {
"/sc2_4",
true
},
["What's up?"] = {
"/sc2_5",
true,
["How are you doing?"] = true,
["How's it going?"] = true,
["What's new?"] = true
},
["Good day"] = {
"/sc2_6",
true,
["Good morning"] = true,
["Good evening"] = true,
["Good afternoon"] = true,
["Good night"] = true
},
Silly = {
"/sc2_7",
true,
["Waaaaaaaz up?!"] = true,
["Hullo!"] = true,
["Behold greatness, mortals!"] = true,
["Pardon me, is this Sparta?"] = true,
["THIS IS SPARTAAAA!"] = true
},
["Happy Holidays!"] = {
"/sc2_8",
true,
["Happy New Year!"] = true,
["Happy Valentine's Day!"] = true,
["Beware the Ides of March!"] = true,
["Happy St. Patrick's Day!"] = true,
["Happy Easter!"] = true,
["Happy Earth Day!"] = true,
["Happy 4th of July!"] = true,
["Happy Thanksgiving!"] = true,
["Happy Halloween!"] = true,
["Happy Hanukkah!"] = true,
["Merry Christmas!"] = true,
["Happy May Day!"] = true,
["Happy Towel Day!"] = true,
["Happy Mercury Day!"] = true,
["Happy LOL Day!"] = true
},
"/sc2"
},
Goodbye = {
["Good Night"] = {
"/sc3_0",
true,
["Sweet dreams"] = true,
["Go to sleep!"] = true,
["Lights out!"] = true,
Bedtime = true,
["Going to bed now"] = true
},
Later = {
"/sc3_1",
true,
["See ya later"] = true,
["Later gator!"] = true,
["See you tomorrow"] = true
},
Bye = {
"/sc3_2",
true,
["Hasta la bye bye!"] = true
},
["I'll be right back"] = {
"/sc3_3",
true
},
["I have to go"] = {
"/sc3_4",
true
},
Farewell = {
"/sc3_5",
true,
["Take care"] = true,
["Have a nice day"] = true,
["Goodluck!"] = true,
["Ta-ta for now!"] = true
},
Peace = {
"/sc3_6",
true,
["Peace out!"] = true,
["Peace dudes!"] = true,
["Rest in pieces!"] = true
},
Silly = {
"/sc3_7",
true,
["To the batcave!"] = true,
["Over and out!"] = true,
["Happy trails!"] = true,
["I've got to book it!"] = true,
["Tootles!"] = true,
["Smell you later!"] = true,
["GG!"] = true,
["My house is on fire! gtg."] = true
},
"/sc3"
},
Friend = {
["Wanna be friends?"] = {
"/sc4_0",
true
},
["Follow me"] = {
"/sc4_1",
true,
["Come to my place!"] = true,
["Come to my base!"] = true,
["Follow me, team!"] = true,
["Follow me"] = true
},
["Your place is cool"] = {
"/sc4_2",
true,
["Your place is fun"] = true,
["Your place is awesome"] = true,
["Your place looks good"] = true,
["This place is awesome!"] = true
},
["Thank you"] = {
"/sc4_3",
true,
["Thanks for playing"] = true,
["Thanks for visiting"] = true,
["Thanks for everything"] = true,
["No, thank you"] = true,
Thanx = true
},
["No problem"] = {
"/sc4_4",
true,
["Don't worry"] = true,
["That's ok"] = true,
np = true
},
["You are ..."] = {
"/sc4_5",
true,
["You are great!"] = true,
["You are good!"] = true,
["You are cool!"] = true,
["You are funny!"] = true,
["You are silly!"] = true,
["You are awesome!"] = true,
["You are doing something I don't like, please stop"] = true
},
["I like ..."] = {
"/sc4_6",
true,
["I like your name"] = true,
["I like your shirt"] = true,
["I like your place"] = true,
["I like your style"] = true,
["I like you"] = true,
["I like items"] = true,
["I like money"] = true
},
Sorry = {
"/sc4_7",
true,
["My bad!"] = true,
["I'm sorry"] = true,
["Whoops!"] = true,
["Please forgive me."] = true,
["I forgive you."] = true,
["I didn't mean to do that."] = true,
["Sorry, I'll stop now."] = true
},
"/sc4"
},
Questions = {
["Who?"] = {
"/sc5_0",
true,
["Who wants to be my friend?"] = true,
["Who wants to be on my team?"] = true,
["Who made this brilliant game?"] = true
},
["What?"] = {
"/sc5_1",
true,
["What is your favorite animal?"] = true,
["What is your favorite game?"] = true,
["What is your favorite movie?"] = true,
["What is your favorite TV show?"] = true,
["What is your favorite music?"] = true,
["What are your hobbies?"] = true,
["LOLWUT?"] = true
},
["When?"] = {
"/sc5_2",
true,
["When are you online?"] = true,
["When is the new version coming out?"] = true,
["When can we play again?"] = true,
["When will your place be done?"] = true
},
["Where?"] = {
"/sc5_3",
true,
["Where do you want to go?"] = true,
["Where are you going?"] = true,
["Where am I?!"] = true,
["Where did you go?"] = true
},
["How?"] = {
"/sc5_4",
true,
["How are you today?"] = true,
["How did you make this cool place?"] = true,
["LOLHOW?"] = true
},
["Can I..."] = {
"/sc5_5",
true,
["Can I have a tour?"] = true,
["Can I be on your team?"] = true,
["Can I be your friend?"] = true,
["Can I try something?"] = true,
["Can I have that please?"] = true,
["Can I have that back please?"] = true,
["Can I have borrow your hat?"] = true,
["Can I have borrow your gear?"] = true
},
"/sc5"
},
Answers = {
["You need help?"] = {
"/sc6_0",
true,
["Check out the news section"] = true,
["Check out the help section"] = true,
["Read the wiki!"] = true,
["All the answers are in the wiki!"] = true,
["I will help you with this."] = true
},
["Some people ..."] = {
"/sc6_1",
true,
Me = true,
["Not me"] = true,
You = true,
["All of us"] = true,
["Everyone but you"] = true,
["Builderman!"] = true,
["Telamon!"] = true,
["My team"] = true,
["My group"] = true,
Mom = true,
Dad = true,
Sister = true,
Brother = true,
Cousin = true,
Grandparent = true,
Friend = true
},
["Time ..."] = {
"/sc6_2",
true,
["In the morning"] = true,
["In the afternoon"] = true,
["At night"] = true,
Tomorrow = true,
["This week"] = true,
["This month"] = true,
Sometime = true,
Sometimes = true,
["Whenever you want"] = true,
Never = true,
["After this"] = true,
["In 10 minutes"] = true,
["In a couple hours"] = true,
["In a couple days"] = true
},
Animals = {
"/sc6_3",
true,
Cats = {
Lion = true,
Tiger = true,
Leopard = true,
Cheetah = true
},
Dogs = {
Wolves = true,
Beagle = true,
Collie = true,
Dalmatian = true,
Poodle = true,
Spaniel = true,
Shepherd = true,
Terrier = true,
Retriever = true
},
Horses = {
Ponies = true,
Stallions = true,
Pwnyz = true
},
Reptiles = {
Dinosaurs = true,
Lizards = true,
Snakes = true,
["Turtles!"] = true
},
Hamster = true,
Monkey = true,
Bears = true,
Fish = {
Goldfish = true,
Sharks = true,
["Sea Bass"] = true,
Halibut = true,
["Tropical Fish"] = true
},
Birds = {
Eagles = true,
Penguins = true,
Parakeets = true,
Owls = true,
Hawks = true,
Pidgeons = true
},
Elephants = true,
["Mythical Beasts"] = {
Dragons = true,
Unicorns = true,
["Sea Serpents"] = true,
Sphinx = true,
Cyclops = true,
Minotaurs = true,
Goblins = true,
["Honest Politicians"] = true,
Ghosts = true,
["Scylla and Charybdis"] = true
}
},
Games = {
"/sc6_4",
true,
Action = true,
Puzzle = true,
Strategy = true,
Racing = true,
RPG = true,
["Obstacle Course"] = true,
Tycoon = true,
Roblox = {
BrickBattle = true,
["Community Building"] = true,
["Roblox Minigames"] = true,
["Contest Place"] = true
},
["Board games"] = {
Chess = true,
Checkers = true,
["Settlers of Catan"] = true,
["Tigris and Euphrates"] = true,
["El Grande"] = true,
Stratego = true,
Carcassonne = true
}
},
Sports = {
"/sc6_5",
true,
Hockey = true,
Soccer = true,
Football = true,
Baseball = true,
Basketball = true,
Volleyball = true,
Tennis = true,
["Sports team practice"] = true,
Watersports = {
Surfing = true,
Swimming = true,
["Water Polo"] = true
},
["Winter sports"] = {
Skiing = true,
Snowboarding = true,
Sledding = true,
Skating = true
},
Adventure = {
["Rock climbing"] = true,
Hiking = true,
Fishing = true,
["Horseback riding"] = true
},
Wacky = {
Foosball = true,
Calvinball = true,
Croquet = true,
Cricket = true,
Dodgeball = true,
Squash = true,
Trampoline = true
}
},
["Movies/TV"] = {
"/sc6_6",
true,
["Science Fiction"] = true,
Animated = {
Anime = true
},
Comedy = true,
Romantic = true,
Action = true,
Fantasy = true
},
Music = {
"/sc6_7",
true,
Country = true,
Jazz = true,
Rap = true,
["Hip-hop"] = true,
Techno = true,
Classical = true,
Pop = true,
Rock = true
},
Hobbies = {
"/sc6_8",
true,
Computers = {
["Building computers"] = true,
Videogames = true,
Coding = true,
Hacking = true
},
["The Internet"] = {
["lol. teh internets!"] = true,
["Watching vids"] = true
},
Dance = true,
Gymnastics = true,
["Listening to music"] = true,
["Arts and crafts"] = true,
["Martial Arts"] = {
Karate = true,
Judo = true,
["Taikwon Do"] = true,
Wushu = true,
["Street fighting"] = true
},
["Music lessons"] = {
["Playing in my band"] = true,
["Playing piano"] = true,
["Playing guitar"] = true,
["Playing violin"] = true,
["Playing drums"] = true,
["Playing a weird instrument"] = true
}
},
Location = {
"/sc6_9",
true,
USA = {
West = {
Alaska = true,
Arizona = true,
California = true,
Colorado = true,
Hawaii = true,
Idaho = true,
Montana = true,
Nevada = true,
["New Mexico"] = true,
Oregon = true,
Utah = true,
Washington = true,
Wyoming = true
},
South = {
Alabama = true,
Arkansas = true,
Florida = true,
Georgia = true,
Kentucky = true,
Louisiana = true,
Mississippi = true,
["North Carolina"] = true,
Oklahoma = true,
["South Carolina"] = true,
Tennessee = true,
Texas = true,
Virginia = true,
["West Virginia"] = true
},
Northeast = {
Connecticut = true,
Delaware = true,
Maine = true,
Maryland = true,
Massachusetts = true,
["New Hampshire"] = true,
["New Jersey"] = true,
["New York"] = true,
Pennsylvania = true,
["Rhode Island"] = true,
Vermont = true
},
Midwest = {
Illinois = true,
Indiana = true,
Iowa = true,
Kansas = true,
Michigan = true,
Minnesota = true,
Missouri = true,
Nebraska = true,
["North Dakota"] = true,
Ohio = true,
["South Dakota"] = true,
Wisconsin = true
}
},
Canada = {
Alberta = true,
["British Columbia"] = true,
Manitoba = true,
["New Brunswick"] = true,
Newfoundland = true,
["Northwest Territories"] = true,
["Nova Scotia"] = true,
Nunavut = true,
Ontario = true,
["Prince Edward Island"] = true,
Quebec = true,
Saskatchewan = true,
Yukon = true
},
Mexico = true,
["Central America"] = true,
Europe = {
France = true,
Germany = true,
Spain = true,
Italy = true,
Poland = true,
Switzerland = true,
Greece = true,
Romania = true,
Netherlands = true,
["Great Britain"] = {
England = true,
Scotland = true,
Wales = true,
["Northern Ireland"] = true
}
},
Asia = {
China = true,
India = true,
Japan = true,
Korea = true,
Russia = true,
Vietnam = true
},
["South America"] = {
Argentina = true,
Brazil = true
},
Africa = {
Eygpt = true,
Swaziland = true
},
Australia = true,
["Middle East"] = true,
Antarctica = true,
["New Zealand"] = true
},
Age = {
"/sc6_10",
true,
Rugrat = true,
Kid = true,
Tween = true,
Teen = true,
Twenties = true,
Old = true,
Ancient = true,
Mesozoic = true,
["I don't want to say my age. Don't ask."] = true
},
Mood = {
"/sc6_11",
true,
Good = true,
["Great!"] = true,
["Not bad"] = true,
Sad = true,
Hyper = true,
Chill = true,
Happy = true,
["Kind of mad"] = true
},
Boy = {
"/sc6_12",
true
},
Girl = {
"/sc6_13",
true
},
["I don't want to say boy or girl. Don't ask."] = {
"/sc6_14",
true
},
"/sc6"
},
Game = {
["Let's build"] = {
"/sc7_0",
true
},
["Let's battle"] = {
"/sc7_1",
true
},
["Nice one!"] = {
"/sc7_2",
true
},
["So far so good"] = {
"/sc7_3",
true
},
["Lucky shot!"] = {
"/sc7_4",
true
},
["Oh man!"] = {
"/sc7_5",
true
},
["I challenge you to a fight!"] = {
"/sc7_6",
true
},
["Help me with this"] = {
"/sc7_7",
true
},
["Let's go to your game"] = {
"/sc7_8",
true
},
["Can you show me how do to that?"] = {
"/sc7_9",
true
},
["Backflip!"] = {
"/sc7_10",
true
},
["Frontflip!"] = {
"/sc7_11",
true
},
["Dance!"] = {
"/sc7_12",
true
},
["I'm on your side!"] = {
"/sc7_13",
true
},
["Game Commands"] = {
"/sc7_14",
true,
regen = true,
reset = true,
go = true,
fix = true,
respawn = true
},
"/sc7"
},
Silly = {
["Muahahahaha!"] = true,
["all your base are belong to me!"] = true,
["GET OFF MAH LAWN"] = true,
["TEH EPIK DUCK IS COMING!!!"] = true,
ROFL = true,
["1337"] = {
true,
["i r teh pwnz0r!"] = true,
["w00t!"] = true,
["z0mg h4x!"] = true,
["ub3rR0xXorzage!"] = true
}
},
Yes = {
["Absolutely!"] = true,
["Rock on!"] = true,
["Totally!"] = true,
["Juice!"] = true,
["Yay!"] = true,
Yesh = true
},
No = {
["Ummm. No."] = true,
["..."] = true,
["Stop!"] = true,
["Go away!"] = true,
["Don't do that"] = true,
["Stop breaking the rules"] = true,
["I don't want to"] = true
},
Ok = {
["Well... ok"] = true,
Sure = true
},
Uncertain = {
Maybe = true,
["I don't know"] = true,
idk = true,
["I can't decide"] = true,
["Hmm..."] = true
},
[":-)"] = {
[":-("] = true,
[":D"] = true,
[":-O"] = true,
lol = true,
["=D"] = true,
["D="] = true,
XD = true,
[";D"] = true,
[";)"] = true,
O_O = true,
["=)"] = true,
["@_@"] = true,
["&gt;_&lt;"] = true,
T_T = true,
["^_^"] = true,
["<(0_0<) <(0_0)> (>0_0)> KIRBY DANCE"] = true,
[")';"] = true,
[":3"] = true
},
Ratings = {
["Rate it!"] = true,
["I give it a 1 out of 10"] = true,
["I give it a 2 out of 10"] = true,
["I give it a 3 out of 10"] = true,
["I give it a 4 out of 10"] = true,
["I give it a 5 out of 10"] = true,
["I give it a 6 out of 10"] = true,
["I give it a 7 out of 10"] = true,
["I give it a 8 out of 10"] = true,
["I give it a 9 out of 10"] = true,
["I give it a 10 out of 10!"] = true
}
},
CreateEnum("SafeChat")({
"Level1",
"Level2",
"Level3"
}),
SafeChatTree = { },
TempSpaceLabel = nil
}
local GetNameValue
GetNameValue = function(pName)
local value = 0
for index = 1, #pName do
local cValue = string.byte(string.sub(pName, index, index))
local reverseIndex = #pName - index + 1
if #pName % 2 == 1 then
reverseIndex = reverseIndex - 1
end
if reverseIndex % 4 >= 2 then
cValue = -cValue
end
value = value + cValue
end
return value % 8
end
Chat.ComputeChatColor = function(self, pName)
return self.ChatColors[GetNameValue(pName) + 1].Color
end
Chat.EnableScrolling = function(self, toggle)
self.MouseOnFrame = false
if self.RenderFrame then
self.RenderFrame.MouseEnter:connect(function()
local character = Player.Character
local torso = WaitForChild(character, "Torso")
local head = WaitForChild(character, "Head")
if toggle then
self.MouseOnFrame = true
Camera.CameraType = "Scriptable"
return Spawn(function()
local currentRelativePos = Camera.CoordinateFrame.p - torso.Position
while Chat.MouseOnFrame do
Camera.CoordinateFrame = CFrame.new(torso.Position + currentRelativePos, head.Position)
wait(0.015)
end
end)
end
end)
return self.RenderFrame.MouseLeave:connect(function()
Camera.CameraType = "Custom"
self.MouseOnFrame = false
end)
end
end
Chat.IsTouchDevice = function(self)
local touchEnabled = false
pcall(function()
touchEnabled = Game:GetService("UserInputService").TouchEnabled
end)
return touchEnabled
end
Chat.UpdateQueue = function(self, field, diff)
for i = #self.MessageQueue, 1, -1 do
if self.MessageQueue[i] then
for _, label in pairs(self.MessageQueue[i]) do
if label and type(label) ~= "table" and type(label) ~= "number" then
if label:IsA("TextLabel") or label:IsA("TextButton") then
if diff then
label.Position = label.Position - UDim2.new(0, 0, diff, 0)
else
if field == self.MessageQueue[i] then
label.Position = UDim2.new(self.Configuration.XScale, 0, label.Position.Y.Scale - field["Message"].Size.Y.Scale, 0)
Spawn(function()
wait(0.05)
while label.TextTransparency >= 0 do
label.TextTransparency = label.TextTransparency - 0.2
wait(0.03)
end
if label == field["Message"] then
label.TextStrokeTransparency = 0.8
else
label.TextStrokeTransparency = 1
end
end)
else
label.Position = UDim2.new(self.Configuration.XScale, 0, label.Position.Y.Scale - field["Message"].Size.Y.Scale, 0)
end
if label.Position.Y.Scale < -0.01 then
label.Visible = false
label:Destroy()
end
end
end
end
end
end
end
end
Chat.CreateScrollBar = function(self) end
Chat.CheckIfInBounds = function(self, value)
if #Chat.MessageQueue < 3 then
return true
end
if value > 0 and Chat.MessageQueue[1] and Chat.MessageQueue[1]["Player"] and Chat.MessageQueue[1]["Player"].Position.Y.Scale == 0 then
return true
elseif value < 0 and Chat.MessageQueue[1] and Chat.MessageQueue[1]["Player"] and Chat.MessageQueue[1]["Player"].Position.Y.Scale < 0 then
return true
else
return false
end
end
Chat.ComputeSpaceString = function(self, pLabel)
local nString = " "
if not self.TempSpaceLabel then
self.TempSpaceLabel = New("TextButton", "SpaceButton", {
Size = UDim2.new(0, pLabel.AbsoluteSize.X, 0, pLabel.AbsoluteSize.Y),
FontSize = self.Configuration.FontSize,
Parent = self.RenderFrame,
BackgroundTransparency = 1,
Text = nString
})
else
self.TempSpaceLabel.Text = nString
end
while self.TempSpaceLabel.TextBounds.X < pLabel.TextBounds.X do
nString = nString .. " "
self.TempSpaceLabel.Text = nString
end
nString = nString .. " "
self.CachedSpaceStrings_List[pLabel.Text] = nString
self.TempSpaceLabel.Text = ""
return nString
end
Chat.UpdateChat = function(self, cPlayer, message)
local messageField = {
Player = cPlayer,
Message = message
}
if coroutine.status(Chat.MessageThread) == "dead" then
table.insert(Chat.Messages_List, messageField)
Chat.MessageThread = coroutine.create(function()
for i = 1, #Chat.Messages_List do
local field = Chat.Messages_List[i]
Chat:CreateMessage(field["Player"], field["Message"])
end
Chat.Messages_List = { }
end)
return coroutine.resume(Chat.MessageThread)
else
return table.insert(Chat.Messages_List, messageField)
end
end
Chat.CreateMessage = function(self, cPlayer, message)
local pName
if not cPlayer then
pName = ""
else
pName = cPlayer.Name
end
message = StringTrim(message)
local pLabel
local mLabel
if #self.MessageQueue > self.Configuration.HistoryLength then
self.MessageQueue[#self.MessageQueue] = nil
end
pLabel = New("TextLabel", pName, {
Text = pName .. ":",
FontSize = Chat.Configuration.FontSize,
TextXAlignment = Enum.TextXAlignment.Left,
TextYAlignment = Enum.TextYAlignment.Top,
Parent = self.RenderFrame,
TextWrapped = false,
Size = UDim2.new(1, 0, 0.1, 0),
BackgroundTransparency = 1,
TextTransparency = 1,
Position = UDim2.new(0, 0, 1, 0),
BorderSizePixel = 0,
TextStrokeColor3 = Color3.new(0.5, 0.5, 0.5),
TextStrokeTransparency = 0.75
})
if cPlayer.Neutral then
pLabel.TextColor3 = Chat:ComputeChatColor(pName)
else
pLabel.TextColor3 = cPlayer.TeamColor.Color
end
local nString
if not self.CachedSpaceStrings_List[pName] then
nString = Chat:ComputeSpaceString(pLabel)
else
nString = self.CachedSpaceStrings_List[pName]
end
mLabel = New("TextLabel", tostring(pName) .. " - message", {
Size = UDim2.new(1, 0, 0.5, 0),
TextColor3 = Chat.Configuration.MessageColor,
FontSize = Chat.Configuration.FontSize,
TextXAlignment = Enum.TextXAlignment.Left,
TextYAlignment = Enum.TextYAlignment.Top,
Text = "",
Parent = self.RenderFrame,
TextWrapped = true,
BackgroundTransparency = 1,
TextTransparency = 1,
Position = UDim2.new(0, 0, 1, 0),
BorderSizePixel = 0,
TextStrokeColor3 = Color3.new(0, 0, 0)
})
mLabel.Text = nString .. message
if not pName then
pLabel.Text = ""
mLabel.TextColor3 = Color3.new(0, 0.4, 1.0)
end
for _, adminName in pairs(self.Admins_List) do
if string.lower(adminName) == string.lower(pName) then
mLabel.TextColor3 = self.Configuration.AdminMessageColor
end
end
pLabel.Visible = true
mLabel.Visible = true
local heightField = mLabel.TextBounds.Y
mLabel.Size = UDim2.new(1, 0, heightField / self.RenderFrame.AbsoluteSize.Y, 0)
pLabel.Size = mLabel.Size
local queueField = { }
queueField["Player"] = pLabel
queueField["Message"] = mLabel
queueField["SpawnTime"] = tick()
table.insert(self.MessageQueue, 1, queueField)
return Chat:UpdateQueue(queueField)
end
Chat.ScreenSizeChanged = function(self)
wait()
while self.Frame.AbsoluteSize.Y > 120 do
self.Frame.Size = self.Frame.Size - UDim2.new(0, 0, 0.005, 0)
end
end
Chat.FindButtonTree = function(self, scButton, rootList)
local list = { }
rootList = rootList or self.SafeChatTree
for button, _ in pairs(rootList) do
if button == scButton then
list = rootList[button]
elseif type(rootList[button]) == "table" then
list = Chat:FindButtonTree(scButton, rootList[button])
end
end
return list
end
Chat.ToggleSafeChatMenu = function(self, scButton)
local list = Chat:FindButtonTree(scButton, self.SafeChatTree)
if list then
for button, _ in pairs(list) do
if button:IsA("TextButton") or button:IsA("ImageButton") then
button.Visible = not button.Visible
end
end
return true
end
return false
end
Chat.CreateSafeChatOptions = function(self, list, rootButton)
local text_List = { }
local count = 0
text_List[rootButton] = { }
text_List[rootButton][1] = list[1]
rootButton = rootButton or self.SafeChatButton
for msg, _ in pairs(list) do
if type(msg) == "string" then
local chatText = New("TextButton", msg, {
Text = msg,
Size = UDim2.new(0, 100, 0, 20),
TextXAlignment = Enum.TextXAlignment.Center,
TextColor3 = Color3.new(0.2, 0.1, 0.1),
BackgroundTransparency = 0.5,
BackgroundColor3 = Color3.new(1, 1, 1),
Parent = self.SafeChatFrame,
Visible = false,
Position = UDim2.new(0, rootButton.Position.X.Scale + 105, 0, rootButton.Position.Y.Scale - (count - 3) * 100)
})
count = count + 1
if type(list[msg]) == "table" then
text_List[rootButton][chatText] = Chat:CreateSafeChatOptions(list[msg], chatText)
end
chatText.MouseEnter:connect(function()
return Chat:ToggleSafeChatMenu(chatText)
end)
chatText.MouseLeave:connect(function()
return Chat:ToggleSafeChatMenu(chatText)
end)
chatText.MouseButton1Click:connect(function()
local lList = Chat:FindButtonTree(chatText)
return pcall(function()
return PlayersService:Chat(lList[1])
end)
end)
end
end
return text_List
end
Chat.CreateSafeChatGui = function(self)
self.SafeChatFrame = New("Frame", "SafeChatFrame", {
Size = UDim2.new(1, 0, 1, 0),
Parent = self.Gui,
BackgroundTransparency = 1,
New("ImageButton", "SafeChatButton", {
Size = UDim2.new(0, 44, 0, 31),
Position = UDim2.new(0, 1, 0.35, 0),
BackgroundTransparency = 1,
Image = "http://www.roblox.com/asset/?id=97080365"
})
})
self.SafeChatButton = self.SafeChatFrame.SafeChatButton
self.SafeChatTree[self.SafeChatButton] = Chat:CreateSafeChatOptions(self.SafeChat_List, self.SafeChatButton)
return self.SafeChatButton.MouseButton1Click:connect(function()
return Chat:ToggleSafeChatMenu(self.SafeChatButton)
end)
end
Chat.FocusOnChatBar = function(self)
if self.ClickToChatButton then
self.ClickToChatButton.Visible = false
end
self.GotFocus = true
if self.Frame["Background"] then
self.Frame.Background.Visible = false
end
return self.ChatBar:CaptureFocus()
end
Chat.CreateTouchButton = function(self)
self.ChatTouchFrame = New("Frame", "ChatTouchFrame", {
Size = UDim2.new(0, 128, 0, 32),
Position = UDim2.new(0, 88, 0, 0),
BackgroundTransparency = 1,
Parent = self.Gui,
New("ImageButton", "ChatLabel", {
Size = UDim2.new(0, 74, 0, 28),
Position = UDim2.new(0, 0, 0, 0),
BackgroundTransparency = 1,
ZIndex = 2.0
}),
New("ImageLabel", "Background", {
Size = UDim2.new(1, 0, 1, 0),
Position = UDim2.new(0, 0, 0, 0),
BackgroundTransparency = 1,
Image = "http://www.roblox.com/asset/?id=97078724"
})
})
self.TapToChatLabel = self.ChatTouchFrame.ChatLabel
self.TouchLabelBackground = self.ChatTouchFrame.Background
self.ChatBar = New("TextBox", "ChatBar", {
Size = UDim2.new(1, 0, 0.2, 0),
Position = UDim2.new(0, 0, 0.8, 800),
Text = "",
ZIndex = 1,
BackgroundTransparency = 1,
Parent = self.Frame,
TextXAlignment = Enum.TextXAlignment.Left,
TextColor3 = Color3.new(1, 1, 1),
ClearTextOnFocus = false
})
return self.TapToChatLabel.MouseButton1Click:connect(function()
self.TapToChatLabel.Visible = false
self.ChatBar:CaptureFocus()
self.GotFocus = true
if self.TouchLabelBackground then
self.TouchLabelBackground.Visible = false
end
end)
end
Chat.CreateChatBar = function(self)
local status, result
status, result = pcall(function()
return GuiService.UseLuaChat
end)
if forceChatGUI or (status and result) then
self.ClickToChatButton = New("TextButton", "ClickToChat", {
Size = UDim2.new(1, 0, 0, 20),
BackgroundTransparency = 1,
ZIndex = 2.0,
Parent = self.Gui,
Text = 'To chat click here or press "/" key',
TextColor3 = Color3.new(1, 1, 0.9),
Position = UDim2.new(0, 0, 1, 0),
TextXAlignment = Enum.TextXAlignment.Left,
FontSize = Enum.FontSize.Size12
})
self.ChatBar = New("TextBox", "ChatBar", {
Size = UDim2.new(1, 0, 0, 20),
Position = UDim2.new(0, 0, 1, 0),
Text = "",
ZIndex = 1,
BackgroundColor3 = Color3.new(0, 0, 0),
BackgroundTransparency = 0.25,
Parent = self.Gui,
TextXAlignment = Enum.TextXAlignment.Left,
TextColor3 = Color3.new(1, 1, 1),
FontSize = Enum.FontSize.Size12,
ClearTextOnFocus = false
})
local success, error
success, error = pcall(function()
return GuiService:SetGlobalGuiInset(0, 0, 0, 20)
end)
if not success then
GuiService:SetGlobalSizeOffsetPixel(0, -20)
end
GuiService:AddSpecialKey(Enum.SpecialKey.ChatHotkey)
GuiService.SpecialKeyPressed:connect(function(key)
if key == Enum.SpecialKey.ChatHotkey then
return Chat:FocusOnChatBar()
end
end)
return self.ClickToChatButton.MouseButton1Click:connect(function()
return Chat:FocusOnChatBar()
end)
end
end
Chat.CreateGui = function(self)
self.Gui = WaitForChild(CoreGuiService, "RobloxGui")
self.Frame = New("Frame", "ChatFrame", {
Size = UDim2.new(0, 500, 0, 120),
Position = UDim2.new(0, 0, 0, 5),
BackgroundTransparency = 1,
ZIndex = 0,
Parent = self.Gui,
Active = false,
New("ImageLabel", "Background", {
Image = "http://www.roblox.com/asset/?id=97120937",
Size = UDim2.new(1.3, 0, 1.64, 0),
Position = UDim2.new(0, 0, 0, 0),
BackgroundTransparency = 1,
ZIndex = 0,
Visible = false
}),
New("Frame", "Border", {
Size = UDim2.new(1, 0, 0, 1),
Position = UDim2.new(0, 0, 0.8, 0),
BackgroundTransparency = 0,
BackgroundColor3 = Color3.new(236 / 255, 236 / 255, 236 / 255),
BorderSizePixel = 0,
Visible = false
}),
New("Frame", "ChatRenderFrame", {
Size = UDim2.new(1.02, 0, 1.01, 0),
Position = UDim2.new(0, 0, 0, 0),
BackgroundTransparency = 1,
ZIndex = 0,
Active = false
})
})
Spawn(function()
wait(0.5)
if IsPhone() then
self.Frame.Size = UDim2.new(0, 280, 0, 120)
end
end)
self.RenderFrame = self.Frame.ChatRenderFrame
if Chat:IsTouchDevice() then
self.Frame.Position = self.Configuration.Position
self.RenderFrame.Size = UDim2.new(1, 0, 1, 0)
elseif self.Frame.AbsoluteSize.Y > 120 then
Chat:ScreenSizeChanged()
self.Gui.Changed:connect(function(property)
if property == "AbsoluteSize" then
return Chat:ScreenSizeChanged()
end
end)
end
if forceChatGUI or Player.ChatMode == Enum.ChatMode.TextAndMenu then
if Chat:IsTouchDevice() then
Chat:CreateTouchButton()
else
Chat:CreateChatBar()
end
if self.ChatBar then
return self.ChatBar.FocusLost:connect(function(enterPressed)
Chat.GotFocus = false
if Chat:IsTouchDevice() then
self.ChatBar.Visible = false
self.TapToChatLabel.Visible = true
if self.TouchLabelBackground then
self.TouchLabelBackground.Visible = true
end
end
if enterPressed and self.ChatBar.Text ~= "" then
local cText = self.ChatBar.Text
if string.sub(self.ChatBar.Text, 1, 1) == "%" then
cText = "(TEAM) " .. tostring(string.sub(cText, 2, #cText))
pcall(function()
return PlayersService:TeamChat(cText)
end)
else
pcall(function()
return PlayersService:Chat(cText)
end)
end
if self.ClickToChatButton then
self.ClickToChatButton.Visible = true
end
self.ChatBar.Text = ""
end
return Spawn(function()
wait(5.0)
if not Chat.GotFocus then
Chat.Frame.Background.Visible = false
end
end)
end)
end
end
end
Input.OnMouseScroll = function(self)
Spawn(function()
while Input.Speed ~= 0 do
if Input.Speed > 1 then
while Input.Speed > 0 do
Input.Speed = Input.Speed - 1
wait(0.25)
end
elseif Input.Speed < 0 then
while Input.Speed < 0 do
Input.Speed = Input.Speed + 1
wait(0.25)
end
end
wait(0.03)
end
end)
if Chat:CheckIfInBounds(Input.Speed) then
return
end
return Chat:ScrollQueue()
end
Input.ApplySpeed = function(self, value)
Input.Speed = Input.Speed + value
if not self.Simulating then
return Input:OnMouseScroll()
end
end
Input.Initialize = function(self)
self.Mouse.WheelBackward:connect(function()
return Input:ApplySpeed(self.Configuration.DefaultSpeed)
end)
return self.Mouse.WheelForward:connect(function()
return Input:ApplySpeed(self.Configuration.DefaultSpeed)
end)
end
Chat.FindMessageInSafeChat = function(self, message, list)
local foundMessage = false
for msg, _ in pairs(list) do
if msg == message then
return true
end
if type(list[msg]) == "table" then
foundMessage = Chat:FindMessageInSafeChat(message, list[msg])
if foundMessage then
return true
end
end
end
return foundMessage
end
Chat.PlayerChatted = function(self, ...)
local args = {
...
}
local player, message
if args[2] then
player = args[2]
end
if args[3] then
message = args[3]
if string.sub(message, 1, 1) == "%" then
message = "(TEAM) " .. tostring(string.sub(message, 2, #message))
end
end
if PlayersService.ClassicChat then
if not (string.sub(message, 1, 3) == "/e " or string.sub(message, 1, 7) == "/emote ") and (forceChatGUI or Player.ChatMode == Enum.ChatMode.TextAndMenu) or (Player.ChatMode == Enum.ChatMode.Menu and string.sub(message, 1, 3) == "/sc") or Chat:FindMessageInSafeChat(message, self.SafeChat_List) then
return Chat:UpdateChat(player, message)
end
end
end
Chat.CullThread = function(self)
while true do
if #self.MessageQueue > 0 then
for _, field in pairs(self.MessageQueue) do
if field["SpawnTime"] and field["Player"] and field["Message"] and tick() - field["SpawnTime"] > self.Configuration.LifeTime then
field["Player"].Visible = false
field["Message"].Visible = false
end
end
end
wait(5.0)
end
end
Chat.LockAllFields = function(self, gui)
local children = gui:GetChildren()
for i = 1, #children do
children[i].RobloxLocked = true
if #children[i]:GetChildren() > 0 then
Chat:LockAllFields(children[i])
end
end
end
Chat.CoreGuiChanged = function(self, coreGuiType, enabled)
if coreGuiType == Enum.CoreGuiType.Chat or coreGuiType == Enum.CoreGuiType.All then
if self.Frame then
self.Frame.Visible = enabled
end
if not Chat:IsTouchDevice() and self.ChatBar then
self.ChatBar.Visible = enabled
return GuiService:SetGlobalGuiInset(0, 0, 0, (function()
if enabled then
return 20
else
return 0
end
end)())
end
end
end
Chat.Initialize = function(self)
Chat:CreateGui()
pcall(function()
Chat:CoreGuiChanged(Enum.CoreGuiType.Chat, Game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.Chat))
return Game.StarterGui.CoreGuiChangedSignal:connect(function(coreGuiType, enabled)
return Chat:CoreGuiChanged(coreGuiType, enabled)
end)
end)
self.EventListener = PlayersService.PlayerChatted:connect(function(...)
return Chat:PlayerChatted(...)
end)
self.MessageThread = coroutine.create(function() end)
coroutine.resume(self.MessageThread)
Input:Initialize()
PlayersService.ChildAdded:connect(function()
Chat.EventListener:disconnect()
self.EventListener = PlayersService.PlayerChatted:connect(function(...)
return Chat:PlayerChatted(...)
end)
end)
Spawn(function()
return Chat:CullThread()
end)
self.Frame.RobloxLocked = true
Chat:LockAllFields(self.Frame)
return self.Frame.DescendantAdded:connect(function(descendant)
return Chat:LockAllFields(descendant)
end)
end
return Chat:Initialize()