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:
- You will be teleported to where the morph Is If you reset or leave with the morph on (This doesn't affect players who manage to get the morph)
- I want It so that the morph system will give you different morphs each time you use It, for example, there are 3 morphs you can get on the tool, you can get one of them by an RNG type system
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)
