Перейти к публикации
Форум - ComputerCraft
electronic_steve

Cканер эффектов нанороботов

Рекомендованные сообщения

краткое введение в курс наномашин :

 

наномашины дают случайные эффекты и частицы. при неосторожном использовании могут убить.
есть только 2 способа их убить:
1. да поможет вам бог.
2. быть пиратом (пить grog).

 

 

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

Просто пьём наномашины,запускаем эту прогу и ждём. Во время сканирования желательно стоять на месте и выпить зелье регенерации. После завершения сканирования программа выдаст вам список эффектов и их индексов.

Далее можете включать и выключать понравившиеся вам эффекты используя эту программу. видео

ВНИМАНИЕ! есть эффект мгновенного урона. он может убить вас при сканировании.

Изменено пользователем electronic_steve
  • Like 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

О, я даже не знал, что так возможно. Думал, всё перепробовать нужно вручную.

 

А ты можешь сделать немного другую прогу - выпил нанитов, запустил прогу и получил копку 3х3 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Krutoy я так и не понял как сделать 3^3. это не эффект. я получил эту способность когда тестил прогу, однако когда я перезапустил тест 3^3 исчез. 

Изменено пользователем electronic_steve

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как-то все слишком сложно, можно все через один цикл сделать.

Вот более простая версия:

 

 

local event = require('event')
local modem = require('component').modem
local port = 1
local head = 'nanomachines'
local tot = 18 --getTotalInputCount
local msg = nil

modem.open(port)
modem.broadcast(port, head, 'setResponsePort', port)

print('input', 'effects')

for i = 1, tot do
  os.sleep(0.1)
  modem.broadcast(port, head, 'setInput', i, true)
  msg = {event.pull('modem_message')}
  if msg[6] == head and msg[7] == 'input' and msg[8] == i and msg[9] == true then
    modem.broadcast(port, head, 'getActiveEffects')
    msg = {event.pull('modem_message')}
    if msg[6] == head and msg[7] == 'effects' then
      print(i, msg[8])
      modem.broadcast(port, head, 'setInput', i, false)
    end
  end
end

 

 

 

А это экстренный выключатель:

 

 

local event = require('event')
local modem = require('component').modem
local port = 1
local head = 'nanomachines'
local tot = 18 --getTotalInputCount
local msg = nil

modem.open(port)
modem.broadcast(port, head, 'setResponsePort', port)
os.sleep(0.1)
for i = 1, tot do
  modem.broadcast(port, head, 'setInput', i, false)
  msg = {event.pull('modem_message')}
  if msg[6] == head and msg[7] == 'input' and msg[8] == i and msg[9] == false then
    print(i)
  end
end

 

 

 

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

Копка 3x3 это один из безымянных эффектов, поэтому их надо будет потом проверить вручную.

Изменено пользователем Doob

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
я так и не понял как сделать 3^3. это не эффект. я получил эту способность когда тестил прогу, однако когда я перезапустил тест 3^3 исчез.

 

Возможно некоторые эффекты проявляется при включении комбинации из нескольких setInput? Тогда количество возможных эффектов возрастает на порядки. В инете ничего вразумительного не нашел по этому поводу.

Можно модифицировать программу, чтоб перебрала, например, все возможные пары входов.

Изменено пользователем BarBoss

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возможно некоторые эффекты проявляется при включении комбинации из нескольких setInput? Тогда количество возможных эффектов возрастает на порядки. В инете ничего вразумительного не нашел по этому поводу.

Можно модифицировать программу, чтоб перебрала, например, все возможные пары входов.

 

вот тут написано про это. буду пилить прогу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

local event = require('event')
local component = require('component')
local modem = component.modem
local computer = component.computer
local port = 1211
local head = 'nanomachines'
local tot = 18 --getTotalInputCount
local msg = nil
 
modem.open(port)
modem.broadcast(port, head, 'setResponsePort', port)
 
local function get()
  modem.broadcast(port, head, 'getActiveEffects')
  msg = {event.pull('modem_message')}
  if msg[6] == head and msg[7] == 'effects' then
    print(msg[8])
  end
