Hello!
With the help with @LikeableEmmec and someone else (I'll get their name later), I've made a morph system for my WoT game, If you use a tool (Which the tools are called "Cups") you will be morph Into a troll, but not only that, but the morph will also not go away. Meaning If you die/reset or leave the game, you will still have the morph, the problem however Is:
I also heard there was a bug where the camera gets glitched, but I don't think so
Oh and also, there Is a custom player when you spawn, so If you join my game, your avatar will be turned Into a troll
Tool script (Server-side, Inside of tool):
local tool = script.Parent local Debounce = false local DrinkingAnimation = tool.Animation or tool:WaitForChild("Animation") local Rep = game.ReplicatedStorage local CharacterFolder = Rep.ExclusiveTrolls local char = tool.Parent tool.Activated:Connect(function() if not Debounce and tool.Parent.CanDrink.Value == true then Debounce = true tool:WaitForChild("Drink"):Play() local AnimationTrack = tool.Parent.Humanoid:FindFirstChild("Animator"):LoadAnimation(DrinkingAnimation) AnimationTrack:Play() wait(0.50) tool.Handle.Oil.Transparency = 1 tool.Handle.Oil.Attachment.ParticleEmitter.Enabled = false wait(1) local player = game.Players:GetPlayerFromCharacter(tool.Parent) player.CurrentMorph.Value = "Reaper" local plrRoot = player.Character:FindFirstChild("HumanoidRootPart") or player.Character.Parent:FindFirstChild("Torso") local AveragePlayer = CharacterFolder["Über S ?cret TrÖll"]:Clone() AveragePlayer.Name = player.Name AveragePlayer.Parent = workspace local rootPart = AveragePlayer:FindFirstChild("HumanoidRootPart") or AveragePlayer:FindFirstChild("Torso") if rootPart and plrRoot then rootPart.CFrame = plrRoot.CFrame end player.Character = AveragePlayer AveragePlayer.Humanoid.DisplayName = "Über S ?cret TrÖll" Debounce = false tool:Destroy() end end)
Script (Inside of ServerScriptService, server-side):
local CharacterFolder = game.ReplicatedStorage.ExclusiveTrolls local store = game:GetService("DataStoreService") local store2 = store:GetDataStore("Morph") function save(p,val) store2:SetAsync(p.UserId,val) end game.Players.PlayerAdded:Connect(function(p) local val = store2:GetAsync(p.UserId) or "" local stringv = Instance.new("StringValue",p) stringv.Name = "CurrentMorph" stringv.Value = val p.CharacterAdded:Connect(function(c) if stringv.Value ~= "" then local oldchar = c local oldv = stringv.Value stringv.Value = "" local plrRoot = p.Character:WaitForChild("HumanoidRootPart") or p.Character.Parent:WaitForChild("Torso") local AveragePlayer = CharacterFolder["Über S ?cret TrÖll"]:Clone() AveragePlayer.Name = p.Name local rootPart = AveragePlayer:FindFirstChild("HumanoidRootPart") or AveragePlayer:FindFirstChild("Torso") if rootPart and plrRoot then rootPart.CFrame = plrRoot.CFrame end p.Character = AveragePlayer AveragePlayer.Parent = workspace AveragePlayer.Humanoid.DisplayName = "Über S ?cret TrÖll" oldchar:Destroy() stringv.Value = oldv end end) end) game.Players.PlayerRemoving:Connect(function(p) local stringv = p:WaitForChild("CurrentMorph") save(p,stringv.Value) end)