SHOW:
|
|
- or go back to the newest paste.
| 1 | --[[ | |
| 2 | Version | |
| 3 | 0.08 5/3/2015 1:01 AM | |
| 4 | Changelog | |
| 5 | 0.01 - Starting Of Rewriting | |
| 6 | 0.02 - More Writing | |
| 7 | 0.03 - Adding Fuel Code | |
| 8 | 0.04 - Small but many program Error fixed | |
| 9 | 0.05 - Fully Test | |
| 10 | 0.06 - Fixing Minor Bug when add 3 to deep because firstdig had no 3 add to deepcount | |
| 11 | 0.07 - Fixing High Error | |
| 12 | 0.08 - Adding Red stone Starting and change error to Error since lua has error as function. | |
| 13 | --]] | |
| 14 | ||
| 15 | -- Local Variables | |
| 16 | -- Starting | |
| 17 | local wide = 0 | |
| 18 | local wideCount = 0 | |
| 19 | local long = 0 | |
| 20 | local longCount = 0 | |
| 21 | local deep = 0 | |
| 22 | local deepCount = 0 | |
| 23 | local totalBlocks = 0 | |
| 24 | local coalNeeded = 0 | |
| 25 | local corrent = n | |
| 26 | -- Inventory This Will Check At Start Code | |
| 27 | local chest = 0 | |
| 28 | local fuelCount = 0 | |
| 29 | local fuelCount1 = 0 | |
| 30 | local noFuelNeed = 0 -- if Config has fuel no need on | |
| 31 | local Error = 0 -- Error Code | |
| 32 | local reCheck = 0 -- Recheck Code | |
| 33 | -- Others | |
| 34 | local totalBlocks = 0 | |
| 35 | local totalBlockDone = 0 -- How many Block Mined | |
| 36 | local LSorWS = 0 -- Go Left or Go Right This is for Wide Code | |
| 37 | local ALorAR = 0 -- align left Or align Right | |
| 38 | local processRaw = 0 | |
| 39 | local process = 0 | |
| 40 | local enderChest = 0 -- TODO | |
| 41 | local blockUp = 0 -- Fixing to Chest Probleem and moving probleem | |
| 42 | local processRaw = 0 | |
| 43 | local process = 0 | |
| 44 | local starting = 0 -- if 0 normal if 1 then redstone starting. | |
| 45 | local on = 0 | |
| 46 | ||
| 47 | -- Checking | |
| 48 | local function check() | |
| 49 | if noFuelNeed == 0 then | |
| 50 | if fuelCount == 0 then | |
| 51 | print("Turtle has no fuel")
| |
| 52 | print("Put fuel in Second and Thrid slot")
| |
| 53 | Error = 1 | |
| 54 | else | |
| 55 | print("Turtle has Fuel")
| |
| 56 | end | |
| 57 | if fuelCount1 == 0 then | |
| 58 | print("Turtle has no extra fuel but if is short job it okey")
| |
| 59 | end | |
| 60 | end | |
| 61 | if chest == 0 then | |
| 62 | print("No chest in Turtle")
| |
| 63 | print("Put chest in 1 slot")
| |
| 64 | Error = 1 | |
| 65 | else | |
| 66 | print("Turtle has chest")
| |
| 67 | end | |
| 68 | if Error == 1 then | |
| 69 | print("Items are missing please try again")
| |
| 70 | print("Turtle will recheck in 8 sec")
| |
| 71 | end | |
| 72 | end | |
| 73 | ||
| 74 | -- Recheck if user forget something turtle will check after 6 sec | |
| 75 | local function reCheck() | |
| 76 | chest = turtle.getItemCount(1) | |
| 77 | fuelCount = turtle.getItemCount(2) | |
| 78 | fuelCount1 = turtle.getItemCount(3) | |
| 79 | Error = 0 | |
| 80 | end | |
| 81 | ||
| 82 | local function chestDump() | |
| 83 | if turtle.getItemCount(16)> 0 then -- If slot 16 in turtle has item slot 4 to 16 will go to chest | |
| 84 | repeat -- The Fix to Gravel Chest Bug. It check if gravel above then it dig till it gone | |
| 85 | turtle.digUp() | |
| 86 | sleep(0.6) | |
| 87 | if turtle.detectUp() then | |
| 88 | turtle.digUp() | |
| 89 | blockUp = 1 | |
| 90 | else | |
| 91 | blockUp = 0 | |
| 92 | end | |
| 93 | until blockUp == 0 | |
| 94 | turtle.select(1) | |
| 95 | turtle.placeUp() | |
| 96 | chest = chest - 1 | |
| 97 | for slot = 4, 16 do | |
| 98 | turtle.select(slot) | |
| 99 | sleep(0.6) -- Small fix for slow pc because i had people problem with this | |
| 100 | turtle.dropUp() | |
| 101 | end | |
| 102 | turtle.select(4) | |
| 103 | if Chest == 0 then | |
| 104 | print("Out Of Chest")
| |
| 105 | os.shutdown() | |
| 106 | end | |
| 107 | end | |
| 108 | end | |
| 109 | ||
| 110 | -- Refuel | |
| 111 | local function refuel() | |
| 112 | if noFuelNeed == 0 then | |
| 113 | repeat | |
| 114 | if turtle.getFuelLevel() < 160 then | |
| 115 | if fuelCount > 0 then | |
| 116 | turtle.select(2) | |
| 117 | turtle.refuel(1) | |
| 118 | fuelCount = fuelCount - 1 | |
| 119 | elseif fuelCount1 > 0 then | |
| 120 | turtle.select(3) | |
| 121 | turtle.refuel(1) | |
| 122 | fuelCount1 = fuelCount1 - 1 | |
| 123 | else | |
| 124 | print("out of fuel")
| |
| 125 | os.shutdown() | |
| 126 | end | |
| 127 | end | |
| 128 | until turtle.getFuelLevel() >= 160 | |
| 129 | end | |
| 130 | end | |
| 131 | ||
| 132 | local function mineLong() | |
| 133 | if turtle.detect() then | |
| 134 | turtle.dig() | |
| 135 | end | |
| 136 | if turtle.forward() then | |
| 137 | longCount = longCount + 1 | |
| 138 | else | |
| 139 | repeat | |
| 140 | turtle.dig() | |
| 141 | sleep(0.6) | |
| 142 | if turtle.forward() then | |
| 143 | blockUp = 0 | |
| 144 | else | |
| 145 | blockUp = 1 | |
| 146 | end | |
| 147 | until blockUp == 0 | |
| 148 | longCount = longCount + 1 | |
| 149 | print(totalBlocks - totalBlockDone) | |
| 150 | end | |
| 151 | if turtle.detectUp() then | |
| 152 | turtle.digUp() | |
| 153 | end | |
| 154 | if turtle.detectDown() then | |
| 155 | turtle.digDown() | |
| 156 | end | |
| 157 | totalBlockDone = totalBlockDone + 3 | |
| 158 | end | |
| 159 | ||
| 160 | local function wideMineLeft() | |
| 161 | turtle.turnLeft() | |
| 162 | if turtle.detect() then | |
| 163 | turtle.dig() | |
| 164 | sleep(0.6) -- Minor bug fix if there is gravel | |
| 165 | end | |
| 166 | if turtle.forward() then | |
| 167 | --notting | |
| 168 | else | |
| 169 | repeat | |
| 170 | turtle.dig() | |
| 171 | sleep(0.6) | |
| 172 | if turtle.forward() then | |
| 173 | blockUp = 0 | |
| 174 | else | |
| 175 | blockUp = 1 | |
| 176 | end | |
| 177 | until blockUp == 0 | |
| 178 | end | |
| 179 | if turtle.detectUp() then | |
| 180 | turtle.digUp() | |
| 181 | end | |
| 182 | if turtle.detectDown() then | |
| 183 | turtle.digDown() | |
| 184 | end | |
| 185 | turtle.turnLeft() | |
| 186 | LSorWS = 0 | |
| 187 | longCount = 0 | |
| 188 | wideCount = wideCount + 1 | |
| 189 | totalBlockDone = totalBlockDone + 3 | |
| 190 | end | |
| 191 | ||
| 192 | local function wideMineRight() | |
| 193 | turtle.turnRight() | |
| 194 | if turtle.detect() then | |
| 195 | turtle.dig() | |
| 196 | sleep(0.6) | |
| 197 | end | |
| 198 | if turtle.forward() then | |
| 199 | --Notting | |
| 200 | else | |
| 201 | repeat | |
| 202 | turtle.dig() | |
| 203 | sleep(0.6) | |
| 204 | if turtle.forward() then | |
| 205 | blockUp = 0 | |
| 206 | else | |
| 207 | blockUp = 1 | |
| 208 | end | |
| 209 | until blockUp == 0 | |
| 210 | end | |
| 211 | if turtle.detectUp() then | |
| 212 | turtle.digUp() | |
| 213 | end | |
| 214 | if turtle.detectDown() then | |
| 215 | turtle.digDown() | |
| 216 | end | |
| 217 | turtle.turnRight() | |
| 218 | LSorWS = 1 | |
| 219 | longCount = 0 | |
| 220 | wideCount = wideCount + 1 | |
| 221 | totalBlockDone = totalBlockDone + 3 | |
| 222 | end | |
| 223 | ||
| 224 | local function deepMine() | |
| 225 | turtle.digDown() | |
| 226 | turtle.down() | |
| 227 | turtle.digDown() | |
| 228 | turtle.down() | |
| 229 | turtle.digDown() | |
| 230 | turtle.down() | |
| 231 | turtle.digDown() | |
| 232 | turtle.turnRight() | |
| 233 | turtle.turnRight() | |
| 234 | wideCount = 0 | |
| 235 | longCount = 0 | |
| 236 | deepCount = deepCount + 3 | |
| 237 | totalBlockDone = totalBlockDone + 3 | |
| 238 | end | |
| 239 | ||
| 240 | local function main() | |
| 241 | repeat --Repeat for each level | |
| 242 | mineLong() | |
| 243 | refuel() | |
| 244 | chestDump() | |
| 245 | if longCount == long then | |
| 246 | if wideCount ~= wide then | |
| 247 | process = totalBlockDone / totalBlocks * 100 | |
| 248 | processRaw = totalBlocks - totalBlockDone | |
| 249 | print("How Much Is Done: " .. math.floor(process+0.5) .. " %")
| |
| 250 | print("TotalBlocks Still Need To Dig Is " .. processRaw)
| |
| 251 | if LSorWS == 0 then | |
| 252 | wideMineRight() | |
| 253 | else | |
| 254 | wideMineLeft() | |
| 255 | end | |
| 256 | elseif wideCount >= wide then | |
| 257 | deepMine() | |
| 258 | end | |
| 259 | end | |
| 260 | until deepCount >= deep | |
| 261 | print("turtle is Done")
| |
| 262 | end | |
| 263 | ||
| 264 | local function firstDig() | |
| 265 | turtle.digDown() | |
| 266 | turtle.down() | |
| 267 | turtle.digDown() | |
| 268 | turtle.down() | |
| 269 | turtle.digDown() | |
| 270 | wideCount = 0 | |
| 271 | longCount = 0 | |
| 272 | totalBlockDone = totalBlockDone + 3 | |
| 273 | end | |
| 274 | ||
| 275 | local function powerOn() | |
| 276 | if starting == 0 then | |
| 277 | print("Turtle will now start!")
| |
| 278 | firstDig() | |
| 279 | main() | |
| 280 | elseif starting == 1 then | |
| 281 | while true do | |
| 282 | sleep(0) | |
| 283 | local event = os.pullEvent() | |
| 284 | if event == "redstone" then | |
| 285 | break | |
| 286 | end | |
| 287 | end | |
| 288 | print("Turtle will now start!")
| |
| 289 | firstDig() | |
| 290 | main() | |
| 291 | end | |
| 292 | end | |
| 293 | ||
| 294 | local function start() | |
| 295 | print("Welcome To Excavation Turtle Program")
| |
| 296 | print("Slot 1: Chest, Slot 2: Fuel, Slot 3: Fuel")
| |
| 297 | print("Note: If now put item in then it say Error just wait it fix it self")
| |
| 298 | print("How long(Lenght) you want")
| |
| 299 | input = io.read() | |
| 300 | long = tonumber(input) | |
| 301 | long = long - 1 | |
| 302 | print("How wide(Width) you want")
| |
| 303 | input2 = io.read() | |
| 304 | wide = tonumber(input2) | |
| 305 | wide = wide - 1 | |
| 306 | print("How Deep(Depth) You Want")
| |
| 307 | input3 = io.read() | |
| 308 | deep = tonumber(input3) | |
| 309 | print("Is This Corrent Lenght " .. "Lenght = " .. (long + 1) .. " Width = " .. (wide + 1) .. " Depth = " .. (deep))
| |
| 310 | print("Type y Or Y if it is correct and if not then n or N")
| |
| 311 | corrent = io.read() | |
| 312 | if corrent == n or N then | |
| 313 | os.reboot() | |
| 314 | end | |
| 315 | print("Okey Program Will Do Calculations")
| |
| 316 | totalBlocks = (wide + 1) * (long + 1) * deep -- 1 is add because above it removed for wide and long code | |
| 317 | print("Total amount for block to mine is " .. totalBlocks)
| |
| 318 | coalNeeded = totalBlocks / 3 / 80 | |
| 319 | print("Total amount for Coal needed is " .. math.floor(coalNeeded+0.5))
| |
| 320 | if turtle.getFuelLevel() == "unlimited" then | |
| 321 | print("Your turtle config does need fuel")
| |
| 322 | noFuelNeed = 1 | |
| 323 | elseif turtle.getFuelLevel() < 160 then | |
| 324 | turtle.select(2) | |
| 325 | turtle.refuel(2) | |
| 326 | end | |
| 327 | print("Do You Want Redstone as Starting Input")
| |
| 328 | print("Note: It Only Detect Back of Turtle")
| |
| 329 | print("if not then type 0 if yes then type 1")
| |
| 330 | input4 = io.read() | |
| 331 | starting = tonumber(input4) | |
| 332 | reCheck() | |
| 333 | check() | |
| 334 | if Error == 1 then | |
| 335 | repeat | |
| 336 | sleep(6) | |
| 337 | reCheck() | |
| 338 | check() | |
| 339 | until Error == 0 | |
| 340 | end | |
| 341 | powerOn() | |
| 342 | end | |
| 343 | ||
| 344 | start() |