end
 
local function test(n, st)
  modem.broadcast(port, head, 'setInput', n, st)
  msg = {event.pull('modem_message')}
  if msg[6] == head and msg[7] == 'setInput' and msg[8] == n and msg[9] == st then
    print(n, st)
  end
end

for i = 1, tot do
  for j = 1, tot do
    if i ~= j then
      print('Press any key to continue.')
      event.pull('key_down')
      computer.beep()
      test(i, true)
      test(j, true)
      get()
      print('Activated: '.. i ..' and '.. j .. '\n')
      computer.beep(900)
      event.pull('key_down')
      test(i, false)
      test(j, false)
    end
  end
end

 

 

Изменено пользователем Doob

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если бы так и было, то названия эффектов бы появлялись, но кто хочет - может попробовать.

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

 

И стена сразу будет пробиваться? А если не будет, то что?

С молоком понятно, а зелья какие и зачем нужны? У меня например зелей нет и не предвидится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И стена сразу будет пробиваться? А если не будет, то что?

С молоком понятно, а зелья какие и зачем нужны? У меня например зелей нет и не предвидится.

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

Правда я не знаю, какая там вероятность выпадения, так что придется несколько банок с нанитами выпить, чтобы найти этот эффект.

Вот, кстати его код: https://github.com/MightyPirates/OpenComputers/blob/master-MC1.7.10/src/main/scala/li/cil/oc/common/nanomachines/provider/DisintegrationProvider.scala

 

Несколько взырвных на реген, потому-что с вероятностью 3% может попасться эффект урона на 6 едениц.

Изменено пользователем Doob

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А еще получается вот так:

Когда у машинок нет энергии - они добавляют по 5 голода (или урона)

Список возможных зелий (эффектов зелий) берется из http://puu.sh/lgdz4/4aa64207ac.png

Список возможных Particle(частицы) эффектов: http://puu.sh/lgdAR/adfdb8defa.png

Есть еще такой эффект как магнит

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кстати, да, в стандартном конфиге партиклы занимают 41%, положительные эффекты - 31%, отрицательные - 28%. Следовательно, можно предположить, что этот дезинтегратор выпадает с вероятностью 0.21%, если учитывать, что в среднем, после каждой съеденной банки нанитов эффекты занимают 7 слотов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как-то все слишком сложно, можно все через один цикл сделать.

Вот более простая версия:

 

 

local event = require('event')
local modem = require('component').modem
local port = 1
local head = 'nanomachines'
local tot = 18 --getTotalInputCount
local msg = nil

modem.open(port)
modem.broadcast(port, head, 'setResponsePort', port)

print('input', 'effects')

for i = 1, tot do
  os.sleep(0.1)
  modem.broadcast(port, head, 'setInput', i, true)
  msg = {event.pull('modem_message')}
  if msg[6] == head and msg[7] == 'input' and msg[8] == i and msg[9] == true then
    modem.broadcast(port, head, 'getActiveEffects')
    msg = {event.pull('modem_message')}
    if msg[6] == head and msg[7] == 'effects' then
      print(i, msg[8])
      modem.broadcast(port, head, 'setInput', i, false)
    end
  end
end

 

 

 

А это экстренный выключатель:

 

 

local event = require('event')
local modem = require('component').modem
local port = 1
local head = 'nanomachines'
local tot = 18 --getTotalInputCount
local msg = nil

modem.open(port)
modem.broadcast(port, head, 'setResponsePort', port)
os.sleep(0.1)
for i = 1, tot do
  modem.broadcast(port, head, 'setInput', i, false)
  msg = {event.pull('modem_message')}
  if msg[6] == head and msg[7] == 'input' and msg[8] == i and msg[9] == false then
    print(i)
  end
end

 

 

 

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

Копка 3x3 это один из безымянных эффектов, поэтому их надо будет потом проверить вручную.

Годно) Надо бы еще сделать прогу для перевода всех этих эффектов в читаемый текст и сохранение в отдельный файл для удобства) Попробую что нибудь наколдовать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

oppm install nn

Правда не стабильно работает это дело на лагающем севере.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×