Back to Scripts
Err X AI BETa
ScriptBlox
Universal
Free
Game: Universal Script 📌
93
Views
0
Likes
1
Dislikes
diecrafter
offline
Features
Not virus
Tags
Script Code
-- XErr AI Engine 1.7 Beta (Resilient)
-- LocalScript -> StarterPlayerScripts
local Players = game:GetService("Players")
local HttpService = game:GetService("HttpService")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local PlayerGui = player:WaitForChild("PlayerGui")
-- unique GUI name to avoid accidental deletion by other scripts
local GUI_BASE_NAME = "XErr_AIE_1_7_Beta__" .. tostring(math.random(10000,99999))
-- track join times
local joinTimes = {}
Players.PlayerAdded:Connect(function(p) joinTimes[p.UserId] = os.time() end)
for _,p in ipairs(Players:GetPlayers()) do
if not joinTimes[p.UserId] then joinTimes[p.UserId] = os.time() end
end
-- helper: safe pcall wrapper
local function safe(fn,...)
local ok, res = pcall(fn, ...)
if not ok then
warn("[XErr] safe error:", res)
end
return ok, res
end
-- date formatting
local function formatDate(unix)
local t = os.date("!*t", unix or os.time())
return string.format("%04d-%02d-%02d %02d:%02d:%02d", t.year, t.month, t.day, t.hour, t.min, t.sec)
end
-- create GUI (returns gui)
local function createGui()
-- destroy existing with same base name (to rebuild cleanly)
local existing = PlayerGui:FindFirstChild(GUI_BASE_NAME)
if existing then
safe(function() existing:Destroy() end)
end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = GUI_BASE_NAME
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.Parent = PlayerGui
local frame = Instance.new("Frame", screenGui)
frame.Name = "MainFrame"
frame.Size = UDim2.new(0, 420, 0, 480)
frame.Position = UDim2.new(0.03, 0, 0.08, 0)
frame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
frame.BorderSizePixel = 0
frame.Active = true
frame.Draggable = true
local header = Instance.new("TextLabel", frame)
header.Size = UDim2.new(1, 0, 0, 36)
header.Position = UDim2.new(0,0,0,0)
header.BackgroundColor3 = Color3.fromRGB(30,30,30)
header.Text = "🤖 XErr AI Engine 1.7 Beta (Resilient)"
header.Font = Enum.Font.GothamBold
header.TextSize = 16
header.TextColor3 = Color3.fromRGB(255,255,255)
header.Name = "Header"
local search = Instance.new("TextBox", frame)
search.Name = "SearchBox"
search.Size = UDim2.new(0.96, 0, 0, 30)
search.Position = UDim2.new(0.02, 0, 0.09, 0)
search.PlaceholderText = "Search players..."
search.ClearTextOnFocus = false
search.Font = Enum.Font.Gotham
search.TextSize = 14
local list = Instance.new("ScrollingFrame", frame)
list.Name = "PlayerList"
list.Size = UDim2.new(0.96, 0, 0.78, 0)
list.Position = UDim2.new(0.02, 0, 0.16, 0)
list.BackgroundTransparency = 1
list.ScrollBarThickness = 6
local layout = Instance.new("UIListLayout", list)
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Padding = UDim.new(0, 8)
-- make player card (image on top, then name, age guess, join)
local function makePlayerCard(p)
local card = Instance.new("Frame")
card.Size = UDim2.new(1, -10, 0, 210)
card.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
card.BorderSizePixel = 0
card.Name = "Card_" .. tostring(p.UserId)
local uiCorner = Instance.new("UICorner", card)
uiCorner.CornerRadius = UDim.new(0, 8)
local img = Instance.new("ImageLabel", card)
img.Size = UDim2.new(0.6, 0, 0.5, 0)
img.Position = UDim2.new(0.2, 0, 0.05, 0)
img.BackgroundColor3 = Color3.fromRGB(18,18,18)
img.BorderSizePixel = 0
img.Image = "rbxasset://textures/ui/GuiImagePlaceholder.png"
img.Name = "AvatarImage"
-- name label
local nameLbl = Instance.new("TextLabel", card)
nameLbl.Size = UDim2.new(1, -20, 0, 24)
nameLbl.Position = UDim2.new(0, 10, 0.55, 0)
nameLbl.BackgroundTransparency = 1
nameLbl.Text = p.Name
nameLbl.Font = Enum.Font.GothamBold
nameLbl.TextSize = 15
nameLbl.TextColor3 = Color3.new(1,1,1)
nameLbl.TextXAlignment = Enum.TextXAlignment.Left
nameLbl.Name = "NameLabel"
-- age guess
local ageLbl = Instance.new("TextLabel", card)
ageLbl.Size = UDim2.new(1, -20, 0, 20)
ageLbl.Position = UDim2.new(0, 10, 0.67, 0)
ageLbl.BackgroundTransparency = 1
ageLbl.Text = "Fictional AI Age: " .. tostring(math.random(5,20))
ageLbl.Font = Enum.Font.Gotham
ageLbl.TextSize = 13
ageLbl.TextColor3 = Color3.fromRGB(230,230,230)
ageLbl.TextXAlignment = Enum.TextXAlignment.Left
ageLbl.Name = "AgeLabel"
-- joined server time
local joinLbl = Instance.new("TextLabel", card)
joinLbl.Size = UDim2.new(1, -20, 0, 20)
joinLbl.Position = UDim2.new(0, 10, 0.78, 0)
joinLbl.BackgroundTransparency = 1
local jt = joinTimes[p.UserId] or os.time()
joinLbl.Text = "Joined Server: " .. formatDate(jt)
joinLbl.Font = Enum.Font.Gotham
joinLbl.TextSize = 13
joinLbl.TextColor3 = Color3.fromRGB(200,200,200)
joinLbl.TextXAlignment = Enum.TextXAlignment.Left
joinLbl.Name = "JoinLabel"
-- buttons row (under everything)
local btnFetch = Instance.new("TextButton", card)
btnFetch.Size = UDim2.new(0.45, 0, 0, 28)
btnFetch.Position = UDim2.new(0.05, 0, 0.89, 0)
btnFetch.Text = "🔎 Fetch Profile"
btnFetch.Font = Enum.Font.Gotham
btnFetch.TextSize = 13
btnFetch.BackgroundColor3 = Color3.fromRGB(90, 90, 150)
btnFetch.TextColor3 = Color3.fromRGB(1,1,1)
btnFetch.Name = "FetchBtn"
local btnAge = Instance.new("TextButton", card)
btnAge.Size = UDim2.new(0.45, 0, 0, 28)
btnAge.Position = UDim2.new(0.5, 0, 0.89, 0)
btnAge.Text = "♻️ Refresh Age"
btnAge.Font = Enum.Font.Gotham
btnAge.TextSize = 13
btnAge.BackgroundColor3 = Color3.fromRGB(110, 80, 80)
btnAge.TextColor3 = Color3.fromRGB(1,1,1)
btnAge.Name = "AgeBtn"
-- load thumbnail safely
safe(function()
local ok, thumb = pcall(function()
return Players:GetUserThumbnailAsync(p.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size150x150)
end)
if ok and thumb then
img.Image = thumb
end
end)
-- fetch profile creation date if HttpService allowed (safely)
btnFetch.MouseButton1Click:Connect(function()
local profileText = "Profile Created: unavailable"
safe(function()
if game:GetService("HttpService") then
local ok2, res = pcall(function()
local url = ("https://users.roblox.com/v1/users/%d"):format(p.UserId)
return HttpService:GetAsync(url, true)
end)
if ok2 and res then
local decoded = HttpService:JSONDecode(res)
if decoded and decoded.created then
profileText = "Profile Created: " .. tostring(decoded.created:gsub("T"," "):gsub("Z",""))
end
end
end
end)
joinLbl.Text = joinLbl.Text .. " | " .. profileText
end)
-- refresh age (fictional)
btnAge.MouseButton1Click:Connect(function()
ageLbl.Text = "Fictional AI Age: " .. tostring(math.random(5,20))
end)
return card
end
-- populate list function
local function populate(filter)
-- clear existing cards under the list but keep layout
for _,c in ipairs(list:GetChildren()) do
if c:IsA("Frame") then
safe(function() c:Destroy() end)
end
end
local players = Players:GetPlayers()
table.sort(players, function(a,b) return a.Name:lower() < b.Name:lower() end)
for _,p in ipairs(players) do
local lname = p.Name:lower()
if filter == "" or lname:find(filter,1,true) then
local card = makePlayerCard(p)
card.Parent = list
end
end
-- adjust canvas size
RunService.Heartbeat:Wait()
local total = 0
for _,v in ipairs(list:GetChildren()) do
if v:IsA("Frame") then
total = total + v.Size.Y.Offset + layout.Padding.Offset
end
end
list.CanvasSize = UDim2.new(0,0,0, math.max(1,total + 8))
end
-- search handler
search:GetPropertyChangedSignal("Text"):Connect(function()
safe(function() populate((search.Text or ""):lower()) end)
end)
-- initial populate
safe(function() populate("") end)
-- update on players join/leave
Players.PlayerAdded:Connect(function() safe(function() populate((search.Text or ""):lower()) end) end)
Players.PlayerRemoving:Connect(function() safe(function() populate((search.Text or ""):lower()) end) end)
-- attach some references for outside checks
screenGui:SetAttribute("IsXErrAIE", true)
screenGui:SetAttribute("CreatedTime", os.time())
return screenGui
end
-- ensure GUI exists and is healthy
local function ensureGui()
local g = PlayerGui:FindFirstChild(GUI_BASE_NAME)
if g and g:GetAttribute("IsXErrAIE") then
-- verify has content
local mf = g:FindFirstChild("MainFrame")
if not mf or #mf:GetChildren() < 3 then
-- rebuild
safe(function() createGui() end)
end
else
safe(function() createGui() end)
end
end
-- initial creation
ensureGui()
-- watch for accidental removals or clearing; if happens, recreate quickly
PlayerGui.ChildRemoved:Connect(function(child)
-- if someone removed our GUI, recreate
if child and child.Name == GUI_BASE_NAME then
task.delay(0.1, ensureGui)
end
end)
-- also protect against internal clearing (cards removed)
-- periodic check (lightweight) to ensure GUI didn't become empty
local heartbeatCount = 0
RunService.Heartbeat:Connect(function(dt)
heartbeatCount = heartbeatCount + 1
if heartbeatCount % 60 == 0 then -- about once per second (assuming 60fps)
ensureGui()
end
end)
-- reparent on respawn (in case PlayerGui was replaced)
player.CharacterAdded:Connect(function()
task.delay(1.5, ensureGui)
end)
-- error logging (silent)
local LogService = game:GetService("LogService")
LogService.MessageOut:Connect(function(message, messageType)
if messageType == Enum.MessageType.MessageError then
-- try to ensure GUI still there after errors
task.delay(0.2, ensureGui)
end
end)
-- done
print("[XErr] Resilient GUI initialized:", GUI_BASE_NAME)
Comments (0)
Please login to comment
Login with Discord
Loading comments...