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

How do I avoid an error regarding modules in ReplicatedStorage?

Asked by 8 years ago

Hello,

I developed a terrain generating script, and have decided first to implement organizing the regeneration/ degeneration of the terrain by functions, and putting them into ReplicatedStorage, where my main script can reference it. When I ran my game, I had found out that the lag had reduced by a lot. I was planning to test out another optimization script, but I got an error: 20:33:15.746 - ReplicatedStorage.Generation:64: '}' expected (to close '{' at line 2) near 'print' 20:33:15.747 - Requested module experienced an error while loading

Below is the code in ReplicatedStorage, the script called Generation. Following that is the main script in my Workspace that I used to put the functions together:

return 
{
Speed = 5, -- Keep between 1 and 5
Generate = function(Self)
--set block count
local howManyClones= 0

--create a group called "DirtBlockCloneGroup"
local dirtBlockCloneModel= Instance.new("Model",game.Workspace)
dirtBlockCloneModel.Name= "DirtBlockCloneGroup"

    for timer= 1,0,-1 do --timer that counts from 3/ any # to 0 by seconds
        wait(1)
        print(timer)

            if timer== 0 then
                print("Done.")--ends timer, then does action below
            end--end if
    end--end for

x0= game.Workspace.DirtBlock.Position.X
y0= game.Workspace.DirtBlock.Position.Y
z0= game.Workspace.DirtBlock.Position.Z
--sets whatever position the original dirt block is in, stores in variables
local original= Vector3.new(x0,y0,z0)

local zIncr= 3 --increments new clone blocks by changing z coordinate
--line below checks and gets testing plate size
local zSizeBase= game.Workspace.BasePlate.Size.Z
local zSizeCheck= 3--baseplate comparison, so clone won't pass plate boundaries

local xSizeBase= game.Workspace.BasePlate.Size.Z
local xSizeCheck= 3
local xIncr= 3

    for i= 1,4 do--sets how many layers of bricks

        for i= 1,(xSizeBase/3) do-- because it increments by 3 studs

            while zSizeCheck<zSizeBase do
                clone= game.Workspace.DirtBlock:Clone()-- creates clone
                clone.Name= "DirtBlockClone" -- changes name of dirt block
                clone.Parent= game.Workspace.DirtBlockCloneGroup --adds the instance into the Workspace
                clone.Position= Vector3.new(x0,y0,z0-zIncr)
                clone.BrickColor= BrickColor.new("Black")
                howManyClones= howManyClones+1--cloned brick counter

                zIncr= zIncr+3-- ex. 3 away from original, 6 away, 9 away etc.
                zSizeCheck= zSizeCheck+3
            end

        zSizeCheck= 0--these scripts reset the position, so it won't shift
        zIncr= 0
        x0= x0+3
        wait(0)--delay to minimize lag, edit between dev and release
        end

    end 

    y0= y0+3-- goes to the next level, 3 studs up
    x0= game.Workspace.DirtBlock.Position.X-- resets at original point
    end

print(howManyClones)--prints the number of bricks

end,--end function generate

Degenerate= function(Self)
    wait(0)
    game.Workspace.DirtBlockCloneGroup:Destroy()
    wait(0)
end--end function Degenerate

}--end of return at very beginning
local Generation= require(game.ReplicatedStorage.Generation)

while true do

--create terrain
Generation:Generate()-- or regenerate

--allow player to play buy freeing them from spawn area
game.Workspace.SpawnArea.SpawnBaseBottom.CanCollide= false
game.Workspace.SpawnArea.SpawnBaseBottom.Transparency= 1

--this period is the playing time before the map resets
    for timeToReset= 100,0,-1 do
        wait(1)
        test2= Instance.new("Hint",game.Workspace)
        test2.Text= "Map reset and respawn deactivation in: "..tostring(timeToReset)
    end--end for

--players go back when map is regenerating
game.Workspace.SpawnArea.SpawnBaseBottom.CanCollide= true
game.Workspace.SpawnArea.SpawnBaseBottom.Transparency= 0.75

target= CFrame.new(60.5,3358,84.5)
for i, player in ipairs(game.Players:GetChildren()) do
    if player.Character and player.Character:FindFirstChild("Torso") then
        player.Character.Torso.CFrame= target+ Vector3.new(i*2,0,0)
    end
end

--clear terrain
Generation:Degenerate()

end


One of my attempts was to follow exactly what the message had said and put a brace after the indicated line:
end y0= y0+3-- goes to the next level, 3 studs up x0= game.Workspace.DirtBlock.Position.X-- resets at original point end print(howManyClones)--prints the number of bricks} end,--end function generate Degenerate= function(Self) wait(0) game.Workspace.DirtBlockCloneGroup:Destroy() wait(0) end--end function Degenerate }--end of return at very beginning

The only other option I had was to avoid ReplicatedStorage and put all the code into a single, main script in the workspace.

Edit: The pre-class object in the code was supposed to be normal text; below it was the attempted script.

0
If anyone would like to see another of my approaches to this issue let me know; it is a lot more code, but I feel as if I have shown much already. I hope not to bring about confusion, excuse me for that. Houlardy642 28 — 8y

Answer this question