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

jammer312

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

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

  • Посещение

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

    7

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


  1. и все равно, для того, чтобы сделать генератор, теперь нужно не 16 стали делать (что является долгим процессом по задумке(бронзовая доменка)), а сделать 4 стали и потом уже без всякого гемора штамповать сталь тоннами


  2. это очень крутое дополнение к логистике, позволяют создавать очень эффективные транспортные системы, к тому же там есть крафтящие трубы, позволяющие не делать для каждого отдельного места АЕ систему и не тратить роботов либо черепах для простого крафта. Они не отличаются такой скоростью, как ГТ, или такой простотой , как ТЕ, но заслуживают внимания


  3. Можно таки сделать спавн с 20 защитными ракетами, по сигналу радара выпускающий по одной, чтобы роботы заного ставили эти ракеты, а делались они из бесконечных ресов(ну как-то ведь можно сделать), также сделать систему регистрации кланов и игроков в кланах из компа, который будет записывать/выписывать игроков из клана, причем вписывать может лишь владелец клана либо приближенные, игроку будет приходить сообщение на мыло (/mail), он будет приходить и подтверждать/отказывать, сделать несколько уровней доступа(точнее не так, то есть есть н способностей, типа "может принимать игроков в клан", и при регистрации игрока в клане при указании одной из способностей ему добавлялась она), этот комп будет крафтить из ресов, которые ему будут давать, площадки для запуска ракет, если в клане достаточно игроков( типа 5 игроков - можно только 1 площадку, 10 - 2 и т.д.) и не превышен лимит площадок на клан(даже не крафтить, то есть крафт запретить совсем, а площадки выдавать из хранилища, если дают нужное кол-во ресов, либо сделать крафт специального предмета вместо площадки, давать площадку в обмен на этот предмет)

    Можно так же продумать, если позволяют возможности радара, систему, стреляющую боевой ракетой по месту запуска вражеской ракеты.

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

    Также можно добавить изучение технологии ( в этом же компе ) для каждого клана (типа утерянная технология), и не выдавать площадки, если не изучена.

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

    P.S. нехило так меня проперло


  4. Наоборот, интересно. Помимо ракет на разрушение ландшафта, ICBM добавляет ракеты для сбивания ракет, системы обнаружения ракет и несколько других блоков. То, что рушит и приваты, как раз еще и усложняет дело, позволит устраивать клановые войны, даже самые крутые кланы, у которых будет полмира запривачено, не будут в безопасности до тех пор, пока не обзаведутся системой защиты, это также будет препятствовать образованию такой ситуации, когда почти везде запривачено одним кланом, т.к. чем больше территория, тем больше затрат на ее оборону (ну или больше незащищенных мест :D)

    Кстати, надо запретить rejuvenation либо red matter , ибо если запустить rejuvenation в чанке с красной материей, будет конец света в прямом смысле(перманентный краш мира)

    И вообще, кластерные ракеты это пи... ...плохо. Их бы тоже убрать. а насчет остальных возражений нет.

     

    P.S.

    Стилизация спавна под базу с ракетной обороной тоже будет в тему + не разнесут всякие бараны дибилы призеры премии Дарвина недобросовестные игроки.


  5. Тессеракты? ололо

    Как я понял, добыча ресов должна быть хардкорной, а так надо всего несколько минут, чтобы сбегать в мир, поставить ЧЛ и тессеракт, запустить робота/черепашку. И АЕ позволит туда же телепортироваться ( классика ведь, 2 сети, пилоны, 1 карта 2^3)

    Флан? я бы предложил скорее не его, а ICBM, так как он больше подходит тематике( это мод на ракеты, в том числе ядерные ), транспорт достаточно лагуч в майнкрафте. Только вот надо поизменять рецепты на крафт ракет, чтобы они были доступны только мощным кланам.

     

    P.S.

    В флане столько всего, что лучше пожалеть сервер и воздержаться от него

     

    P.P.S.

    ПР трубы имеют функционал побольше труб ТЕ, а жидкостные и ГТ пойдут


  6. "не такие хардкорные крафты как в греге, так что для начала самое то"... Ты тему читал?

    Цитирую : " сложность крафта выше среднего или высокая "

    И вообще, термалка убивает грег

     

    P.S.

    Я бы тоже предложил оставить сундуки, можно даже АЕ убрать как * не очень * реалистичный мод

    (по-моему, из пункта 2 основных принципов сборки следует, что нужно делать не лагозавод МЭ со всеми его кабелями, а что-то типа логистических роботов либо черепах, снующих между сундуков, крафт также осуществляться может ПР трубами либо роботами либо черепахами, можно ГТ подключить с его крафт столом)


  7. Чем стрелять? да хоть стрелами. Хотя лучше подойдет что-то типа АЕ пушки, то есть кидающееся кусочками металла, но чтобы не наносили урона блокам.

    Насчет хомов, я думал, что новый === отдельный. Но, в любом случае, я уже был на одном сервере без телепортов, и как-то нормально все уживались. Это даже подталкивает игроков образовывать населенные центры, продвижение к которым достаточно быстро. Тем более кровати ведь никто не отменял


  8. Версия датчика движения с большей точностью но без определения игрока позволит делать более реалистичные системы, которые будут палить по любому движению, но простреливать дальше(ну и, естесственно, надо будет придумывать специальные лазейки для себя,даюы не юыть самому подстреленным)

     

    Кстати, можно телепортацию вообще отключить(то есть никакого тпа и хома), а спавн оборудовать под госпиталь


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

     

    По поводу пушек и динамитов, я не про взрывы, а про то, что можно будет делать системы из датчиков движения и этих программируемых раздатчиков, чтобы защищать базу от вторжения(ибо блоки привата стоят гораздо дороже)


  10. Можно также сделать радиоактивные зоны, то есть прога(ну комп где-нибудь на карте спрятать и бедроком заделать) просматривает координаты игроков, если они в такой зоне, то на них периодически вешается бафф радиоактивности. Война то ядерная как никак

    • Нравится 1

  11. Хорошая идея, только вот эти ваши 3 закона роботехники сильно портят аппетит(

    А также, я бы предложил убрать ТЕ как антихардкорный мод, добавить что-либо(ибо эти ... 3 закона для роботов) для защиты баз, что-нибудь типа раздатчика, который программируется и выпускает снаряды в любом или в изменяемом направлении(не так , что он только перед собой стреляет, а как камера из периферал-аддона компутроникс для СС, задаешь угол и туда стреляет), ну и что-либо посильнее детектора движений из ОС(чтобы подальше смотрел), но без опознавания личности.

    еще как предложение, вместо БК,ТЕ и прочих труб добавить трубы из ProjectRed (не знаю, почему в текущей сборке нету, надеюсь не из-за несовместимости, а из-за обилия прочих труб), так как они сложнее в крафте (да вы что, кто будет использовать булыжниковые трубы для продвинутых задач?)и требуют мозга для создания более-менее продвинутых систем.

    "Tree Capitator - реалистичная вырубка деревьев". *шифт+пкм топором по дереву, перед срубкой блока отжать шифт*

    "Не будет никаких зачарований, читерных телепортаций и полетов. ","Сильное влияние Божества". Может не божество, а корпорацию какую-нибудь? А то даже звучит противоречиво


  12. Вот новая версия, позволяющая продолжить работу карьера с последней точки, если вдруг было прерывание работы(энергия кончилась, еще чего).

    Не уверен в работоспособности на 100%, тем более есть 1 проблема с файлами, потому выкладываю отдельно.

    Для возобновления работы надо всего лишь поставить робота в начальное положение и передать только 1 аргумент -restore (minequarry -restore)

    if require("component").isAvailable("generator")
       then
       generator=require("component").generator
    end
    withg=(generator~=nil)
    slots=16
    slotstocheck=2
    robot=require("robot")
    coords={x=0,y=0,z=0,side=1}
    extcoords={x=0,y=0,z=0,side=1}
    sx={0,1,0,-1}
    sy={1,0,-1,0}
    falsemode=false
    counter=0
    tocount=0
    --1,2,3,4
    --tl  --  coords.side = (coords.side + 3)%4
    --tr  --  coords.side = (coords.side + 1)%4
    --ta  --  coords.side = (coords.side + 2)%4
    --all --  if coords.side == 0 then coords.side =4 end
    function save() 
       file = io.open("quarryrest","w")
       file:write(coords.x.."\n"..coords.y.."\n"..coords.z.."\n"..coords.side.."\n"..counter.."\n"..x.."\n"..y.."\n"..z.."\n")
       file:close()
    end
    function restore()
       local file = io.open("quarryrest","r")
       extcoords.x=file:read()+0
       extcoords.y=file:read()+0
       extcoords.z=file:read()+0
       extcoords.side=file:read()+0
       back()
       tocount=file:read()+0
       x=file:read()+0
       y=file:read()+0
       z=file:read()+0
       falsemode=true
    end
    function checkfalse()
       if counter>=tocount then falsemode=false end
    end
    
    function sgo() while not robot.forward() do robot.swing()end coords.x=coords.x + sx[coords.side];coords.y = coords.y + sy[coords.side]  end
    function sgodown() while not robot.down() do robot.swingDown()end coords.z = coords.z - 1 end
    function sgoup() while not robot.up() do robot.swingUp()end coords.z = coords.z + 1 end
    function sturnLeft() robot.turnLeft(); coords.side = (coords.side + 3)%4;if coords.side == 0 then coords.side =4 end; end
    function sturnRight() robot.turnRight(); coords.side = (coords.side + 1)%4; if coords.side == 0 then coords.side =4 end; end
    
    
    function go()  if not falsemode then while not robot.forward() do robot.swing()end coords.x=coords.x + sx[coords.side];coords.y = coords.y + sy[coords.side] end counter=counter+1; save();checkfalse(); end
    function godown()  if not falsemode then while not robot.down() do robot.swingDown()end coords.z = coords.z - 1 end counter=counter+1; save();checkfalse(); end
    function goup()  if not falsemode then while not robot.up() do robot.swingUp()end coords.z = coords.z + 1 end counter=counter+1; save();checkfalse(); end
    function check() return robot.count(slots-(slotstocheck-1)) > 0 end
    function turnLeft() if not falsemode then robot.turnLeft(); coords.side = (coords.side + 3)%4;if coords.side == 0 then coords.side =4 end; end counter=counter+1; save();checkfalse(); end
    function turnRight() if not falsemode then robot.turnRight(); coords.side = (coords.side + 1)%4; if coords.side == 0 then coords.side =4 end; end counter=counter+1; save();checkfalse(); end
    function tosurf()
       extcoords.x=coords.x
       extcoords.y=coords.y
       extcoords.z=coords.z
       extcoords.side=coords.side
       while coords.z ~= 0 do sgoup() end
       while coords.side ~= 3 do sturnRight() end
       while coords.y ~= 0 do sgo() end
       sturnRight();
       while coords.x ~= 0 do sgo() end
       sturnLeft();
    end
    function back()
       while coords.z ~= extcoords.z do sgodown() end
       while coords.side~= 1 do sturnRight() end
       while coords.y ~= extcoords.y do sgo() end
       sturnRight();
       while coords.x ~= extcoords.x do sgo() end
       while coords.side ~= extcoords.side do sturnRight() end
    end
    function clearinv()
       alreadyhave=false
       for invcounter=1,slots do
           robot.select(invcounter)
           if withg then 
               suc,error=generator.insert()
               if (error=="selected slot does not contain fuel" or alreadyhave) then robot.drop() else alreadyhave=true end
           else
               robot.drop()
           end
       end
       robot.select(1)
       sort()
    end
    function sort()
       curs=1
       for q=1,slots do
           if robot.count(q) > 0 then robot.select(q);robot.transferTo(curs);curs=curs+1 end
       end
       robot.select(1)
    end
    function prevent()
       if check() then
           tosurf()
           clearinv()
           back()
       end
    end
    
    function digrow(n)
    prevent()
    robot.swingUp()
    prevent()
    robot.swingDown()
    for k=1,n do
    prevent()
    go()
    prevent()
    robot.swingUp()
    prevent()
    robot.swingDown()
    end
    end
    function digdim(x,y)
    godown()
    godown()
    for n=1,y do
    if tl then turnLeft() else turnRight() end
    digrow(ex)
    if tl then turnRight() else turnLeft() end
    tl = not tl
    if n==y then print("ok") else go() end
    end
    turnRight();
    turnRight();
    tl= not tl
    end
    x,y,z=...
    if x=="-restore" then
       restore()
    end
    tl=false
    x=x+0
    y=y+0
    z=z+0
    ex=x-1
    fullz=(z-z%3)/3
    print("Fullz = " .. fullz)
    for i=1,fullz do
    digdim(x,y)
    godown()
    end
    if fullz*3==z then elseif fullz*3+1==z then goup();goup();digdim(tl,x,y) else goup();digdim(tl,x,y) end
    tosurf()
    clearinv()
    


  13. Небольшая программа, позволяющая активировать сигнал красного камня, когда видит указанных игроков.

    Конкретно в моем случае это дверь в мои апартаменты.

    Изображение

    Изображение

    Принцип работы:

    Если замечает движение, проверяет, есть ли ник ( если он есть) среди указанных в таблице( по умолчанию реагирует на меня и двд), если есть, то открывает дверь и ждет, пока не пройдет 5 секунд либо игрок не окажется по другую сторону двери. После этого ожидает 5 секунд, перед тем как начать регистрировать новые движения.

    Также программа выдает различную информацию о своей работе:

    Изображение

     

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

    Для того, чтобы изменить список игроков, у которых есть доступ пройти, достаточно изменить таблицу, являющуюся первой строкой кода.

    Также(не уверен) можно записать одно поле как nil(без кавычек), тогда, возможно, дверь будет пропускать мобов.

     

     

    abletopass={"jammer312","dvd406"}
    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=(z>0)
    event.timer(5,function () wait=false end)
    red.setOutput(require("sides").top,15)
    print("open")
    while wait do
    type,addr,x,y,z,nick=event.pull()
    if type=="motion" and nick==prnick and pass==(z<0) then wait=false;print("passed at "..x..y..z) end
    end
    print("closing")
    red.setOutput(require("sides").top,0)
    os.sleep(5)
    break
    end
    end
    end

  14. Не последняя версия, но все же. Работает даже на роботе с минимальными комплектующими,однако нужен апгрейд инвентаря(но с двумя вставками памяти, не тестировал на роботе с одной вставкой).

     

    ОБНОВЛЕНИЕ

    Добавлена функция подзарядки робота через генератор, используя топлива, котое робот выкапывает в процессе работы. Программа сама определяет наличие генератора, если его нету, то работает как предыдущая версия.

     

    Инструкция:

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

    запустить с 3 аргументами из командной строки( если сохранили как minequarry, то надо вводить "minequarry x y z", где x,y и z - значения, выбранные вами)

    первый аргумент определяет ширину

    второй аргумент - длину

    третий - глубину

     

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

     

    Для предотвращения потери ценных ресурсов робот копает в штатном режиме, пока последние 2 слота инвентаря не заполнены, однако, это можно изменить(slotstocheck отвечает за это, находится в начале программы). Проверяются 2 слота вместо одного, так как из некоторых блоков может выпадать по 2 вида ресурса(как из блока кварца кристаллы оного и пыль). Как только в них появляется хоть 1 предмет, робот возвращается в начальную позицию и выгружает весь инвентарь в сундук.

    Также, в конце работы робот возвращается в исходное положение и выгружает предметы

     

    Плюсы:

    программа неприхотлива, работает даже на простых роботах

    минимум настроек, точная отработка, эффективность( ну уж получше excavate из CC)

    робот не остановится, пока не выкопает каждый блок или не разрядится

    робот будет убивать мобов, на которых наткнется

     

    Минусы:

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

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

    робот не умеет менять инструменты

     

    Просьба, оставляйте свои отзывы о полезности программы, пишите в комментариях найденные баги и неточности, пожелания, я буду все это учитывать.

    Прога:

    if require("component").isAvailable("generator")
       then
       generator=require("component").generator
    end
    withg=(generator~=nil)
    slots=16
    slotstocheck=2
    robot=require("robot")
    coords={x=0,y=0,z=0,side=1}
    extcoords={x=0,y=0,z=0,side=1}
    sx={0,1,0,-1}
    sy={1,0,-1,0}
    --1,2,3,4
    --tl  --  coords.side = (coords.side + 3)%4
    --tr  --  coords.side = (coords.side + 1)%4
    --ta  --  coords.side = (coords.side + 2)%4
    --all --  if coords.side == 0 then coords.side =4 end
    function go() while not robot.forward() do robot.swing()end coords.x=coords.x + sx[coords.side];coords.y = coords.y + sy[coords.side] end
    function godown() while not robot.down() do robot.swingDown()end coords.z = coords.z - 1 end
    function goup() while not robot.up() do robot.swingUp()end coords.z = coords.z + 1 end
    function check() return robot.count(slots-(slotstocheck-1)) > 0 end
    function turnLeft() robot.turnLeft(); coords.side = (coords.side + 3)%4;if coords.side == 0 then coords.side =4 end; end
    function turnRight() robot.turnRight(); coords.side = (coords.side + 1)%4; if coords.side == 0 then coords.side =4 end; end
    function tosurf()
       extcoords.x=coords.x
       extcoords.y=coords.y
       extcoords.z=coords.z
       extcoords.side=coords.side
       while coords.z ~= 0 do goup() end
       while coords.side ~= 3 do turnRight() end
       while coords.y ~= 0 do go() end
       turnRight();
       while coords.x ~= 0 do go() end
       turnLeft();
    end
    function back()
       while coords.z ~= extcoords.z do godown() end
       while coords.side~= 1 do turnRight() end
       while coords.y ~= extcoords.y do go() end
       turnRight();
       while coords.x ~= extcoords.x do go() end
       while coords.side ~= extcoords.side do turnRight() end
    end
    function clearinv()
       alreadyhave=false
       for invcounter=1,slots do
           robot.select(invcounter)
           if withg then 
               suc,error=generator.insert()
               if (error=="selected slot does not contain fuel" or alreadyhave) then robot.drop() else alreadyhave=true end
           else
               robot.drop()
           end
       end
       robot.select(1)
       sort()
    end
    function sort()
       curs=1
       for q=1,slots do
           if robot.count(q) > 0 then robot.select(q);robot.transferTo(curs);curs=curs+1 end
       end
       robot.select(1)
    end
    function prevent()
       if check() then
           tosurf()
           clearinv()
           back()
       end
    end
    
    function digrow(n)
    prevent()
    robot.swingUp()
    prevent()
    robot.swingDown()
    for k=1,n do
    prevent()
    go()
    prevent()
    robot.swingUp()
    prevent()
    robot.swingDown()
    end
    end
    function digdim(x,y)
    godown()
    godown()
    for n=1,y do
    if tl then turnLeft() else turnRight() end
    digrow(ex)
    if tl then turnRight() else turnLeft() end
    tl = not tl
    if n==y then print("ok") else go() end
    end
    turnRight();
    turnRight();
    tl= not tl
    end
    x,y,z=...
    tl=false
    x=x+0
    y=y+0
    z=z+0
    ex=x-1
    fullz=(z-z%3)/3
    print("Fullz = " .. fullz)
    for i=1,fullz do
    digdim(x,y)
    godown()
    end
    if fullz*3==z then elseif fullz*3+1==z then goup();goup();digdim(tl,x,y) else goup();digdim(tl,x,y) end
    tosurf()
    clearinv()
    

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