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

FelixBanan

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

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

  • Посещение

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

    2

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


  1. Есть небольшая программка:

    local com = require ("component")
    local rs = com.redstone
    local sides = require ("sides")
    local side = "up"
    rs.setOutput (sides.side, 15)

    Вроде правильно написал но все равно не работает. Что не так?


  2. Я могу, конечно, написать эту программульку, но лучше и правда нарисовать блок-схему — или иным образом представить алгоритм графически. Lua — язык императивный, поэтому код будет примерно соответствовать нарисованному. Если никак не получится — смотри спойлер.

     

     

     

    Тебе странная переменная не нужна совершенно. Потому что ты нагородил её, сделав логическую ошибку в алгоритме.

    local com = require("component")
    local event = require("event")
    local rs = com.redstone
    local sides = require("sides")
    local pass = "sample password"
    
    while true do
      local evt, _, _, arg = event.pull()
      if evt == "key_down" and arg == 28 then
        break
      elseif evt == "magData" then
        if arg == pass then
          rs.setOutput(sides.top, 15)
          os.sleep(2)
          rs.setOutput(sides.top, 0)
        else
          rs.setOutput(sides.bottom, 15)
          os.sleep(1)
          rs.setOutput(sides.bottom, 0)
        end
      end
    end
    

    Я бы ещё вместо event.pull использовал event.pullMultiple, но это уже штрихи мелкие.

     

     

     

    А, и да. В одно сообщение влезали несколько цитат (год назад точно, как минимум), так что мультипостить необязательно. И их ещё можно изменить. Но это мелочи и к топику отношения не имеет.

    Спасибо вроде-бы вкурил в чем проблемы были. Буду теперь пытаться нормально код писать, а то самому не понятно


  3. Переменная со... странным именем не используется — зачем она в коде? В каком магическом ритуале она участвует?

     

    Отступов нет — ну хоть не в однострочник код записан, спасибо.

     

    У тебя жесточайше криво построена логика программы. Посмотри-то на алгоритм свой (блок-схему нарисуй, если непонятно). На строке 9 ты принимаешь любой ивент — однако дальше код пойдёт, только если ты нажал на клавишу с кодом 28 (иначе первый if завершится, и снова выполнение вернётся к началу цикла). Однако в ифе break. Он, вообще-то, прерывает цикл и выкидывает выполнение на инструкцию сразу после него. Код внутри цикла после break выполняться не будет.

     

    Иными словами, у тебя получилось сделать невероятно нерациональную программу, которая ждёт ивента и выходит по нажатию Enter.

    я прост конченный новичок в луа. Переменная нужна чтобы код работал. Но он не работает. Типо если ass = 1 то подает редстоун сигнал. Но он оч плохо его подает. А по нажатию на энтер он должен завершать программу.

     

    вот я и прошу чтобы помогли с кодом


  4. local com = require'component'
    local pull = require'event'.pull
    local rs = com.redstone
    local sides = require("sides")
    local pass = "govno"
    
     
    while true do
    local eventType, _, _, key_code = pull()
    if eventType == "key_down" and key_code == 28 then
    break
    ass = 0
    type,_,_,data,_,_ = pull()
    if type == "magData" then
    ass = 1
    else
    ass = 0
    if h == 1 then
    if data == pass then
    rs.setOutput(1,15)
    rs.setOutput(1,0)
    os.sleep(2)
    else
    rs.setOutput(0,15)
    os.sleep(1)
    rs.setOutput(0,0)
    end
    end
    end
    end
    end
    

    Криво работает. Редстоун начинает пульсировать не с первого раза как проведу карточкой. Не понимаю из за чего это


  5. Мой говнокод (Felixpimp или FelixBanan)  

    pastebin get HD8rHaQq helper.lua

    local component = require("component")
    output = component.os_rfidreader.scan(10)
    for k, v in pairs(output[1]) do
      print(k, v)
    end
    

    MYgZawU.png

    Буду пытаться улучшать свой скрипт, когда выучу lua до конца.

×
×
  • Создать...