You don't seem to have a part in your script which damages a player. That is why it does no damage. You need to get the part the ray hits with :FindPartOnRay(), then check the hit's parent or the hit's parent's parent for a humanoid and if there is a humanoid assign it to a variable which you then damage with humanoid:TakeDamage(number)
if you need an example here's my pistol script, at least the main part:
local Present = true
local RS = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local tab = {workspace.IgnoreModel}
local first = true
local Hole
local Part,Position,Normal
script.Parent.BulletEvent.OnServerEvent:Connect(function(Player, FromP, ToP, BulletPos)
if script.Parent.AbleToShoot.Value == true then
if first == true then
table.insert(tab, Player.Character)
first = false
end
local RayCast = Ray.new(FromP,(ToP-FromP).unit*500)
Part,Position,Normal = game.Workspace:FindPartOnRayWithIgnoreList(RayCast,tab,false,true)
local Dist = (ToP-FromP).magnitude
if not Dist then Dist = 300 end
local projectile = script.Parent.Bullet.Projectile:Clone()
projectile.Parent = game.Workspace
projectile.CFrame = CFrame.new(BulletPos, ToP)
projectile.Tracer.Enabled = true
Hole = game.ReplicatedStorage:FindFirstChild("GlockBulletHole"):Clone()
local Info = TweenInfo.new(
(ToP-script.Parent.Parts.BE.Position).magnitude/457,
Enum.EasingStyle.Sine,
Enum.EasingDirection.Out,
0,
false,
0
)
local Goals =
{
Position = ToP
}
local BulletTween = TweenService:Create(projectile, Info, Goals)
BulletTween:Play()
if (ToP-script.Parent.Parts.BE.Position).magnitude <= 1000 then
game.Debris:AddItem(projectile, (ToP-script.Parent.Parts.BE.Position).magnitude/457)
elseif (ToP-script.Parent.Parts.BE.Position).magnitude > 1000 then
game.Debris:AddItem(projectile, 2.2)
end
end
wait((ToP-script.Parent.Parts.BE.Position).magnitude/457)
if Part ~= nil then
Hole.Parent = Part
Hole.Position = Position
Hole.Material = Part.Material
Hole.Color = Part.Color
Hole.CFrame = CFrame.new(Hole.Position, Hole.Position+Normal)
table.insert(tab, Hole)
local breakoffParts = {Instance.new("Part", workspace),Instance.new("Part", workspace),Instance.new("Part", workspace),Instance.new("Part", workspace)}
for i, v in pairs(breakoffParts) do
v.Position = Hole.Position
v.Orientation = Vector3.new(math.random(0,360),math.random(0,360),math.random(0,360))
local mesh = Instance.new("SpecialMesh", v)
mesh.MeshType = Enum.MeshType.Wedge
v.Size = Vector3.new(0.05,0.05,0.05)
v.Material = Part.Material
v.Color = Part.Color
v.Transparency = Part.Transparency
v.Reflectance = Part.Reflectance
v.Velocity = Vector3.new(math.random(-5,5),math.random(-5,5),math.random(-5,5))
table.insert(tab, v)
game.Debris:AddItem(v, 2)
end
if Part.Material == Enum.Material.Slate or Part.Material == Enum.Material.Sand or Part.Material == Enum.Material.Pebble or Part.Material == Enum.Material.Brick or Part.Material == Enum.Material.Concrete or Part.Material == Enum.Material.Cobblestone or Part.Material == Enum.Material.Granite or Part.Material == Enum.Material.Marble or Part.Material == Enum.Material.Wood or Part.Material == Enum.Material.WoodPlanks or Part.Material == Enum.Material.Plastic or Part.Material == Enum.Material.SmoothPlastic then
Hole.Dust.Enabled = true
end
if Part.Material == Enum.Material.Wood or Part.Material == Enum.Material.WoodPlanks then
Hole.Splinter.Enabled = true
end
if Part.Material == Enum.Material.Glass then
if Part.CanCollide == true then
Part.CanCollide = false
local BreakSound = script.Parent.Glass:Clone()
BreakSound.Parent = Part
BreakSound:Play()
game.Debris:AddItem(BreakSound, BreakSound.TimeLength)
Part.CanCollide = false
if Part:FindFirstChild("Shatter") == nil then
local eft = script.Parent.Shatter:Clone()
eft.Parent = Part
eft.Enabled = true
eft.Color = ColorSequence.new(Part.Color)
eft.Transparency = NumberSequence.new(Part.Transparency)
Hole.H1.Transparency = 1
Hole.H2.Transparency = 1
end
else
Hole.H1.Transparency = 1
Hole.H2.Transparency = 1
end
end
if Part.Material == Enum.Material.Slate or Part.Material == Enum.Material.Pebble or Part.Material == Enum.Material.Brick or Part.Material == Enum.Material.Concrete or Part.Material == Enum.Material.Cobblestone or Part.Material == Enum.Material.Granite or Part.Material == Enum.Material.Marble then
Hole.Rock.Enabled = true
Hole.Rock.Color = ColorSequence.new(Part.Color)
end
if Part.Material == Enum.Material.ForceField then
Hole.Energy.Enabled = true
Hole.H1.Transparency = 1
Hole.H2.Transparency = 1
end
if Part.Material == Enum.Material.Plastic or Part.Material == Enum.Material.SmoothPlastic or Part.Material == Enum.Material.Foil then
Hole.Plastic.Enabled = true
Hole.Plastic.Color = ColorSequence.new(Part.Color)
end
if Part.Material == Enum.Material.Metal or Part.Material == Enum.Material.DiamondPlate or Part.Material == Enum.Material.CorrodedMetal then
Hole.Sparks.Enabled = true
end
if Part.Material == Enum.Material.Grass then
Hole.Grass.Enabled = true
Hole.Grass.Color = ColorSequence.new(Part.Color)
end
if Part.Material == Enum.Material.Fabric then
Hole.Fabric.Enabled = true
Hole.Fabric.Color = ColorSequence.new(Part.Color)
Hole.TornFabric.Enabled = true
Hole.TornFabric.Color = ColorSequence.new(Part.Color)
end
Hole.H1.Color3 = Part.Color
Hole.H2.Color3 = Part.Color
local Weld = Instance.new("Weld")
Weld.Part0 = Part
Weld.Part1 = Hole
Weld.C0 = Part.CFrame:Inverse()
Weld.C1 = Hole.CFrame:Inverse()
Weld.Parent = Hole
if Part and Part.Parent:FindFirstChild("Humanoid") ~= nil then
for i, v in pairs(breakoffParts) do
v:Destroy()
end
local bleed = script.Parent.Bleeding:Clone()
bleed.Parent = Part.Parent:FindFirstChild("Humanoid")
bleed.Value = true
local damage = 10
if Part.Name == "Head" then
damage = math.random(50,70)
bleed.BleedDamage.Value = 42
end
if Part.Name == "Torso" or Part.Name == "HumanoidRootPart" then
damage = math.random(20,22.5)
bleed.BleedDamage.Value = 50
end
if Part.Parent:IsA("Accessory") then
if (Part.Position-Part.Parent.Parent.Head.Position).magnitude > (Part.Position-Part.Parent.Parent.Torso.Position).magnitude then
damage = math.random(20,25)
bleed.BleedDamage.Value = 50
elseif (Part.Position-Part.Parent.Parent.Head.Position).magnitude < (Part.Position-Part.Parent.Parent.Torso.Position).magnitude then
damage = math.random(50,70)
bleed.BleedDamage.Value = 42
end
end
Part.Parent.Humanoid:TakeDamage(damage)
Hole.BloodCloud.Enabled = true
Hole.Bleed.Enabled = true
Hole.Blood.Enabled = true
Hole.Dust.Enabled = false
Hole.Splinter.Enabled = false
Hole.Rock.Enabled = false
Hole.Plastic.Enabled = false
Hole.Grass.Enabled = false
Hole.Fabric.Enabled = false
Hole.H1.Transparency = 1
Hole.H2.Transparency = 1
Hole.B1.Transparency = 0.4
Hole.B2.Transparency = 0.4
else if Part.Parent.Parent:FindFirstChild("Humanoid") and Part ~= nil then
for i, v in pairs(breakoffParts) do
v:Destroy()
end
local bleed = script.Parent.Bleeding:Clone()
bleed.Parent = Part.Parent:FindFirstChild("Humanoid")
bleed.Value = true
local damage = 10
if Part.Name == "Head" then
damage = math.random(50,70)
bleed.BleedDamage.Value = 42
end
if Part.Name == "Torso" or Part.Name == "HumanoidRootPart" then
damage = math.random(20,25)
bleed.BleedDamage.Value = 50
end
Part.Parent.Parent:FindFirstChild("Humanoid"):TakeDamage(damage)
Hole.BloodCloud.Enabled = true
Hole.Bleed.Enabled = true
Hole.Blood.Enabled = true
Hole.Dust.Enabled = false
Hole.Splinter.Enabled = false
Hole.Rock.Enabled = false
Hole.Grass.Enabled = false
Hole.Plastic.Enabled = false
Hole.Fabric.Enabled = false
Hole.H1.Transparency = 1
Hole.H2.Transparency = 1
Hole.B1.Transparency = 0.4
Hole.B2.Transparency = 0.4
end
end
Hole.Dust.Color = ColorSequence.new(Part.Color)
end
if Part then
if Part.Parent ~= nil then
game.Debris:AddItem(Hole,15)
end
end
end)
4 comments
what the F.... Ugh so hard.. I need time to understand all it
I checked my script, and it turned out that I do damage, but only if I aim at myself. I don't know, maybe the beam is stuck somewhere?
Is your beam hitting your char? try to print the part which is hit so you know the name
Is your beam hitting your char? try to print the part which is hit so you know the name