This is probably an advanced concept. As of now, this spawns a model into and onto a platform, then sets its x and z coordinates into a table. Everything is working great, but I want to require it to only spawn when the random x and z coordinates are mdist (6 blocks in this case) away.
So, I have marked the if line in question with a lot of hyphens, and it currently contains a mock "~=1" combo for placeholders sake.
The biggest issue I've encountered so far is that the iteration through a list will likely require a "for" loop, and I don't believe those work inside of a one line if statement. I'll use the 6 block comparison by requiring it to be greater than/less than +- mdist, but I can't get it to iterate properly though the table with the coordinates while inside of an if statement.
Any help is greatly appreciated, and thank you for your time!
local x = script.Parent.Position.X;
local y = script.Parent.Position.Y;
local z = script.Parent.Position.Z;
local copper = game.Lighting.oretotal.Copper;
local currspawn = 1;
local mdist = script.MaxDistance.Value;
local limitnum = mdist * script.closeMultiplier.Value;
local xs = script.Parent.Size.X;
local zs = script.Parent.Size.Z;
local initial = script.Parent.Initrun.Value;
local waittime = game.Lighting.oretotal.respawn.Value;
local limit;
local xhalf = xs/2;
local zhalf = zs/2;
local Bounds = {
{x1=x-xhalf,x2=x+xhalf},
{z1=z-zhalf,z2=z+zhalf}
}
--print(Bounds[1].x1, Bounds[1].x2);
local boundsrandx = math.random(Bounds[1].x1, Bounds[1].x2);
local boundsrandz = math.random(Bounds[2].z1, Bounds[2].z2);
local Coords = {
}
for i=1,limit do -- limit is a varying integer value
local boundsrandx = math.random(Bounds[1].x1, Bounds[1].x2); -- sets random position within limits.
local boundsrandz = math.random(Bounds[2].z1, Bounds[2].z2); -- see above
if (boundsrandx ~= 1 and boundsrandz ~= 1)then -- this is the line in question ----------------
local cclone = copper:Clone(); -- creates the model
cclone.Parent = script.Parent; -- sets the model inside spawn platform
cclone:MoveTo(Vector3.new(boundsrandx,y,boundsrandz)); -- moves it
local intclone = game.Lighting.Destroyed:Clone(); -- clones a bool that contains an int
intclone.Parent = cclone; -- puts bool and int in model
cclone.Destroyed.listnumber.Value = currspawn; -- sets integer to spawn order
currspawn = currspawn + 1; -- sets spawn limit up by one
table.insert(Coords, {x=cclone.ore.Position.X, z=cclone.ore.Position.Z}); -- puts the object coords into the table
wait(.5);
else
nil;
wait(.5);
end
end
EDIT It seems to me that I could probably just feed the numbers through another function then return them for the check, but I'll still keep this up to find if there's another better way.
