SHOW:
|
|
- or go back to the newest paste.
| 1 | local location = {0,0,0}
| |
| 2 | local origin = {0,0,0}
| |
| 3 | local dir=1 | |
| 4 | local modX= {0,1,0,-1}
| |
| 5 | local modZ = {1,0,-1,0}
| |
| 6 | local max = {144,2,72}
| |
| 7 | turtle.select(1) | |
| 8 | ||
| 9 | function turnLeft() | |
| 10 | turtle.turnLeft() | |
| 11 | dir = dir - 1 | |
| 12 | if dir < 1 then dir = 4 end | |
| 13 | end | |
| 14 | ||
| 15 | function turnAround() | |
| 16 | turnLeft() | |
| 17 | turnLeft() | |
| 18 | end | |
| 19 | ||
| 20 | function turnRight() | |
| 21 | turtle.turnRight() | |
| 22 | dir = dir + 1 | |
| 23 | if dir > 4 then dir = 1 end | |
| 24 | end | |
| 25 | ||
| 26 | function addLocStep() | |
| 27 | location[1] = location[1] + modX[dir] | |
| 28 | location[3] = location[3] + modZ[dir] | |
| 29 | end | |
| 30 | ||
| 31 | function subLocStep() | |
| 32 | location[1] = location[1] - modX[dir] | |
| 33 | location[3] = location[3] - modZ[dir] | |
| 34 | end | |
| 35 | ||
| 36 | function forward() | |
| 37 | local b = turtle.forward() | |
| 38 | if b then | |
| 39 | addLocStep() | |
| 40 | return true | |
| 41 | else | |
| 42 | return false | |
| 43 | end | |
| 44 | end | |
| 45 | ||
| 46 | function back() | |
| 47 | local b = turtle.back() | |
| 48 | if b then | |
| 49 | subLocStep() | |
| 50 | return true | |
| 51 | else | |
| 52 | return false | |
| 53 | end | |
| 54 | end | |
| 55 | ||
| 56 | function dig() | |
| 57 | c=0 | |
| 58 | while turtle.detect() do | |
| 59 | turtle.dig() | |
| 60 | c = c+1 | |
| 61 | if c > 10 then | |
| 62 | sleep(0.1) | |
| 63 | c=0 | |
| 64 | end | |
| 65 | end | |
| 66 | end | |
| 67 | ||
| 68 | function digUp() | |
| 69 | while turtle.detectUp() do | |
| 70 | turtle.digUp() | |
| 71 | sleep(0) | |
| 72 | end | |
| 73 | end | |
| 74 | ||
| 75 | function digDown() | |
| 76 | while turtle.detectDown() do | |
| 77 | turtle.digDown() | |
| 78 | end | |
| 79 | end | |
| 80 | ||
| 81 | function digForward() | |
| 82 | while forward() == false do | |
| 83 | dig() | |
| 84 | end | |
| 85 | end | |
| 86 | ||
| 87 | function digBack() | |
| 88 | while back() == false do | |
| 89 | turnAround() | |
| 90 | dig() | |
| 91 | turnAround() | |
| 92 | sleep(0) | |
| 93 | end | |
| 94 | end | |
| 95 | ||
| 96 | function turnOriginLeft() | |
| 97 | while dir ~= 4 do | |
| 98 | turnLeft() | |
| 99 | end | |
| 100 | end | |
| 101 | ||
| 102 | function turnOriginRight() | |
| 103 | while dir ~= 2 do | |
| 104 | turnLeft() | |
| 105 | end | |
| 106 | end | |
| 107 | ||
| 108 | function turnOriginDown() | |
| 109 | while dir ~= 3 do | |
| 110 | turnLeft() | |
| 111 | end | |
| 112 | end | |
| 113 | ||
| 114 | function turnOriginUp() | |
| 115 | while dir ~= 1 do | |
| 116 | turnLeft() | |
| 117 | end | |
| 118 | end | |
| 119 | ||
| 120 | ||
| 121 | local input = "" | |
| 122 | while input ~= "start" do | |
| 123 | input = read() | |
| 124 | sleep(0) | |
| 125 | end | |
| 126 | ||
| 127 | function checkInventory() | |
| 128 | if turtle.getItemCount(9) > 0 then | |
| 129 | return true | |
| 130 | else | |
| 131 | return false | |
| 132 | end | |
| 133 | end | |
| 134 | ||
| 135 | function getLocCopy() | |
| 136 | local copy = {}
| |
| 137 | for i,n in ipairs(location) do | |
| 138 | copy[i] = n | |
| 139 | end | |
| 140 | return copy | |
| 141 | end | |
| 142 | ||
| 143 | function doDropOff(goBack) | |
| 144 | local orgDir = dir | |
| 145 | local orgPos = getLocCopy() | |
| 146 | moveToOrigin() | |
| 147 | turnOriginDown() | |
| 148 | forward() | |
| 149 | forward() | |
| 150 | dropAll() | |
| 151 | moveToOrigin() | |
| 152 | if goBack then | |
| 153 | - | moveTo(orgPos[1],origin[3]) |
| 153 | + | moveTo(origin[1],orgPos[3]) |
| 154 | moveTo(orgPos[1],orgPos[3]) | |
| 155 | while orgDir ~= dir do | |
| 156 | turnLeft() | |
| 157 | sleep(0) | |
| 158 | end | |
| 159 | end | |
| 160 | end | |
| 161 | ||
| 162 | function dropAll() | |
| 163 | for i=1,9,1 do | |
| 164 | turtle.select(i) | |
| 165 | if turtle.getItemCount(i) > 0 then | |
| 166 | turtle.drop() | |
| 167 | end | |
| 168 | end | |
| 169 | turtle.select(1) | |
| 170 | end | |
| 171 | ||
| 172 | function moveToOrigin() | |
| 173 | moveTo(origin[1],location[3]) | |
| 174 | moveTo(origin[1],origin[3]) | |
| 175 | end | |
| 176 | ||
| 177 | function turnToX(x) | |
| 178 | if location[1] < x then | |
| 179 | turnOriginRight() | |
| 180 | elseif location[1] > x then | |
| 181 | turnOriginLeft() | |
| 182 | end | |
| 183 | end | |
| 184 | ||
| 185 | function turnToZ(z) | |
| 186 | if location[3] < z then | |
| 187 | turnOriginUp() | |
| 188 | elseif location[3] > z then | |
| 189 | turnOriginDown() | |
| 190 | end | |
| 191 | end | |
| 192 | ||
| 193 | function moveTo(x,z) | |
| 194 | turnToX(x) | |
| 195 | while location[1] ~= x do | |
| 196 | forward() | |
| 197 | sleep(0) | |
| 198 | end | |
| 199 | turnToZ(z) | |
| 200 | while location[3]~=z do | |
| 201 | forward() | |
| 202 | sleep(0) | |
| 203 | end | |
| 204 | end | |
| 205 | ||
| 206 | for x=1,max[1],1 do | |
| 207 | for z=1,max[3],1 do | |
| 208 | if x ~= 1 and z == 1 then | |
| 209 | else | |
| 210 | --print(tostring(x).."/"..tostring(z).." /// " .. tostring(location[1]) .. "/"..tostring(location[2]).."/"..tostring(location[3])) | |
| 211 | ||
| 212 | digForward() | |
| 213 | digDown() | |
| 214 | if checkInventory() then | |
| 215 | doDropOff(true) | |
| 216 | end | |
| 217 | end | |
| 218 | end | |
| 219 | if x < max[1] then | |
| 220 | turnOriginLeft() | |
| 221 | digForward() | |
| 222 | digDown() | |
| 223 | if x % 2 == 1 then | |
| 224 | turnOriginDown() | |
| 225 | else | |
| 226 | turnOriginUp() | |
| 227 | end | |
| 228 | end | |
| 229 | --turnOriginDown() | |
| 230 | --digBack() | |
| 231 | end | |
| 232 | ||
| 233 | doDropOff(false) |