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

prevent humanoid spawning off the map?

Asked by 5 years ago

I am having a problem with respawning a player when it dies. as sometimes the player spawn outside the map like this picture.

I think this problem started when I use ClonedMap:Destroy() after the game ended thus making the player respawning off the map.

is there any script that I can use to prevent the player from respawning off the map after it dies or when the maps changes?

here is the full code.

local PointsService = game:GetService("PointsService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerStorage = game:GetService("ServerStorage")
local MapsFolder = ServerStorage:WaitForChild("Maps")
local Status = ReplicatedStorage:WaitForChild("Status")
local GameLength = 150
local reward = 50

while true do

Status.Value = "waiting for players"
repeat wait(1) until game.Players.NumPlayers >= 2
Status.Value = "intermission"
wait(10)

local plrs = {}
for i, player in pairs(game.Players:GetPlayers()) do
    if player then
        table.insert(plrs,player)
    end
    end
wait(2)

local AvailableMaps = MapsFolder:GetChildren()
local ChosenMap = AvailableMaps[math.random(1,#AvailableMaps)]
Status.Value = ChosenMap.Name.." Chosen"

local ClonedMap = ChosenMap:Clone()
ClonedMap.Parent = workspace

local SpawnPoints = ClonedMap:FindFirstChild("SpawnPoints")
if not SpawnPoints then
print ("spawnpoint not founds!")
end

local AvailableSpawnPoints = SpawnPoints:GetChildren()
for i, player in pairs(plrs) do
    if player then
    character = player.Character
    if character then
    character:FindFirstChild("HumanoidRootPart").CFrame = AvailableSpawnPoints[1].CFrame + Vector3.new(0,20,0)
table.remove(AvailableSpawnPoints,1)

    local Sword = ServerStorage.Sword:Clone()
    Sword.Parent = player.Backpack
    local GameTag = Instance.new("BoolValue")
    GameTag.Name = "GameTag"
    GameTag.Parent = player.Character
    else
    if not player then
        table.remove(plrs,i)
    end
end
end
end


Status.Value = "Get ready to play"
wait(2)

for i = GameLength, 0, -1 do 

for x, player in pairs(plrs) do
    if player then
        character = player.Character
        if not character then
            table.remove(plrs,x)
        else
                if character:FindFirstChild("GameTag") then
                print(player.Name.." is still in the game!")
                else
            table.remove(plrs,x)
            print(player.Name.." has been removed")
                end
        end
        else    
    table.remove(plrs,x)
    print(player.Name.." has been removed")
    end
end
Status.Value = "There are "..i.." seconds remaining, and "..#plrs.." players left"
    if #plrs == 1 then
    Status.Value = "the winner is "..plrs[1].Name
    plrs[1].leaderstats.Bucks.Value = plrs[1].leaderstats.Bucks.Value + reward
    break
    elseif #plrs == 0  then
    Status.Value = "nobody won"
    break
    elseif i == 0 then
    Status.Value = "Time up"
    end
wait(1)

end


print("end of game")
wait(2)
for i, player in pairs(game.Players:GetPlayers()) do
character = player.Character
    if not character then

    else
        if character:FindFirstChild("GameTag") then
            character.GameTag:Destroy()
        end
        if player.Backpack:FindFirstChild("Sword") then
            player.Backpack.Sword:Destroy()
        end
        if player.Backpack:FindFirstChild("Sword") then
            character.Sword:Destroy()
        end
    end
    player:LoadCharacter()
end 
ClonedMap:Destroy()
Status.Value = "Game Ended"
wait(2)


end














0
Maybe You can have the players respawn in a remote area then CFraming thier root parts into your desired location may work. Fad99 286 — 5y
0
Set the CFrame of the HumanoidRootPart to a part at your spawn map. xJigoku 17 — 5y

1 answer

Log in to vote
0
Answered by 5 years ago

Make the script create a spawn pad, Remove the decal, make it transparent, then wait until the player respawns, then destroy the spawn pad. Or make it no collisions

Ad

Answer this question