Don’t know if any of this is explicitly your problem since nothing’s been explained well (e.g. no mentions of the console) and there aren’t any notions of prior attempts by you to debug using any of the available debugging tools (e.g. prints, breakpoints).
There are a few practice related issues in your code to go over, besides potential real issues. There are also suggestions to be made. I will break it down for you.
I. Redundancy from get-go.
Start and start2 are exactly the same. rbxassetid is a shorthand for the asset domain. Keep one and remove the other. I suggest using rbxassetid as that is more common and easier to work with. I wouldn’t exactly say it’s canonical but it is highly preferred. Studio converts assets to this link when inputted as well.
II. Improper use of pcalls.
Yes, pcall is meant to run something in protected mode in order to catch errors and allow you to do custom error handling. You should not, however, be wrapping your entire code in pcall. You shouldn’t be using it all in your scenario. I’d remove it.
III. Intervals for math.random can be shortened.
Instead of writing out math.random(1, #table), you can simply write math.random(#table). This will automatically set the interval maximum as the sole value you passed and the minimum will be 1.
IV. Using the parent argument of Instance.new or setting parent before other properties.
V. Method of iteration.
I’m not too sure where developers created the habit of skipping using a generator like pairs or ipairs and went straight for next, but I’m not sure how I feel about that. You should try and use ipairs as it is designed for array iteration.
Next and pairs are more for dictionaries where keys are arbitrary and unknown from the start. With ipairs, you get to work with an [i+1] basis with guaranteed order during iteration.
That’s all I can offer you. You’ll need to provide more information if you require further help on this issue. You can also try just debugging this yourself.