![[Open Source & Universal] Avatar Changer, Saver, Stealer](https://scriptblox.com/images/sb/0-1790383978808.png)
KeylessUniversal

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
IYMouse = LocalPlayer:GetMouse()
local uis = game:GetService("UserInputService")
if not getgenv().Network then
getgenv().Network = {
BaseParts = {};
FakeConnections = {};
Connections = {};
Output = {
Enabled = true;
Prefix = "[NETWORK] ";
Send = function(Type,Output,BypassOutput)
if typeof(Type) == "function" and (Type == print or Type == warn or Type == error) and typeof(Output) == "string" and (typeof(BypassOutput) == "nil" or typeof(BypassOutput) == "boolean") then
if Network["Output"].Enabled == true or BypassOutput == true then
Type(Network["Output"].Prefix..Output);
end;
elseif Network["Output"].Enabled == true then
error(Network["Output"].Prefix.."Output Send Error : Invalid syntax.");
end;
end;
};
CharacterRelative = false;
}
Network["Output"].Send(print,": Loading.")
Network["Velocity"] = Vector3.new(14.46262424,14.46262424,14.46262424); --exactly 25.1 magnitude
Network["RetainPart"] = function(Part,ReturnFakePart) --function for retaining ownership of unanchored parts
assert(typeof(Part) == "Instance" and Part:IsA("BasePart") and Part:IsDescendantOf(workspace),Network["Output"].Prefix.."RetainPart Error : Invalid syntax: Arg1 (Part) must be a BasePart which is a descendant of workspace.")
assert(typeof(ReturnFakePart) == "boolean" or typeof(ReturnFakePart) == "nil",Network["Output"].Prefix.."RetainPart Error : Invalid syntax: Arg2 (ReturnFakePart) must be a boolean or nil.")
if not table.find(Network["BaseParts"],Part) then
if Network.CharacterRelative == true then
local Character = LocalPlayer.Character
if Character and Character.PrimaryPart then
local Distance = (Character.PrimaryPart.Position-Part.Position).Magnitude
if Distance > 1000 then
Network["Output"].Send(warn,"RetainPart Warning : PartOwnership not applied to BasePart "..Part:GetFullName()..", as it is more than "..gethiddenproperty(LocalPlayer,"MaximumSimulationRadius").." studs away.")
return false
end
else
Network["Output"].Send(warn,"RetainPart Warning : PartOwnership not applied to BasePart "..Part:GetFullName()..", as the LocalPlayer Character's PrimaryPart does not exist.")
return false
end
end
table.insert(Network["BaseParts"],Part)
Part.CustomPhysicalProperties = PhysicalProperties.new(0,0,0,0,0)
Network["Output"].Send(print,"PartOwnership Output : PartOwnership applied to BasePart "..Part:GetFullName()..".")
if ReturnFakePart == true then
return FakePart
end
else
Network["Output"].Send(warn,"RetainPart Warning : PartOwnership not applied to BasePart "..Part:GetFullName()..", as it already active.")
return false
end
end
Network["RemovePart"] = function(Part) --function for removing ownership of unanchored part
assert(typeof(Part) == "Instance" and Part:IsA("BasePart"),Network["Output"].Prefix.."RemovePart Error : Invalid syntax: Arg1 (Part) must be a BasePart.")
local Index = table.find(Network["BaseParts"],Part)
if Index then
table.remove(Network["BaseParts"],Index)
Network["Output"].Send(print,"RemovePart Output: PartOwnership removed from BasePart "..Part:GetFullName()..".")
else
Network["Output"].Send(warn,"RemovePart Warning : BasePart "..Part:GetFullName().." not found in BaseParts table.")
end
end
Network["SuperStepper"] = Instance.new("BindableEvent") --make super fast event to connect to
for _,Event in pairs({RunService.Stepped,RunService.Heartbeat}) do
Event:Connect(function()
return Network["SuperStepper"]:Fire(Network["SuperStepper"],tick())
end)
end
Network["PartOwnership"] = {};
Network["PartOwnership"]["PreMethodSettings"] = {};
Network["PartOwnership"]["Enabled"] = false;
Network["PartOwnership"]["Enable"] = coroutine.create(function() --creating a thread for network stuff
if Network["PartOwnership"]["Enabled"] == false then
Network["PartOwnership"]["Enabled"] = true --do cool network stuff before doing more cool network stuff
Network["PartOwnership"]["PreMethodSettings"].ReplicationFocus = LocalPlayer.ReplicationFocus
LocalPlayer.ReplicationFocus = workspace
Network["PartOwnership"]["PreMethodSettings"].SimulationRadius = gethiddenproperty(LocalPlayer,"SimulationRadius")
Network["PartOwnership"]["Connection"] = Network["SuperStepper"].Event:Connect(function() --super fast asynchronous loop
sethiddenproperty(LocalPlayer,"SimulationRadius",1/0)
for _,Part in pairs(Network["BaseParts"]) do --loop through parts and do network stuff
coroutine.wrap(function()
if Part:IsDescendantOf(workspace) then
if Network.CharacterRelative == true then
local Character = LocalPlayer.Character;
if Character and Character.PrimaryPart then
local Distance = (Character.PrimaryPart.Position - Part.Position).Magnitude
if Distance > 1000 then
Network["Output"].Send(warn,"PartOwnership Warning : PartOwnership not applied to BasePart "..Part:GetFullName()..", as it is more than "..gethiddenproperty(LocalPlayer,"MaximumSimulationRadius").." studs away.")
Lost = true;
Network["RemovePart"](Part)
end
else
Network["Output"].Send(warn,"PartOwnership Warning : PartOwnership not applied to BasePart "..Part:GetFullName()..", as the LocalPlayer Character's PrimaryPart does not exist.")
end
end
Part.Velocity = Network["Velocity"]+Vector3.new(0,math.cos(tick()*10)/100,0) --keep network by sending physics packets of 30 magnitude + an everchanging addition in the y level so roblox doesnt get triggered and fuck your ownership
else
Network["RemovePart"](Part)
end
end)()
end
end)
Network["Output"].Send(print,"PartOwnership Output : PartOwnership enabled.")
else
Network["Output"].Send(warn,"PartOwnership Output : PartOwnership already enabled.")
end
end)
Network["PartOwnership"]["Disable"] = coroutine.create(function()
if Network["PartOwnership"]["Connection"] then
Network["PartOwnership"]["Connection"]:Disconnect()
LocalPlayer.ReplicationFocus = Network["PartOwnership"]["PreMethodSettings"].ReplicationFocus
sethiddenproperty(LocalPlayer,"SimulationRadius",Network["PartOwnership"]["PreMethodSettings"].SimulationRadius)
Network["PartOwnership"]["PreMethodSettings"] = {}
for _,Part in pairs(Network["BaseParts"]) do
Network["RemovePart"](Part)
end
Network["PartOwnership"]["Enabled"] = false
Network["Output"].Send(print,"PartOwnership Output : PartOwnership disabled.")
else
Network["Output"].Send(warn,"PartOwnership Output : PartOwnership already disabled.")
end
end)
Network["Output"].Send(print,": Loaded.")
end
coroutine.resume(Network["PartOwnership"]["Enable"])
IYMouse.Button1Down:Connect(function()
object = IYMouse.Target
if uis:IsKeyDown(Enum.KeyCode.LeftControl) and object.Anchored == false then
game.Workspace.CurrentCamera.CameraSubject = object
Network.RetainPart(object)
LocalPlayer.Character.HumanoidRootPart.Anchored = true
repeat wait() until Players.LocalPlayer and Players.LocalPlayer.Character and Players.LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
repeat wait() until IYMouse
if flyKeyDown or flyKeyUp then flyKeyDown:Disconnect() flyKeyUp:Disconnect() end
local T = object
local CONTROL = {F = 0, B = 0, L = 0, R = 0, Q = 0, E = 0}
local lCONTROL = {F = 0, B = 0, L = 0, R = 0, Q = 0, E = 0}
local SPEED = 0
local function FLY()
FLYING = true
BG = Instance.new('BodyGyro')
BV = Instance.new('BodyVelocity')
BG.P = 9e4
BG.Parent = T
BV.Parent = T
BG.maxTorque = Vector3.new(9e9, 9e9, 9e9)
BG.cframe = T.CFrame
BV.velocity = Vector3.new(0, 0, 0)
BV.maxForce = Vector3.new(9e9, 9e9, 9e9)
task.spawn(function()
repeat wait()
if CONTROL.L + CONTROL.R ~= 0 or CONTROL.F + CONTROL.B ~= 0 or CONTROL.Q + CONTROL.E ~= 0 then
SPEED = 50
elseif not (CONTROL.L + CONTROL.R ~= 0 or CONTROL.F + CONTROL.B ~= 0 or CONTROL.Q + CONTROL.E ~= 0) and SPEED ~= 0 then
SPEED = 0
end
if (CONTROL.L + CONTROL.R) ~= 0 or (CONTROL.F + CONTROL.B) ~= 0 or (CONTROL.Q + CONTROL.E) ~= 0 then
BV.velocity = ((workspace.CurrentCamera.CoordinateFrame.lookVector * (CONTROL.F + CONTROL.B)) + ((workspace.CurrentCamera.CoordinateFrame * CFrame.new(CONTROL.L + CONTROL.R, (CONTROL.F + CONTROL.B + CONTROL.Q + CONTROL.E) * 0.2, 0).p) - workspace.CurrentCamera.CoordinateFrame.p)) * SPEED
lCONTROL = {F = CONTROL.F, B = CONTROL.B, L = CONTROL.L, R = CONTROL.R}
elseif (CONTROL.L + CONTROL.R) == 0 and (CONTROL.F + CONTROL.B) == 0 and (CONTROL.Q + CONTROL.E) == 0 and SPEED ~= 0 then
BV.velocity = ((workspace.CurrentCamera.CoordinateFrame.lookVector * (lCONTROL.F + lCONTROL.B)) + ((workspace.CurrentCamera.CoordinateFrame * CFrame.new(lCONTROL.L + lCONTROL.R, (lCONTROL.F + lCONTROL.B + CONTROL.Q + CONTROL.E) * 0.2, 0).p) - workspace.CurrentCamera.CoordinateFrame.p)) * SPEED
else
BV.velocity = Vector3.new(0, 0, 0)
end
BG.cframe = workspace.CurrentCamera.CoordinateFrame
until not FLYING
CONTROL = {F = 0, B = 0, L = 0, R = 0, Q = 0, E = 0}
lCONTROL = {F = 0, B = 0, L = 0, R = 0, Q = 0, E = 0}
SPEED = 0
BG:Destroy()
BV:Destroy()
end)
end
flyKeyDown = IYMouse.KeyDown:Connect(function(KEY)
if KEY:lower() == 'w' then
CONTROL.F = 1
elseif KEY:lower() == 's' then
CONTROL.B = -1
elseif KEY:lower() == 'a' then
CONTROL.L = -1
elseif KEY:lower() == 'd' then
CONTROL.R = 1
elseif QEfly and KEY:lower() == 'e' then
CONTROL.Q = 2
elseif QEfly and KEY:lower() == 'q' then
CONTROL.E = -2
end
pcall(function() workspace.CurrentCamera.CameraType = Enum.CameraType.Track end)
end)
flyKeyUp = IYMouse.KeyUp:Connect(function(KEY)
if KEY:lower() == 'w' then
CONTROL.F = 0
elseif KEY:lower() == 's' then
CONTROL.B = 0
elseif KEY:lower() == 'a' then
CONTROL.L = 0
elseif KEY:lower() == 'd' then
CONTROL.R = 0
elseif KEY:lower() == 'e' then
CONTROL.Q = 0
elseif KEY:lower() == 'q' then
CONTROL.E = 0
end
end)
FLY()
end
end)
IYMouse.KeyDown:connect(function()
if game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.LeftShift) then
--BG:Destroy()
--BV:Destroy()
FLYING = false
Network.RemovePart(object)
object.Velocity = Vector3.new(0, -1 , 0)
LocalPlayer.Character.HumanoidRootPart.Anchored = false
game.Workspace.CurrentCamera.CameraSubject = LocalPlayer.Character.Humanoid
end
end)![[Open Source & Universal] Avatar Changer, Saver, Stealer](https://scriptblox.com/images/sb/0-1790383978808.png)



Can u make it mobile support?
Wow! Cool script!
U can use mobile keyboard script
its fe? plz tell me its fe
Hey, use game:GetService("Players") not players.
He created a custom function for it I think.
btw S tier script
@Luc14324 btw i dont rlly care
still works.
Hey, so this is uhh. Years late.. but uh I was wondering if you could fix the bug where after you leave the control, the object you grabbed will stay there, static, and u cant grab it again until you rejoin