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

Make this work by executing the script itself?

Asked by 5 years ago
Edited 5 years ago

This only works when used as a local script and in Starter GUI. I'm trying to make it work when you execute the script alone. I'm wondering can you take the script and execute itself and work. I am having trouble. Please help.

player = script.Parent.Parent
crawling = true
local char = player.Character
local origin = char:WaitForChild("HumanoidRootPart")
local ignore = {
    char,
    char.Torso,
    char.HumanoidRootPart
}
local mouse = player:GetMouse()
local wKey = false
local aKey = false
local dKey = false
local sKey = false
local canCrawl = true
local human = char:WaitForChild("Humanoid")
mouse.KeyDown:connect(function(key)
    if key == "w" then
        wKey = true
    elseif key == "d" then
        dKey = true
    elseif key == "s" then
        sKey = true
    elseif key == "a" then
        aKey = true
    end
end)
mouse.KeyUp:connect(function(key)
    if key == "w" then
        wKey = false
    elseif key == "d" then
        dKey = false
    elseif key == "s" then
        sKey = false
    elseif key == "a" then
        aKey = false
    end
end)
function endCrawl()
    if crawling then
        canCrawl = false
        human.PlatformStand = false
        human:ChangeState(Enum.HumanoidStateType.PlatformStanding)
        human.Jump = true
    end
    origin.Anchored = false
    if crawling then
        human.Jump = true
        wait()
        human.Jump = true
        wait()
        human.Jump = true
        crawling = false
    end
    wait(0.3)
    canCrawl = true
end
function startCrawl(normal)
    crawling = true
    origin.CFrame = CFrame.new(origin.CFrame.p, origin.CFrame.p - normal)
    origin.Anchored = true
    human.PlatformStand = true
end
while wait() do
    local checkFront = Ray.new(origin.CFrame.p, origin.CFrame.lookVector.unit * 1.2)
    local hit, position, normal = workspace:FindPartOnRayWithIgnoreList(checkFront, ignore)
    local checkDown = Ray.new(origin.CFrame.p, Vector3.new(0, -2.8, 0))
    local dHit, dPosition = workspace:FindPartOnRayWithIgnoreList(checkDown, ignore)
    if hit and canCrawl then
        if not dHit then
            if hit.Anchored == true and hit.CanCollide == true then
                startCrawl(normal)
            else
                endCrawl()
            end
        elseif dHit.CanCollide == true then
            endCrawl()
        end
    else
        endCrawl()
    end
    if crawling then
        if wKey then
            origin.CFrame = origin.CFrame * CFrame.new(0, 1, 0)
        elseif sKey then
            origin.CFrame = origin.CFrame * CFrame.new(0, -1, 0)
        elseif aKey then
            origin.CFrame = origin.CFrame * CFrame.new(-1, 0, 0)
        elseif dKey then
            origin.CFrame = origin.CFrame * CFrame.new(1, 0, 0)
        end
    end
end




Answer this question