Advertisement
hevohevo

ComputerCrafting2015-01-26

Jan 26th, 2015
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.58 KB | None | 0 0
  1. -- #深夜のComputerCrafting60分一本勝負
  2. -- お題: 「turtle.inspect()」または「turtle.getItemDetail()」を使ったプログラム
  3. -- 2015/01/26 23:00スタート by hevo2
  4. -- 23:40終了
  5.  
  6. -- turtle.select() →発展 → selectItem("dirt",0)
  7.  
  8. -- turtle.getItemDetail(slot_num)
  9. -- nil or
  10. -- { count=1, name="minecraft:dirt", damage=0}
  11. -- 数はやめよう。
  12.  
  13. function selectItem(name,damege)
  14.   -- local selected_slot = turtle.getSelectedSlot()
  15.   for i=1,16 do
  16.     local item = turtle.getItemDetail(i)
  17.     if type(item)=="table" then -- スロットに何かアイテム
  18.       -- print("slot=",i," ",item["name"]," ",item["damage"])
  19.       if string.match(item["name"],name) then -- 指定アイテムの名前と一致
  20.         if damege==nil or damage == item["damage"] then -- ダメージ値指定がない、または指定と一致
  21.           turtle.select(i)
  22.           return true, item["count"]
  23.         else -- 名前は一致したがダメージ値が違う
  24.           -- do nothing
  25.         end
  26.       else -- 指定アイテムの名前と不一致
  27.         -- do nothing
  28.       end
  29.     else -- スロット内にアイテムなし
  30.       -- do nothing
  31.     end
  32.   end
  33.   -- turtle.select(selected_slot)
  34.   return false, "No item to match"
  35. end
  36.  
  37.  
  38. -- 使い方
  39. -- selectItem(name, damage)
  40. -- スロット内を探し、name(damage値指定があるときはそれも)とマッチするアイテムを選択する。
  41.  
  42. -- スロット内に土ブロックが1個ある状況
  43. -- selectItem("dirt",0) => true, 1
  44. -- selectItem("dirt",2) => false, "No item to match"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement