Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.0k views
in Technique[技术] by (71.8m points)

lua - How do I make the players teleport to their selected plots?

I have successfully made a plot selection system for my game with the help of this subreddit. I am now trying to make the player teleport to the selected plots but I have no idea what to do. This is my code so far.

local TweenService = game:GetService("TweenService")

local player = game.Players.LocalPlayer
local Camera = game.Workspace.Camera

local PlotSelect = script.Parent:WaitForChild("PlotSelect")

local Frame = PlotSelect:WaitForChild("Frame")
local Left = Frame:WaitForChild("Left")
local Right = Frame:WaitForChild("Right")
local Select = Frame:WaitForChild("Select")
local SelectedPlot = Frame:WaitForChild("SelectedPlot")

local Menu = script.Parent:WaitForChild("MainMenuGui")
local Menubg = Menu:WaitForChild("MainMenuBackground")
local Playbutton = Menubg:WaitForChild("PlayButton")

local player = game.Players.LocalPlayer
local character = game.Players.LocalPlayer.Character
local humanoid = character:WaitForChild("Humanoid")
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")


continuescript = false

local Plots = game.Workspace.Plots
local Spawns = game.Workspace.Spawns

Camera.CameraType = Enum.CameraType.Scriptable

local function findUnoccupiedPlots()
    local availablePlots = {}
    for i, plot in pairs(Plots:GetChildren()) do
        if plot.Occupant.Value == nil then
            table.insert(availablePlots,plot)
        end
    end
    return availablePlots
end

local TI = TweenInfo.new(
    0.5,
    Enum.EasingStyle.Quint,
    Enum.EasingDirection.InOut,
    0,
    false,
    0
)

local tweenInfo1 = TweenInfo.new(
    1.5,
    Enum.EasingStyle.Back,
    Enum.EasingDirection.InOut
)

local tween1 = TweenService:Create(Frame, tweenInfo1, {Position = UDim2.new(0.5, 0, 0.8, 0)})
local tween2 = TweenService:Create(Frame, tweenInfo1, {Position = UDim2.new(1.5, 0, 0.8, 0)})



Playbutton.MouseButton1Click:Connect(function()
    wait(3)
    continuescript = true
end)


repeat
    wait()
until continuescript == true

tween1:Play()
    

local function camTween(plot)
    local cf = CFrame.new(plot.Position+Vector3.new(0,230,0),plot.Position)
    local tween = TweenService:Create(game.Workspace.Camera,TI,{CFrame = cf})
    tween:Play()
end



local plotsTable = findUnoccupiedPlots()

local index = 1

SelectedPlot.Value = plotsTable[index]
camTween(SelectedPlot.Value)


Left.MouseButton1Click:Connect(function()
    if Plots:FindFirstChild("Plot"..index-1) then
        index -= 1
    else
        index = 12
    end

    SelectedPlot.Value = plotsTable[index]
    camTween(plotsTable[index])

end)

Right.MouseButton1Click:Connect(function()
    if Plots:FindFirstChild("Plot"..index+1) then
        index += 1
    else
        index = 1
    end

    SelectedPlot.Value = plotsTable[index]
    camTween(plotsTable[index])

end)


Select.MouseButton1Click:Connect(function()
    local result = game.ReplicatedStorage.RequestPlot:InvokeServer(plotsTable[index])
    
    if result then
        Select.Text = ("Success")
    else
        Select.Text = ("Error")
    end
    
    tween2:Play()
    
    Camera.CameraType = Enum.CameraType.Custom
    PlotSelect.Enabled = false
    SelectedPlot.Value = nil
    
end)

game.Players.PlayerRemoving:Connect(function(player)
    
end)

The spawns are parts that I put at the centre of the plots. Please help me as I have no idea what to do.

question from:https://stackoverflow.com/questions/65517653/how-do-i-make-the-players-teleport-to-their-selected-plots

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

A Character is a model

You can use the model functions to move the player

local PLAYER_DATA = {
        SPAWN_PLACE = workspace,
        TIMEOUT = 30
}
local place = Vector3.new(0,0,0) ----Where to teleport to
local plr = game.Players.PlayerAdded:Wait() ---First Player In Your Game
local char = PLAYER_DATA.SPAWN_PLACE:WaitForChild(plr.Name,PLAYER_DATA.TIMEOUT)
if char then
       char:MoveTo(place)
end

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...