Marzipan_at

sfserver program_01

Jun 15th, 2021
650
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. --inizialising global constants
  3.  
  4. coorfile="coords-txt";
  5. redstoneside="top";
  6. coordoffset=1024;
  7. coordfactor=256;
  8. sensorside="back";
  9. startheight=64;
  10.  
  11. sensor=peripheral.wrap(sensorside);
  12.  
  13. while true do
  14.     event=os.pullEvent();
  15.     if redstone.getInput(redstoneside) then
  16.         playerlist=sensor.getPlayers();
  17.         if fs.exists(coorfile)==false then
  18.             data={len=0,name={},x={},y={}}
  19.            
  20.         else
  21.             file=fs.open(coorfile, "r");
  22.             data=textutils.unserialize(file.readAll());
  23.             file.close();
  24.            
  25.         end
  26.            
  27.         index=1
  28.         while playerlist[index]~= nil do
  29.             found=false;
  30.             if data.len>0 then
  31.                 for i=1,data.len do
  32.                     if data.name[i]==playerlist[index].name then
  33.                         found=true;
  34.                         foundat=i;
  35.                     end
  36.                 end
  37.             end
  38.            
  39.             if found then
  40.                 name=data.name[foundat];
  41.                 coordx=data.x[foundat];
  42.                 coordy=data.y[foundat];
  43.             else
  44.                 data.len=data.len+1;
  45.                 name=playerlist[index].name;
  46.                 data.name[index]=name;
  47.                 puffx=math.sqrt(data.len-1)+1;
  48.                 puffxround=math.floor(puffx);
  49.                 roundnumber=puffxround*puffxround-2*puffxround+2;
  50.                
  51.                 if puffx-puffxround>0.5 then
  52.                    
  53.                     data.y[data.len]=puffxround*coordfactor+coordoffset;
  54.                     data.x[data.len]=(1+data.len-roundnumber-puffxround)*coordfactor+coordoffset;
  55.                    
  56.                 else
  57.                     data.x[data.len]=puffxround*coordfactor+coordoffset;
  58.                     data.y[data.len]=(1+data.len-roundnumber)*coordfactor+coordoffset;
  59.                    
  60.                 end
  61.                 coordx=data.x[data.len];
  62.                 coordy=data.y[data.len];
  63.                
  64.                 commands.tp(name,coordx,startheight+10,coordy);
  65.                 os.sleep(1);
  66.                 commands.setblock(coordx,startheight,coordy, "minecraft:dirt");
  67.                 commands.give(name, "minecraft:sapling", 2);
  68.                 commands.give(name, "minecraft:log", 8);
  69.                 file=fs.open(coorfile, "w");
  70.                 file.write(textutils.serialize(data));
  71.                 file.close();
  72.                
  73.             end
  74.             commands.tp(name,coordx,startheight+1,coordy);
  75.            
  76.             index=index+1;
  77.         end
  78.        
  79.        
  80.        
  81.        
  82.     end
  83.     if event=="key" then
  84.         os.exit()
  85.     end
  86. end
  87.  
RAW Paste Data