Model privated for using LoadAsset() to load official Roblox models

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)

image
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.

2 Likes

The best you can do is try and reach a real person,
the AI flags any instance of “LoadTHING” and “SaveTHING” as malicious to try and combat like loadstring and saveinstance in models since a lot of exploit scripts will load stuff from Roblox models

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.