Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How do I make the part move again after mouse.Target is nil?

Asked by
Kircic 0
5 years ago

In this script, everything works great except for when the mouse's target is nil. I'm creating a building game and I would appreciate it if someone could tell me how to fix this.

A video of it happening: (https://photos.app.goo.gl/ryZwdLLu1WmFbPV26)

Code:

local player = game.Players.LocalPlayer

local mouse = player:GetMouse()



script.Parent.Equipped:Connect(function()

e = true

if player.Character:FindFirstChild('ShowPart') == nil then

showpart = Instance.new('Part')

showpart.Parent = player.Character

showpart.Anchored = true

showpart.Size = Vector3.new(4, 4, 4)

showpart.CanCollide = false

showpart.Name = "ShowPart"

showpart.Transparency = 1

end

if mouse.Target.Name == player.Name .."Parts" then

showpart.Transparency = 0

elseif mouse.Target:FindFirstChild('Player') ~= nil then

if mouse.Target.Player.Value == player.Name then

showpart.Transparency = 0

end

end

mouse.Icon = 'rbxasset://textures/ArrowCursor.png'

while mouse.Target ~= nil and mouse.Target.Parent.Name ~= _G. playerplate do

wait()

if mouse.Target ~= nil and mouse.Target:FindFirstChild('Player') ~= nil then

if mouse.Target.Player.Value == player.Name then

showpart.Transparency = 0.6

showpart.Rotation = Vector3.new(0, 0, 0)

if mouse.Target ~= nil and mouse.Target:FindFirstChild('Player') ~= nil then

if mouse.Target.Player.Value == player.Name then

local x = math.floor(mouse.Hit.p.X / 4) * 4

local y = mouse.Hit.p.Y + 2

local z = math.floor(mouse.Hit.p.Z / 4) * 4

showpart.CFrame = CFrame.new(Vector3.new(x,y,z) + Vector3.new(2, 0, 2))

end

end

end

end

end

while mouse.Target ~= nil and mouse.Target:FindFirstChild('Player') == nil do

wait()

showpart.Transparency = 0.6

if mouse.Target.Parent.Name == player.Name .."Parts" then

if mouse.TargetSurface == "BackSurface" then

showpart.CFrame = mouse.Target.CFrame - Vector3.new(0, 0, 4)

elseif mouse.TargetSurface == "BottomSurface" then

showpart.CFrame = mouse.Target.CFrame - Vector3.new(0, 4, 0)

elseif mouse.TargetSurface == "FrontSurface" then

showpart.CFrame = mouse.Target.CFrame + Vector3.new(0, 0, 4)

elseif mouse.TargetSurface == "LeftSurface" then

showpart.CFrame = mouse.Target.CFrame - Vector3.new(4, 0, 0)

elseif mouse.TargetSurface == "RightSurface" then

showpart.CFrame = mouse.Target.CFrame + Vector3.new(4, 0, 0)

elseif mouse.TargetSurface == "TopSurface" then

showpart.CFrame = mouse.Target.CFrame + Vector3.new(0, 4, 0)

end

end

end

repeat

wait()

if mouse.Target ~= nil then

if mouse.Target:FindFirstChild('Player') == nil then

if mouse.Target.Parent ~= _G. playerparts then

showpart.Transparency = 1

end

else

if mouse.Target.Player.Value == player.Name then

showpart.Transparency = 0.6

end

end

end

until e == false

end)



script.Parent.Unequipped:Connect(function()

e = false

mouse.Icon = "rbxasset://textures/ArrowFarCursor.png"

showpart.Transparency = 1

end)



script.Parent.Activated:Connect(function()

game.ReplicatedStorage.Build:FireServer(player, showpart.CFrame)

end)

Answer this question