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

How do I make a map changing script?

Asked by 9 years ago

This is my first attempt on a map and timed game, but I'm not sure if this code will work, to change maps. I just started learning advanced scripting :3

All my maps are in Lightning, around 5 maps.

maps = {"Classic", "Large", "Medium", "Small"} --Name of the model, also known as the map
time = math.random(300,600)
script.Parent.TimeValue.Value = time
players = game.Players:GetChildren()

function ChooseMap()
    map = game.Lighting.maps[1,#maps]:Clone() --Clones a Random Map
    map.Parent = game.Workspace --Puts the map in Workspace
end

mapname = map.Name


while players >= 4 do --If there are 4 or more players, then...
    ChooseMap() --Does the function
    for i,v,players in pairs do
        players:MoveTo(script.Parent.(mapname).PlayerSpawn.Position) --Teleports everyone to the PlayerSpawn
        sniper = math.random(players) --Selects a random player to become the Sniper
        sniper:MoveTo(script.Parent.(mapname).SniperSpawn.Position) --teleports the Sniper to the Sniper's Spawn
        repeat
            wait(1)
            script.Parent.TimeLeft.Value = time-1 
        until script.Parent.TimeLeft.Value == 0
    end
    wait(15)
    script.Parent.(mapname):Destroy()
wait(60)
end

1 answer

Log in to vote
1
Answered by 9 years ago

This should work. You had some pieces of code out of order, some parts that were extra, and some that needed just a slight adjustment. You did a great job of writing the first draft, the next thing you need to know is how to debug your own code and to double check thing against the wiki. Hope I helped, accept the answer and/or up vote if I did. Thanks!

local maps = {"Classic", "Large", "Medium", "Small"} --Name of the model, also known as the map
local time = math.random(300,600) --local variable lookup is faster, therefore reducing lag.
local script.Parent.TimeValue.Value = time --players is defined later

function ChooseMap()
    map = game.Lighting.maps[math.random(#maps)]:Clone() --Clones a Random Map
    map.Parent = game.Workspace --Puts the map in Workspace
end

while wait(0) do 
    local players = game.Players:GetChildren()
    if #players > 3 then --If there are more than 3 (4 or more) players, then…
        ChooseMap() --Chooses the map
        local sniper = math.random(#players) --selects a random player to assign to var 'sniper'
        players[sniper]:MoveTo(map.SniperSpawn.Position) --Choose sniper and send to sniper spawn.
        for i,v, in pairs(players) do --for each player do
            if v ~= sniper then --if player not sniper then
                v:MoveTo(map.PlayerSpawn.Position) --Players to player spawn
            end
        end
        repeat --countdown
            waitTime = wait(1) --record actual time waited when asked to wait for one second
            script.Parent.TimeLeft.Value = time-waitTime --subtracts the actual time waited.
            print(math.floor(time+.5) --this is what you should use to display time, if you do.
        until script.Parent.TimeLeft.Value <= 0
        wait(15)
        map:Destroy() --destroy the cloned map
        time = math.random(300,600) --resets the random time
    end
end
0
There's one problem we both didn't realise. In Studio, time is blue... fahmisack123 385 — 9y
0
Love the answer you gave me, But I don't think we'll like what Studio gave us: "18:37:59.685 - Workspace.Script:3: unexpected symbol near '.' " Line 3 has an error??? fahmisack123 385 — 9y
0
Something's wrong... I tested it wothout a player, Loads of problems. (1)the TimeLeft Value remained the same. (2) The player keeps falling off the map, even with All anchored, Locked and CanCollide checked.(3)I can't see the map in Workspace... fahmisack123 385 — 9y
Ad

Answer this question