Acs bullet damage only registering when hitting head

I have encountered a weird issue when using ACS (Advanced Combat System) version 1.7.5. Every time I shoot at a torso, left leg, right leg, left arm, or right arm, it doesn’t damage the player. But if I hit the head it’s an instant kill. Does anyone know how to fix this issue and make it so that you can be damaged from all parts?

Video

1 Like

Give me your damage script please

I would Assume its this

local Debris = game:GetService(“Debris”)
local Engine = game.ReplicatedStorage:WaitForChild(“ACS_Engine”)
local Holes = Engine.Holes
local TS = game:GetService(“TweenService”)
local RS = game:GetService(“RunService”)

local Explosion = {“187137543”; “169628396”; “926264402”; “169628396”; “926264402”; “169628396”; “187137543”;}
local Hitmarker = {}
local RicoSounds = {“253951210”,“253951228”,“253951272”,“253951309”,“253951341”,}

local ACS_Storage= workspace:WaitForChild(“ACS_WorkSpace”)
local BulletModel = ACS_Storage.Server
local ServerConfig = require(Engine:WaitForChild(“ServerConfigs”):WaitForChild(“Config”))

local holescopy = {
WoodPlanks = “Wood”,
LeafyGrass = “Grass”,
Mud = “Ground”,
DiamondPlate = “Metal”,
}

for v1, v2 in pairs(holescopy) do
if not Holes:FindFirstChild(v1) then
local folder = Holes:FindFirstChild(v2)
if folder then
local newFolder = folder:Clone()
newFolder.Name = v1
newFolder.Parent = Holes
end
end
end

local RGB = Color3.fromRGB
local NSn = NumberSequence.new
local NRn = NumberRange.new
local V3n = Vector3.new

local BodyParts = {
“Head”,
“Torso”,
“Left Arm”,
“Right Arm”,
“Left Leg”,
“Right Leg”,
“HumanoidRootPart”,
}

