Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

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

Asked by 5 years 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 81 — 5y
0
Yes it's a local script but the break joints I need help with xD ChefDevRBLX 90 — 5y

Answer this question