Advertisement
ecco7777

CC Plethora Pathfinder Turtle

Sep 6th, 2022 (edited)
680
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.44 KB | None | 0 0
  1. args={...}
  2. sc=peripheral.wrap("right")
  3. opMode="letter"
  4. mode="wait" --modes, wait
  5. waitDelay=0.5
  6. nesw={"north","east","south","west"}
  7. neswNum={}
  8. neswNum["north"]=1
  9. neswNum["east"]=2
  10. neswNum["south"]=3
  11. neswNum["west"]=4
  12.  
  13. function getFace()
  14.     return sc.getBlockMeta(0,0,0).state.facing
  15. end
  16.  
  17. function sFuel()
  18.     if turtle.getFuelLevel()<1 then
  19.         local slot=turtle.getSelectedSlot()
  20.         shell.run("refuel all")
  21.         turtle.select(slot)
  22.     end
  23. end
  24.  
  25. function sForward(val) --smart Forward
  26.     sFuel()
  27.     if val==nil then
  28.         val=1
  29.     end
  30.     bw=val<1
  31.     if bw==false then
  32.         for i=1,val do
  33.             if mode=="abort" then
  34.                 if abort==false then
  35.                     turtle.forward()
  36.                 end
  37.             end
  38.             if mode=="wait" then
  39.                 while turtle.forward()==false do
  40.                     sleep(waitDelay)
  41.                 end
  42.             end
  43.         end
  44.     else
  45.         val=math.sqrt(val*val)
  46.         for i=1,val do
  47.             if mode=="abort" then
  48.                 if abort==false then
  49.                     turtle.back()
  50.                 end
  51.             end
  52.             if mode=="wait" then
  53.                 while turtle.back()==false do
  54.                     sleep(waitDelay)
  55.                 end
  56.             end
  57.         end
  58.     end
  59. end
  60.  
  61. function sTurn(val)
  62.     if val==1 or val=="right" then
  63.         turtle.turnRight()
  64.     end
  65.     if val==2 or val=="back" then
  66.         turtle.turnLeft()
  67.         turtle.turnLeft()
  68.     end
  69.     if val==3 or val=="left" then
  70.         turtle.turnLeft()
  71.     end
  72.     if val=="north" or val=="east" or val=="south" or val=="west" then
  73.         sTurn(neswNum(getFace)-neswNum(val))
  74.     end
  75. end
  76.  
  77. function goPath(pathString)
  78.     local ps --pathStringArray
  79.     for i=1, #pathString do
  80.         ps=number(string.sub(pathString,i,i))
  81.         if math.mod(i,2)==0 then
  82.             for i2=1, ps do
  83.                 sForward()
  84.             end
  85.         end
  86.         if math.mod(i,2)==1 then
  87.             sTurn(ps)
  88.         end
  89.     end
  90.  
  91. end
  92.  
  93. letters={}
  94. letters["a"]="fpfpfrfpfpfpfprfffprfpfpfpbrfpfpffflffr"
  95. letters["b"]="pfpfpfrfpffpfrfpfpfprfpfpfpbrfpfpfflffrf"
  96. letters["c"]="pfpfpfpllffflfpfpfpfplfpfpfpfflffffr"
  97. letters["d"]="pfpfpfrfpfpfpfrfpfpfprfpfpfpfrfffff"
  98. letters["e"]="pfpfpfprffffrpfpfpfprfpfpfpbrfpfpffflffr"
  99. letters["f"]="pfpfpfpllffflfpfpfpfpbblfpfpffflffr"
  100. letters["g"]="pfpfpfprfffpfprfpfpfprfpfpfpfrfffff"
  101. letters["h"]="pfffprfpfpfpfprfffrpfpfpfpbrfpfpffflffr"
  102. letters["i"]="rpfpfpfpfpbbbblff"
  103. letters["j"]="rfffpfplfpfpfplfpfpfpfprff"
  104. letters["k"]="rpfpfpfpfplfffpblfpflfpblbpblfpff"
  105. letters["l"]="rpfpfpfpfplfpfpfpflffffrf"
  106. letters["m"]="rpfpfpfpfplfffflpfpfpfpfpllffrffpfrfprffpffflfr"
  107. letters["n"]="rpfpfpfpfplffflpfpfpfpfplfflfpflfpffflffr"
  108. letters["o"]="pfpfpfprfpfpfpfprfpfpfprfpfpfpfrfffff"
  109. letters["p"]="pfpfpfrfpfrfpfpfprfpbbpbpffffrfffff"
  110. letters["q"]="pfpfpfprfpfpfpfprfpfpfprfpfpfpbbrffpffflfffr"
  111. letters["r"]="pfpfpfrfpfffpbrfprfplfpfprbpbpfffpfrfffff"
  112. letters["s"]="lbbbbrpfpfpfplfpfplfpfpfprfpfprfpfpfpff"
  113. letters["t"]="pfpfplbbbbpfpfpfpfrfpfpff"
  114. letters["u"]="rpfpfpfpfplfpfpfplfpfpfpfprff"
  115. letters["v"]="rpfpfpfpflfpfpflfpfpfpfprff"
  116. letters["w"]="rpfpfpfpflfpflfpbprfpflfpfpfpfprff"
  117. letters["x"]="prflfprflfpfrfpflfpbbbbpflfprflffrfplfrfpff"
  118. letters["y"]="prflfpfrfpfpfpbbblfpflfprff"
  119. letters["z"]="pfpfpfpfpbrfpfrfpflfpfrfpbpbpbpbprffffrff"
  120. letters[" "]="ff"
  121. letters["_"]="ff"
  122. letters["!"]="lpbpbpbbpffffrff"
  123. letters["?"]="pfprffpffplflfffpfrff"
  124.  
  125.  
  126. function buildLetter(letterPathString)
  127.  
  128.     for i=1, #letters[letterPathString] do
  129.         lts=string.sub(letters[letterPathString],i,i)
  130.         if lts=="f" then
  131.             sForward()
  132.         end
  133.         if lts=="b" then
  134.             sForward(-1)
  135.         end
  136.         if lts=="r" then
  137.             sTurn(1)
  138.         end
  139.         if lts=="l" then
  140.             sTurn(3)
  141.         end
  142.         if lts=="p" then
  143.             while turtle.placeDown()==false do
  144.                 sleep(waitDelay)
  145.             end
  146.         end
  147.     end
  148. end
  149.  
  150. function buildText(pathString)
  151.     pathString=string.lower(pathString)
  152.     local ps --pathStringArray
  153.     for i=1, #pathString do
  154.         ps=string.sub(pathString,i,i)
  155.         if string.find("abcdefghijklmnopqrstuvwxyz _!?",ps)~=nil then
  156.             buildLetter(ps)
  157.         end
  158.     end
  159. end
  160.  
  161. if opMode=="letter" then
  162.     pString=args[1]
  163.     if pString~=nil then
  164.         buildText(pString)
  165.     end
  166. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement