Hi, in a serverscript, I'm trying to access parameter part's parent. It's for a gun that fires, but it errors saying "attempt to index local 'parent'

local serverStorage = game:GetService("ServerStorage")
local replicatedStorage = game:GetService("ReplicatedStorage")
local damage = 35
replicatedStorage.Events.AKEvents.ShootEvent.OnServerEvent:Connect(function(player, tool, position, part)
	--[[if game.Workspace[player.Name].Humanoid.Health <= 0 then
	else
		local distance = (tool.Handle.CFrame.p - position).magnitude
		if game.Workspace:FindFirstChild(player.Name.."'s Trajectory") then
		game.Workspace:FindFirstChild(player.Name.."'s Trajectory"):Destroy()
		end
		local trajectory = Instance.new("Part", game.Workspace)
		local smoke = serverStorage.SmokeParticle:Clone()
		smoke.Parent = tool.Handle
		trajectory.BrickColor = BrickColor.new("Institutional white")
		trajectory.Material = "SmoothPlastic"
		trajectory.Name = player.Name.."'s Trajectory"
		trajectory.Transparency = .75
		trajectory.Anchored = true
		trajectory.Locked = true
		trajectory.CanCollide = false
		trajectory.Size = Vector3.new(0.3,0.3,distance)
		for i = 0, distance, 6 do
			trajectory.CFrame = CFrame.new(tool.Handle.CFrame.p, position) * CFrame.new(0,0,-distance / 2)
			wait(0.0001)
		end
		smoke:Destroy()
	if part then
			if part.Name == "Head" or part:IsA("Hat") and part.Parent:FindFirstChild("Humanoid").Health > 0 then
				-- Boom headshot
				damage = 50
			end
			local humanoid = part.Parent:FindFirstChild("Humanoid")
			if not humanoid then
				humanoid = part.Parent.Parent:FindFirstChild("Humanoid")
			else
				humanoid:TakeDamage(damage)


				end		
			end	
			wait(0.25)
			if trajectory then
				trajectory:Destroy()
		end
	end
	end)]]
	if game.Workspace[player.Name].Humanoid.Health <= 0 then
		-- The player is dead, do not do anything
	else
		local distance = (tool.Handle.CFrame.p - position).magnitude
		if game.Workspace:FindFirstChild(player.Name.."'s Trajectory") then
			game.Workspace:FindFirstChild(player.Name.."'s Trajectory"):Destroy()
		end
		local trajectory = Instance.new("Part",game.Workspace)
		local smoke = serverStorage.SmokeParticle:Clone()
		smoke.Parent = tool.Handle
		trajectory.BrickColor = BrickColor.new("Institutional white")
		trajectory.Material = "SmoothPlastic"
		trajectory.Name = player.Name.."'s Trajectory"
		trajectory.Transparency = 0.5
		trajectory.Anchored = true
		trajectory.Locked = true
		trajectory.CanCollide = false
		trajectory.Size = Vector3.new(0.3,0.3,distance)
		for i = 0,distance,6 do
			trajectory.CFrame = CFrame.new(tool.Handle.CFrame.p,position) * CFrame.new(0,0,-distance / 2)
			wait(0.0001)
		end
		smoke:Destroy()
		if part then
			if part.Name == "Head" or part:IsA("Hat") and part.Parent:FindFirstChild("Humanoid").Health > 0 then
				-- Boom headshot
				replicatedStorage.Headshot:FireClient(player)
				damage = 50
			end
			
			local humanoid = part.Parent:FindFirstChild("Humanoid")
			if not humanoid then
				humanoid = part.Parent.Parent:FindFirstChild("Humanoid")
			else
				humanoid:TakeDamage(damage)
				if humanoid.Health <= 0 then
	
				end		
			end	
			wait(0.25)
			if trajectory then
				trajectory:Destroy()
			end
		end
	end
end)
replicatedStorage.Events.AKEvents.EquipAnimation.OnServerEvent:Connect(function(player, animation)
	local newAnim = game.Workspace[player.Name].Humanoid:LoadAnimation(animation)
	newAnim:Play()
	replicatedStorage.Events.AKEvents.UnequipAnimation.OnServerEvent:connect(function(player,animation)
		newAnim:Stop()
		for i, v in pairs(game.Workspace:GetChildren()) do -- first is iterator, second is object
			if v.Name == player.Name.."'s Trajectory" then
				v:Destroy()
			end
		end
	end)
	replicatedStorage.Events.AKEvents.Reload.OnServerEvent:Connect(function(player,animation)
		newAnim:Stop()
		local reloadAnim = game.Workspace[player.Name].Humanoid:LoadAnimation(animation)
		reloadAnim:Play()
	end)
end)

function checkBodyType(player, tool)
	if game.Workspace[player.Name]:FindFirstChild("LowerTorso") then -- R15
		tool.Shoot.AnimationId= "rbxassetid://01155052080"
		tool.Reload.AnimationId = "rbxassetid://01156030101"
		return "R15"
end
		if game.Workspace[player.Name]:FindFirstChild("Torso") then -- R6
		tool.Shoot.AnimationId= "rbxassetid://01155025408"
		tool.Reload.AnimationId = "rbxassetid://01155041975"
		return "R6"
			end
end

replicatedStorage.Functions.AKFunctions.CheckBodyType.OnServerInvoke = checkBodyType

For the error, focus your attention to:

		if part then
			if part.Name == "Head" or part:IsA("Hat") and part.Parent:FindFirstChild("Humanoid").Health > 0 then

1 comment

0

Anyone?