I want to do the damage from my ki blast based on enemie defense, i did almost the same thing to do a punch and it's working, but when i put the script into the ki blast, it just ignore the condition to check the enemie's defense, sorry if it's a long script:
local player = game.Players.LocalPlayer
local name = player.Name
local candamage = true
local stats = game.ReplicatedStorage:WaitForChild("stats"..name)
local power = stats:WaitForChild("power")
local ki = stats:WaitForChild("ki")
local defense = stats:WaitForChild("defense")
local kidmg = stats:WaitForChild("kidamage")
local chatting = false
local energy = stats:WaitForChild("energy")
local maxenergy = stats:WaitForChild("maxenergy")
local hold = false
local candamage = true
local touched = false
local coolE = false
local function onKeyPress(inputObject, gameProcessedEvent)
if inputObject.KeyCode == Enum.KeyCode.Q and coolE == false then
local human1 = workspace:WaitForChild(name)
local human = human1:WaitForChild("Humanoid")
local righthand = human.Parent.RightHand
local torso = human.Parent.HumanoidRootPart
local blast = Instance.new("Part")
blast.Shape = "Ball"
blast.Parent = workspace
blast.Size = Vector3.new(2,2,2)
blast.Material = "Neon"
blast.BrickColor = BrickColor.new("Cyan")
blast.Transparency = 0.2
blast.CFrame = righthand.CFrame * CFrame.new(0,0,0)
local bv = Instance.new("BodyVelocity")
bv.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
bv.Velocity = torso.CFrame.lookVector * 100
bv.Parent = blast
blast.CanCollide = false
wait(0.04)
blast.CanCollide = true
energy.Value = energy.Value - 10
blast.Touched:connect(function(hit)
blast:Destroy()
local namep = hit.Parent.Name
local humanp = hit.Parent.Humanoid
local maxp = humanp.MaxHealth / 100
local health = humanp.Health
local statsp = game.ReplicatedStorage:WaitForChild("stats"..namep)
local defensep = statsp:WaitForChild("defense")
local dama = ki.Value / defensep.Value
if 1 < dama and dama < 1.1 and candamage == true then -- and here that stop working
health = maxp - dama * 1
wait(0.5)
candamage = true
elseif 1.1 < dama and dama < 1.2 and candamage == true then
health = maxp - dama * 1.5
wait(0.5)
candamage = true
elseif 1.2 < dama and dama < 1.3 and candamage == true then
health = maxp - dama * 2
wait(0.5)
candamage = true
elseif 1.3 < dama and dama < 1.4 and candamage == true then
health = maxp - dama * 3
wait(0.5)
candamage = true
elseif 1.4 < dama and dama < 1.5 and candamage == true then
health = maxp - dama * 5
wait(0.5)
candamage = true
elseif 1.5 < dama and dama < 1.6 and candamage == true then
health = maxp - dama * 8
wait(0.5)
candamage = true
elseif 1.6 < dama and dama < 1.7 and candamage == true then
health = maxp - dama * 11
wait(0.5)
candamage = true
elseif 1.7 < dama and dama < 1.8 and candamage == true then
health = maxp - dama * 20
wait(0.5)
candamage = true
elseif 1.8 < dama and dama < 1.9 and candamage == true then
health = maxp - dama * 40
wait(0.5)
candamage = true
elseif 1.9 < dama and dama < 2 and candamage == true then
health = maxp - dama * 60
wait(0.5)
candamage = true
elseif 2 < dama and candamage == true then
health = maxp - dama * 100
wait(0.5)
candamage = true
end
end)
local animation = Instance.new("Animation") -- and from here it's working again
animation.AnimationId = "http//roblox.com/?id=01335430799"
local animTrack = human:LoadAnimation(animation)
ki.Value = ki.Value + 5
animTrack:play()
coolE = true
wait(0.4)
coolE = false
animTrack:stop()
end
end
game:GetService("UserInputService").InputBegan:connect(onKeyPress)
And it doesn't say nothing in the output, and the whole script is working except for the damage

7 comments
If you print the value of dama on line 60, what value do you see in the console?
it prints the value of ki.Value / defensep.Value
But what is the actual value? Is it always a number greater than 1?
no, depends on the ki value and defensep value
ki value and defensep is stats that the player can train
Your health variable is set to the value of humanoid.Health, but changing the health variable after that only affects the variable, and isn't applied back to the humanoid.Health value. To change the health of the player that is hit you would want to do something like 'humanp.Health = maxp - dama * 1'
it worked, thx :D