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

Сканирование игрока на наличие дебаффа "Радиация"

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

Описание: Требуется программа для сканирования игрока на облучение(дебаф "radiation") .

 

Награда: К сожалению я не игрок сервера и игровую валюту или предмет не могу дать, а так как не игровую валюту нельзя предлагать, то я скажу огромное спасибо!

 

 

Установка: Любые блоки, которые вам нужны для создания этой схемы.

 

 

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

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


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

А в чем суть? Чтобы игрока с дебаффом не выпускать никуда? Чтобы он там сдох, если схватил дебафф?

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


Ссылка на сообщение
Поделиться на других сайтах
А в чем суть? Чтобы игрока с дебаффом не выпускать никуда? Чтобы он там сдох, если схватил дебафф?

Видимо, да. А вещи потом забрать....Ибо PIM-слишком просто :)

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


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

Видимо, да. А вещи потом забрать....Ибо PIM-слишком просто

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

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


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

Кстати, кто в курсе, наноботовская команда getActiveEffects() вернёт эффект радиации? Или она типа только для своих?

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


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

А в чем суть? Чтобы игрока с дебаффом не выпускать никуда? Чтобы он там сдох, если схватил дебафф?

да, что бы он там сдох :D что бы никого не "заражал", мне просто по тематике АЭС это хочется сделать

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


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

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

молоко вроде от радиации спасает (в майнкрафте) ну или водка :D

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


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

молоко вроде от радиации спасает (в майнкрафте) ну или водка :D

Молоко от радиации не спасает

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


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

Молоко от радиации не спасает

да какая разница) по теме бы написал бы что-нибудь(

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


Ссылка на сообщение
Поделиться на других сайтах
да какая разница) по теме бы написал бы что-нибудь(

а у нас так, молоком и хлебом не корми, но дай пофлудить :)  Это ж писать программку еще, разбираться как-то, вникать куда-то в какой-то сканер. Это все геморрно и многим не очень интересно =)

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


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

а у нас так, молоком и хлебом не корми, но дай пофлудить :)  Это ж писать программку еще, разбираться как-то, вникать куда-то в какой-то сканер. Это все геморрно и многим не очень интересно =)

ну если бы меня кто-то научил таким штукам, я бы сам сделал :D

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


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

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

Главное ещё костюм выдать. И сделать ящик с воронкой, чтобы все могли выбросить уран. А лучше пимпу у входа/выхода к реактору. Для 100% безопасности.

И ещё напоминаю, что сканеры из секурити могут следить не только за игроками и мобами, но и за выброшенными предметами.

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


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

На выходе сварганить шлюз. При обнаружении заражённых включать сообщение:

 

"Congratulations. The test is now over. All Aperture technologies remain safely operational up to 4000 degrees Kelvin. Rest assured that there is absolutely no chance of a dangerous equipment malfunction prior to your victory candescence. Thank you for participating in this Aperture Science computer-aided enrichment activity. Goodbye."

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


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

от радиации спасает водка

Вы кажется игрой ошиблись, сударь :D

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


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

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

Главное ещё костюм выдать. И сделать ящик с воронкой, чтобы все могли выбросить уран. А лучше пимпу у входа/выхода к реактору. Для 100% безопасности.

И ещё напоминаю, что сканеры из секурити могут следить не только за игроками и мобами, но и за выброшенными предметами.

осталось только программу написать :D

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


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

осталось только программу написать

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

Отрезать путь к отступлению вкусившим полония игрокам – как-то скучновато.

 

ну если бы меня кто-то научил таким штукам, я бы сам сделал

А это уже более интересная постановка вопроса. Вдохновившись ею, я набросал код. Он, конечно, неидеален, но твою задачу решает. Для решения использован сенсор из OpenPeripheral. Он немного кривоват, и иногда генерирует исключения, что слегка усложняет код. Но другого сенсора в моей сборке не нашлось. Ты можешь использовать любой другой сенсор, скорректировав программу под его API.

 

 

-- рабочее пространство ограничено кубом
-- ! задать координаты относительно сенсора
local x1,x2,y1,y2,z1,z2 = -5,5, -2,5, -5,5
-- ! задать сторону редстоуна относительно контроллера
local side_rs = 3
-- ! задать паузу между опросами сенсора (в секундах)
local pause = 5

local time = require"computer".uptime
local com = require"component"
local sens = com.openperipheral_sensor
local rs = com.redstone

local fRadiation  -- флаг наличия зараженного игрока в опасной зоне
local player_name -- имя неудачника (Родина должна знать своих героев!)

