local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local TweenService = game:GetService("TweenService")
local CoreGui = game:GetService("CoreGui")
local UserInputService = game:GetService("UserInputService")
local HttpService = game:GetService("HttpService")
local localPlayer = Players.LocalPlayer
local userIdStr = tostring(localPlayer.UserId)
local folderPath = "ASCEND"
local subFolderPath = "ASCEND/CareForPets"
local filePath = "ASCEND/CareForPets/WantedCats.json"
local targetCats = {}
local defaultCats = { "lilac", "espresso", "vanilla bean", "soda" }
local function loadSettings()
if not isfolder(folderPath) then makefolder(folderPath) end
if not isfolder(subFolderPath) then makefolder(subFolderPath) end
if isfile(filePath) then
local success, data = pcall(function()
return HttpService:JSONDecode(readfile(filePath))
end)
if success and type(data) == "table" then
targetCats = data
else
for _, cat in ipairs(defaultCats) do targetCats[cat] = true end
writefile(filePath, HttpService:JSONEncode(targetCats))
end
else
for _, cat in ipairs(defaultCats) do targetCats[cat] = true end
writefile(filePath, HttpService:JSONEncode(targetCats))
end
end
local function saveSettings()
writefile(filePath, HttpService:JSONEncode(targetCats))
end
loadSettings()
local showPermPets = true
local playerBases = Workspace:FindFirstChild("PlayerBases")
local myBase = playerBases and playerBases:FindFirstChild(userIdStr)
local baseCatsFolder = myBase and myBase:FindFirstChild("Cats")
local cafeInteriors = Workspace:FindFirstChild("CafeInteriors")
local myCafe = cafeInteriors and cafeInteriors:FindFirstChild(userIdStr)
local cafeCatsFolder = myCafe and myCafe:FindFirstChild("CafeCats")
if not baseCatsFolder or not cafeCatsFolder then return end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "DarkCastleCatTracker"
screenGui.ResetOnSpawn = false
screenGui.Parent = CoreGui
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 520, 0, 255)
mainFrame.Position = UDim2.new(0.5, -260, 0.1, 0)
mainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
mainFrame.BorderSizePixel = 0
mainFrame.ClipsDescendants = true
mainFrame.Active = true
mainFrame.Parent = screenGui
local uiCorner = Instance.new("UICorner")
uiCorner.CornerRadius = UDim.new(0, 8)
uiCorner.Parent = mainFrame
local dragButton = Instance.new("TextButton")
dragButton.Size = UDim2.new(1, 0, 1, 0)
dragButton.Position = UDim2.new(0, 0, 0, 0)
dragButton.BackgroundTransparency = 1
dragButton.Text = ""
dragButton.ZIndex = 1
dragButton.Parent = mainFrame
local leftPanel = Instance.new("Frame")
leftPanel.Size = UDim2.new(0, 180, 1, -20)
leftPanel.Position = UDim2.new(0, 10, 0, 10)
leftPanel.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
leftPanel.BorderSizePixel = 0
leftPanel.Active = false
leftPanel.ZIndex = 2
leftPanel.Parent = mainFrame
local leftCorner = Instance.new("UICorner")
leftCorner.CornerRadius = UDim.new(0, 6)
leftCorner.Parent = leftPanel
local leftTitle = Instance.new("TextLabel")
leftTitle.Size = UDim2.new(1, -30, 0, 30)
leftTitle.BackgroundTransparency = 1
leftTitle.Font = Enum.Font.GothamBold
leftTitle.Text = " WANTED CATS"
leftTitle.TextColor3 = Color3.fromRGB(180, 0, 0)
leftTitle.TextSize = 13
leftTitle.TextXAlignment = Enum.TextXAlignment.Left
leftTitle.ZIndex = 3
leftTitle.Parent = leftPanel
local minBtn = Instance.new("TextButton")
minBtn.Size = UDim2.new(0, 20, 0, 20)
minBtn.Position = UDim2.new(1, -25, 0, 5)
minBtn.BackgroundTransparency = 1
minBtn.Font = Enum.Font.GothamBold
minBtn.Text = "v"
minBtn.TextColor3 = Color3.fromRGB(120, 120, 120)
minBtn.TextSize = 14
minBtn.ZIndex = 6
minBtn.Parent = leftPanel
local leftList = Instance.new("TextLabel")
leftList.Size = UDim2.new(1, -20, 1, -75)
leftList.Position = UDim2.new(0, 10, 0, 35)
leftList.BackgroundTransparency = 1
leftList.Font = Enum.Font.GothamMedium
leftList.Text = ""
leftList.TextColor3 = Color3.fromRGB(160, 160, 160)
leftList.TextSize = 13
leftList.TextYAlignment = Enum.TextYAlignment.Top
leftList.TextXAlignment = Enum.TextXAlignment.Left
leftList.LineHeight = 1.3
leftList.ZIndex = 3
leftList.Parent = leftPanel
local catInput = Instance.new("TextBox")
catInput.Size = UDim2.new(1, -20, 0, 24)
catInput.Position = UDim2.new(0, 10, 1, -34)
catInput.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
catInput.BorderSizePixel = 0
catInput.Font = Enum.Font.Gotham
catInput.PlaceholderText = "Add/Remove Cat..."
catInput.PlaceholderColor3 = Color3.fromRGB(80, 80, 80)
catInput.Text = ""
catInput.TextColor3 = Color3.fromRGB(200, 200, 200)
catInput.TextSize = 12
catInput.ZIndex = 4
catInput.ClearTextOnFocus = true
catInput.Parent = leftPanel
local inputCorner = Instance.new("UICorner")
inputCorner.CornerRadius = UDim.new(0, 4)
inputCorner.Parent = catInput
local baseContainer = Instance.new("Frame")
baseContainer.Size = UDim2.new(0, 310, 0, 95)
baseContainer.Position = UDim2.new(0, 200, 0, 10)
baseContainer.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
baseContainer.BorderSizePixel = 0
baseContainer.ClipsDescendants = true
baseContainer.Active = false
baseContainer.ZIndex = 2
baseContainer.Parent = mainFrame
local baseContainerCorner = Instance.new("UICorner")
baseContainerCorner.CornerRadius = UDim.new(0, 6)
baseContainerCorner.Parent = baseContainer
local baseTitle = Instance.new("TextLabel")
baseTitle.Size = UDim2.new(1, 0, 0, 25)
baseTitle.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
baseTitle.BorderSizePixel = 0
baseTitle.Font = Enum.Font.GothamBold
baseTitle.Text = " BASE CATS"
baseTitle.TextColor3 = Color3.fromRGB(200, 200, 200)
baseTitle.TextSize = 11
baseTitle.TextXAlignment = Enum.TextXAlignment.Left
baseTitle.ZIndex = 3
baseTitle.Parent = baseContainer
local basePanel = Instance.new("ScrollingFrame")
basePanel.Size = UDim2.new(1, 0, 1, -25)
basePanel.Position = UDim2.new(0, 0, 0, 25)
basePanel.BackgroundTransparency = 1
basePanel.BorderSizePixel = 0
basePanel.CanvasSize = UDim2.new(0, 0, 0, 0)
basePanel.AutomaticCanvasSize = Enum.AutomaticSize.Y
basePanel.ScrollBarThickness = 2
basePanel.ZIndex = 3
basePanel.Parent = baseContainer
local baseLayout = Instance.new("UIListLayout")
baseLayout.Padding = UDim.new(0, 4)
baseLayout.Parent = basePanel
local cafeContainer = Instance.new("Frame")
cafeContainer.Size = UDim2.new(0, 310, 0, 95)
cafeContainer.Position = UDim2.new(0, 200, 0, 115)
cafeContainer.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
cafeContainer.BorderSizePixel = 0
cafeContainer.ClipsDescendants = true
cafeContainer.Active = false
cafeContainer.ZIndex = 2
cafeContainer.Parent = mainFrame
local cafeContainerCorner = Instance.new("UICorner")
cafeContainerCorner.CornerRadius = UDim.new(0, 6)
cafeContainerCorner.Parent = cafeContainer
local cafeTitle = Instance.new("TextLabel")
cafeTitle.Size = UDim2.new(1, 0, 0, 25)
cafeTitle.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
cafeTitle.BorderSizePixel = 0
cafeTitle.Font = Enum.Font.GothamBold
cafeTitle.Text = " CAFE CATS"
cafeTitle.TextColor3 = Color3.fromRGB(200, 200, 200)
cafeTitle.TextSize = 11
cafeTitle.TextXAlignment = Enum.TextXAlignment.Left
cafeTitle.ZIndex = 3
cafeTitle.Parent = cafeContainer
local cafePanel = Instance.new("ScrollingFrame")
cafePanel.Size = UDim2.new(1, 0, 1, -25)
cafePanel.Position = UDim2.new(0, 0, 0, 25)
cafePanel.BackgroundTransparency = 1
cafePanel.BorderSizePixel = 0
cafePanel.CanvasSize = UDim2.new(0, 0, 0, 0)
cafePanel.AutomaticCanvasSize = Enum.AutomaticSize.Y
cafePanel.ScrollBarThickness = 2
cafePanel.ZIndex = 3
cafePanel.Parent = cafeContainer
local cafeLayout = Instance.new("UIListLayout")
cafeLayout.Padding = UDim.new(0, 4)
cafeLayout.Parent = cafePanel
local checkboxContainer = Instance.new("Frame")
checkboxContainer.Size = UDim2.new(0, 310, 0, 20)
checkboxContainer.Position = UDim2.new(0, 200, 0, 222)
checkboxContainer.BackgroundTransparency = 1
checkboxContainer.ZIndex = 3
checkboxContainer.Parent = mainFrame
local checkboxBtn = Instance.new("TextButton")
checkboxBtn.Size = UDim2.new(0, 14, 0, 14)
checkboxBtn.Position = UDim2.new(0, 2, 0, 3)
checkboxBtn.BackgroundColor3 = Color3.fromRGB(180, 0, 0)
checkboxBtn.BorderSizePixel = 0
checkboxBtn.Font = Enum.Font.GothamBold
checkboxBtn.Text = "β"
checkboxBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
checkboxBtn.TextSize = 11
checkboxBtn.ZIndex = 4
checkboxBtn.Parent = checkboxContainer
local checkboxCorner = Instance.new("UICorner")
checkboxCorner.CornerRadius = UDim.new(0, 3)
checkboxCorner.Parent = checkboxBtn
local checkboxLabel = Instance.new("TextLabel")
checkboxLabel.Size = UDim2.new(1, -25, 1, 0)
checkboxLabel.Position = UDim2.new(0, 22, 0, 0)
checkboxLabel.BackgroundTransparency = 1
checkboxLabel.Font = Enum.Font.GothamMedium
checkboxLabel.Text = "Show Perm Pets"
checkboxLabel.TextColor3 = Color3.fromRGB(160, 160, 160)
checkboxLabel.TextSize = 12
checkboxLabel.TextXAlignment = Enum.TextXAlignment.Left
checkboxLabel.ZIndex = 4
checkboxLabel.Parent = checkboxContainer
local dragging, dragInput, dragStart, startPos
local dragTotalDelta = 0
local function updateDrag(input)
local delta = input.Position - dragStart
dragTotalDelta = dragTotalDelta + delta.Magnitude
mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
local function setupDrag(guiElement)
guiElement.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = mainFrame.Position
dragTotalDelta = 0
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
guiElement.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
dragInput = input
end
end)
end
setupDrag(dragButton)
UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
updateDrag(input)
end
end)
local function updateLeftPanelText()
local text = ""
for cat, _ in pairs(targetCats) do
local formattedName = cat:gsub("(%a)([%w_']*)", function(first, rest) return first:upper()..rest:lower() end)
text = text .. "β’ " .. formattedName .. "\n"
end
leftList.Text = text
end
local function updateList(folder, uiPanel)
for _, child in ipairs(uiPanel:GetChildren()) do
if child:IsA("TextLabel") then child:Destroy() end
end
for _, cat in ipairs(folder:GetChildren()) do
local isPerma = cat:GetAttribute("isPermaPet")
if not showPermPets and isPerma == true then continue end
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, -10, 0, 20)
lbl.BackgroundTransparency = 1
lbl.Font = Enum.Font.Gotham
lbl.Text = " " .. cat.Name
lbl.TextSize = 13
lbl.ZIndex = 4
local cleanName = string.lower(cat.Name)
if targetCats[cleanName] then
if isPerma == true then
lbl.TextColor3 = Color3.fromRGB(0, 180, 100)
else
lbl.TextColor3 = Color3.fromRGB(255, 70, 70)
end
else
lbl.TextColor3 = Color3.fromRGB(170, 170, 170)
end
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Parent = uiPanel
end
end
catInput.FocusLost:Connect(function(enterPressed)
if not enterPressed or catInput.Text == "" then return end
local text = string.lower(catInput.Text):match("^%s*(.-)%s*$")
if targetCats[text] then
targetCats[text] = nil
else
targetCats[text] = true
end
saveSettings()
updateLeftPanelText()
updateList(baseCatsFolder, basePanel)
updateList(cafeCatsFolder, cafePanel)
catInput.Text = ""
end)
local minimized = false
local tweenInfo = TweenInfo.new(0.3, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)
minBtn.MouseButton1Click:Connect(function()
minimized = not minimized
local targetSize, targetPosOffset
if minimized then
targetSize = UDim2.new(0, 180, 0, 30)
targetPosOffset = Vector2.new(170, 112)
minBtn.Text = "^"
leftPanel.Size = UDim2.new(1, 0, 1, 0)
leftPanel.Position = UDim2.new(0, 0, 0, 0)
leftList.Visible = false
catInput.Visible = false
baseContainer.Visible = false
cafeContainer.Visible = false
checkboxContainer.Visible = false
else
targetSize = UDim2.new(0, 520, 0, 255)
targetPosOffset = Vector2.new(-170, -112)
minBtn.Text = "v"
leftPanel.Size = UDim2.new(0, 180, 1, -20)
leftPanel.Position = UDim2.new(0, 10, 0, 10)
leftList.Visible = true
catInput.Visible = true
baseContainer.Visible = true
cafeContainer.Visible = true
checkboxContainer.Visible = true
end
local currentPos = mainFrame.Position
local newPos = UDim2.new(currentPos.X.Scale, currentPos.X.Offset + targetPosOffset.X, currentPos.Y.Scale, currentPos.Y.Offset + targetPosOffset.Y)
TweenService:Create(mainFrame, tweenInfo, {Size = targetSize, Position = newPos}):Play()
end)
local function alertUI(catName, location)
local alert = Instance.new("Frame")
alert.Size = UDim2.new(0, 260, 0, 50)
alert.Position = UDim2.new(1, 30, 0.8, 0)
alert.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
alert.BorderSizePixel = 0
alert.ClipsDescendants = true
alert.Parent = screenGui
local aCorner = Instance.new("UICorner")
aCorner.CornerRadius = UDim.new(0, 6)
aCorner.Parent = alert
local line = Instance.new("Frame")
line.Size = UDim2.new(0, 4, 1, 0)
line.BackgroundColor3 = Color3.fromRGB(180, 0, 0)
line.BorderSizePixel = 0
line.Parent = alert
local txt = Instance.new("TextLabel")
txt.Size = UDim2.new(1, -20, 1, 0)
txt.Position = UDim2.new(0, 15, 0, 0)
txt.BackgroundTransparency = 1
txt.Font = Enum.Font.GothamMedium
txt.Text = string.format("%s SPAWNED (%s)", string.upper(catName), location)
txt.TextColor3 = Color3.fromRGB(240, 240, 240)
txt.TextSize = 12
txt.TextXAlignment = Enum.TextXAlignment.Left
txt.Parent = alert
local tInfo = TweenInfo.new(0.4, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)
TweenService:Create(alert, tInfo, {Position = UDim2.new(1, -280, 0.8, 0)}):Play()
task.delay(4, function()
local close = TweenService:Create(alert, tInfo, {Position = UDim2.new(1, 30, 0.8, 0)})
close:Play()
close.Completed:Connect(function() alert:Destroy() end)
end)
end
checkboxBtn.MouseButton1Click:Connect(function()
showPermPets = not showPermPets
if showPermPets then
checkboxBtn.BackgroundColor3 = Color3.fromRGB(180, 0, 0)
checkboxBtn.Text = "β"
else
checkboxBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
checkboxBtn.Text = ""
end
updateList(baseCatsFolder, basePanel)
updateList(cafeCatsFolder, cafePanel)
end)
baseCatsFolder.ChildAdded:Connect(function(child)
updateList(baseCatsFolder, basePanel)
task.wait(0.05)
if targetCats[string.lower(child.Name)] then
local isPerma = child:GetAttribute("isPermaPet")
if isPerma ~= true then
alertUI(child.Name, "BASE")
end
end
end)
baseCatsFolder.ChildRemoved:Connect(function() updateList(baseCatsFolder, basePanel) end)
cafeCatsFolder.ChildAdded:Connect(function(child)
updateList(cafeCatsFolder, cafePanel)
task.wait(0.05)
if targetCats[string.lower(child.Name)] then
local isPerma = child:GetAttribute("isPermaPet")
if isPerma ~= true then
alertUI(child.Name, "CAFE")
end
end
end)
cafeCatsFolder.ChildRemoved:Connect(function() updateList(cafeCatsFolder, cafePanel) end)
updateLeftPanelText()
updateList(baseCatsFolder, basePanel)
updateList(cafeCatsFolder, cafePanel)Cat notifier when they spawn.
has ui
good enough
improve yourself π€·ββοΈπ€·ββοΈππ
1local Players = game:GetService("Players")
2local Workspace = game:GetService("Workspace")
3local TweenService = game:GetService("TweenService")
4local CoreGui = game:GetService("CoreGui")
5local UserInputService = game:GetService("UserInputService")
6local HttpService = game:GetService("HttpService")
7
8local localPlayer = Players.LocalPlayer
9local userIdStr = tostring(localPlayer.UserId)
10
11local folderPath = "ASCEND"
12local subFolderPath = "ASCEND/CareForPets"
13local filePath = "ASCEND/CareForPets/WantedCats.json"
14
15local targetCats = {}
16local defaultCats = { "lilac", "espresso", "vanilla bean", "soda" }
17
18local function loadSettings()
19 if not isfolder(folderPath) then makefolder(folderPath) end
20 if not isfolder(subFolderPath) then makefolder(subFolderPath) end
21
22 if isfile(filePath) then
23 local success, data = pcall(function()
24 return HttpService:JSONDecode(readfile(filePath))
25 end)
26 if success and type(data) == "table" then
27 targetCats = data
28 else
29 for _, cat in ipairs(defaultCats) do targetCats[cat] = true end
30 writefile(filePath, HttpService:JSONEncode(targetCats))
31 end
32 else
33 for _, cat in ipairs(defaultCats) do targetCats[cat] = true end
34 writefile(filePath, HttpService:JSONEncode(targetCats))
35 end
36end
37
38local function saveSettings()
39 writefile(filePath, HttpService:JSONEncode(targetCats))
40end
41
42loadSettings()
43
44local showPermPets = true
45
46local playerBases = Workspace:FindFirstChild("PlayerBases")
47local myBase = playerBases and playerBases:FindFirstChild(userIdStr)
48local baseCatsFolder = myBase and myBase:FindFirstChild("Cats")
49
50local cafeInteriors = Workspace:FindFirstChild("CafeInteriors")
51local myCafe = cafeInteriors and cafeInteriors:FindFirstChild(userIdStr)
52local cafeCatsFolder = myCafe and myCafe:FindFirstChild("CafeCats")
53
54if not baseCatsFolder or not cafeCatsFolder then return end
55
56local screenGui = Instance.new("ScreenGui")
57screenGui.Name = "DarkCastleCatTracker"
58screenGui.ResetOnSpawn = false
59screenGui.Parent = CoreGui
60
61local mainFrame = Instance.new("Frame")
62mainFrame.Size = UDim2.new(0, 520, 0, 255)
63mainFrame.Position = UDim2.new(0.5, -260, 0.1, 0)
64mainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
65mainFrame.BorderSizePixel = 0
66mainFrame.ClipsDescendants = true
67mainFrame.Active = true
68mainFrame.Parent = screenGui
69
70local uiCorner = Instance.new("UICorner")
71uiCorner.CornerRadius = UDim.new(0, 8)
72uiCorner.Parent = mainFrame
73
74local dragButton = Instance.new("TextButton")
75dragButton.Size = UDim2.new(1, 0, 1, 0)
76dragButton.Position = UDim2.new(0, 0, 0, 0)
77dragButton.BackgroundTransparency = 1
78dragButton.Text = ""
79dragButton.ZIndex = 1
80dragButton.Parent = mainFrame
81
82local leftPanel = Instance.new("Frame")
83leftPanel.Size = UDim2.new(0, 180, 1, -20)
84leftPanel.Position = UDim2.new(0, 10, 0, 10)
85leftPanel.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
86leftPanel.BorderSizePixel = 0
87leftPanel.Active = false
88leftPanel.ZIndex = 2
89leftPanel.Parent = mainFrame
90
91local leftCorner = Instance.new("UICorner")
92leftCorner.CornerRadius = UDim.new(0, 6)
93leftCorner.Parent = leftPanel
94
95local leftTitle = Instance.new("TextLabel")
96leftTitle.Size = UDim2.new(1, -30, 0, 30)
97leftTitle.BackgroundTransparency = 1
98leftTitle.Font = Enum.Font.GothamBold
99leftTitle.Text = " WANTED CATS"
100leftTitle.TextColor3 = Color3.fromRGB(180, 0, 0)
101leftTitle.TextSize = 13
102leftTitle.TextXAlignment = Enum.TextXAlignment.Left
103leftTitle.ZIndex = 3
104leftTitle.Parent = leftPanel
105
106local minBtn = Instance.new("TextButton")
107minBtn.Size = UDim2.new(0, 20, 0, 20)
108minBtn.Position = UDim2.new(1, -25, 0, 5)
109minBtn.BackgroundTransparency = 1
110minBtn.Font = Enum.Font.GothamBold
111minBtn.Text = "v"
112minBtn.TextColor3 = Color3.fromRGB(120, 120, 120)
113minBtn.TextSize = 14
114minBtn.ZIndex = 6
115minBtn.Parent = leftPanel
116
117local leftList = Instance.new("TextLabel")
118leftList.Size = UDim2.new(1, -20, 1, -75)
119leftList.Position = UDim2.new(0, 10, 0, 35)
120leftList.BackgroundTransparency = 1
121leftList.Font = Enum.Font.GothamMedium
122leftList.Text = ""
123leftList.TextColor3 = Color3.fromRGB(160, 160, 160)
124leftList.TextSize = 13
125leftList.TextYAlignment = Enum.TextYAlignment.Top
126leftList.TextXAlignment = Enum.TextXAlignment.Left
127leftList.LineHeight = 1.3
128leftList.ZIndex = 3
129leftList.Parent = leftPanel
130
131local catInput = Instance.new("TextBox")
132catInput.Size = UDim2.new(1, -20, 0, 24)
133catInput.Position = UDim2.new(0, 10, 1, -34)
134catInput.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
135catInput.BorderSizePixel = 0
136catInput.Font = Enum.Font.Gotham
137catInput.PlaceholderText = "Add/Remove Cat..."
138catInput.PlaceholderColor3 = Color3.fromRGB(80, 80, 80)
139catInput.Text = ""
140catInput.TextColor3 = Color3.fromRGB(200, 200, 200)
141catInput.TextSize = 12
142catInput.ZIndex = 4
143catInput.ClearTextOnFocus = true
144catInput.Parent = leftPanel
145
146local inputCorner = Instance.new("UICorner")
147inputCorner.CornerRadius = UDim.new(0, 4)
148inputCorner.Parent = catInput
149
150local baseContainer = Instance.new("Frame")
151baseContainer.Size = UDim2.new(0, 310, 0, 95)
152baseContainer.Position = UDim2.new(0, 200, 0, 10)
153baseContainer.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
154baseContainer.BorderSizePixel = 0
155baseContainer.ClipsDescendants = true
156baseContainer.Active = false
157baseContainer.ZIndex = 2
158baseContainer.Parent = mainFrame
159
160local baseContainerCorner = Instance.new("UICorner")
161baseContainerCorner.CornerRadius = UDim.new(0, 6)
162baseContainerCorner.Parent = baseContainer
163
164local baseTitle = Instance.new("TextLabel")
165baseTitle.Size = UDim2.new(1, 0, 0, 25)
166baseTitle.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
167baseTitle.BorderSizePixel = 0
168baseTitle.Font = Enum.Font.GothamBold
169baseTitle.Text = " BASE CATS"
170baseTitle.TextColor3 = Color3.fromRGB(200, 200, 200)
171baseTitle.TextSize = 11
172baseTitle.TextXAlignment = Enum.TextXAlignment.Left
173baseTitle.ZIndex = 3
174baseTitle.Parent = baseContainer
175
176local basePanel = Instance.new("ScrollingFrame")
177basePanel.Size = UDim2.new(1, 0, 1, -25)
178basePanel.Position = UDim2.new(0, 0, 0, 25)
179basePanel.BackgroundTransparency = 1
180basePanel.BorderSizePixel = 0
181basePanel.CanvasSize = UDim2.new(0, 0, 0, 0)
182basePanel.AutomaticCanvasSize = Enum.AutomaticSize.Y
183basePanel.ScrollBarThickness = 2
184basePanel.ZIndex = 3
185basePanel.Parent = baseContainer
186
187local baseLayout = Instance.new("UIListLayout")
188baseLayout.Padding = UDim.new(0, 4)
189baseLayout.Parent = basePanel
190
191local cafeContainer = Instance.new("Frame")
192cafeContainer.Size = UDim2.new(0, 310, 0, 95)
193cafeContainer.Position = UDim2.new(0, 200, 0, 115)
194cafeContainer.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
195cafeContainer.BorderSizePixel = 0
196cafeContainer.ClipsDescendants = true
197cafeContainer.Active = false
198cafeContainer.ZIndex = 2
199cafeContainer.Parent = mainFrame
200
201local cafeContainerCorner = Instance.new("UICorner")
202cafeContainerCorner.CornerRadius = UDim.new(0, 6)
203cafeContainerCorner.Parent = cafeContainer
204
205local cafeTitle = Instance.new("TextLabel")
206cafeTitle.Size = UDim2.new(1, 0, 0, 25)
207cafeTitle.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
208cafeTitle.BorderSizePixel = 0
209cafeTitle.Font = Enum.Font.GothamBold
210cafeTitle.Text = " CAFE CATS"
211cafeTitle.TextColor3 = Color3.fromRGB(200, 200, 200)
212cafeTitle.TextSize = 11
213cafeTitle.TextXAlignment = Enum.TextXAlignment.Left
214cafeTitle.ZIndex = 3
215cafeTitle.Parent = cafeContainer
216
217local cafePanel = Instance.new("ScrollingFrame")
218cafePanel.Size = UDim2.new(1, 0, 1, -25)
219cafePanel.Position = UDim2.new(0, 0, 0, 25)
220cafePanel.BackgroundTransparency = 1
221cafePanel.BorderSizePixel = 0
222cafePanel.CanvasSize = UDim2.new(0, 0, 0, 0)
223cafePanel.AutomaticCanvasSize = Enum.AutomaticSize.Y
224cafePanel.ScrollBarThickness = 2
225cafePanel.ZIndex = 3
226cafePanel.Parent = cafeContainer
227
228local cafeLayout = Instance.new("UIListLayout")
229cafeLayout.Padding = UDim.new(0, 4)
230cafeLayout.Parent = cafePanel
231
232local checkboxContainer = Instance.new("Frame")
233checkboxContainer.Size = UDim2.new(0, 310, 0, 20)
234checkboxContainer.Position = UDim2.new(0, 200, 0, 222)
235checkboxContainer.BackgroundTransparency = 1
236checkboxContainer.ZIndex = 3
237checkboxContainer.Parent = mainFrame
238
239local checkboxBtn = Instance.new("TextButton")
240checkboxBtn.Size = UDim2.new(0, 14, 0, 14)
241checkboxBtn.Position = UDim2.new(0, 2, 0, 3)
242checkboxBtn.BackgroundColor3 = Color3.fromRGB(180, 0, 0)
243checkboxBtn.BorderSizePixel = 0
244checkboxBtn.Font = Enum.Font.GothamBold
245checkboxBtn.Text = "β"
246checkboxBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
247checkboxBtn.TextSize = 11
248checkboxBtn.ZIndex = 4
249checkboxBtn.Parent = checkboxContainer
250
251local checkboxCorner = Instance.new("UICorner")
252checkboxCorner.CornerRadius = UDim.new(0, 3)
253checkboxCorner.Parent = checkboxBtn
254
255local checkboxLabel = Instance.new("TextLabel")
256checkboxLabel.Size = UDim2.new(1, -25, 1, 0)
257checkboxLabel.Position = UDim2.new(0, 22, 0, 0)
258checkboxLabel.BackgroundTransparency = 1
259checkboxLabel.Font = Enum.Font.GothamMedium
260checkboxLabel.Text = "Show Perm Pets"
261checkboxLabel.TextColor3 = Color3.fromRGB(160, 160, 160)
262checkboxLabel.TextSize = 12
263checkboxLabel.TextXAlignment = Enum.TextXAlignment.Left
264checkboxLabel.ZIndex = 4
265checkboxLabel.Parent = checkboxContainer
266
267local dragging, dragInput, dragStart, startPos
268local dragTotalDelta = 0
269
270local function updateDrag(input)
271 local delta = input.Position - dragStart
272 dragTotalDelta = dragTotalDelta + delta.Magnitude
273 mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
274end
275
276local function setupDrag(guiElement)
277 guiElement.InputBegan:Connect(function(input)
278 if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
279 dragging = true
280 dragStart = input.Position
281 startPos = mainFrame.Position
282 dragTotalDelta = 0
283 input.Changed:Connect(function()
284 if input.UserInputState == Enum.UserInputState.End then
285 dragging = false
286 end
287 end)
288 end
289 end)
290
291 guiElement.InputChanged:Connect(function(input)
292 if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
293 dragInput = input
294 end
295 end)
296end
297
298setupDrag(dragButton)
299
300UserInputService.InputChanged:Connect(function(input)
301 if input == dragInput and dragging then
302 updateDrag(input)
303 end
304end)
305
306local function updateLeftPanelText()
307 local text = ""
308 for cat, _ in pairs(targetCats) do
309 local formattedName = cat:gsub("(%a)([%w_']*)", function(first, rest) return first:upper()..rest:lower() end)
310 text = text .. "β’ " .. formattedName .. "\n"
311 end
312 leftList.Text = text
313end
314
315local function updateList(folder, uiPanel)
316 for _, child in ipairs(uiPanel:GetChildren()) do
317 if child:IsA("TextLabel") then child:Destroy() end
318 end
319
320 for _, cat in ipairs(folder:GetChildren()) do
321 local isPerma = cat:GetAttribute("isPermaPet")
322 if not showPermPets and isPerma == true then continue end
323
324 local lbl = Instance.new("TextLabel")
325 lbl.Size = UDim2.new(1, -10, 0, 20)
326 lbl.BackgroundTransparency = 1
327 lbl.Font = Enum.Font.Gotham
328 lbl.Text = " " .. cat.Name
329 lbl.TextSize = 13
330 lbl.ZIndex = 4
331
332 local cleanName = string.lower(cat.Name)
333 if targetCats[cleanName] then
334 if isPerma == true then
335 lbl.TextColor3 = Color3.fromRGB(0, 180, 100)
336 else
337 lbl.TextColor3 = Color3.fromRGB(255, 70, 70)
338 end
339 else
340 lbl.TextColor3 = Color3.fromRGB(170, 170, 170)
341 end
342
343 lbl.TextXAlignment = Enum.TextXAlignment.Left
344 lbl.Parent = uiPanel
345 end
346end
347
348catInput.FocusLost:Connect(function(enterPressed)
349 if not enterPressed or catInput.Text == "" then return end
350
351 local text = string.lower(catInput.Text):match("^%s*(.-)%s*$")
352 if targetCats[text] then
353 targetCats[text] = nil
354 else
355 targetCats[text] = true
356 end
357
358 saveSettings()
359 updateLeftPanelText()
360 updateList(baseCatsFolder, basePanel)
361 updateList(cafeCatsFolder, cafePanel)
362 catInput.Text = ""
363end)
364
365local minimized = false
366local tweenInfo = TweenInfo.new(0.3, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)
367
368minBtn.MouseButton1Click:Connect(function()
369 minimized = not minimized
370
371 local targetSize, targetPosOffset
372 if minimized then
373 targetSize = UDim2.new(0, 180, 0, 30)
374 targetPosOffset = Vector2.new(170, 112)
375 minBtn.Text = "^"
376
377 leftPanel.Size = UDim2.new(1, 0, 1, 0)
378 leftPanel.Position = UDim2.new(0, 0, 0, 0)
379 leftList.Visible = false
380 catInput.Visible = false
381 baseContainer.Visible = false
382 cafeContainer.Visible = false
383 checkboxContainer.Visible = false
384 else
385 targetSize = UDim2.new(0, 520, 0, 255)
386 targetPosOffset = Vector2.new(-170, -112)
387 minBtn.Text = "v"
388
389 leftPanel.Size = UDim2.new(0, 180, 1, -20)
390 leftPanel.Position = UDim2.new(0, 10, 0, 10)
391 leftList.Visible = true
392 catInput.Visible = true
393 baseContainer.Visible = true
394 cafeContainer.Visible = true
395 checkboxContainer.Visible = true
396 end
397
398 local currentPos = mainFrame.Position
399 local newPos = UDim2.new(currentPos.X.Scale, currentPos.X.Offset + targetPosOffset.X, currentPos.Y.Scale, currentPos.Y.Offset + targetPosOffset.Y)
400
401 TweenService:Create(mainFrame, tweenInfo, {Size = targetSize, Position = newPos}):Play()
402end)
403
404local function alertUI(catName, location)
405 local alert = Instance.new("Frame")
406 alert.Size = UDim2.new(0, 260, 0, 50)
407 alert.Position = UDim2.new(1, 30, 0.8, 0)
408 alert.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
409 alert.BorderSizePixel = 0
410 alert.ClipsDescendants = true
411 alert.Parent = screenGui
412
413 local aCorner = Instance.new("UICorner")
414 aCorner.CornerRadius = UDim.new(0, 6)
415 aCorner.Parent = alert
416
417 local line = Instance.new("Frame")
418 line.Size = UDim2.new(0, 4, 1, 0)
419 line.BackgroundColor3 = Color3.fromRGB(180, 0, 0)
420 line.BorderSizePixel = 0
421 line.Parent = alert
422
423 local txt = Instance.new("TextLabel")
424 txt.Size = UDim2.new(1, -20, 1, 0)
425 txt.Position = UDim2.new(0, 15, 0, 0)
426 txt.BackgroundTransparency = 1
427 txt.Font = Enum.Font.GothamMedium
428 txt.Text = string.format("%s SPAWNED (%s)", string.upper(catName), location)
429 txt.TextColor3 = Color3.fromRGB(240, 240, 240)
430 txt.TextSize = 12
431 txt.TextXAlignment = Enum.TextXAlignment.Left
432 txt.Parent = alert
433
434 local tInfo = TweenInfo.new(0.4, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)
435 TweenService:Create(alert, tInfo, {Position = UDim2.new(1, -280, 0.8, 0)}):Play()
436
437 task.delay(4, function()
438 local close = TweenService:Create(alert, tInfo, {Position = UDim2.new(1, 30, 0.8, 0)})
439 close:Play()
440 close.Completed:Connect(function() alert:Destroy() end)
441 end)
442end
443
444checkboxBtn.MouseButton1Click:Connect(function()
445 showPermPets = not showPermPets
446 if showPermPets then
447 checkboxBtn.BackgroundColor3 = Color3.fromRGB(180, 0, 0)
448 checkboxBtn.Text = "β"
449 else
450 checkboxBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
451 checkboxBtn.Text = ""
452 end
453 updateList(baseCatsFolder, basePanel)
454 updateList(cafeCatsFolder, cafePanel)
455end)
456
457baseCatsFolder.ChildAdded:Connect(function(child)
458 updateList(baseCatsFolder, basePanel)
459 task.wait(0.05)
460 if targetCats[string.lower(child.Name)] then
461 local isPerma = child:GetAttribute("isPermaPet")
462 if isPerma ~= true then
463 alertUI(child.Name, "BASE")
464 end
465 end
466end)
467baseCatsFolder.ChildRemoved:Connect(function() updateList(baseCatsFolder, basePanel) end)
468
469cafeCatsFolder.ChildAdded:Connect(function(child)
470 updateList(cafeCatsFolder, cafePanel)
471 task.wait(0.05)
472 if targetCats[string.lower(child.Name)] then
473 local isPerma = child:GetAttribute("isPermaPet")
474 if isPerma ~= true then
475 alertUI(child.Name, "CAFE")
476 end
477 end
478end)
479cafeCatsFolder.ChildRemoved:Connect(function() updateList(cafeCatsFolder, cafePanel) end)
480
481updateLeftPanelText()
482updateList(baseCatsFolder, basePanel)
483updateList(cafeCatsFolder, cafePanel)