Hello!
So I was recently playing around with Viewport Frames
and I made a system where when a prompt is triggered on the client-side, the frame will load your character and any objects around you. This works, however, but my avatar clothes don’t load in. They are classic, not 3D and my avatar is in R15. I don’t know if these details impact my problem at all, but better safe than sorry.
(Ignore the print statements in the following scripts; they were just for testing purposes. Everything printed correctly and I couldn’t locate the problem.)
Client script:
local Gui = script.Parent
local ViewportCamera = Instance.new("Camera")
ViewportCamera.CFrame = Gui.Adornee.CFrame
ViewportCamera.FieldOfView = 80
Gui.ViewportFrame.CurrentCamera = ViewportCamera
print("yas")
local RemoteEvent = game.ReplicatedStorage:WaitForChild("RemoteEvent", 5)
local DetectZone = Gui.Adornee.Parent.DetectionZone
local Prompt = Gui.Adornee.Attachment.ProximityPrompt
local debounce = false
print("cat")
Prompt.Triggered:Connect(function()
print("triggered")
if debounce == true then return end
debounce = true
Prompt.Enabled = false
Gui.ViewportFrame:ClearAllChildren()
print("boblox")
task.wait(1)
local Parts = workspace:GetPartBoundsInBox(DetectZone.CFrame, DetectZone.Size)
for _, part in Parts do
local PartClone = part:Clone()
PartClone.Parent = Gui.ViewportFrame
print("part cloned")
RemoteEvent:FireServer()
print("server fired")
end
Prompt.Enabled = true
debounce = false
print("yea yea")
end)
Server script:
game.ReplicatedStorage.RemoteEvent.OnServerEvent:Connect(function(Player)
local Character = Player.Character or Player.CharacterAdded:Wait()
print("character")
local HumanoidDesc = game.Players:GetHumanoidDescriptionFromUserId(Player.UserId)
print("yes")
local Humanoid = Character:FindFirstChild("Humanoid")
print("hi")
Humanoid:ApplyDescription(HumanoidDesc)
print("desc applied!")
end)
Should I maybe try using the Humanoid:GetAppliedDescription()
method somewhere? I think it maybe is server-sided, so that wouldn’t work.
If you think you know what went wrong, please let me know! Thank you and have a wonderful day! 
do you mean you want add any character and should player copy the character
dude you are using same id (: same character
this is what does i mean (: same humanoiddescription
i think if want fix it you need like import real player skin and make this code
Client script:
33| RemoteEvent:FireServer() -- you need to add character here
Server script:
game.ReplicatedStorage.RemoteEvent.OnServerEvent:Connect(function(Player,Character:Model)
print("character")
local HumanoidDesc = Character:FindFirstChild("Humanoid"):FindFirstChildOfClass("HumanoidDescription")
print("yes")
local Humanoid = Character:FindFirstChild("Humanoid")
print("hi")
Humanoid:ApplyDescription(HumanoidDesc)
print("desc applied!")
end)
this should works (:
1 Like
Sorry but it didn’t. 
My output does flood with the print statements and I figured it might be because I fire my RemoteEvent
every time a part is cloned into my ViewportFrame. I moved the line where I fired it, but nothing changed.
i dont really know what the files but you need first select the character and add inside fire function (line 33)
because your script just like u said where the same skin (: so … that why i said that u need to select the character and give it to the player else if you are using starterCharacter
(i mean u did your own character and should player wear his skin so its should back him skin with your scripts)
i dont have anything to say just if you cant make value for your character you need to rebuild system
or ask ai if it can help
do you mean something like this:
map
Just gonna bump this topic as I still have not solved it.
I changed my scripts up a bit:
Client:
local Gui = script.Parent
local ViewportCamera = Instance.new("Camera")
ViewportCamera.CFrame = Gui.Adornee.CFrame
ViewportCamera.FieldOfView = 80
Gui.ViewportFrame.CurrentCamera = ViewportCamera
print("yas")
local RemoteEvent = game.ReplicatedStorage:WaitForChild("RemoteEvent", 5)
local DetectZone = Gui.Adornee.Parent.DetectionZone
local Prompt = Gui.Adornee.Attachment.ProximityPrompt
local Player = game.Players.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local debounce = false
print("cat")
Prompt.Triggered:Connect(function()
print("triggered")
if debounce == true then return end
debounce = true
Prompt.Enabled = false
Gui.ViewportFrame:ClearAllChildren()
print("boblox")
task.wait(1)
local Parts = workspace:GetPartBoundsInBox(DetectZone.CFrame, DetectZone.Size)
for _, part in Parts do
local PartClone = part:Clone()
PartClone.Parent = Gui.ViewportFrame
print("part cloned")
RemoteEvent:FireServer(Character)
print("server fired")
end
Prompt.Enabled = true
debounce = false
print("yea yea")
end)
Server:
game.ReplicatedStorage.RemoteEvent.OnServerEvent:Connect(function(Player, Character : Model)
print("character")
local Humanoid : Humanoid = Character:FindFirstChildWhichIsA("Humanoid")
print("yes")
local HumanoidDesc = game.Players:GetHumanoidDescriptionFromUserId(Player.UserId)
print("hi")
Humanoid:ApplyDescriptionReset(HumanoidDesc)
print("desc applied!")
end)