while true do
  fRadiation = false
  -- получить таблицу игроков и перебрать всех
  local players = sens.getPlayers()
  for _,player in pairs(players) do
    -- получить информацию по игроку
    --   обходя возникающее иногда исключение
    local fOk, player = pcall(sens.getPlayerByUUID,player.uuid)
    if fOk then
      local info = player.all()
      local p = info.position
      for _,effect in pairs(info.living.potionEffects) do
        -- если игрок поражен радиацией и находится в опасной зоне
        if effect=="ic2.potion.radiation"
            and x1<=p.x and p.x<=x2
            and y1<=p.y and p.y<=y2
            and z1<=p.z and p.z<=z2 then
          fRadiation = true
          player_name = info.name
          break
        end
      end
    end
    if fRadiation then
      break
    end
  end
  -- управление конечным устройством и вывод сообщения
  rs.setOutput( side_rs, fRadiation and 15 or 0 )
  if fRadiation then
    print( ("%d: Тревога! Игрок %s творит какую-то дичь! Впустить бригаду дронов-дезактиваторов!"):format(time(),player_name) )
  else
    print( ("%d: Чёта скучна..."):format(time()) )
  end
  os.sleep(pause)
end

 

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


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

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

Отрезать путь к отступлению вкусившим полония игрокам – как-то скучновато.

 

А это уже более интересная постановка вопроса. Вдохновившись ею, я набросал код. Он, конечно, неидеален, но твою задачу решает. Для решения использован сенсор из OpenPeripheral. Он немного кривоват, и иногда генерирует исключения, что слегка усложняет код. Но другого сенсора в моей сборке не нашлось. Ты можешь использовать любой другой сенсор, скорректировав программу под его API.

 

 

-- рабочее пространство ограничено кубом
-- ! задать координаты относительно сенсора
local x1,x2,y1,y2,z1,z2 = -5,5, -2,5, -5,5
-- ! задать сторону редстоуна относительно контроллера
local side_rs = 3
-- ! задать паузу между опросами сенсора (в секундах)
local pause = 5

local time = require"computer".uptime
local com = require"component"
local sens = com.openperipheral_sensor
local rs = com.redstone

local fRadiation  -- флаг наличия зараженного игрока в опасной зоне
local player_name -- имя неудачника (Родина должна знать своих героев!)

while true do
  fRadiation = false
  -- получить таблицу игроков и перебрать всех
  local players = sens.getPlayers()
  for _,player in pairs(players) do
    -- получить информацию по игроку
    --   обходя возникающее иногда исключение
    local fOk, player = pcall(sens.getPlayerByUUID,player.uuid)
    if fOk then
      local info = player.all()
      local p = info.position
      for _,effect in pairs(info.living.potionEffects) do
        -- если игрок поражен радиацией и находится в опасной зоне
        if effect=="ic2.potion.radiation"
            and x1<=p.x and p.x<=x2
            and y1<=p.y and p.y<=y2
            and z1<=p.z and p.z<=z2 then
          fRadiation = true
          player_name = info.name
          break
        end
      end
    end
    if fRadiation then
      break
    end
  end
  -- управление конечным устройством и вывод сообщения
  rs.setOutput( side_rs, fRadiation and 15 or 0 )
  if fRadiation then
    print( ("%d: Тревога! Игрок %s творит какую-то дичь! Впустить бригаду дронов-дезактиваторов!"):format(time(),player_name) )
  else
    print( ("%d: Чёта скучна..."):format(time()) )
  end
  os.sleep(pause)
end

 

ееее, работает) только вот просьба, можешь помочь это все сделать в виде GUI? Что бы все это было красиво)

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


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

ееее, работает) только вот просьба, можешь помочь это все сделать в виде GUI? Что бы все это было красиво)

Понимание красоты у каждого своё. Но давай попробуем.

 

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

 

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

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


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

Понимание красоты у каждого своё. Но давай попробуем.

 

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

 

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

Монитор будет 2x1

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

 

Во вторых, что бы на мониторе отображался в самом верху большими буквами ник игрока, затем можно сделать небольшой как бы подсчет, что бы игрок заходил в эту будку, активировал эту программу и результат показывался только после какого-то времени, а на экране в это время будут капать проценты до 100, когда 100%, то выводится сообщение:

Если все в норме, то выводить примерно следующее (зелеными буквами на весь экран): Радиоактивный фон в норме, пожалуйста можете проходить. (и подается редстоун на дверь)

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

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

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


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

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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


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