I fixed the script! It works perfectly the way it should! Since the whole script is open source, here is the link to the model: http://www.roblox.com/FPS-TPS-Script-item?id=302280310
Or you can have the code (LocalScript in StarterPack):
local ToggleKey = "t"
local Player = game.Players.LocalPlayer
Player.CameraMode = Enum.CameraMode.LockFirstPerson
local Character = Player.Character or Player.CharacterAdded:wait()
wait(2.5)
local Mouse = Player:GetMouse()
local Camera = game.Workspace.CurrentCamera
local AM = Instance.new("Model", Camera)
local FakeParts = {}
AM.Name = "TPSBody"
Arms = {Player.Character["Left Arm"], Player.Character["Right Arm"]}
Arm1 = Instance.new("Part", AM)
Arm1.Name = "Left Arm"
Arm1.CanCollide = false
Arm1.FormFactor = Enum.FormFactor.Custom
Arm1.Size = Arms[1].Size - Vector3.new(0.1, 0.1, 0.1)
Arm1.BrickColor = Arms[1].BrickColor
table.insert(FakeParts, #FakeParts+1, Arm1)
Arm2 = Instance.new("Part", AM)
Arm2.Name = "Right Arm"
Arm2.CanCollide = false
Arm2.FormFactor = Enum.FormFactor.Custom
Arm2.Size = Arms[2].Size - Vector3.new(0.1, 0.1, 0.1)
Arm2.BrickColor = Arms[2].BrickColor
table.insert(FakeParts, #FakeParts+1, Arm2)
W1 = Instance.new("Weld", Arm1)
W1.Part0 = Arms[1]
W1.Part1 = Arm1
W2 = Instance.new("Weld", Arm2)
W2.Part0 = Arms[2]
W2.Part1 = Arm2
Legs = {Player.Character["Left Leg"], Player.Character["Right Leg"]}
Leg1 = Instance.new("Part", AM)
Leg1.Name = "Left Leg"
Leg1.CanCollide = false
Leg1.FormFactor = Enum.FormFactor.Custom
Leg1.Size = Legs[1].Size
Leg1.BrickColor = Legs[1].BrickColor
table.insert(FakeParts, #FakeParts+1, Leg1)
Leg2 = Instance.new("Part", AM)
Leg2.Name = "Right Leg"
Leg2.CanCollide = false
Leg2.FormFactor = Enum.FormFactor.Custom
Leg2.Size = Legs[2].Size
Leg2.BrickColor = Legs[2].BrickColor
table.insert(FakeParts, #FakeParts+1, Leg2)
W3 = Instance.new("Weld", Leg1)
W3.Part0 = Legs[1]
W3.Part1 = Leg1
W4 = Instance.new("Weld", Leg2)
W4.Part0 = Legs[2]
W4.Part1 = Leg2
Vitals = {Player.Character.Torso, Player.Character.Head}
Tors = Instance.new("Part", AM)
Tors.Name = "Torso"
Tors.CanCollide = false
Tors.FormFactor = Enum.FormFactor.Custom
Tors.Size = Vitals[1].Size
Tors.BrickColor = Vitals[1].BrickColor
table.insert(FakeParts, #FakeParts+1, Tors)
Head = Instance.new("Part", AM)
Head.Name = "FakeHead"
Head.CanCollide = false
Head.FormFactor = Enum.FormFactor.Custom
Head.Size = Vitals[2].Size
Head.BrickColor = Vitals[2].BrickColor
table.insert(FakeParts, #FakeParts+1, Head)
HeadMesh = Character.Head.Mesh:Clone()
HeadMesh.Parent = Head
HeadMesh.Scale = HeadMesh.Scale - Vector3.new(0.01, 0.01, 0.01)
W5 = Instance.new("Weld", Tors)
W5.Part0 = Vitals[1]
W5.Part1 = Tors
W6 = Instance.new("Weld", Head)
W6.Part0 = Vitals[2]
W6.Part1 = Head
Human = Instance.new("Humanoid", AM)
Human.Name = "FakeHumanoidFake"
print("Here's mah stuff")
for _,Obj in pairs(Player.Character:GetChildren()) do
if Obj:IsA("CharacterMesh") or Obj:IsA("Shirt") or Obj:IsA("Pants") then
Obj:Clone().Parent = AM
end
if Obj:IsA("Hat") then
local NewHat = Obj:Clone()
NewHat.Parent = AM
table.insert(FakeParts, #FakeParts+1, NewHat.Handle)
wait()
local HatWeld = Instance.new("Weld", Head)
HatWeld.Name = "HatWeld"
HatWeld.Part0 = NewHat.Handle
HatWeld.Part1 = Head
NewHat.Handle.Mesh.Offset = Vector3.new(0, 0.1, 0)
end
wait()
end
Character.Humanoid.Died:connect(function()
AM:Destroy()
Character.Humanoid.CameraOffset = Vector3.new(0, 0, 0)
connect:disconnect()
end)
for i,v in pairs(FakeParts) do
v.Transparency = 1
end
print("Connecting the mouse...")
connect = Mouse.KeyDown:connect(function(key)
if key == ToggleKey then
if Character.Humanoid.CameraOffset == Vector3.new(0, 0, 0) then
Character.Humanoid.CameraOffset = Vector3.new(1.5, 0.5, 5)
for i,v in pairs(FakeParts) do
v.Transparency = 0
end
elseif Character.Humanoid.CameraOffset == Vector3.new(1.5, 0.5, 5) then
Character.Humanoid.CameraOffset = Vector3.new(0, 0, 0)
for i,v in pairs(FakeParts) do
v.Transparency = 1
end
end
end
end)
Thanks for the help guys!
