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

Не(Автоматический) магазин

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

Для тех, кто торопится: https://github.com/BrightYC/RipMarket/tree/master

 

Всем привет, решил выложить свою программу-магазин. Экономикой, в отличии от 

не обладает.

Так же, интерфейс позаимствован с программы выше. 

Скажу сразу, программа писалась для себя.

Работать без OpenPeripheral/AE2 не будет.

 

Возможности:

  • Продажа/покупка товара
  • Обменник руды(Коэффицент можно настроить в файлике items.lua - ratio)
  • Раздатчик бесплатной еды(Кол-во выдаваемой еды настроить можно только через код =\, но по стандарту - 16 яблок/арбузов)
  • Лотерея(Делалось наспех, для заполнения меню)
  • Инфо-панель(Поддерживает только цвета, настроить можно в начале - FAQ
  • Возможность оставить отзыв об магазине

Установка:

Настройка, увы, не из простых. Нужно заиметь какой-нибудь vds, так как вся информация хранится на стороне. По стандарту, NodeJS сервер запускается на 1414 порту.

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

По поводу хранения информации всех пользователей - они хранятся в виде txt файлов в JSON. Хранятся они в относительном пути, где установлен сервер. К примеру:

 /home/user/pi/ripmarket/users

Логи покупок/регистраций хранятся по такому же пути, но вместо users - logs

 /home/user/pi/ripmarket/logs

Монтирование всего в игре - к каждому терминалу нужно подключить PIM, снизу PIM'а мэ интерфейс(мэ интерфейс нужно подключить к МЭ сети). Ко всему этому надо подключить адаптеры. В видео можно увидеть как это всё выглядит в игре.

 

Запуск:

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

Все логи терминала(Не путать с сервером!) хранятся в директории /home/logs

 

Видеодемонстрация:

Скрытый текст

 

 

 

 

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

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


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

Это рип. Посмотрел в конфиг, вообще рип.

Пимка - рип.

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

AqFY1MU.gif

 

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

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


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

Смотрел только видос.

+ Хороший, минималистичный дизайн

+ Навигация по менюшкам быстрая

- Магаз не умеет искать нужные предметы по всему инвентарю

- Не обойтись одними лишь средствами игры(нужна vds)

 

А что если больше одного игрока встанут на одну PIM?

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


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Doob сказал:

Это рип. Посмотрел в конфиг, вообще рип.

Пимка - рип.

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

Пимка разрешена, почему нет. Несложно приделать какого-нибудь робота.
 А что не так с админскими ключами? Да какому-нибудь читаку проще мэ сломать и ресы себе забрать. Ну забрали ключ, поменяю. (Учитывая, что просто открыть конфиг и забрать не получится.).ККакие-то проблемы, которые малореализуемы.

4 часа назад, Doob сказал:

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

Тот что был у тебя, меня не устраивал. Но я рад, что кого-то замотивировал. Да и писал я для себя, кому надо - пусть сами разбираются. Мне всё просто и понятно.

37 минут назад, hohserg сказал:

- Магаз не умеет искать нужные предметы по всему инвентарю

- Не обойтись одними лишь средствами игры(нужна vds)

 

А что если больше одного игрока встанут на одну PIM?

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

По поводу вдс - сначала был игровой сервер, но потом понял, что вытаскивать все файлики в случая чего - жуткий геморрой. Увы, переделывать обратно я не буду. 

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, BrightYC сказал:

могут нажатием кнопки продать весь свой инвентарь

Сделай дружественный UI, чтобы юзер не мог неосознанно стрелять себе в ногу

2 минуты назад, BrightYC сказал:

что вытаскивать все файлики в случая чего

А какие там файлики вообще хранятся?

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


Ссылка на сообщение
Поделиться на других сайтах
Только что, hohserg сказал:

Сделай дружественный UI, чтобы юзер не мог неосознанно стрелять себе в ногу

Да ну его, если честно. На сервере постоянно говорят, мол у меня ресы отобрали, а монеты не дали(думают, что дают серверные монеты). 

Кому надо - пусть переделывает.

Только что, hohserg сказал:

А какие там файлики вообще хранятся?

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

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


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

Ну, надеюсь точно доделал. 

 

Доделал почти всё что хотел. Из новинок: 

  • Возможность выбрать режим поиска(весь инвентарь/1 слот)
  • Запуск с EEPROM(никаких зависимостей, программа целиком и полностью на голом HDD)
  • Админ-панель. Ну, чтож, теперь "админы" в программе указываются в EEPROM, ибо для обновления/запуска программы требуется знать, кто же администратор. В админ-панели можно банить игроков, обновлять базу данных предметов, вводить терминал в режим тех-работ, удалить ключ с диска.
  • Небольшая переделка интерфейса, так же теперь игроки при первом логине ОБЯЗАНЫ прочитать "помощь"(Это отсеивает игроков, которые не понимают что это вообще такое)
  • Ключ не указывается в программе, его теперь нужно вставлять через буфер обмена. Сохраняется на жёстком диске по пути в корне диска key.lua
  • Немного адекватнее стал конфиг.
  • Добавил openperipheral selector, позволяет показывать предмет, который пользователь выбрал.

И еще куча всяких вещей, вроде того что скроллбар работает с мышью.

К слову, теперь установить программу можно вроде как проще. Прошиваем EEPROM, и она автоматически скачивает программу с репозитория. Обновить можно будет комбинацией клавиш CTRL+D.

 

Появилась утилита автоматического экспорта. Позволяет автоматически экспортировать предметы, если в таблице items указать параметр needed. Будет поддерживать это кол-во в мэ сети, но нужен мост между основной мэ-сетью и сетью магазина. Buffer - это сколько предметов должно быть в сети, чтобы можно было экспортировать предмет(Необязательный параметр). Для работы этого экспорта нужна деревянная мотыга в сети. Даже не спрашивайте зачем :smile3:

 

Пачка скриншотов:

Скрытый текст

TOZD4gX.png
nPZ48P1.png

S9HY10L.png

2f4HnlV.png

YqMtrgd.png

 

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


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

Еще нужна фича автоматического стирания соглашения всем игрокам при обновлении соглашения

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


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, hohserg сказал:

Еще нужна фича автоматического стирания соглашения всем игрокам при обновлении соглашения

а, да это я сам вручную делаю просто. Утилита есть небольшая.

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


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

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

Самый надежный способ хранить информацию - на жестком диске в игровом сервере.

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


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Doob сказал:

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

Самый надежный способ хранить информацию - на жестком диске в игровом сервере.

Каким образом? Я не понимаю о чём ты. Как он модифицирует свой счёт?

P.S Приведи реальный пример, я не в курсе каким образом можно достать данные с жёсткого диска не имея к нему прямого доступа. Ключ хранится на жёстком диске - каким образом игрок может вытащить ключ? Есть реальный метод, или это теория?

P.P.S Был у меня сервер в игровом мире, это неудобно. Всякие отзывы и прочее при вайпе потом фиг достанешь, это не практично. 

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

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


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

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

Есть один способ защититься. Надо сделать шлюз для связи с интернетом в отдельном мире, куда не имеет доступ ни один игрок. Туда от магазина прокинуть мост туннельными картами. Хотя, я не уверен, что из персонального измерения нельзя вытащить информацию.

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


Ссылка на сообщение
Поделиться на других сайтах
15 минут назад, Doob сказал:

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

Есть один способ защититься. Надо сделать шлюз для связи с интернетом в отдельном мире, куда не имеет доступ ни один игрок. Туда от магазина прокинуть мост туннельными картами. Хотя, я не уверен, что из персонального измерения нельзя вытащить информацию.

Каким образом из памяти игры прочитать ключ? @vx13 призываю тебя, @NEO так же обсуждали эту тему

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


Ссылка на сообщение
Поделиться на других сайтах
57 минут назад, BrightYC сказал:

Каким образом из памяти игры прочитать ключ? @vx13 призываю тебя, @NEO так же обсуждали эту тему

Мне самому интересно что там за дыра такая)

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


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

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

 

Что-то OBS после обновы стал туго писать несколько окон, но общий принцип, думаю ясен.

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


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, Doob сказал:

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

 

Что-то OBS после обновы стал туго писать несколько окон, но общий принцип, думаю ясен.

Это же одиночная игра. С какой стати серверу посылать состояние компов? Нужно только клавиатуру/монитор.

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


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

Было бы здорово если все было так просто. На одном сервере я прочитал исходники админского магазина и нашел их на пастбине.

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

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


Ссылка на сообщение
Поделиться на других сайтах
Только что, Doob сказал:

Было бы здорово если все было так просто. На одном сервере я прочитал исходники админского магазина и нашел их на пастбине.

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

Какого магазина? В смысле моего? Там же без ключа в любом случае не получится ничего сделать. Да и магаз же лежит в открытую на гитхабе, зачем искать где-то на пастебине?

 

 

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, BrightYC сказал:

Да и магаз же лежит в открытую на гитхабе

Этот факт, если честно, не способствует защищённости =)

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

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


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

@Doob из одиночной то игры понятно, вытащить можно что угодно, но в потоке сервера как мне кажется 0 шансов отловить этот ключик

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


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

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

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

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

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

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

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

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

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


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