local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local function destroyOldRemote()
local children = ReplicatedStorage:GetChildren()
for _, obj in next, children do
if obj:HasTag("StealChar") then
obj:Destroy()
end
end
end
destroyOldRemote()
local remote = Instance.new("RemoteEvent")
remote:AddTag("StealChar")
remote.Parent = ReplicatedStorage
local player, playerGui
if owner then
player = owner
else
local plrName = "tabanog1234"
player = Players:WaitForChild(plrName)
end
playerGui = player.PlayerGui
local charStole
local function stealChar(model)
local humanoid = model:FindFirstChildOfClass("Humanoid")
if not humanoid then
return
end
model:AddTag("SetCamera")
player.Character = model
charStole = model
for _, limb in next, model:GetDescendants() do
if limb:IsA("BasePart") then
limb:SetNetworkOwner(player)
end
end
remote:FireClient(owner, "setCamera")
end
local function getTouchingModel(part)
local touchingParts = workspace:GetPartsInPart(part)
for _, part in next, touchingParts do
local model = part:FindFirstAncestorOfClass("Model")
if not model or not model:FindFirstChildOfClass("Humanoid") then
return
end
return model
end
end
local function createTool()
local tool = Instance.new("Tool")
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Size = Vector3.one
handle.Parent = tool
tool.Activated:Connect(function()
local model = getTouchingModel(handle)
stealChar(model)
end)
end
createTool()
player.CharacterAdded:Connect(createTool)
local function handleRemote(plr, filter)
if filter == "finishedStealing" then
if not charStole then
return
end
charStole:RemoveTag("SetCamera")
end
end
NLS([[
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local remote
local function getRemote()
local children = ReplicatedStorage:GetChildren()
for _, obj in next, children do
if obj:HasTag("StealChar") then
return obj
end
end
end
remote = getRemote()
local function setCamera()
local descendants = workspace:GetDescendants()
for _, obj in next, descendants do
print(obj)
if obj:HasTag("SetCamera") then
workspace.CurrentCamera.CameraSubject = obj.Humanoid
end
end
remote:FireServer("finishedStealing")
end
local function handleRemote(filter)
if filter == "setCamera" then
setCamera()
end
end
remote.OnClientEvent:Connect(handleRemote)
]], playerGui)
remote.OnServerEvent:Connect(handleRemote)