Advertisement
faedani

Gestión de esencias Minecraft: Computercraft/Thaumcraft 1/2

May 25th, 2015
348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.82 KB | None | 0 0
  1.     -- Programa en el PC de las jarras
  2.     -- es una modificación del diseño de Direwolf20
  3.     rednet.open("right")
  4.     local mon = peripheral.find("monitor")
  5.     local cofre = peripheral.find("iron")
  6.     local analiza = peripheral.find("tt_aspectanalyzer")
  7.     local jarras = peripheral.getNames()
  8.     local esen = {}
  9.     local esencia = {}
  10.     local cantEsencia = {}
  11.     local esenciaActual
  12.     local cantidadLlenado = 0
  13.      
  14.     -- Escanea los nombres de las esencias pillándolas del cofre
  15.     -- y metiéndolas en el analizador
  16.     -- mira la cantidad que hay
  17.     -- esta función es de Direwolf20
  18.      
  19.     function nombreEsencia()
  20.             local temp = {}
  21.             local noAura
  22.             for i = 1,49 do --loop de cofre
  23.                     if cofre.getStackInSlot(i) then
  24.                             cofre.pushItem("WEST",i,1,1)
  25.                             temp = analiza.getAspects()
  26.                             if temp[2] then
  27.                                     if temp[2] == "auram" then
  28.                                             noAura = temp[1]
  29.                                     else
  30.                                             noAura = temp[2]
  31.                                     end
  32.                             else
  33.                                     noAura = temp[1]
  34.                             end
  35.                             cofre.pullItem("WEST",1,1,i)
  36.                             esen[noAura] = i
  37.                             esencia[noAura]= 0
  38.                             --guarda el nombre de la esencia en esencia[] y le da valor 0
  39.                             cantEsencia[noAura] = cofre.getStackInSlot(i)["qty"]
  40.                     end
  41.             end
  42.     end
  43.      
  44.     function escaneaJarras()
  45.             for i,j in ipairs(jarras) do
  46.                     if peripheral.getType(j) == "tt_aspectContainer" then
  47.                             jarAsp = peripheral.call(j,"getAspects")
  48.                             cuentaAsp = peripheral.call(j,"getAspectCount",jarAsp[1])
  49.                             if cuentaAsp > 0 then
  50.                                     esencia[jarAsp[1]] = math.floor(cuentaAsp)
  51.                             end
  52.                     end
  53.             end
  54.     end
  55.      
  56.     function ordena(t)
  57.        local keys = {}
  58.        for k in pairs(t) do
  59.              keys[#keys+1] = k
  60.        end
  61.        table.sort(keys)  
  62.        local i = 0
  63.        return function()
  64.           i = i+1
  65.           if keys[i] then
  66.              return keys[i], t[keys[i]]
  67.           end
  68.        end
  69.     end
  70.      
  71.     function muestraEsencia()
  72.       mon.clear()
  73.       mon.setTextColor(colors.white)
  74.       local x = 1
  75.       local y = 1
  76.       for nom,cant in ordena(esencia) do
  77.          if cant<=20 then mon.setTextColor(colors.red) end
  78.          if cant<40 and cant>20 then mon.setTextColor(colors.yellow) end
  79.          if cant>=40 then mon.setTextColor(colors.green) end
  80.          mon.setCursorPos(x,y)
  81.          mon.write(nom)
  82.          mon.setCursorPos(x+14,y)
  83.          mon.write(tostring(cant))
  84.          if y < 17 then
  85.             y = y+1
  86.          else
  87.             y = 1
  88.             x = x+17
  89.          end
  90.       end
  91.      mon.setTextColor(colors.white)
  92.     end
  93.      
  94.     function llenaJarras()
  95.             for nomes,cantes in pairs(esencia) do
  96.                     esenciaActual = nomes
  97.                     cantidadLlenado = (64-cantes)
  98.                     if cantidadLlenado > (cantEsencia[esenciaActual]-1)*2 then
  99.                             cantidadLlenado = (cantEsencia[esenciaActual]-1)*2
  100.                     end
  101.                     --deja una esencia en el cofre y establece la cantidad de esencias para el llenado
  102.                     if cantidadLlenado > 1 then
  103.                             if cantidadLlenado % 2 == 0 then --comprobamos si el resto al dividir entre 2 es cero
  104.                                     cofre.pushItem("UP", esen[esenciaActual], cantidadLlenado/2)
  105.                             else --el resto no es cero por lo tanto cantidadLlenado no es 2,4,6,8,10,etc
  106.                                     cantidadLlenado = cantidadLlenado + 1
  107.                                     cofre.pushItem("UP", esen[esenciaActual], cantidadLlenado/2)--hacemos la division porque cada ethereal essence lleva 2 aspectos                        
  108.                             end
  109.                            
  110.                     end                            
  111.             end
  112.             muestraEsencia()
  113.     end
  114.      
  115.     function escucha()
  116.             local id,mensaje = rednet.receive()
  117.             if mensaje == "info" then
  118.             nombreEsencia()
  119.             escaneaJarras()
  120.             muestraEsencia()
  121.             else
  122.             nombreEsencia()
  123.             escaneaJarras()
  124.             llenaJarras()
  125.             end
  126.     end
  127.      
  128.      
  129.     while true do
  130.             escucha()
  131.     end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement