local R,r=20,5--中心半径(内径与外径和的1/4)、扩充半径(高的一半)
local x0,y0,z0=0,20,0--起点坐标
local d=10000--单次遍历方块数
local id=600--方块id
local s,all,t=-1,0,0--步骤、总方块数、循环
local de=math.random(2,18)/2
local x,y,z=0,0,0--当前坐标
local function isinside(x,y,z)--是否在几何体内部
if math.pow(math.sqrt(x*x+y*y)-R,2)+z*z>r*r then
return false
else
return true
end
end
return function()--循环
if s==-1 then
all=8*(R+r)*(R+r)*r
s=0
elseif (s>=0)and(s<all) then
for t=1,d do
x=s%(2*(R+r))-(R+r)
y=((s-x)%(4*(R+r)*(R+r)))/(2*(R+r))-(R+r)
z=math.floor(s/(4*(R+r)*(R+r)))-r
if isinside(x,y,z) then
Block:setBlockAll(x0+x,y0+y,z0+z,id, (x^2+y^2)/de^3)
end
s=s+1
end
Chat:sendSystemMsg("Crafting:"..s.."/"..all)
elseif s>=all then
Chat:sendSystemMsg("End")
s=-2
end
end