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
Anyone?