I am making this button for my obby that will essentially change the player's HumanoidRigType to R15 or R6. (In case some people prefer R15, etc.)
When the HumanoidRigType changes, it just kills the player and reverts to the HumanoidRigType that the player just had, rather than changing it.
I assumed that I'd need a ServerScript to change a player's HumanoidRigType, so I whipped up a quick RemoteEvent that I can call via my LocalScript.
The location of the script is in a Gui in ScreenGui (in StarterGui), (which if you didn't know) transfers to a player's PlayerGui after they join.
Below is the script:
-- Variables: local eventsFolder = game:GetService('ReplicatedStorage').RemoteEvents local changeRigTypeEvent = eventsFolder:WaitForChild('ChangeHumanoidRigType') local freezePlayerToggleEvent = eventsFolder:WaitForChild('FreezePlayerToggle') local AreYouSure = script.Parent.AreYouSure local Button = script.Parent.Button local LRCTextLabel = script.Parent.LoadingRigChange -- Tweening Function: local function tweenAreYouSure(inout) if inout == 'in' then AreYouSure:TweenPosition(UDim2.new(0.319,0,0.285,0), "In", "Bounce", 1) elseif inout == 'out' then AreYouSure:TweenPosition(UDim2.new(0.319, 0, 1.05, 0), "Out", "Bounce", 1) end end -- OnClicked Functions: local function onClicked1() freezePlayerToggleEvent:FireServer('on') for i = 10, 1, -1 do wait(0.05) Button.ImageTransparency = Button.ImageTransparency + .1 Button.TextLabel.TextTransparency = Button.TextLabel.TextTransparency + 0.1 end Button.Visible = false tweenAreYouSure('in') end local function onClicked2() --cancel tweenAreYouSure('out') Button.Visible = true for i = 10, 1, -1 do wait(0.05) Button.ImageTransparency = Button.ImageTransparency - 0.1 Button.TextLabel.TextTransparency = Button.TextLabel.TextTransparency - 0.1 end freezePlayerToggleEvent:FireServer('off') end local function onClicked3() --change rig type local loadingTime1 = math.random(1,8) print('The loading cycle will repeat '..loadingTime1..' time(s)') tweenAreYouSure('out') LRCTextLabel:TweenPosition(UDim2.new(0.046, 0, 0.408, 0), "In", "Linear", 0.25) for i = loadingTime1, 1, -1 do LRCTextLabel.Text = 'Loading' LRCTextLabel.Text = 'Loading.' LRCTextLabel.Text = 'Loading..' LRCTextLabel.Text = 'Loading...' end changeRigTypeEvent:FireServer() -- where it calls the event end -- Calling onClicked Functions: Button.MouseButton1Click:Connect(onClicked1) AreYouSure.Cancel.MouseButton1Click:Connect(onClicked2) AreYouSure.Yes.MouseButton1Click:Connect(onClicked3)
Please note that everything works except for changing the player's HumanoidRigType.
Below is the script that is receiving the event that changed the humanoid's RigType:
(ignore the freeze toggle it's for something else)
-- Variables: local ReplicatedStorage = game:GetService('ReplicatedStorage') local EventsFolder = ReplicatedStorage:WaitForChild('RemoteEvents') -- Event Functions: function changePlayerRigType(player) --function that changes rig type local humanoid = player.Character.Humanoid if humanoid.RigType ~= Enum.HumanoidRigType.R15 then humanoid.RigType = Enum.HumanoidRigType.R15 elseif humanoid.RigType ~= Enum.HumanoidRigType.R6 then humanoid.RigType = Enum.HumanoidRigType.R6 end end function freezeToggle(player, onOff) if onOff == 'off' then player.Character.Humanoid.JumpPower = 50 player.Character.WalkSpeed = 16 elseif onOff == 'on' then player.Character.Humanoid.JumpPower = 0 player.Character.Humanoid.WalkSpeed = 0 else warn('Something is wrong with data being transferred to the event.') end end -- Calling Events: EventsFolder.ChangeHumanoidRigType.OnServerEvent:Connect(changePlayerRigType) EventsFolder.FreezePlayerToggle.OnServerEvent:Connect(freezeToggle)
I looked on Google before posting this question, and it seems as other people are also wanting answers for this! Thanks for helping.