Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local file, str, x, y, net, receiverId, enderchest, percentage, phase, phaseColor, fuelFound, enderSlot;
- enderSlot=15;
- local function sendData() --Send the data to the receiver
- if (net==0)
- then
- return
- end
- print(percentage);
- print(phase);
- print(phaseColor);
- print(turtle);
- print(fuelFound);
- msg=""..percentage..","..phase..","..phaseColor..","..turtle.getFuelLevel()..","..fuelFound;
- rednet.send(receiverId, msg);
- end
- local function dropAll(ender) --Drop all item in the inventory
- local slot, numb, prevSlot, prevPhase;
- prevSlot=turtle.getSelectedSlot();
- if (not ender)
- then
- numb=14;
- else
- numb=13;
- end
- for slot=1,numb
- do
- turtle.select(slot);
- phaseColor=colors.yellow;
- phase="Droppping Item";
- sendData();
- if (ender)
- then
- prevPhase=phase;
- while (not turtle.drop())
- do
- if (turtle.getItemCount(slot)==0)
- then
- break
- end
- sleep(2);
- phaseColor=colors.red;
- phase="EnderChest full!";
- sendData();
- phase=prevPhase;
- end
- else
- prevPhase=phase;
- while (not turtle.drop())
- do
- if (turtle.getItemCount(slot)==0)
- then
- break
- end
- sleep(2);
- phaseColor=colors.red;
- phase="Home chest full!";
- sendData();
- phase=prevPhase;
- end
- end
- end
- phaseColor=colors.white;
- turtle.select(prevSlot);
- end
- local function returnHome() --return home to do different tasks
- local x, y, dir, prevSlot;
- x=advMovAPI.getX();
- y=advMovAPI.getY();
- dir=advMovAPI.getDir();
- if (advMovAPI.getX()>0)
- then
- if (advMovAPI.getDir()==0)
- then
- advMovAPI.turnL();
- advMovAPI.turnL();
- elseif (advMovAPI.getDir()==1)
- then
- advMovAPI.turnL();
- elseif (advMovAPI.getDir()==3)
- then
- advMovAPI.turnR();
- end
- elseif (advMovAPI.getX()<0)
- then
- if (advMovAPI.getDir()==2)
- then
- advMovAPI.turnL();
- advMovAPI.turnL();
- elseif (advMovAPI.getDir()==1)
- then
- advMovAPI.turnR();
- elseif (advMovAPI.getDir()==3)
- then
- advMovAPI.turnL();
- end
- end
- while(advMovAPI.getX()~=0)
- do
- advMovAPI.forward(true);
- sendData();
- end
- if (advMovAPI.getY()>0)
- then
- if (advMovAPI.getDir()==1)
- then
- advMovAPI.turnL();
- advMovAPI.turnL();
- elseif (advMovAPI.getDir()==2)
- then
- advMovAPI.turnL();
- elseif (advMovAPI.getDir()==0)
- then
- advMovAPI.turnR();
- end
- elseif (advMovAPI.getY()<0)--This is useless...
- then
- if (advMovAPI.getDir()==3)
- then
- advMovAPI.turnL();
- advMovAPI.turnL();
- elseif (advMovAPI.getDir()==2)
- then
- advMovAPI.turnR();
- elseif (advMovAPI.getDir()==0)
- then
- advMovAPI.turnL();
- end
- end
- while(advMovAPI.getY()~=0)
- do
- advMovAPI.forward(true);
- sendData();
- end
- if (advMovAPI.getDir()==0)
- then
- advMovAPI.turnL();
- elseif (advMovAPI.getDir()==2)
- then
- advMovAPI.turnR();
- elseif (advMovAPI.getDir()==3)
- then
- advMovAPI.turnR();
- advMovAPI.turnR();
- end
- if (enderchest==0)
- then
- advMovAPI.turnL();
- dropAll(false);
- advMovAPI.turnR();
- else
- prevSlot=turtle.getSelectedSlot();
- turtle.select(enderSlot);
- while(not turtle.place())
- do
- turtle.dig();
- turtle.attack();
- end
- dropAll(true);
- turtle.dig();
- turtle.select(prevSlot);
- end
- end
- local function getElement(data, pos) --Parse a string (with format *,*,*[,...]) and return the elemnt "pos"
- local count, i, returnValue;
- count=0;
- while(count<=pos)
- do
- i=1;
- while(string.char(string.byte(data, i))~="," and i<=#data)
- do
- i=i+1;
- end
- returnValue=string.sub(data, 0, i-1);
- data=string.sub(data, i+1);
- count=count+1;
- end
- return returnValue
- end
- ---------------------------------------------------------
- if (not fs.exists("SolidAPI/advMovAPI"))
- then
- printError("Could not find the API advMovAPI.");
- print("Trying to download it from pastebin.");
- shell.run("pastebin", "get", "4XhYtBvC", "SolidAPI/advMovAPI");
- if (not fs.exists("SolidAPI/advMovAPI"))
- then
- error("There was an error while downloading the API.")
- return;
- end
- end
- if (not os.loadAPI("SolidAPI/advMovAPI"))
- then
- fs.delete("SolidAPI/advMovAPI");
- error("There was an error while loading the API. Deleting the API...")
- return;
- end
- if (fs.exists("BMStatus"))
- then
- file=fs.open("BMStatus", "r");
- str=file.readAll();
- print(str);
- x=tonumber(getElement(str, 0));
- y=tonumber(getElement(str, 1));
- enderchest=tonumber(getElement(str, 3));
- net=tonumber(getElement(str, 4));
- receiverId=tonumber(getElement(str, 5));
- fuelFound=tonumber(getElement(str, 6));
- percentage=tonumber(getElement(str, 7));
- phaseColor=colors.red;
- phase="Server restarted!";
- if(net==1)
- then
- rednet.open("right");
- end
- advMovAPI.setCoords(x, y, 0);
- advMovAPI.setDir(tonumber(getElement(str, 2)));
- file.close();
- sendData();
- if (x==0 and y==0)
- then
- phaseColor=colors.yellow;
- phase="StandBy";
- sendData();
- return;
- end
- returnHome();
- phaseColor=colors.red;
- phase="Not completed!";
- sendData();
- end
- fs.delete("BMStatus");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement