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

Виртуальная свалка предметов (альтернатива АЕ)

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

%PLAYERNAME% имеет %ITEMNAME%, в кoличетcве n, у негo зaбиты cундуки вcяким хлaмoм, ендерчеcт вooбще трещит пo-швaм. Мoжнo иcпoльзoвaть виртуaльные хрaнилищa AE, нo caм мoд cлишкoм лaгучий и c дoлгим рaзвитием.

 

Мoя идея cocтoит в тoм, чтoбы cделaть aльтернaтиву AE в OpenComputers, чтoбы oблегчить жизнь игрoкaм и cерверу.

 

Любoй игрoк, имеющий кoмпьютер c WiFi кaртoй, мoжет coздaть личнoе виртуaльнoе хрaнилище cкaчaв прoгрaмму и зaрегиcтрирoвaв cебя в cиcтеме.

 

Функции cерверa:

  • Перенoc предметoв из инвентaря в личнoе/oбщеcтвеннoе виртуaльнoе хрaнилище (ВХ).
  • Мaтериaлизaция предметoв из ВХ.
  • Мaтериaлизaция предметoв, кoтoрых нет в ВХ, нo для кoтoрых еcть рецепт и реcурcы в ВХ игрoкa.
  • Перевoд предметoв из cвoегo ВХ в oбщеcтвеннoе/перевoд в ВХ другoгo игрoкa.
  • Сoздaние oбщеcтвеннoгo хрaнилищa c дocтупoм пo пaрoлю.
  • Сoздaние oбменнoй cделки (кaк в тoргoвых aвтoмaтaх IC)
  • Уничтoжение предметa в ВХ
Функции клиентa:
  • Сoбcтвеннo, интерфейc к функциям cерверa.
Вoзле cерверa cтoят терминaлы, чтoбы игрoки caми зaбивaли рецепты - игрoк кидaет предметы в вoрoнку, нa мoнитoре в виртуaльнoм oкне крaфтa зaбивaет рецепт, рoбoт рacклaдывaет рецепт и прoбует cкрaфтить, еcли true, тo рецепт coхрaняетcя нa cервере.

 

Тaк же, мoжнo cделaть aдминcкoе беcпaрoльнoе виртуaльнoе хрaнилище c беcкoнечными дешевыми вoзoбнoвляемыми реcурcaми (деревo/кaктуc/aрбузы/трocтник), тoгдa игрoкaм не нaдo будет делaть лaгo-фермы, oни будут зaнимaтьcя чем-тo бoлее oтвлеченным.

 

Мoжнo oгрaничить время жизни хрaнилищa (хaлявных cундукoв не бывaет), чтoбы дaвнo не игрaвшие игрoки удaлялиcь из БД, a чтoбы прoдлевaть жизнь хрaнилищa, неoбхoдимo в нем cжигaть oпределенные предметы (невoзoбнoвляемые реcурcы)

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

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


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

То есть, ты хочешь сделать базу данных вещей, при попытке забрать вещь из БД при помощи дебаг карты эта вещь вставляется в инвентарь игрока и удаляется из БД?

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


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

То есть, ты хочешь сделать базу данных вещей, при попытке забрать вещь из БД при помощи дебаг карты эта вещь вставляется в инвентарь игрока и удаляется из БД?

Так точно.

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


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

Админское хранилище. Прикольно, но как по мне -- пустая болтовня. Покажите нам код!

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


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

Админское хранилище. Прикольно, но как по мне -- пустая болтовня. Покажите нам код!

Так это просто-напросто идея. Кто-нибудь может написать, если нужно будет. А в "разработке" потому, что кто-то решил избавиться от раздела "Новые идеи".

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


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

Админское хранилище. Прикольно, но как по мне -- пустая болтовня. Покажите нам код!

 

Код был, когда я сидел на ComputerCraft, там я делал сохранение блоков в scoreboard игрока, была жуткая конвертация таблиц, на выходе получалась каша, но зато работало. Идея была в том, что мир можно стереть, а игроков со своими ресурсами оставить (на самом деле не ресурсами, а постройками).

 

Вся проблема в том, что мне лень рисовать удобный интерфейс и переводить RSA на Lua.

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

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


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

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

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


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

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

 

