Hi hello. it's me again, the dude that has the worst scripts on this entire website
So, with the help of a user named blowup999 (go check them out), i have fixed my battle script
However another problem arose.
--Variables local parts = game.Workspace.Parts:GetChildren() local Players = game:GetService("Players") local Dummy = game.Workspace.Dummy local DummyHumanoid = Dummy.Humanoid local debounce = false local player = Players.LocalPlayer local Character = player.Character local Humanoid = Character:WaitForChild("Humanoid") local FadeInFrame = script.Parent.Parent.FadeInUI.FadeInFrame --Battle Loop for i, v in pairs(parts) do v.Touched:Connect(function(hit) if hit.Parent:FindFirstChild("Humanoid") then script.Parent.Parent.FadeInUI.Enabled = true FadeInFrame.BackgroundTransparency = 1 for k = 1,100 do FadeInFrame.BackgroundTransparency -= 0.01 wait(0.05) if FadeInFrame.BackgroundTransparency == 0 then break end end script.Parent.Parent.FadeInUI.Enabled = false Humanoid.WalkSpeed = 0 Humanoid.JumpPower = 0 script.Parent.Enabled = true Character:FindFirstChild("HumanoidRootPart").CFrame = game.Workspace.TpPart.CFrame + Vector3.new(0,1,0) if script.Parent.Enabled == true then if script.Parent.AtkSelector.Punch.MouseButton1Click then script.Parent.AtkSelector.Punch.MouseButton1Click:Connect(function() if not debounce then debounce = true DummyHumanoid.Health = DummyHumanoid.Health - 50 local function typeText(text) for i = 1, #text do script.Parent.DialogueLabel.Text = string.sub(text, 1, i) wait() end wait(1.5) script.Parent.DialogueLabel.Text = "" end if DummyHumanoid.Health <= 0 then typeText("You won!") Humanoid.WalkSpeed = 16 Humanoid.JumpPower = 40 script.Parent.AtkSelector.Punch.Visible = false script.Parent.AtkSelector.Kick.Visible = false script.Parent.AtkSelector.Cancel.Visible = false script.Parent.Enabled = false DummyHumanoid.Health = 100 debounce = false v:Destroy() else script.Parent.AtkSelector.Visible = false script.Parent.MagicSelector.Visible = false wait(1) typeText("This is the core battle system") typeText("Isn't this cool???") typeText("No??") typeText("Welp, I tried") Humanoid.Health = Humanoid.Health - 100 wait(1) script.Parent.AtkSelector.Visible = true script.Parent.MagicSelector.Visible = true debounce = false end end end) end end end end) end
So, this is the entire script, i know its ugly and inefficient but hear me out on this one
So in this part
if DummyHumanoid.Health <= 0 then typeText("You won!") Humanoid.WalkSpeed = 16 Humanoid.JumpPower = 40 script.Parent.AtkSelector.Punch.Visible = false script.Parent.AtkSelector.Kick.Visible = false script.Parent.AtkSelector.Cancel.Visible = false script.Parent.Enabled = false DummyHumanoid.Health = 100 debounce = false v:Destroy() else script.Parent.AtkSelector.Visible = false script.Parent.MagicSelector.Visible = false wait(1) typeText("This is the core battle system") typeText("Isn't this cool???") typeText("No??") typeText("Welp, I tried") Humanoid.Health = Humanoid.Health - 100 wait(1) script.Parent.AtkSelector.Visible = true script.Parent.MagicSelector.Visible = true debounce = false
Something is missing here. If you can't guess what it is, im just gonna tell you.
I did not conclude the possibility that the player can die, so, even if the player dies, this will go on forever.
I thought adding an elseif statement after the first if was gonna work
Something along the lines of this
if DummyHumanoid.Health <= 0 then typeText("You won!") Humanoid.WalkSpeed = 16 Humanoid.JumpPower = 40 script.Parent.AtkSelector.Punch.Visible = false script.Parent.AtkSelector.Kick.Visible = false script.Parent.AtkSelector.Cancel.Visible = false script.Parent.Enabled = false DummyHumanoid.Health = 100 debounce = false v:Destroy() elseif Humanoid.Health <= 0 then typeText("Ded") Humanoid.WalkSpeed = 16 Humanoid.JumpPower = 40 script.Parent.AtkSelector.Punch.Visible = false script.Parent.AtkSelector.Kick.Visible = false script.Parent.AtkSelector.Cancel.Visible = false script.Parent.Enabled = false DummyHumanoid.Health = 100 debounce = false else script.Parent.AtkSelector.Visible = false script.Parent.MagicSelector.Visible = false wait(1) typeText("This is the core battle system") typeText("Isn't this cool???") typeText("No??") typeText("Welp, I tried") Humanoid.Health = Humanoid.Health - 100 wait(1) script.Parent.AtkSelector.Visible = true script.Parent.MagicSelector.Visible = true debounce = false end
Apparently, it doesn't, the battle UI stays visible after i die and the dummy does not get healed, nor the typeText() function runs.
I might be missing something obvious here, but i still need some help.
I'd appreciate any help you all can give. Thank you
script.Parent.AtkSelector.Punch.MouseButton1Click:Connect(function() end)
Your if else is only run within the above, so it should only run that Humanoid check if the player runs their punch action. Therefore, the issue is probably that if the player dies they're not pressing the punch action.
In general I would change it to use the Humanoid.Died event
Then you can change the gui visibility within the event.