is this how u make it or not: local Tool = script.Parent local Handle = Tool:FindFirstChild("Handle") local Equipped = false
local Player = game.Players.LocalPlayer repeat wait() until Player.Character wait() local Character = Player.Character repeat wait() until Character:FindFirstChild("Humanoid") wait() local Humanoid = Character:FindFirstChild("Humanoid") local Head = Character:FindFirstChild("Head") local Torso = Character:FindFirstChild("Torso") local rArm = Character:FindFirstChild("Right Arm") local rShoulder = Torso:FindFirstChild("Right Shoulder") local Neck = Torso:FindFirstChild("Neck")
local Weld, Current local NeckOriginal = CFrame.new(0, 1, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0) local ArmOriginal = CFrame.new(-1.5, 0.5, -1) * CFrame.fromEulerAnglesXYZ(math.rad(-90), 0, 0) local ArmDrink = CFrame.new(0, -0.5, -1.3) * CFrame.fromEulerAnglesXYZ(math.rad(-130), math.rad(-20), math.rad(-60))
local Mem = { NeckCF = CFrame.new(0,0,0); }
function Lerp(A, B, C) return A + (B - A) * C end
function Serp(A, B, C) local D = A:Dot(B) if D > 0.99999 or D < -0.99999 then return C <= 0.5 and A or B else local R = math.acos(D) return (A * math.sin((1 - C) * R) + B * math.sin(C * R))/math.sin(R) end end
function Merp(A, B, C) local AX, AY, AZ, A00, A01, A02, A10, A11, A12, A20, A21, A22 = A:components() local BX, BY, BZ, B00, B01, B02, B10, B11, B12, B20, B21, B22 = B:components() local V0 = Lerp(Vector3.new(AX, AY, AZ), Vector3.new(BX, BY, BZ), C) local V1 = Serp(Vector3.new(A00, A01, A02), Vector3.new(B00, B01, B02), C) local V2 = Serp(Vector3.new(A10, A11, A12), Vector3.new(B10, B11, B12), C) local V3 = Serp(Vector3.new(A20, A21, A22), Vector3.new(B20, B21, B22), C) return CFrame.new(V0.X, V0.Y, V0.Z, V1.X, V1.Y, V1.Z, V2.X, V2.Y, V2.Z, V3.X, V3.Y, V3.Z) end
function Pitch(lookVector) return math.atan(lookVector.Y/math.sqrt(lookVector.X^2 + lookVector.Z^2)) end
function Run(F, ...) local A setfenv(F, setmetatable({wait = function(X) delay(X, function() if Current == A then coroutine.resume(A) end end) coroutine.yield() end}, {__index = getfenv(0)})) A = coroutine.create(F) Current = A coroutine.resume(Current, ...) end;
function Update(Mouse) -- local NeckPitch = -Pitch(Mouse.Hit.lookVector) -- if NeckPitch > 0.5 then -- NeckPitch = 0.5 -- end -- if NeckPitch < -0.5 then -- NeckPitch = -0.5 -- end -- local NeckYaw = (Head.CFrame.p - Mouse.Hit.p).Unit:Cross(Torso.CFrame.lookVector).Y -- if NeckYaw > 0.5 then -- NeckYaw = 0.5 -- end -- if NeckYaw < -0.5 then -- NeckYaw = -0.5 -- end -- local NeckCF = NeckOriginal * CFrame.Angles(NeckPitch, 0, NeckYaw) -- Neck.C0 = Merp(Mem.NeckCF, NeckCF, 0.0001) -- Mem.NeckCF = NeckCF end
function Drink(Toggle) if Toggle then local Start = Weld.C1 for i = 0, 1, 0.1 do Weld.C1 = Merp(Start, ArmDrink, i) wait() end if Handle:FindFirstChild("Drink") then if Handle.Drink.IsPlaying then Handle.Drink:Stop() end Handle.Drink:Play() end else if Handle:FindFirstChild("Drink") then if Handle.Drink.IsPlaying then Handle.Drink:Stop() end end local Start = Weld.C1 for i = 0, 1, 0.1 do Weld.C1 = Merp(Start, ArmOriginal, i) wait() end end end
Tool.Equipped:connect(function(Mouse) Equipped = true rShoulder.Part1 = nil Weld = Instance.new("Weld", Head) Weld.Part0 = Head Weld.Part1 = rArm Weld.C1 = ArmOriginal wait() Mouse.Button1Down:connect(function() Run(Drink, true) end) Mouse.Button1Up:connect(function() Run(Drink, false) end) while Equipped do Update(Mouse) wait() end rShoulder.Part1 = Player.Character:FindFirstChild("Right Arm") Weld:Destroy() Neck.C0 = NeckOriginal end)
Tool.Unequipped:connect(function(Mouse) Equipped = false end)
Am i missing something because in my game it gets stuck in my mouth