local char = owner.Character
local assets = LoadAssets(14065622609)
local p = assets:Get("G")
local cmds = {}
local cmdmanual = {}
local kernel = {}
local update = Instance.new("RemoteEvent")
update.Parent = char
update.Name = "UpdateBar"
local show = Instance.new("RemoteEvent")
show.Parent = char
show.Name = "RequestPackage"
local exit = Instance.new("RemoteEvent")
exit.Parent = char
exit.Name = "Exit"
local runp = Instance.new("RemoteEvent")
runp.Parent = char
runp.Name = "RunPackage"
local run = game:GetService("RunService")
p.Parent = script
local main = p.Gui.Main
local gui = main.Stats
gui:Destroy()
p.Gui.Face = Enum.NormalId.Back
p.Gui.Adornee = p
local lastClock = tick()
local oldbar = main.Bar
local bar = main.Bar
local msgG = main.Messages
local msgr = main.Message
local debris = game:GetService("Debris")
local https = game:GetService("HttpService")
local url = "https://79cdc2ef-e631-49ae-a726-d83cb7fc9599-00-l4s02velee38.worf.replit.dev/"
local resX = 4
local resY = 3
local globals = {
gui = p.Gui.Main,
}
local start = Instance.new("RemoteEvent")
start.Parent = char
start.Name = "Init"
p.Size = Vector3.new(resX^2,resY^2,0.005)
local helpText = {
"Commands:",
"install: installs a package",
"run: runs a command registered by a package",
"help: shows commands",
"manual: shows what a command is used for",
"exit: exits out of the current active gui if there is one."
}
bar.TextXAlignment = Enum.TextXAlignment.Left
bar.Size = UDim2.new(1,-100,0,25)
bar.Position = UDim2.new(0,100,0.92,0)
msgG.ClipsDescendants = true
msgG.Visible = true
msgG.Size = UDim2.new(1,0,0.9,0)
local startup = Instance.new("Sound",p)
startup.SoundId = "rbxassetid://3109186986"
startup.Volume = .5
local music = Instance.new("Sound",p)
music.SoundId = "rbxassetid://3109186986"
music.Volume = .5
local list = msgG.UIListLayout
bar = bar:Clone()
bar.Name = "ServerBar"
bar.Parent = main
oldbar.Visible = false
msgG.ClipsDescendants = false
main.ClipsDescendants = true
p.Locked = true
function kernel:updLogs()
local listHeight = list.AbsoluteContentSize.Y
local frameHeight = msgG.AbsoluteSize.Y
if listHeight > frameHeight then
msgG.Position = UDim2.new(0, 0, 0, frameHeight - listHeight)
else
msgG.Position = UDim2.new(0,0,0,0)
end
end
function kernel:register(cmdname,func,manual)
cmds[cmdname] = func
cmdmanual[cmdname] = manual
end
function kernel:log(txt,big)
local obj = msgr:Clone()
obj.TextScaled = false
obj.TextXAlignment = Enum.TextXAlignment.Left
obj.TextWrapped = false
obj.TextSize = (if big then 30 else 20)
obj.Parent = msgG
obj.Visible = true
obj.Text = txt
kernel:updLogs()
end
function kernel:error(txt)
local obj = msgr:Clone()
obj.TextScaled = false
obj.TextXAlignment = Enum.TextXAlignment.Left
obj.TextWrapped = false
obj.TextColor3 = Color3.fromRGB(255,0,0)
obj.TextSize = 20
obj.Parent = msgG
obj.Visible = true
obj.Text = txt
kernel:updLogs()
end
function kernel:warn(txt)
local obj = msgr:Clone()
obj.TextScaled = false
obj.TextXAlignment = Enum.TextXAlignment.Left
obj.TextWrapped = false
obj.TextColor3 = Color3.fromRGB(255, 170, 0)
obj.TextSize = 20
obj.Parent = msgG
obj.Visible = true
obj.Text = txt
kernel:updLogs()
end
function kernel:exe(txt)
for i,v in pairs(cmds) do
if string.find(txt,"^"..i..' ') then
v(txt:gsub(i.." ",""))
elseif string.find(txt,"^"..i) then
v(nil)
end
end
end
exit.OnServerEvent:Connect(function(player)
if main:FindFirstChild("ActiveGui") then
main.ActiveGui:Destroy()
end
end)
runp.OnServerEvent:Connect(function(player,txt,manual)
if not manual then
kernel:exe(txt)
if main:FindFirstChild("ActiveGui") then
main.ActiveGui.ZIndex = 1
end
else
if txt ~= nil then
print(txt)
cmds["manual"](txt)
else
cmds["help"]()
end
end
end)
kernel:register("manual",function(cmd)
if cmdmanual[cmd] then
kernel:log(cmd..": "..cmdmanual[cmd])
else
kernel:warn("No manual entry found for "..cmd)
end
end,"It's the manual!")
kernel:register("help",function(cmd)
for i,v in pairs(helpText) do
kernel:log(v)
end
end,"Shows the commands.")
show.OnServerEvent:Connect(function(player,name)
kernel:log("Attempting to install...")
local success,response = pcall(function()
return https:GetAsync(url..name)
end)
if not success then
print(response)
end
if success then
kernel:log("Fetched package "..name)
local f = loadstring(response)
local sent = {kernel, globals}
if f then
kernel:log("Succesfully installed package "..name)
f(sent)
end
else
kernel:error("Attempt failed, error: "..response)
if response == "HTTP 404 (Not Found)" then
kernel:error("This could be because:")
kernel:error("1. My servers are down.")
kernel:error("2. The package you tried to install doesn't exist.")
end
end
end)
update.OnServerEvent:Connect(function(player,input)
bar.Text = input
end)
p.CFrame = char.PrimaryPart.CFrame * CFrame.new(0,3,-5)
startup:Play()
kernel:log("Welcome, "..owner.Name,true)
kernel:log("Type help for a list of commands.")
start:FireClient(owner,main.Bar)
NLS([[
local uis = game:GetService("UserInputService")
local char = owner.Character
local gui = nil
char.Init.OnClientEvent:Connect(function(g)
gui = g
end)
task.wait(.5)
uis.InputBegan:Connect(function(input,busy)
if not busy then
if input.KeyCode == Enum.KeyCode.Semicolon then
gui:CaptureFocus()
task.wait()
gui.Text = ""
end
end
end)
gui.FocusLost:Connect(function(enter,input)
if enter then
if string.match(gui.Text,"install") then
char.RequestPackage:FireServer(string.gsub(gui.Text,"install ",""))
end
if string.match(gui.Text,"run") then
char.RunPackage:FireServer(string.gsub(gui.Text,"run ",""),false)
end
if string.match(gui.Text,"exit") then
char.Exit:FireServer()
end
if string.match(gui.Text,"manual") then
char.RunPackage:FireServer(string.gsub(gui.Text,"manual ",""),true)
end
if string.match(gui.Text,"help") then
char.RunPackage:FireServer(nil,true)
end
gui.Text = ""
end
end)
gui.Changed:Connect(function()
char.UpdateBar:FireServer(gui.Text)
end)
]])
owner.Chatted:Connect(function(msg)
if msg == ">move" then
p.CFrame = char.PrimaryPart.CFrame * CFrame.new(0,3,-5)
end
end)