БД удобней хранить в CSV - оптимально и универсально. А вот до GUI библиотек у меня руки не доходят. GML, к примеру хорош, но очень тяжел. На ComputerCraft куча удобных, со всеми современными фичами и довольно легковесных, а на OpenComputers я таких не находил. Надобно затачивать либу под определенные задачи, чтобы не плодить сущности.

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

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


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

 

 

Любой игрок, имеющий компьютер с WiFi картой, может создать личное виртуальное хранилище скачав программу и зарегистрировав себя в системе.
А как планируется идентифицировать  игрока в системе? Я понимаю, логин-пароль. Но где гарантия, что я не зарегистрирую пользователя с именем Doob и не отправлю весь его инвентарь в фонд помощи начинающим хакерам? Можно, конечно обрабатывать события "touch" и "key_down" и определять кто именно за монитором, но если это будет мой компьютер, а не общественный терминал, то он обработает эти события как мне нужно.

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


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

бла-бла6-бла

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

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


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

А как планируется идентифицировать  игрока в системе? Я понимаю, логин-пароль. Но где гарантия, что я не зарегистрирую пользователя с именем Doob и не отправлю весь его инвентарь в фонд помощи начинающим хакерам? Можно, конечно обрабатывать события "touch" и "key_down" и определять кто именно за монитором, но если это будет мой компьютер, а не общественный терминал, то он обработает эти события как мне нужно.

 

Симметричное шифрование решает все проблемы. Как одолею лень - переведу RSA на Lua, ибо рабочих библиотек не видел.

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


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

Шифрование само по себе не решает проблемы идентификации. Как вариант: регистрация пользователя производится со специализированного терминала, а остальная работа - с произвольного компьютера.

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


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

А как планируется идентифицировать  игрока в системе? Я понимаю, логин-пароль. Но где гарантия, что я не зарегистрирую пользователя с именем Doob и не отправлю весь его инвентарь в фонд помощи начинающим хакерам? Можно, конечно обрабатывать события "touch" и "key_down" и определять кто именно за монитором, но если это будет мой компьютер, а не общественный терминал, то он обработает эти события как мне нужно.

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

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


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

Взялся за это,сейчас делаю.

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


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

Шифрование само по себе не решает проблемы идентификации. Как вариант: регистрация пользователя производится со специализированного терминала, а остальная работа - с произвольного компьютера.

 

Это да, если сопрут устройство с которого осуществляется доступ, то все средства тоже сопрут. Можно использовать генерацию ключей по паролю - игрок задает сид своим паролем и из него генерируется ключевая пара. В итоге ключи существуют только во время связи с сервером.

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

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

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


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

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


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

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


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

Оцифрирователь готов,теперь думаю,как обратно возвращать,будет сразу с чем-то типа OreDictionry

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


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

Правда делаю я "Ячейку в банке".

 

Писать код продолжать буду завтра, а то часов 6 уже делаю

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


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

Правда делаю я "Ячейку в банке".

 

Писать код продолжать буду завтра, а то часов 6 уже делаю

Интересно как оно будет связано именно с банком?

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


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

Интересно как оно будет связано именно с банком?

Будет сначала, но как-секрет.

Интрижка:)

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


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

 

 

Будет сначала, но как-секрет. Интрижка

просто зная всё о структуре банка внутри (в плане работы со счетами, балансом и прочим) интересно как ты собрался это реализовать... 

  • Like 1

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


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

эта прога на scoreboard-ах.Эти значения легко изменить.


Проблема - потребовался К.Б. как периферия. 

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


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

эта прога на scoreboard-ах.Эти значения легко изменить.

Проблема - потребовался К.Б. как периферия. 

чего?

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


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

эта прога на scoreboard-ах.Эти значения легко изменить.

Проблема - потребовался К.Б. как периферия. 

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

  • Like 2

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


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

чего?

Облом - дебаг карта не работает с 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;

 

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

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


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

 

 

эта прога на scoreboard-ах.Эти значения легко изменить

О чем была речь? 

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


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

Скорборды в компьютерной программе?

54fab6c23f804_f5d2e85a7f1a0851d851885de8

  • Like 2

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


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

А файл с ником игрока сложно изменить?

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


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

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

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

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

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

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

Войти

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

Войти сейчас

×