zed_com

Energy

Feb 20th, 2016
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.69 KB | None | 0 0
  1. local c = require("component")
  2. local sides = require("sides")
  3. local t = c.transposer
  4. local var_com = "transposer"
  5. local tra_main = {"7242", "d684",}
  6. local tra = {}
  7. local var_side = {}
  8.  
  9.     --===== добавление в масив адреса компонентов начиная со 2 места =====--
  10. --===== добавить полный адрес для главного компонента который раздаём предметы =====--
  11. local function ToFindComponent()
  12.   local var_2 = 1
  13.  
  14.   for var_1,_ in pairs(c.list(var_com)) do
  15. --    if var_1 ~= c.get(tra_main[индекс масива], var_com) дописать если делаете ещё ряд схемы например тут описано 2 ряда
  16.     if var_1 ~= c.get(tra_main[1], var_com) then
  17.       if var_1 ~= c.get(tra_main[2], var_com) then
  18.         --if var_1 ~= c.get(tra_main[3], var_com) then
  19.           tra[var_2] = var_1
  20.           var_2 = var_2 + 1
  21.         --end
  22.       end
  23.     end
  24.     for i = 1, #tra_main do
  25.       tra_main[i] = c.get(tra_main[i], var_com)
  26.     end
  27.   end
  28. --  for a,b in pairs(tra) do print(a,b) end
  29. end
  30.  
  31. --===== Перемещаем предметы в воронки =====--
  32. local function invenToinven(var_index)
  33.   local var_side = {sides.back, sides.front, sides.right, sides.left, sides.top}
  34.   local var_7, var_8, var_9, var_10
  35.  
  36.   for t = 1, #var_side - 1 do
  37.     for k = 1, 5 do
  38.       -- получаем размер сундука
  39.       for var_7 = 1, c.invoke(tra_main[var_index], "getInventorySize", var_side[5]) do
  40.         -- проверяем есть ли в слоте в сундуке который находиться сверху
  41.         var_8 = c.invoke(tra_main[var_index], "getStackInSlot", var_side[5], var_7)
  42.         if var_8 ~= nil then
  43.           for var_name, var_size in pairs(var_8) do
  44.             if var_name == "size" and var_size == 64 then
  45.               -- проверяем есть ли в слоте в воронке который находиться по заданую сторону
  46.               var_9 = c.invoke(tra_main[var_index], "getStackInSlot", var_side[t], k)
  47.               if var_9 == nil then
  48.                 var_10 = c.invoke(tra_main[var_index], "transferItem", var_side[5], var_side[t], 64, var_7)
  49.                 print("Lap:", t, "Side:", var_side[t], "Slot:", var_7, "Drop:", var_10)
  50.                 break
  51.               end
  52.             end
  53.           end
  54.         end
  55.       end
  56.     end
  57.   end
  58.   return print("конец функции")
  59. end
  60.  
  61. --===== Определяем где Печка, где Генератор =====--
  62. local function determine(var_address_com)
  63.   --===== var_3 номер ячейки в массиве для записи сторон =====--
  64.   local var_3 = 2
  65.   for var_4 = 0, 5 do
  66.     if c.invoke(var_address_com, "getTankCapacity", var_4) == 16000 then
  67.       var_side[1] = var_4
  68.     elseif c.invoke(var_address_com, "getTankCapacity", var_4) == 8000 then
  69.       var_side[var_3] = var_4
  70.       var_3 = var_3 + 1
  71.     end
  72.   end
  73. end
  74.  
  75. local function fluidTofluid(var_address)
  76.   local var_tank_size = c.invoke(var_address, "getTankLevel", var_side[1])
  77.  
  78.   for var_5 = 2, #var_side do
  79.     print("Side:"..var_side[var_5], c.invoke(var_address, "transferFluid", var_side[1], var_side[var_5], var_tank_size/4))
  80.   end
  81. end
  82.  
  83.  
  84. ToFindComponent()
  85.  
  86. while true do
  87.   for k = 1, #tra_main do
  88.     invenToinven(k)
  89.     for var_6 = 2, #tra do  
  90.       print("|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|")
  91.       print("  "..tra[var_6])
  92.       determine(tra[var_6])
  93.       fluidTofluid(tra[var_6])
  94.       print("|_____________________________________|\n")
  95.     end
  96.   end
  97. end
Advertisement
Add Comment
Please, Sign In to add comment