I have a public model (modulescript) that heavily relies on using LoadAsset() to load Roblox’s official models. For some reason loading models with LoadAsset() is considered suspicious like using require(), you also can’t upload backdoors with LoadAsset() because of it limitting you to only using models made by game owner, the “Roblox” account and stuff from catalog.
The script that probably got the model privated
-- ADMIN LEVELS REFERENCE:
-- level 1: cheap gamepass admin (least abusive commands that only affect the user, like teleporting)
-- level 2: expensive gamepass admin (allows killing and other harmful commands, but cant kick or ban)
-- level 3: mod (kick, ban)
-- level 4: headadmin (all commands except ranks)
-- level 5: owner (same as headadmin except cant be banned or kicked by headadmin or below, also can rank)
local ds = game.DataStoreService:GetDataStore("solxranks")
if script.Parent.Parent.Parent.UserId == game.CreatorId then
script.Parent.adminallowed.Value = true
script.Parent.adminlevel.Value = 5
ds:SetAsync(script.Parent.Parent.Parent.UserId, 5)
end
if ds:GetAsync(script.Parent.Parent.Parent.UserId) then
if ds:GetAsync(script.Parent.Parent.Parent.UserId) > 0 then
script.Parent.adminallowed.Value = true
script.Parent.adminlevel.Value = ds:GetAsync(script.Parent.Parent.Parent.UserId)
end
end
function executecommand(cmdname, target, arg)
if cmdname == ";help" then
if script.Parent.adminlevel.Value >= 0 then
local clon = script.Parent.helpgui:Clone()
clon.Parent = script.Parent.Parent
clon.TextButton.Visible = true
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 2. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";kill" then
if script.Parent.adminlevel.Value >= 2 then
target.Character.Humanoid.Health = 0
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 2. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";freeze" then
if script.Parent.adminlevel.Value >= 2 then
for _,c in pairs(target.Character:GetDescendants()) do
if c:IsA("BasePart") then
c.Anchored = true
end
end
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 2. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";unfreeze" then
if script.Parent.adminlevel.Value >= 2 then
for _,c in pairs(target.Character:GetDescendants()) do
if c:IsA("BasePart") then
c.Anchored = false
end
end
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 2. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";to" then
if script.Parent.adminlevel.Value >= 1 then
script.Parent.Parent.Parent.Character.HumanoidRootPart.Position = target.Character.HumanoidRootPart.Position
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 1. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";bring" then
if script.Parent.adminlevel.Value >= 2 then
target.Character.HumanoidRootPart.Position = script.Parent.Parent.Parent.Character.HumanoidRootPart.Position
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 2. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";kick" then
if script.Parent.adminlevel.Value >= 3 then
if target.PlayerGui.SolXGui.adminlevel.Value <= script.Parent.adminlevel.Value then
target:Kick("[SolX] Kicked.")
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "Kicked player!")
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "Cant kick higher level")
end
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 3. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";ban" then
if script.Parent.adminlevel.Value >= 3 then
if target.PlayerGui.SolXGui.adminlevel.Value <= script.Parent.adminlevel.Value then
game.Players:BanAsync({
UserIds = {target.UserId},
Duration = -1,
DisplayReason = "[SolX] Banned.",
PrivateReason = "Banned by " .. script.Parent.Parent.Parent.Name
})
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "Banned player!")
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "Cant ban higher level")
end
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 3. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";gpadmin" then
if script.Parent.adminlevel.Value >= 5 then
local lv = 1
ds:SetAsync(target.UserId, lv)
target.PlayerGui.SolXGui.adminlevel.Value = lv
target.PlayerGui.SolXGui.adminallowed.Value = true
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "Rank changed!")
script.Parent.RemoteEvent:FireClient(target, "You're admin! Press ; to use commands.")
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 5. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";gppadmin" then
if script.Parent.adminlevel.Value >= 5 then
local lv = 2
ds:SetAsync(target.UserId, lv)
target.PlayerGui.SolXGui.adminlevel.Value = lv
target.PlayerGui.SolXGui.adminallowed.Value = true
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "Rank changed!")
script.Parent.RemoteEvent:FireClient(target, "You're admin! Press ; to use commands.")
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 5. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";mod" then
if script.Parent.adminlevel.Value >= 5 then
local lv = 3
ds:SetAsync(target.UserId, lv)
target.PlayerGui.SolXGui.adminlevel.Value = lv
target.PlayerGui.SolXGui.adminallowed.Value = true
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "Rank changed!")
script.Parent.RemoteEvent:FireClient(target, "You're admin! Press ; to use commands.")
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 5. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";headadmin" then
if script.Parent.adminlevel.Value >= 5 then
local lv = 4
ds:SetAsync(target.UserId, lv)
target.PlayerGui.SolXGui.adminlevel.Value = lv
target.PlayerGui.SolXGui.adminallowed.Value = true
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "Rank changed!")
script.Parent.RemoteEvent:FireClient(target, "You're admin! Press ; to use commands.")
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 5. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";shutdown" then
if script.Parent.adminlevel.Value >= 4 then
for _,c in pairs(game.Players:GetChildren()) do
c:Kick("[SolX] Shutdown")
end
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 4. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";???" then
if script.Parent.adminlevel.Value >= 5 then
local ht = Instance.new("Hint")
ht.Text = "the fog is coming"
ht.Parent = workspace
game.Lighting.FogEnd = 50
game.Lighting.FogColor = Color3.new(0, 0, 0)
while true do
wait(1)
local asset = game.InsertService:LoadAsset(95401558)
asset.Parent = workspace
asset:MoveTo(target.Character.HumanoidRootPart.Position)
end
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 5. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";re" then
if script.Parent.adminlevel.Value >= 2 then
target:LoadCharacter()
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 2. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";vanish" then
if script.Parent.adminlevel.Value >= 3 then
target.Character:Destroy()
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 3. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";crash" then
if script.Parent.adminlevel.Value >= 4 then
local clon = script.crashscr:Clone()
clon.Parent = target.PlayerGui
clon.Disabled = false
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 4. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";hell" then
if script.Parent.adminlevel.Value >= 3 then
target.Character.Humanoid.Name = "noreset"
local fogclr = game.Lighting.FogColor
local fogend = game.Lighting.FogEnd
target.Character.HumanoidRootPart.Anchored = true
local light = Instance.new("PointLight")
light.Parent = target.Character.HumanoidRootPart
light.Color = Color3.new(1, 0, 0)
light.Brightness = 2.5
local snd = Instance.new("Sound")
snd.Parent = target.Character.HumanoidRootPart
snd.SoundId = "rbxassetid://3466798390"
snd.Volume = 10
snd:Play()
game.Lighting.FogEnd = 35
game.Lighting.FogColor = Color3.new(0, 0, 0)
wait(2)
local snd = Instance.new("Sound")
snd.Parent = target.Character.HumanoidRootPart
snd.SoundId = "rbxassetid://1838311778"
snd.Volume = 10
snd:Play()
game.TweenService:Create(target.Character.HumanoidRootPart, TweenInfo.new(5), {CFrame = CFrame.new(target.Character.HumanoidRootPart.Position + Vector3.new(0,-10,0))}):Play()
wait(5)
target.Character:Destroy()
game.Lighting.FogColor = fogclr
game.Lighting.FogEnd = fogend
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 3. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";weapons" then
if script.Parent.adminlevel.Value >= 2 then
local wpn = game.InsertService:LoadAsset(97885508)
wpn:FindFirstChildOfClass("Tool"):Clone().Parent = target.Backpack
wpn:FindFirstChildOfClass("Tool"):Clone().Parent = target.StarterGear
local wpn = game.InsertService:LoadAsset(125013769)
wpn:FindFirstChildOfClass("Tool"):Clone().Parent = target.Backpack
wpn:FindFirstChildOfClass("Tool"):Clone().Parent = target.StarterGear
local wpn = game.InsertService:LoadAsset(121946387)
wpn:FindFirstChildOfClass("Tool"):Clone().Parent = target.Backpack
wpn:FindFirstChildOfClass("Tool"):Clone().Parent = target.StarterGear
local wpn = game.InsertService:LoadAsset(116693764)
wpn:FindFirstChildOfClass("Tool"):Clone().Parent = target.Backpack
wpn:FindFirstChildOfClass("Tool"):Clone().Parent = target.StarterGear
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 2. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";softshutdown" then
if script.Parent.adminlevel.Value >= 4 then
local server = game:GetService("TeleportService"):ReserveServer(game.PlaceId)
game:GetService("TeleportService"):TeleportToPrivateServer(game.PlaceId, server, game.Players:GetPlayers())
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 4. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";r6" then
if script.Parent.adminlevel.Value >= 2 then
local dummy = game.InsertService:LoadAsset(1785197)
local clon = dummy:FindFirstChildOfClass("Model"):Clone()
clon:MoveTo(target.Character.HumanoidRootPart.Position)
clon.Parent = workspace
local root = clon.Torso:Clone()
root.Parent = clon
root.Transparency = 1
root.CanCollide = false
root.Name = "HumanoidRootPart"
local desc = game.Players:GetHumanoidDescriptionFromUserId(target.UserId)
clon.Humanoid:ApplyDescription(desc)
clon.Parent = game.StarterPlayer
clon.Name = "StarterCharacter"
target:LoadCharacter()
clon:Destroy()
local clon2 = script.r6Animate:Clone()
clon2.Parent = target.Character
clon2.Name = "Animate"
clon2.Disabled = false
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 2. Your level is " .. script.Parent.adminlevel.Value)
end
end
if cmdname == ";r15" then
if script.Parent.adminlevel.Value >= 2 then
local dummy = game.InsertService:LoadAsset(516159357)
local clon = dummy:FindFirstChildOfClass("Model"):Clone()
clon:MoveTo(target.Character.HumanoidRootPart.Position)
clon.Parent = workspace
local desc = game.Players:GetHumanoidDescriptionFromUserId(target.UserId)
clon.Humanoid:ApplyDescription(desc)
clon.Parent = game.StarterPlayer
clon.Name = "StarterCharacter"
target:LoadCharacter()
clon:Destroy()
local clon2 = script.r15Animate:Clone()
clon2.Parent = target.Character
clon2.Name = "Animate"
clon2.Disabled = false
else
script.Parent.RemoteEvent:FireClient(script.Parent.Parent.Parent, "The required level for this command is 2. Your level is " .. script.Parent.adminlevel.Value)
end
end
end
-- stolen short username code cuz i was lazy
local Players = game:GetService("Players")
local function GetPlayer(text)
for _,Player in pairs(Players:GetPlayers()) do
if string.sub(string.lower(Player.Name),1,string.len(text)) == string.lower(text) then
return Player
end
end
end
script.Parent.RemoteEvent.OnServerEvent:Connect(function(plr, cmd)
if plr.PlayerGui.SolXGui.adminallowed.Value == true then
if string.find(cmd, " ") then
executecommand(string.split(cmd, " ")[1], GetPlayer(string.split(cmd, " ")[2]))
else
executecommand(cmd, script.Parent.Parent.Parent)
end
else
game.Players:BanAsync({
UserIds = {plr.UserId},
Duration = -1,
DisplayReason = "[SolX] Automatically detected tampering with remote events.",
PrivateReason = "Exploiting, tampering with SolX remote events (automatic)"
})
end
end)
I also tried appealing but the appeal was denied by AI moderation in around 1-2 minutes
I did look up solutions on devforum, i only found someone having a similar problem but with other methods that could actually be used maliciously
Though i know the solution being putting the models within the modulescript itself by now, i wonder why is LoadAsset() threated like it could be used as maliciously as require(id).
Thanks.