function rlist(Table)
return Table[math.random(1,#Table)]
end

function randf(low,top)
local diff = math.random()*(top - low)
return low + diff
end

function colorseq(r,g,b)
return ColorSequence.new(Color3.new(r,g,b))
end

function CreatePO(att,color,brightness,rangemin,rangemax,Time)
local Po = Instance.new(“PointLight”, att)
Po.Color = color
Po.Brightness = brightness
Po.Shadows = true
Po.Range = math.random(rangemin, rangemax)
Debris:AddItem(Po, Time)
end

function Hitmarker.HitEffect(Ray_Ignore,ACS_Storage,Pos,Hitpart,Norm,Mat,Settings)
local Attachment = Instance.new(“Attachment”)
Attachment.CFrame = CFrame.new(Pos, Pos + Norm)
Attachment.Parent = workspace.Terrain

-- materials folder selection process
local MatFolder
if Holes:FindFirstChild("Name:"..Hitpart.Name) then
	MatFolder = Holes["Name:"..Hitpart.Name]
elseif table.find(BodyParts,Hitpart.Name) then
	MatFolder = Holes.Human
elseif Holes:FindFirstChild(Hitpart.Material) then
	MatFolder = Holes:FindFirstChild(Hitpart.Material)
end

if not MatFolder then
	MatFolder = Holes.Default
end



-- hole decal and part
if MatFolder:FindFirstChild("Holes") then
	local part = Instance.new("Part")
	part.FormFactor = "Custom"
	part.TopSurface = 0
	part.BottomSurface = 0
	part.Transparency = 1
	part.CanCollide = false
	part.Material = Enum.Material.Air
	
	-- bullet hole size per caliber
	local multiplier = Settings.BulletHoleSize
	if not multiplier then
		multiplier = ServerConfig.BulletHoleSizes[Settings.BulletType]
		if not multiplier then
			multiplier = ServerConfig.BulletHoleSizes["default"]
		end
	end

	local hs = MatFolder.HoleSize
	local size = randf(hs.MinValue,hs.MaxValue) * multiplier
	
	part.Size = Vector3.new(size,0,size)
	part.CFrame = CFrame.new(Pos,Pos-Norm) * CFrame.Angles(math.pi/2,randf(0,2)*math.pi,0)

	local Dec = rlist(MatFolder.Holes:GetChildren()):Clone()
	Dec.Face = "Top"
	if not MatFolder:FindFirstChild("DontRecolor") then
		Dec.Color3 = Hitpart.Color
	end
	Dec.Parent = part
	
	local b = Instance.new("WeldConstraint")
	b.Parent = part
	b.Part0 = part
	b.Part1 = Hitpart

	part.Parent = BulletModel
end


-- particles
if MatFolder:FindFirstChild("Particles") then
	local Particles = MatFolder.Particles.Used:GetChildren()
	for _, Particle in pairs(Particles) do
		local NewParticle = Particle:Clone()
		NewParticle.Enabled = true
		NewParticle.Parent = Attachment
		local dur = .05
		if NewParticle:FindFirstChild("Duration") then
			dur = NewParticle.Duration.Value
		end
		if NewParticle:FindFirstChild("HitpartColor") then
			NewParticle.Color = ColorSequence.new(Hitpart.Color)
		end
		delay(dur,function()
			NewParticle.Enabled = false
			Debris:AddItem(NewParticle, NewParticle.Lifetime.Max)
		end)
	end
end

-- flash
if MatFolder:FindFirstChild("Flash") then
	local po = MatFolder.Flash:Clone()
	po.Shadows = true
	po.Range = po.Range * randf(1/1.35,1.35)
	po.Enabled = true
	po.Parent = Attachment
	if MatFolder.Flash:FindFirstChild("Duration") then
		Debris:AddItem(po,MatFolder.Flash.Duration.Value)
	else
		Debris:AddItem(po,0.05)
	end
end

-- flash decal
if MatFolder:FindFirstChild("FlashDecals") then
	local bg = Instance.new("BillboardGui")
	bg.Adornee = Attachment
	bg.Parent = Attachment
	local flash = rlist(MatFolder.FlashDecals:GetChildren()):Clone()

	local size = flash:FindFirstChild("Size")
	local flashsize
	if size then
		flashsize = randf(size.MinValue,size.MaxValue)
	else
		flashsize = randf(0.8,1.25)
	end
	bg.Size = UDim2.new(flashsize,0,flashsize,0)

	local trans = flash:FindFirstChild("Trans")
	if trans then
		flash.ImageTransparency = randf(trans.MinValue,trans.MaxValue)
	end

	flash.Visible = true
	flash.Rotation = math.random(0,360)
	flash.Size = UDim2.new(.05,0,.05,0)
	local dur = .07
	if flash:FindFirstChild("Duration") then
		dur = flash.Duration.Value
	end
	flash.Parent = bg
	flash:TweenSize(UDim2.new(1,0,1,0),"Out","Quad",dur*2)
	Debris:AddItem(bg,dur)

end

-- sound
local Sound = rlist(MatFolder.Sounds:GetChildren()):Clone()
Sound.PlaybackSpeed = randf(.8,1.25) * Sound.PlaybackSpeed
Sound.Parent = Attachment
Sound:Play()
Debris:AddItem(Sound,Sound.TimeLength/Sound.PlaybackSpeed)

if Hitpart.Name == "Hitmaker" then
	local Marca = Instance.new("Part")
	Marca.Material = Enum.Material.Neon
	Marca.Anchored = true
	Marca.CanCollide = false
	Marca.Color = Color3.fromRGB(math.random(0,255),math.random(0,255),math.random(0,255))
	Marca.Size = Vector3.new(0.1,0.1,0.01)
	Marca.Parent = ACS_Storage.Server
	Marca.CFrame = CFrame.new(Pos, Pos + Norm)
	table.insert(Ray_Ignore, Marca)
	Debris:AddItem(Attachment, 5)
	game.Debris:AddItem(Marca, 20)

elseif  Hitpart.Name == "alvo" then
	--local BulletWhizz = Instance.new("Sound")
	--BulletWhizz.Parent = Attachment
	--BulletWhizz.Volume = math.random(20,30)/10
	--BulletWhizz.MaxDistance = 500
	--BulletWhizz.EmitterSize = 25
	--BulletWhizz.PlaybackSpeed = math.random(38, 58)/40
	--BulletWhizz.SoundId = "rbxassetid://" .. rlist(Metal)
	--BulletWhizz:Play()

	local Marca = Instance.new("Part")
	Marca.Anchored = true
	Marca.CanCollide = false
	Marca.Transparency = 1
	Marca.Size = Vector3.new(0.2,0.2,0.01)
	Marca.Parent = ACS_Storage.Server
	Marca.CFrame = CFrame.new(Pos, Pos + Norm)
	Debris:AddItem(Attachment, 5)
	game.Debris:AddItem(Marca, 20)
	table.insert(Ray_Ignore, Marca)
	local Dec = Instance.new("Decal")
	Dec.Texture = "rbxassetid://359667865"
	Dec.Parent = Marca

elseif Hitpart.Name == "Knob" and Settings.CanBreachDoor then
	local DoorModel = Hitpart.Parent
	if DoorModel:FindFirstChild("Hinge") then
		DoorModel.Hinge.HingeConstraint.ActuatorType = Enum.ActuatorType.None
	end
	Hitpart:Destroy()
elseif Hitpart.Name == "DoorHinge"  and Settings.CanBreachDoor then
	local DoorModel = Hitpart.Parent
	Hitpart:Destroy()
	if DoorModel:FindFirstChild("DoorHinge") == nil and DoorModel:FindFirstChild("Hinge") then
		if DoorModel:FindFirstChild("Hinge") then
			DoorModel.Hinge.HingeConstraint:Destroy()
			DoorModel.Hinge:Destroy()
		end
	end
end

coroutine.wrap(function()
	repeat RS.Heartbeat:Wait() until #Attachment:GetChildren() == 0
	Attachment:Destroy()
end)()

end

function Hitmarker.Explosion(Position, HitPart, Normal)

local Hitmark = Instance.new("Attachment")
Hitmark.CFrame = CFrame.new(Position, Position + Normal)
Hitmark.Parent = workspace.Terrain

local S = Instance.new("Sound")
S.EmitterSize = 50
S.MaxDistance = 1500
S.SoundId = "rbxassetid://".. rlist(Explosion)
S.PlaybackSpeed = math.random(30,55)/40
S.Volume = 2
S.Parent = Hitmark
S.PlayOnRemove = true
S:Destroy()

local Exp = Instance.new("Explosion")
Exp.BlastPressure = 0
Exp.BlastRadius = 0
Exp.DestroyJointRadiusPercent = 0
Exp.Position = Hitmark.Position
Exp.Parent = Hitmark

Debris:AddItem(Hitmark, 5)

end

function Hitmarker.RicoSound(pos)
local part = Instance.new(“Part”)
part.Anchored = true
part.CanCollide = false
part.Transparency = 1
part.Material = Enum.Material.Air
part.Size = Vector3.new(.1,.1,1)

local sound = Instance.new("Sound")
sound.RollOffMode = Enum.RollOffMode.InverseTapered
sound.RollOffMinDistance = 24
sound.RollOffMaxDistance = 120
sound.SoundId = "rbxassetid://" .. rlist(RicoSounds)
sound.Parent = part

part.Parent = BulletModel
sound:Play()
spawn(function()
	sound.Played:Wait()
	part:Destroy()
end)

end

return Hitmarker

I didn’t see any :TakeDamage()

1 Like

Just to be clear, you do know what acs is right?

Not really, no. But the devforum only allows me to type three times ten characters before I can send something.

This script is only compatible with R6 avatars.

local BodyParts = {
	“Head”,
	“Torso”,
	“Left Arm”,
	“Right Arm”,
	“Left Leg”,
	“Right Leg”,
	“HumanoidRootPart”,
}

If you want to make it compatible with R15 avatars I assume you’ll need to add the R15 joints to this table value.

I am currently using r6 avatars.

Tell me what ACS is pls! Btw I need more letters.

Advanced Combat System, relatively popular FPS module.

Ok, but I don’t know what the damage script is.

Yeah, That’s where I’m stuck at. I don’t exactly know what script allows guns to damage players

Send me an ACS gun, 3x10 characters

There are two different models. The client model and the server model. But none of those have scripts in them. Just parts, particles, and surface guis. The only thing that would contain a script for the gun would be the tool itself. But the tool only has a settings and animations script so I don’t think sending the gun models and tool would help.

The ACS you are using is for R6 characters, rather change ur game settings or get the R15 version. ACS 2.0.0 - Official Release (R15) - Roblox

there is an R15 version OP just got the wrong one

i don’t think you need to involve the humanoid root part since that is invisible and torso is already an exact substitute, i also don’t see anything about a line that withdraws the health from the humanoid

No its not the wrong one. Its A modded acs that was originally for r15, but then got optimized to allow the use of r6 avatars.

I prefer to use r6 avatars as r15 ones can be quite glitchy at times.

Edit: if you look at the model you sent and then look at the comments you’ll see what I mean.

then use the 2.0.1 one? ACS 2.0.1 - Official Release - Roblox