I have had this bug for 3-4 days now and I keep pushing it back hoping one day it will pop into my head on how to fix it, but I cant. So I have come here!
I have a gun script and I am trying to make it so when it hits a players armor of something it still damages them, and ive thought of using a ray cast ignore and that is what I am trying right now but there has to be other ways also right?
Like this has to be over complicated just to damage a player when the armor is hit.
Like a Stormtrooper has a full helmet, so if he gets hit in the head it stops the bullet so they are immune to head shots. I dont want this.
But here are the scripts, theses are just some chunks of code out of the whole thing.
This is the local script
function RayCast(Start,Direction,Range,Ignore)
local Hit,EndPos = game.Workspace:FindPartOnRay(Ray.new(Start,Direction*Range),Ignore)
if Hit then
if (Hit.Transparency > 0.75
or Hit.Name == "Handle"
or Hit.Name == "Effect"
or Hit.Name == "Bullet"
or Hit.Name == "Laser"
or string.lower(Hit.Name) == "water"
or Hit.Name == "Rail"
or Hit.Name == "Arrow"
or (Hit.Parent:FindFirstChild("Humanoid") and Hit.Parent.Humanoid.Health == 0)
or (Hit.Parent:FindFirstChild("Humanoid") and Hit.Parent:FindFirstChild("TEAM") and TEAM and Hit.Parent.TEAM.Value == TEAM.Value))
or (Hit.Parent:FindFirstChild("Humanoid") and PiercedHumanoid[Hit.Parent.Humanoid]) then
Hit,EndPos = RayCast(EndPos+(Direction*.01),Direction,Range-((Start-EndPos).magnitude),Ignore)
end
end
return Hit,EndPos
end
There is the ray for the local script now here is the damage portion
local Hit,EndPos = RayCast(Start,Direction,5000,Character)
if not Module.ExplosiveEnabled then
if Hit and Hit.Parent then
local TargetHumanoid = Hit.Parent:FindFirstChild("Humanoid")
local TargetTorso = Hit.Parent:FindFirstChild("UpperTorso")
--local TargetTEAM = Hit.Parent:FindFirstChild("TEAM")
if TargetHumanoid and TargetHumanoid.Health > 0 and TargetTorso then
--if TargetTEAM and TargetTEAM.Value ~= TEAM.Value then
InflictTarget:FireServer(TargetHumanoid,
TargetTorso,
(Hit.Name == "Head" and Module.HeadshotEnabled) and Module.BaseDamage * Module.HeadshotDamageMultiplier or Module.BaseDamage,
Direction,
Module.Knockback,
Module.Lifesteal,
Module.FlamingBullet)
PiercedHumanoid[TargetHumanoid] = true
--end
else
PierceAvailable = 0
end
end
That fires the server and here is the server side damage script
InflictTarget.OnServerEvent:connect(function(Player,TargetHumanoid,TargetTorso,Damage,Direction,Knockback,Lifesteal,FlamingBullet)
if Player and TargetHumanoid and TargetHumanoid.Health ~= 0 and TargetTorso then
while TargetHumanoid:FindFirstChild("creator") do
TargetHumanoid.creator:Destroy()
end
local creator = Instance.new("ObjectValue",TargetHumanoid)
creator.Name = "creator"
creator.Value = Player
game.Debris:AddItem(creator,5)
TargetHumanoid:TakeDamage(Damage)
if TargetHumanoid.Health <= 0 then
game.ReplicatedStorage.DataFile[Player.Name].AssaultClassKills.Value = game.ReplicatedStorage.DataFile[Player.Name].AssaultClassKills.Value + 1
end
if Knockback > 0 then
TargetTorso.Velocity = Direction * Knockback
end
if Lifesteal > 0 and Humanoid and Humanoid.Health ~= 0 then
Humanoid.Health = Humanoid.Health + (Damage*Lifesteal)
end
if FlamingBullet then
local Debuff = TargetHumanoid.Parent:FindFirstChild("IgniteScript") or script.IgniteScript:Clone()
Debuff.creator.Value = Player
Debuff.Disabled = false
Debuff.Parent = TargetHumanoid.Parent
end
end
end)
I know it a ton to take it but I will be so thankful if someone can please help me out. I just cant seem to fix this problem.
Thank you for your time. Merry Christmas!
