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

Teleporting between a consistent place and another?

Asked by
Smoho 2
6 years ago

You may have seen a previous question I've asked about this issue, but this time I believe I am closer to finding the solution. However, this time, I have a problem that may be simple to solve, but I just can't see the solution.

I'm trying to make a GUI that can be pressed to bring a player to a sort of hub, and then pressed again to be returned to their previous location prior to the first press. The hub location is fixed at a part's CFrame, while the previous position is recorded before the function decides if the player is going to the hub or their previous location.

My problem is that the function goes through both conditions of the script, instead of only going through the true or false condition. I've tried using "else" instead of "if", moving the locations of "end", and moving the locations of one condition enabling another for the next use of the function, yet nothing has worked.

Here's a look at the script:

local Event = game.ReplicatedStorage.TeleEvent
local inHub = false
local HubWarp = workspace.HubWarp

Event.OnServerEvent:Connect(function(player)
        local oldpos = player.Character.HumanoidRootPart.CFrame
        local char = player.Character

    if inHub == false then
                inHub = true
    char.HumanoidRootPart.CFrame = HubWarp.CFrame
                print("Going to hub...")
    end

    if inHub == true then
            inHub = false
    char.HumanoidRootPart.CFrame = oldpos
        print("Going to previous location...")
    end

    end)

And the local script, if necessary:

Event = game.ReplicatedStorage.TeleEvent
player = game.Players.LocalPlayer

script.Parent.MouseButton1Click:connect(function()
    Event:FireServer(player)
    print("Fired")
end)

Additional information: The script is in ServerScriptService. The Local Script is in a ScreenGui. In output, all printable phrases are printed in one mouse click. It goes in the order of "Fired", "Going to hub...", "Going to previous location...". In-game, the player does not appear to move.

1 answer

Log in to vote
0
Answered by
Smoho 2
6 years ago

Update: I've gotten the teleport to the hub to work, but now the character won't teleport to their initial position? Apparently, an elseif grouping it together made the initial part work, but the teleport back to their previous position does not do anything, though the position exists. I used a random CFrame to test if it recognizes a CFrame, and it does. What is incorrect?

Updated Script:

local Event = game.ReplicatedStorage.TeleEvent
local inHub = false
local HubWarp = workspace.HubWarp

Event.OnServerEvent:Connect(function(player)
        local char = player.Character
        local pos = player.Character.HumanoidRootPart.CFrame
        --I substituted this position for "CFrame.new(1,1,10)", and it seemed to work

    if inHub == true then
            inHub = false
    char.HumanoidRootPart.CFrame = pos
        print("Going to previous location...")

    elseif inHub == false then
                inHub = true
    char.HumanoidRootPart.CFrame = HubWarp.CFrame
                print("Going to hub...")


    end

    end)
Ad

Answer this question