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

Quant

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

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

  • Посещение

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

    9

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


  1. Итак, решил я сделать гайдик по такой ранее непонятной мне теме.

    Component API - единственный способ подключать компоненты,но для начала подключим его самого:

    local c = require("component")

    Теперь можно для примера подключить рэдстоун карту:

    local r = c.redstone

    Геоанализатор подключается также,но redstone меняется на geolyzer(как и переменная) 

    local g = c.geolyzer 

    А как теперь использовать эти компоненты?

    Выдадим рэдстоун сигнал слева для примера - r.setOutput(15,require("sides").left)

    Подведём итоги.

    1.Вызываем API.

    2.Подключаем компонент.

    3.Используем компонент. Переменная компонента+.+функция.

    Надеюсь,кому-то это поможет. 


  2. Хороший результат, ты близок к успеху, но есть возможность передать твое число в 20 раз быстрее. Почему ты не захотел разложить число в пятнадцатеричный ряд и вместо синхронизирующего нуля передать что-нибудь более ценное?И еще проясни смысл вот этой строки в конце принимающей части

     

    print((l-l%10)/10)
    Целочисленное деление-

    3:2=1 вместо 1,5


  3. Теперь прога работает ещё быстрее - числа в 14 цифр из девяток(99999999999999) передаются 14*9*2 тиков - это 13 с половиной секунд!

    Мир лагал,но это число передалось за минуту.


  4. Пусть тогда игрок покупает вещи не у банка, а у других игроков, а т.к. онлайн на сервере не слишком большой, то никакой читерности и не будет.

    Если ты думаешь, что AE - скучный мод, то ты его толком не знаешь. Мне он кажется интересным т.к. там есть возможность "побыть инженером", составляя сложную, запутанную схему обработки предметов у себя дома. Когда я представлял систему от Doob, я подумал, что неплохо было бы внести в нее эту черту AE. Примерно так: игроку предоставляется голая система, которую можно расширять самописными модулями, например, что некоторые предметы автоматически извлекались в блоки игрока, когда он вернется домой из шахты или откуда-то. 

    Будем писать мод на Lua?


  5. Этот мод категорически не хочет работать с Forestry, никак, ни с какими версиями. Пока не понятно, почему. Не удалось мне пока  их заставить работать вместе.

    Ещё он, вроде бы, не хочет работать с ProgectRed и Advanced Generators, которых на сервере нет.


  6. Я вообще ничего не предлагал, только описал идею.

    Админ-шоп делает предметы из воздуха, т.е. не использует сгенерированные ресурсы в мире, а добавляет новые в обход генерации (пусть даже это возобновляемые ресурсы, все-равно это официальная дюп-машина).

    Надо удалить оттуда все возобновляемые ресурсы - и всё нормально.


  7. Вряд ли=)  Скорее всего они в одиночке сделали один дизель с бурилкой и выводы.

     

    В любом случае, это можно проверить только установкой и реальными испытаниями на  сервере в боевых условиях. Онлайн сейчас 0.5 человека и два крипера, сейчас можно там хоть запуск "Протонов" и "Буранов" проводить и испытывать :)

    И конвейеров штук 100,два компа,автоматическое производство дизеля - no lags


  8. Перешёл на таблицы - конец извращениям

     

    local x,y,z = 261,64,-200 --Координаты сундука
    print("Loading")
    os.sleep(1)
    c = require("component")
    local ch = c.container_chest
    local event = require("event")
    local term = require("term")
    local i,table,nt = {},{},{}

    local d = c.debug

    function gfinv()
    print("Название предмета")
    iname = io.read()
    print("М-данные")
    idamage= io.read()
    print("Количество")
    icount = tonumber(io.read())
    print("Нажмите для продолжения")
    _,_,_,_,_,name=event.pull("touch")
    if table[name.."-"..iname.."-"..idamage]>=icount then
    table[name.."-"..iname.."-"..idamage]=table[name.."-"..iname.."-"..idamage]-icount
    print(d.runCommand("/give "..name.." "..iname.." "..icount.." "..idamage)) nt[name]=nt[name]-icount
    else print("Нету:(")
    end;end;
    function atinv()
    i = ch.getStackInSlot(1)
    print("Коснитесь экрана для продолжения")
    _,_,_,_,_,name=event.pull("touch")
    print("Название этого предмета - "..i.name)
    print("М-данные предмета - "..i.damage)
    if table[name.."-"..i.name.."-"..i.damage]==nill then
    table[name.."-"..i.name.."-"..i.damage]=i.size
    else table[name.."-"..i.name.."-"..i.damage]=table[name.."-"..i.name.."-"..i.damage]+i.size
    end;
    if nt[name]==nill then nt[name]=i.size
    w.setBlock(x,y,z,0,0)
    w.setBlock(x,y,z,54,0)
    else if nt[name]<4096 then
    nt[name]=i.size+nt[name]
    w.setBlock(x,y,z,0,0)
    w.setBlock(x,y,z,54,0)
    else print("Хранилище переполнено")
    end;
    end;


    os.sleep(1)
    end;
    w = d.getWorld()
    while true do
    term.clear()
    print("впихнуть или выпихнуть?")
    if io.read()=="впихнуть"
    then
    pcall(atinv)
    else
    gfinv()
    end;
    ch = c.container_chest
    os.sleep(2)
    end;

     


    А идея была - хранение ценных предметов,которые никто не сопрёт.


  9. Передача информации по редстоуну вряд ли найдет практическое применение. Поэтому поднятую тему считаю интересной только с точки зрения изучения работы реальных последовательных протоколов передачи данных. Ни один из реальных известных мне цифровых протоколов не использует силу сигнала как способ передачи информации. Только наличие/отсутствие. Посему предлагаю автору темы реализовать протокол UART как используемый в известных интерфейсах RS-232 и RS-485. Если это кому то кажется абракадаброй, готов помочь чем смогу.

     

    Моё мнение может отличаться от мнения других участников форума.

    Есть стационарные крафтовые роботы, так почему бы не сэкономить на ресурсах?


  10. чего?

    Облом - дебаг карта не работает с testfor,теперь командный блок нужен.

    Серьёзно? У тебя в распоряжении тонны способов обработки и хранения данных через ОС, а юзаешь SB? Лучше тогда вообще на КБ делай всё — полезнее.

    Надо поиздеваться над майном :) А почему бы и нет - приятное с полезным?

    Вот то,что есть сейчас -  (вместе с обломом)

    c = require("component")

    local ch = c.container_chest

    local event = require("event")

    local term = require("term")

    local i = {}

    local d = c.debug

     

    function cr(f)

    local i=1

    i,_ = string.find(f,":")

    return string.sub(f,i+1)

     

    end;

    function gfinv()

    print("Название предмета")

    iname = io.read()

    print("Название мода")

    mname = io.read()

    print("Количество")

    icount = tonumber(io.read())

    print("Нажмите для продолжения")

    _,_,_,_,_,name=event.pull("touch")

    tr = d.runCommand("/testfor @p[r=3,name=..name..",score_"..mname..":"..iname.."_min="..icount.. ]")

    print(tr)

    end;

    function atinv()

    i = ch.getStackInSlot(1)

    i.name=cr(i.name)

    print(d.runCommand("/scoreboard objectives add "..i.name..i.damage.." dummy"))

    print(d.runCommand("/scoreboard objectives list"))

    print("Коснитесь экрана для продолжения")

    _,_,_,_,_,name=event.pull("touch")

    print(d.runCommand("/scoreboard players add "..name.." "..i.name..i.damage.." "..i.size))

    w.setBlock(x,y,z,0,0)

    w.setBlock(x,y,z,54,0)

    os.sleep(1)

    end;

     

    w = d.getWorld()

    while true do

    term.clear()

    print("впихнуть или выпихнуть?")

    if io.read()=="впихнуть"

    then

    pcall(atinv)

    else

    gfinv()

    end;

    ch = c.container_chest

    os.sleep(2)

    end;

     

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