New: Nitro Boost our Discord server and receive full donation perks here on the website! Join the Scripting Helpers Discord Server to learn more! You can also Support on Patreon as always.
Ad
Still have questions? Join our Discord server and get real time help.
Log in to vote
0

Why does this weapon do damage to the Humanoid but wont kill it?

Asked by 1 year ago

Ok, this is the hyper laser gun, I have made a few modifications to it, and it does damage to humanoids but it wont kill them and when it does damage i can pull out another weapon and then it starts damaging them again back from full health, why tho?

-----------------

--| Constants |--

-----------------



local SHOT_SPEED = 1000

local SHOT_TIME = 100



local NOZZLE_OFFSET = Vector3.new(0, 0.5, 5)



-----------------

--| Variables |--

-----------------



local PlayersService = game:GetService('Players')

local DebrisService = game:GetService('Debris')



local Tool = script.Parent

local Handle = Tool:WaitForChild('Handle')

local holdtrack

local rl

local firetrack

local FireAnim = script.Parent:WaitForChild('FireAni')

local FireSound = Handle:WaitForChild('Fire')

local idleAnim = script.Parent:WaitForChild('idle')

local reloadAnim = script.Parent:WaitForChild('Reload')

local ReloadSound = Handle:WaitForChild('Reload')

local HitFadeSound = script:WaitForChild('HitFade')



local PointLight = Handle:WaitForChild('PointLight')



local Character = nil

local Humanoid = nil

local Player = nil



local BaseShot = nil



-----------------

--| Functions |--

-----------------



-- Returns a character ancestor and its Humanoid, or nil

local function FindCharacterAncestor(subject)

if subject and subject ~= game.Workspace then

local humanoid = subject:FindFirstChild('Humanoid')

if humanoid then

return subject, humanoid

else

return FindCharacterAncestor(subject.Parent)

end

end

return nil

end



-- Removes any old creator tags and applies new ones to the specified target

local function ApplyTags(target)

while target:FindFirstChild('creator') do

target.creator:Destroy()

end



local creatorTag = Instance.new('ObjectValue')

creatorTag.Value = Player

creatorTag.Name = 'creator' --NOTE: Must be called 'creator' for website stats



local iconTag = Instance.new('StringValue')

iconTag.Value = Tool.TextureId

iconTag.Name = 'icon'



iconTag.Parent = creatorTag

creatorTag.Parent = target

DebrisService:AddItem(creatorTag, 4)

end



-- Returns all objects under instance with Transparency

local function GetTransparentsRecursive(instance, partsTable)

local partsTable = partsTable or {}

for _, child in pairs(instance:GetChildren()) do

if child:IsA('BasePart') or child:IsA('Decal') then

table.insert(partsTable, child)

end

GetTransparentsRecursive(child, partsTable)

end

return partsTable

end



local function SelectionBoxify(instance)

local selectionBox = Instance.new('SelectionBox')

selectionBox.Adornee = instance

selectionBox.Color = BrickColor.new('New Yeller')

selectionBox.Parent = instance

return selectionBox

end



local function Light(instance)

local light = PointLight:Clone()

light.Range = light.Range + 2

light.Parent = instance

end



local function FadeOutObjects(objectsWithTransparency, fadeIncrement)

repeat

local lastObject = nil

for _, object in pairs(objectsWithTransparency) do

object.Transparency = object.Transparency + fadeIncrement

lastObject = object

end

wait()

until lastObject.Transparency == 0 or not lastObject

end



local function Dematerialize(character, humanoid, firstPart)

humanoid.WalkSpeed = 16



local parts = {}

for _, child in pairs(character:GetChildren()) do

if child:IsA('BasePart') then

child.Anchored = true

table.insert(parts, child)

end

end



local selectionBoxes = {}



local firstSelectionBox = SelectionBoxify(firstPart)

Light(firstPart)

wait(0.05)



for _, part in pairs(parts) do

if part ~= firstPart then

table.insert(selectionBoxes, SelectionBoxify(part))

Light(part)

end

end



local objectsWithTransparency = GetTransparentsRecursive(character)

FadeOutObjects(objectsWithTransparency, 0)



wait(0.5)



humanoid.Health = 0

DebrisService:AddItem(character, 2)



end



local function OnTouched(shot, otherPart)

local character, humanoid = FindCharacterAncestor(otherPart)

if character and humanoid and character ~= Character then

humanoid.Health = 0

if humanoid.Health >= 0 then

game.ReplicatedStorage.ManEvent:FireServer()

end

ApplyTags(humanoid)

if shot then

local hitFadeSound = shot:FindFirstChild(HitFadeSound.Name)

if hitFadeSound then

hitFadeSound.Parent = humanoid.Torso

hitFadeSound:Play()

end

shot:Destroy()

end

end

end



local function OnEquipped()

Character = Tool.Parent

Humanoid = Character:WaitForChild('Humanoid')

Player = PlayersService:GetPlayerFromCharacter(Character)

holdtrack = Humanoid:LoadAnimation(idleAnim)

holdtrack:Play()

end



local function OnActivated()

if Tool.Enabled and Humanoid.Health > 0 then

Tool.Enabled = false



FireSound:Play()

firetrack = Humanoid:LoadAnimation(FireAnim)

firetrack:Play()



local handleCFrame = Handle.CFrame

local firingPoint = handleCFrame.p + handleCFrame:vectorToWorldSpace(NOZZLE_OFFSET)

local shotCFrame = CFrame.new(firingPoint, Humanoid.TargetPoint)



local laserShotClone = BaseShot:Clone()

laserShotClone.CFrame = shotCFrame + (shotCFrame.lookVector * (BaseShot.Size.Z / 2))

local bodyVelocity = Instance.new('BodyVelocity')

bodyVelocity.velocity = shotCFrame.lookVector * SHOT_SPEED

bodyVelocity.Parent = laserShotClone

laserShotClone.Touched:connect(function(otherPart)

OnTouched(laserShotClone, otherPart)

end)

DebrisService:AddItem(laserShotClone, SHOT_TIME)

laserShotClone.Parent = Tool



wait(0.6) -- FireSound length



ReloadSound:Play()

rl = Humanoid:LoadAnimation(reloadAnim)

rl:Play()

ReloadSound:Stop()

wait(0.25) -- ReloadSound length



Tool.Enabled = true

end

end



local function OnUnequipped()

if holdtrack then

holdtrack:Stop()

end

end



--------------------

--| Script Logic |--

--------------------



BaseShot = Instance.new('Part')

BaseShot.Name = 'Effect'

BaseShot.FormFactor = Enum.FormFactor.Custom

BaseShot.Size = Vector3.new(0.2, 0.2, 3)

BaseShot.CanCollide = false

BaseShot.BrickColor = BrickColor.new('New Yeller')

SelectionBoxify(BaseShot)

Light(BaseShot)

HitFadeSound:Clone().Parent = BaseShot



Tool.Equipped:connect(OnEquipped)

Tool.Unequipped:connect(OnUnequipped)

Tool.Activated:connect(OnActivated)
0
Is this in a local script? Only the server can change values. Also, make sure the humanoid breaks joints on death SaltyIceberg 80 — 1y
0
Yes it's a local script but the break joints I need help with xD ChefDevRBLX 83 — 1y

Answer this question