In my game, I have a gun that uses raycasting. I want to give the player +1 "VampireKills" when the vampire they shoot dies. But instead of doing the intended function, the player gains +1 kills for every shot they landed beforehand. Another problem is that when the player shoots a vampire and they die by any other means, the player will still get the kill(s). Help would be appreciated. Heres a snippet of the gun's code. The function that gives them a kill is located at line 59.
if result then
local part = result.Instance
local humanoid = part.Parent:FindFirstChild("Humanoid") or part.Parent.Parent:FindFirstChild("Humanoid")
local hitbox = part
local torso = part.Parent:FindFirstChild("Torso") or part.Parent.Parent:FindFirstChild("Torso")
local root = part.Parent:FindFirstChild("HumanoidRootPart") or part.Parent.Parent:FindFirstChild("HumanoidRootPart")
local charactervalues = part.Parent:FindFirstChild("charactervalues") or part.Parent.Parent:FindFirstChild("charactervalues")
local material = part.Material
if part.Name == "Part" or part.Name == "Union" or part.Name == "Wall" or part.Name == "Mattress" or part.Name == "Eqa" or part.Name == "Handle" or part.Name == "Lever" or part.Name == "Union" or part.Name == "Bulb" or part.Name == "Light" or part.Name == "Lever1" or part.Name == "Lever2" or part.Name == "Metal1" or part.Name == "Sand" or part.Name == "Arm" or part.Name == "Floor" or part.Name == "Frame" or part.Name == "Glass" or part.Name == "Paint" or part.Name == "Seat" or part.Name == "VehicleSeat" or part.Name == "Wedge" or part.Name == "Baseplate" or part.Name == "Base" or part.Name == "Crane" or part.Name == "Forklift" or part.Name == "MeshPart" or part.Name == "Hook" or part.Name == "Pallet" or part.Name == "Monitor 3" or part.Name == "RopeCapRoundBase" or part.Name == "RopeShaftRoundSmoothBase" or part.Name == "Trashcan" or part.Name == "Support" or part.Name == "Vending Machine" or part.Name == "Ambient Light" or part.Name == "Attach" or part.Name == "Main" or part.Name == "Pillar" or part.Name == "Truss" or part.Name == "IndoorWall" or part.Name == "Bathroom doors" or part.Name == "door frame" then
if part.Material == Enum.Material.Plastic or part.Material == Enum.Material.SmoothPlastic or part.Material == Enum.Material.Neon or part.Material == Enum.Material.Fabric then
local plastic = game.ServerStorage.bullethits.PlasticHit:Clone()
plastic.Parent = game.Workspace.Thrown
plastic.Position = result.Position
plastic.Sound.PlaybackSpeed = random:NextNumber(0.5, 1.5)
plastic.Script.Enabled = true
plastic.Sound:Play()
elseif part.Material == Enum.Material.Asphalt or part.Material == Enum.Material.Basalt or part.Material == Enum.Material.Brick or part.Material == Enum.Material.Cobblestone or part.Material == Enum.Material.Concrete or part.Material == Enum.Material.CrackedLava or part.Material == Enum.Material.Ground or part.Material == Enum.Material.Granite or part.Material == Enum.Material.Slate or part.Material == Enum.Material.Sandstone or part.Material == Enum.Material.Ice or part.Material == Enum.Material.Rock or part.Material == Enum.Material.Salt or part.Material == Enum.Material.Pebble or part.Material == Enum.Material.Marble or part.Material == Enum.Material.Limestone or part.Material == Enum.Material.Pavement or part.Material == Enum.Material.Glacier then
local rock = game.ServerStorage.bullethits.RockHit:Clone()
rock.Parent = game.Workspace.Thrown
rock.Position = result.Position
rock.Sound.PlaybackSpeed = random:NextNumber(0.5, 1.5)
rock.Script.Enabled = true
rock.Sound:Play()
elseif part.Material == Enum.Material.CorrodedMetal or part.Material == Enum.Material.DiamondPlate or part.Material == Enum.Material.Foil or part.Material == Enum.Material.Metal then
local metal = game.ServerStorage.bullethits.MetalHit:Clone()
metal.Parent = game.Workspace.Thrown
metal.Position = result.Position
metal.Sound.PlaybackSpeed = random:NextNumber(0.5, 1.5)
metal.Script.Enabled = true
metal.Sound:Play()
elseif part.Material == Enum.Material.Wood or part.Material == Enum.Material.WoodPlanks then
local wood = game.ServerStorage.bullethits.WoodHit:Clone()
wood.Parent = game.Workspace.Thrown
wood.Position = result.Position
wood.Sound.PlaybackSpeed = random:NextNumber(0.5, 1.5)
wood.Script.Enabled = true
wood.Sound:Play()
elseif part.Material == Enum.Material.Sand then
local sand = game.ServerStorage.bullethits.SandHit:Clone()
sand.Parent = game.Workspace.Thrown
sand.Position = result.Position
sand.Sound.PlaybackSpeed = random:NextNumber(0.5, 1.5)
sand.Script.Enabled = true
sand.Sound:Play()
end
end
if hitbox and hitbox.Name == "Hitterbox" then
local hitted = hitbox.Parent.Parent
--give the player a kill
hitted.Humanoid.Died:Connect(function()
if humanoid.Parent:FindFirstChild("charactervalues") then
player.challengedata.VampireKills.Value += 1
end
end)
--[[
if charactervalues:WaitForChild("Role").Value ~= "Vampire" and humanoid ~= user2 then
user2:TakeDamage(40)
game.ServerStorage.Dummy:Clone().Parent = playa.PlayerGui
end
]]
if charactervalues:WaitForChild("Role").Value ~= "Vampire" or humanoid.PlatformStand == true or humanoid == user2 then
user2:TakeDamage(0)
else
humanoid:TakeDamage(60)
torso.BloodSplatter.Enabled = true
spawn(function()
wait(0.1)
torso.BloodSplatter.Enabled = false
end)
torso.BloodSplatter.Enabled = true
spawn(function()
wait(0.1)
torso.BloodSplatter.Enabled = false
end)
local sound = game.ServerStorage.Hit:Clone()
sound.Parent = root
sound.PlaybackSpeed = random:NextNumber(0.5, 1.5)
sound:Play()
spawn(function()
wait(3)
sound:Destroy()
end)
end
end
end
wait(0.25)
bullet_clone:Destroy()
end
end)
