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

How to make my dodge debounce longer once i have dodged and i havent touched the ground?

Asked by 5 years ago

I'm trying to make a 2d game and my dodge script is in the works, my only problem is it's semi-working right now as I want to make it so when I'm off of the ground and I dodge, the debounce or wait is longer to use another consecutive dodge, so basically my script is doing what I just said BUT it's making me dodge twice in a short amount of time and then I dodge after a long time, this might not make any sense but I don't know how to explain it better. NOTE: When I touch the ground my dodge resets to the shorter debounce, here's a snippet of my script, this snippet is basically the same throughout the whole script, and don't blame me if the script if a bit messy, I have around 577 lines of code and I have yet to clean it up.

game.ReplicatedStorage.UpDodge.OnServerEvent:Connect(function(player)
    local tweenService = game:GetService("TweenService")
    local part = player.Character.HumanoidRootPart

    if debounce == false then
        debounce = true
        counterparthappened = true
    player.Character.LowerTorso.DodgeCircle.Trail.Enabled = true
    player.Character.HumanoidRootPart.Anchored = true
    local goal = {}
    goal.CFrame = CFrame.new(player.Character.HumanoidRootPart.Position + Vector3.new(0,12,0)) * CFrame.Angles(0,  -1.5, 0)
    local tweenInfo = TweenInfo.new(.2)
    local tween = tweenService:Create(part, tweenInfo, goal)
    tween:Play()

    wait(.2)
        player.Character.LowerTorso.DodgeCircle.Trail.Enabled = false
        player.Character.HumanoidRootPart.Anchored = false
        is1point5 = false
        wait(Time)
        is1point5 = true
        if alreadydodged then
        wait(Time2)
        debounce = false
        else alreadydodged = true
            debounce = false
        end
    end
end)








game.ReplicatedStorage.UpDodge1.OnServerEvent:Connect(function(player)
    if counterparthappened then
        counterparthappened = false
    local TweenService = game:GetService("TweenService")
    local part = player.Character.LowerTorso.DodgeCircle

        player.Character.LowerTorso.DodgeCircle.Transparency = 0
    wait(.1)
    local info = TweenInfo.new(
        .1,
        Enum.EasingStyle.Linear,
        Enum.EasingDirection.Out,
        0,
        false,
        0
    )

    local Goals =
    {
    Transparency = 1;
    Size = Vector3.new(10,10,10);
    }
    local tween = TweenService:Create(part,info,Goals)
    tween:Play()
    wait(.11)
    player.Character.LowerTorso.DodgeCircle.Size = Vector3.new(8,8,8)
    end
end)



Players.PlayerAdded:Connect(function(player)
    local char = player.Character or player.CharacterAdded:wait()
    coroutine.wrap(function()
        while wait()do
            local floor=char.Humanoid.FloorMaterial
            if(tostring(floor)=="Enum.Material.Air")or(floor==nil)then
                onair = true
            else alreadydodged = false
                print("on ground");

            end
        end
    end)()
end)

there are a lot of random booleans here from when I was experimenting with the script, but basically what's happening in this script is when a remote event is fired from my local script (my local script fires the remote event when buttons are pressed) it enables and disables some stuff, blah blah, but then when I get to the ifalreadydodged part everything seems fine, I've been trying things for hours but I can't seem to get what's wrong, maybe this is a bit too much to ask. If you have any questions about my script or my other scripts reply please and I'll try to reply as well. NOTE: Time and Time2 = 1.5 (in total they add up to 3 which is how long the dodge debounce should take if I already dodged and I haven't touched the ground again)

Answer this question