I made a roblox raycast script and ti damages the person holding the tool even though it is blacklisted. What did I do wrong?
local gun = script.Parent
local fireEvent = gun.FireEvent
local FastCast = require(gun.FastCastRedux)
local firePoint = gun.Handle.FirePoint
local bulletsFolder = workspace:FindFirstChild("BulletFolder") or Instance.new("Folder", workspace)
bulletsFolder.Name = "BulletFolder"
local bulletsTemplate = Instance.new("Part")
bulletsTemplate.Anchored = true
bulletsTemplate.CanCollide = false
bulletsTemplate.Shape = "Ball"
bulletsTemplate.Size = Vector3.new(1, 1, 1)
bulletsTemplate.Material = Enum.Material.Metal
FastCast.VisualizeCasts = false
local caster = FastCast.new()
local castParams = RaycastParams.new()
local castParams = RaycastParams.new()
castParams.FilterType = Enum.RaycastFilterType.Blacklist
castParams.IgnoreWater = true
castParams.FilterDescendantsInstances = {gun.Parent, bulletsFolder, bulletsTemplate, gun}
local castBehavior = FastCast.newBehavior()
castBehavior.RayCastParams = castParams
castBehavior.Acceleration = Vector3.new(0, -workspace.Gravity, 0)
castBehavior.AutoIgnoreContainer = false
castBehavior.CosmeticBulletContainer = bulletsFolder
castBehavior.CosmeticBulletTemplate = bulletsTemplate
local function onEquipped()
castParams.FilterDescendantsInstances = {gun.Parent:FindFirstChildWhichIsA("Part") , bulletsFolder, bulletsTemplate, gun}
end
local function onLengthChanged(cast, lastPoint, direction, length, velocity, bullet)
if bullet then
local bulletLength = bullet.Size.Z/2
local offset = CFrame.new(0, 0, -(length - bulletLength))
bullet.CFrame = CFrame.lookAt(lastPoint, lastPoint + direction):ToWorldSpace(offset)
end
end
local function onRayHit(cast, result, velocity, bullet)
local hit = result.Instance
local character = hit:FindFirstAncestorWhichIsA("Model")
if character and character:FindFirstChild("Humanoid") then
if not character:FindFirstChild("Gun") then
character.Humanoid:TakeDamage(25)
end
if hit.Parent ~= gun.Parent and hit.Parent ~= gun then
print(hit.Parent)
elseif hit.Parent == gun.Parent or hit.Parent == gun then
warn(hit.Parent, "shot themself due to a bug...")
end
end
game:GetService("Debris"):AddItem(bullet, 5)
end
local function fire(player, mousePosition)
local origin = firePoint.WorldPosition
local direction = (mousePosition - origin).Unit
local velocity = 69426969
caster:Fire(origin, direction, velocity, castBehavior)
gun.Handle.GunShot.Playing = true
end
fireEvent.OnServerEvent:Connect(fire)
gun.Equipped:Connect(onEquipped)
caster.LengthChanged:Connect(onLengthChanged)
caster.RayHit:Connect(onRayHit)
here's the script
