Как еще можно играть с OpenComputers или Эвент "Биткоин"

MineCR

Свой человек
Друзья Гильдии
Регистрация
23.03.2016
Сообщения
397
Minecraft
MineCR
Ну привет тебе читатель данного поста. Сейчас мы посмотрим как можно еще развлечь себя в кубико_песочнице с модом ОпенКомпьютерс.
Первым делом нужно запастись материалами. Нам понадобится компьютер желательно 3 -го тира (в основном из-за количества компонентов и видеокарты большого разрешения, но это в принципе можно делать и на пк 1-го тира).
Также в нашем случае потребуются комплектующие чтоб завелся ПК, с установленной на нем ОпенОСь (надеюсь с этим у вас не возникнет проблем), так-же от одного до трех датчиков движения и выносная плата редстоуна "Красный камень(ввод\вывод)".
Подключаем все это примерно так:
В одной из комнат ставим датчик движения, в другой ставим пк с монитором и соединяем все это проводом. Где-то в нише стены прячем внешнюю_плату_редстоуна и тоже соединяем с пк.


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

5ae5a9a3a24f.png


66a7e519cc66.png


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


В конечном итоге на экране появляется Никнейм персонажа и количество его набранных Биткоинов , что-то вроде этого -

ab9e0a134508.png


Теперь разберем самое вкусное, а именно код программы управления нашей майнинг_фермой:

-- объявляем основные переменные

local term = require("term")
local component = require("component")
local gpu = component.gpu
local rs = component.redstone
local event = require("event")
local players = {}
xm, ym = gpu.getResolution()
xc = math.floor(xm/2)

-- функция рандомного открывания одной из 4 воронок (в которых разные призы)
local function randomrul()
sider = math.random(2,4)
gpu.set(1,1,sider)
rs.setOutput(sider,14)
os.sleep(0.5)
rs.setOutput(sider,0)
end

-- функция добавления нового игрока если его Ника нет в базе
local function AddPlayer(name)
if not players[name] then
players[name] = {0,0}
end
end

-- функция отображения игрока с его набранными биткоинами
local function prpl()
term.clear()
gpu.set(xc-18,3," СТОИМОСТЬ ИГРЫ 1 БИТКОИН")
gpu.set(xc-25,5,"Биткоины можно заработать просто бегая в комнатах")
gpu.set(xc-18,8,"ИГРОК: "..name2)
gpu.set(xc-18,10,"У Вас на счету: "..players[name2][1].." БИТКОИНОВ")
gpu.set(xc-18,13,"+------------+ +------------+")
gpu.set(xc-18,14,"| ИГРАТЬ | | ВЫХОД |")
gpu.set(xc-18,15,"+------------+ +------------+")
gpu.set(xc-18,17," Нажимая на кнопку ~ИГРАТЬ~ Вы")
gpu.set(xc-18,18,"запускаете рулетку и можете выиграть")
gpu.set(xc-18,19," случайный приз")
end

-- функция отображения экрана в режиме ожидания
local function clpr()
term.clear()
gpu.set(xc-20,10,"+------------------------------------+")
gpu.set(xc-20,11,"| ПРОВЕРЬТЕ СУНДУК С ПРИЗОМ |")
gpu.set(xc-20,12,"| |")
gpu.set(xc-20,13,"| КЛИКНИТЕ ПО ЭКРАНУ ДЛЯ ПРОДОЛЖЕНИЯ |")
gpu.set(xc-20,14,"+------------------------------------+")
pclpr = 1
end


clpr()

-- основное тело программы
while true do
local e = {event.pull()}
if e[1] == "motion" then
e[2] = string.sub(e[2],1,3)
-- проверка двух сенсоров в сложной комнате
if e[2] == "1db" or e[2] == "1eb" then
AddPlayer(e[6])
players[e[6]][1] = players[e[6]][1] + 0.01
okrug = players[e[6]][1] * 10000
okrug = math.floor(okrug)
okrug = okrug/10000
players[e[6]][1] = okrug
-- тут еще один сенсор с меньшими показателями с более простой добычей
elseif e[2] == "" then
AddPlayer(e[6])
players[e[6]][1] = players[e[6]][1] + 0.003
end
end
-- отображение экрана игрока при клике
if e[1] == "touch" and pclpr == 1 then
pclpr = 0
AddPlayer(e[6])
name2 = e[6]
prpl()
elseif e[1] == "touch" and pclpr == 0 and e[3] >= xc-18+1 and e[3] <= xc-18+14 and e[4] >= 13 and e[4] <= 15 then
AddPlayer(e[6])
-- играем
if players[e[6]][1] >= 1 then
pclpr = 1
players[e[6]][1] = players[e[6]][1] - 1
-- запуск функции открытия рандомной воронки
randomrul()
clpr()
elseif players[e[6]][1] < 1 then
prpl()
end
-- выход в режим ожидания
elseif e[1] == "touch" and pclpr == 0 and e[3] >= xc-18+21 and e[3] <= xc-18+34 and e[4] >= 13 and e[4] <= 15 then
pclpr = 1
clpr()
end
end

Из комментариев кода видно к чему относятся функции, и если сделать все как у меня и запустить код то у вас он конечно.. не заработает. А почему? А потому, что во первых - не забывайте ставить свои адреса периферийных устройств, они всегда разные (для того чтоб узнать адрес есть специальный Анализатор), а во вторых - я элементарно мог допустить ошибку в коде при копировании или редактировании поста. Так что все в ваших руках. Но у меня все работает, ничо не знаю =_=

В общем пробуйте, творите, создавайте это увлекательно, это кайфово.
 
Сверху