При переходе с Roblox версии R15 на R6 вам нужно внести несколько изменений, так как в R6 используется более простая система соединений между частями, и отсутствуют некоторые компоненты, которые есть в R15 (например, дополнительные Motor6D). В R6 персонажи имеют только два ограничения: "HumanoidRootPart" и "Torso".
Вот переписанная версия вашего скрипта для версии R6:
```lua
local RunService = game:GetService("RunService")
local plr = game.Players.LocalPlayer
local char = plr.Character or plr.CharacterAdded:Wait()
local torso: BasePart = char:WaitForChild("Torso")
local cam = workspace.CurrentCamera
-- Clone character
char.Archivable = true
local fakeChar = char:Clone()
local fakeTorso: BasePart = fakeChar:WaitForChild("Torso")
fakeTorso.CanCollide = false
fakeChar.Name = "Fake" .. plr.Name
fakeChar.Parent = workspace
local scaleFactor = 0.999
local classesToRemove = {"Decal", "Texture", "SurfaceAppearance", "LocalScript", "Script", "Humanoid", "Clothing", "ShirtGraphic"}
for _, desc in fakeChar:GetDescendants() do
if not desc:IsA("MeshPart") then continue end
desc.CastShadow = false
desc.Transparency = 0.9999999
desc.Color = Color3.new(1, 1, 1)
desc.Material = Enum.Material.Glass
desc.TextureID = "rbxassetid://5307016674"
desc.CollisionGroup = "CharacterHighlightMask"
for _, child in desc:GetChildren() do
if child:IsA("SurfaceAppearance") then child:Destroy() end
end
end
fakeChar:SetPrimaryPartCFrame(torso.CFrame) -- устанавливаем положение аналогично оригиналу
fakeChar:ScaleTo(scaleFactor)
-- Получаем Motor6D соединения
local mainMotor6DTable: {Motor6D} = {}
for _, desc in ipairs(char:GetDescendants()) do
if desc:IsA("Motor6D") then
table.insert(mainMotor6DTable, desc)
end
end
-- Удаляем Motor6D в поддельном персонаже (из-за отсутствия в R6)
for _, m in ipairs(mainMotor6DTable) do
m:Destroy()
end
```
### Изменения и пояснения:
1. **HumanoidRootPart и Torso:** В R6 используется только `Torso`, поэтому вам нужно соответственно менять ссылки на `HumanoidRootPart` на `Torso`.
2. **Отсутствие Motor6D:** В R6 нет таких сложных соединений, как в R15. Тогда как R15 имеет более сложную иерархию соединений (например, Motor6D для каждой конечности), в R6 их меньше, и вы можете решить, что их просто нет в `fakeChar`.
3. **Установка положения:** Вам нужно установить положение `fakeChar` (используя `SetPrimaryPartCFrame`), чтобы он появился в том же месте, что и оригинальный персонаж. Таким образом, он будет следовать тому же положению, что и оригинал.
4. **Удаление ненужных компонентов:** Убедитесь, что в `fakeChar` нет лишних компонентов, таких как Motor6D, которые могут вызвать ошибки в R6.
Проверьте данный скрипт на практике, чтобы убедиться в его корректной работе в вашем проекте.