Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal

Log

Members
  • Content Count

    41
  • Joined

  • Last visited

  • Days Won

    14

Posts posted by Log

  1. A simple and compact code lock with a password that can contain digits from 1 to 9. 0 is used as the "enter" button.
    The length of the password can range from 1 to 255.

    Steps to use:

    1. Arrange the modules in a comfortable configuration (lock the sides if necessary)

    2. Set the constants

    3. Upload the program to the execution module

    4. Set the password

    •   Right-click to open the ROM interface
    •   In cell 0 set the password length
    •   Sequentially set each digit of the password
    •   Install the ROM into a casing block

    5. To activate redstone, type the correct password and press "0" to confirm.

     

    Constants:

    •  DELAY - redstone activation time

      Sides:

    • RED - redstone module
    • ROM - ROM module
    • KEY - keypad

              [KEY]
    [ROM][EXE][RED]

     

    ----- PAGE 1 -----
    #DEFINE DELAY 20
    #DEFINE RED RIGHT
    #DEFINE ROM LEFT
    #DEFINE KEY UP
    START: MOV NIL ACC
    SAV
    LOOP: MOV KEY ACC
      JEZ CHECK
      SWP
      ADD 1
      MOV ACC ROM
      SWP
      SUB ROM
      JNZ START
    JMP LOOP
    #BWTM
    ----- PAGE 2 -----
    CHECK: SWP
      MOV NIL ROM
      SUB ROM
      JNZ START
      MOV 15 RED
      MOV DELAY ACC
      SLEEP:
        SUB 1
      JGZ SLEEP
      MOV NIL RED

     

  2. local function compass()
      local sides = {2, 1, 3, 0} -- links of cardinal points, for raw data
      local D = nil
      for s = 1, #sides do
        if robot.detect(3) or robot.place(3) then -- check for block in front side
          local A = geolyzer.scan(-1, -1, 0, 3, 3, 1) -- scan blocks around the robot
          robot.swing(3)
          local B = geolyzer.scan(-1, -1, 0, 3, 3, 1)
          for n = 2, 8, 2 do
            if math.ceil(B[n])-math.ceil(A[n])<0 then -- check the difference between two scans
              D = sides[n/2] -- set the direction
              break
            end
          end
        else -- turn if there is no block
          robot.turn(true)
        end
      end
      return D -- return the direction
    end
    local min, max = 2.2, 40 -- minimum hardness selected to capture lead ore from IC2
    local border = nil
    local X, Y, Z = 0, 0, 0
    local function scan(xx, zz) -- 8x8 block scan
      local raw, index = geolyzer.scan(xx, zz, -1, 8, 8, 1), 1
      for z = zz, zz+7 do
        for x = xx, xx+7 do
          if raw[index] >= min and raw[index] <= max then
            -- add ore coordinates to list
            -- coords of the geolyzer will be converted to local coords of robot
            table.insert(WORLD.x, X+x)
            table.insert(WORLD.y, Y-1)
            table.insert(WORLD.z, Z+z)
          elseif raw[index] < -0.31 then
            -- if a block with a negative hardness is detected, set the flag to end scanning
            border = Y
          end
          index = index + 1
        end
      end
    end
    
    local quads = {{-7, -7}, {-7, 1}, {1, -7}, {1, 1}}
    while not border do
      if robot.move(0) then
        Y = Y - 1
      end
      for q = 1, 4 do
        scan(table.unpack(quads[q]))
      end
    end

     

  3. Program and library for building GPS network.

    https://github.com/DOOBW/OC-GPS

    Download:

    wget https://raw.githubusercontent.com/DOOBW/OC-GPS/master/usr/bin/gps.lua /bin/gps.lua
    wget https://raw.githubusercontent.com/DOOBW/OC-GPS/master/usr/lib/gps.lua /lib/gps.lua

    The functionality is the same as in the ComputerCraft.

    Additional command "flash" allows to upload firmware to EEPROM.

    When the coordinates are precisely determined, when flashing the position of the microcontroller can be omitted - at the first start it will determine its position from neighboring satellites and save on EEPROM.

    GPS network startup example.

     

  4. Update

    Added ability to work with solar panels. When the energy level falls below 30 percent, the robot climbs to the surface and charges from the built-in solar panel. There is a check of time of day and weather conditions.

  5. I fixed it. Download the file again, please.

    The error was due to the computer.beep(), which is not compatible with the old versions OpenComputers.

     

    P. S.

    Instead of batteries, I advise you to use the experience upgrade or additional generator

  6. Such objects are just tables, they must be processed in the correct sequence.

    players = component.debug.getPlayers() -- get a players list
    
    for i = 1, players.n do
      print(players[i]) -- display the name of the next player
    end
    
    player = component.debug.getPlayer(players[1]) -- get player proxy by name from list
    world = player.getWorld() -- get the proxy of the world in which the player is located
    print(world.getDimensionName()) -- print the name of the world
    
    
    -- Or you can get everything at once
    players = component.debug.getPlayers()
    for i = 1, players.n do
      print(players[i], component.debug.getPlayer(players[i]).getWorld().getDimensionName())
    end

     

  7. There are variables in the code that can be customized
    chunks - how many chunks need to be processed
    min and max - the minimum and maximum hardness of mined blocks
    port - port for interaction with the robot (if a wireless card is installed)

  8. lVIijDy.png

    I present you a program for a robot that allows you to mine ore without going down into the caves. Robot, using a geolyzer, can find and mine ore.
    All features are not yet implemented, so I ask you to test and inform me about a bugs.

     

    Requirements:

    • Computer case (tier II or III)
    • Inventory Upgrade (more the better)
    • Inventory Controller Upgrade
    • Hard Disk Drive
    • EEPROM with Lua BIOS
    • Geolyzer
    • RAM (tier I or higher)
    • CPU (any)
    • Hover Upgrade (tier I)
    • Diamond pickaxe or equivalent tool

    Optional:

    • Crafting Upgrade
    • Wireless Network Card or Linked Card
    • Solar Generator Upgrade
    • Battery Upgrade
    • Experience Upgrade
    • Chunkloader Upgrade
    • Generator Upgrade
    • Enderchest from EnderStorage mod

     

    Installing:

    • Download and save the file as init.lua
    • wget https://raw.githubusercontent.com/DOOBW/geominer/master/miner.lua init.lua
    • Put this file in to root directory of the hard disc.
    • Add the disk when crafting a robot.
    • Place the robot on a solid blocks platform.
    • Give the robot a pickaxe
    • Place a container and the charger near the robot.
    • Press the power button and enjoy a process.
  9. It very easy.

    I earlier used the PIM (OpenPeripheral) for greater convenience, but because of the bugs in addon had to abandon it.

    I can slightly modify the program so that prices can be set by the operator.
    Or to write another, simpler, but I need to know what mods I can use, here I used a AE2.

  10. Is a simple example.

    To nobody could know the password, you need to add hashing.

    local event = require('event')
    local term = require('term')
    local gpu = require('component').gpu
    local W, H = gpu.getResolution()
    local color1, color2 = 0x00FF00, 0xFF0000
    local password = '123456789' -- needed hash function, for most security
    
    event.shouldInterrupt = function() return false end -- blocking Ctrl+Alt+C
    event.shouldSoftInterrupt = function() return false end -- blocking Ctrl+C
    
    gpu.setForeground(color1)
    while true do
      term.clear()
      term.setCursor(W/2-10, H/2)
      term.write('PASSWORD: ')
      local input = term.read(_,_,_,'*'):sub(1, -2)
      if input == password then
        term.clear()
        term.setCursor(1, 1)
        gpu.setForeground(0xFFFFFF)
        os.exit()
      else
        term.clear()
        gpu.setForeground(color2)
        term.setCursor(W/2-6, H/2)
        term.write('ACCESS DENIED')
        gpu.setForeground(color1)
        os.sleep(3)
      end
    end

     

  11. Each scan is made over 0.05 seconds.

    The maximum number of blocks which can be scanned at one time - 64

    The available area for scanning is 65x64x65

    65*65*0.05=211.25 sec

    Hence, the entire available area possible to scan for 3.5 minutes. Increase the speed only can increasing the number of computers and geolyzers.

  12. On 25.01.2017 at 3:45 AM, Molinko said:

    Is it possible that your robot also requires the inventory controller upgrade as well?? Inventory upgrade for space. Trading for ... trading. Inv controller for inventory interaction..

    No, it's not necessarily. Mod itself must find a free slot

    CasualDoug, pls, show version list of mods.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.