Перейти к содержимому

MorfSD

Пользователи
  • Публикации

    58
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3

Сообщения, опубликованные пользователем MorfSD


  1. по просьбе автора выкладываю код программы на форум
    под спойлером

     

     

    local alarm_state = false

    local function alarm()
    while true do
    if alarm_state == true then
    rs.setOutput('back', true)
    sleep(0)
    rs.setOutput('back', false)
    alarm_state = false
    end
    sleep(1)
    end
    end

    local sensor = peripheral.wrap('top')
    local monitor = peripheral.wrap('right')

    local x_sensor = 1285
    local y_sensor = 3416
    local z_sensor = 73
    local No_string = 1
    local No_column = 1
    local step_string = 6
    local step_column = 20
    local q_columns = 2

    local guests = {["name"] = {}, ["check"] = {}}

    local function printLog(text)
    local log = fs.open("log", "a")

    log.writeLine(text)
    print(text)

    log.close()
    end

    local function clear()
    monitor.clear()
    monitor.setCursorPos(1, 1)
    monitor.setTextScale(0.5)
    No_string = 1
    No_column = 1
    end

    local function next_string()
    No_string = No_string + 1
    monitor.setCursorPos(No_column, No_string)
    end

    local function next_column()
    if No_column ~= ((q_columns - 1) * step_column + 1) then
    No_column = No_column + step_column
    No_string = No_string - step_string
    else
    No_column = 1
    end

    monitor.setCursorPos(No_column, No_string)
    end

    local function location()
    local player_table = sensor.getPlayers()


    for k, v in pairs(guests["check"]) do
    guests["check"][k] = false
    end


    for k, v in pairs(player_table) do
    local player = v
    local player_info = sensor.getPlayerByUUID(player["uuid"])


    local search = false
    for index, guest in pairs(guests["name"]) do
    if guest == player["name"] then
    guests["check"][index] = true
    search = true
    end
    end
    if search == false then
    local q_guests = #guests["name"]
    guests["name"][q_guests + 1] = player["name"]
    guests["check"][q_guests + 1] = true
    alarm_state = true

    local log_text = textutils.formatTime(os.time()).." New guest: "..player["name"]
    printLog(log_text)
    end


    local x = math.modf(player_info["position"]["x"]) - 1
    local z = math.modf(player_info["position"]["y"]) - 1
    local y = math.modf(player_info["position"]["z"]) - 1
    local distance = math.sqrt(x*x + y*y + z*z)
    distance = math.modf(distance * 100) / 100

    monitor.write('Found '..player_info["name"])
    next_string()

    -- monitor.write("UUID")
    -- next_string()
    -- monitor.write(player_info["uuid"])
    -- next_string()

    -- monitor.write("Id")
    -- next_string()
    -- monitor.write(player_info["id"])
    -- next_string()

    monitor.write("Position")
    next_string()
    monitor.write(x + x_sensor..' '..z + z_sensor..' '..y + y_sensor)
    next_string()

    monitor.write("Distance")
    next_string()
    monitor.write(distance)
    next_string()

    monitor.write("---------")
    next_string()

    next_column()
    end


    for k, v in pairs(guests["check"]) do
    if v == false then
    local log_text = textutils.formatTime(os.time()).." "..guests["name"][k].." left."
    printLog(log_text)

    table.remove(guests["check"], k)
    table.remove(guests["name"], k)
    end
    end
    end

    local function mine()
    while true do
    clear()
    pcall(location)

    sleep(3)
    end
    end

    rs.setOutput('back', false)
    parallel.waitForAny(mine, alarm)

     


  2. вариант с катушками тоже подходит, но надо чтоб комп включал не все сразу а только ближайшую к мобу катушку,

    тогда необходим вариант с калибровкой расположения катушек или вариант со строгим расположением катушек,

    интересно а дрон может зомби своим апгрейдом лоссо поднять?


  3. идея такова,

    в центре поля стоит комп (опенкомп) сенсор(Sensor id578) робот с каким либо оружием, робот и комп соединены (как неважно)

    комп с сенсором замечает моба и говорит роботу идти на те или иные координаты и прибить моба,

    хотелось бы конечно чтоб робот еще обходил препятствия,

    такой вот мозговой штурм

    • Нравится 1

  4. эм а игроки не могут систематизировать свое посещение в игре, мне надо было стак иридия я систематизировал,

    сижу играюсь, подошло время на будильнике, перезашел получил подарок, еще ни разу не профукивал подарки из-за всякой там кучи коблы в инвентаре,

    • Нравится 1

  5. такое дело, найден крайне неприятный баг с модом на голод,

    в этом моде есть книжка так называемый журнал питания (крафтится из пшеницы и листа бумаги)

    так вот когда открываем этот самый журнал(правый клик)

    происходит краш клиента, запретить не вариант

    вот ссылка на краш лог http://pastebin.com/1NDakNnL


  6. надо опробовать на IT собрать такую штуку, где робот будет подкручивать пружину двигателя, если расход будет меньше чем генератор генерирует, куча роботов куча генераторов= халявное электричество  


  7. такое дело, солнечные панели к примеру не ломаются как таковые, вот лежит у меня солнечная панель времен распада союзов, я от нее аккумулятор заряжаю на своем 2х колесном друге, так там нечему ломаться, стальной каркас, сборка советских транзисторов (германиевых), пленочные конденсаторы, резисторы на основе вольфрамовых сплавов, все залито компаундом чтоб влага не попадала,

    за все это время, не единой поломки, и в дождь и в снег её таскал, разложил, кабель кинул до палатки, хоть пасмурно хоть дождь, всеравно работает,устройство называется МСП-1


  8. так проблема в том что когда я прохожу через дверь я попадаю в слепую зону датчика,

    дверь открывается датчиком только с улицы, из помещения дверь открывается нажимными плитами, 

    общая толщина двери 3 блока


  9. В итоге получилось вот это.

     

    abletopass={"MorfSD","Zeus"}
    function check(cnick)
    for k,v in pairs(abletopass) do
    if cnick==v then return true end
    end
    return false
    end
    sensor = require("component").motion_sensor
    red=require("component").redstone
    while true do
    local event=require("event")
    while true do
    type,addr,x,y,z,prnick = event.pull()
    if type=="motion" and check(prnick) then
    wait = true
    print("motion of "..prnick.." at " .. x ..y .. z)
    pass=(x>0)
    event.timer(5,function () wait=false end)
    red.setOutput(require("sides").top,15)
    print("Дверь_открыта")
    while wait do
    type,addr,x,y,z,nick=event.pull()
    end
    red.setOutput(require("sides").top,0)
    break
    os.sleep(99)
    end
    end

    end

     


  10. был странный баг(дверь открывалась не на нужное время а на доли секунды затем открывалась и закрывалась(цыкл)))

    в виду того что я незнаю луа, методом научного исключения части кода удалил часть кода и баг прекратился,

    хотя есть подозрение что надо было просто os.sleep(5) поменять на другое значение.

    • Нравится 2
×
×
  • Создать...