Предлагаю подумать над такой темой. Сейчас честшопы неэффективны. Купить там можно что-нибудь нужное только наткнувшись на товар случайно. Обходя магазины в 80% случаев при попытке воспользоваться честшопом, говорит, что у продавца нет товаров/денег. Реально, в торговле все пользуются чатом, честшоп используется часто как просто обменник, когда уже договорились и встречаются только чтобы совершить сделку.
Создание торговой системы, подобной по работе биржевому серверу - дело не сказать, что простое, но мне кажется вполне реальное, и это подняло бы торговлю на принципиально новый уровень. Если заинтересует, я могу описать его работу, вплоть до структуры БД и порядка SQL-запросов, которые будет выполнять сервер в ответ на действия участников торгов. А пока опишу идею кратко:
В крупных городах выделяется место под здание биржи. В здании находятся специально настроенные сундуки - терминалы для ввода-вывода товаров. Такой сундук, при обращении пользователя, должен содержать только те товары, которые он сам ранее внёс. Товарами, оставленными в сундуке, можно
будет торговать с помощью специальных команд чата.
Всего необходимы минимум 4 команды.
1. Просмотреть текущий спрос/предложение по заданному товару (должна быть показана таблица из 5-10 строк с наиболее выгодными ценами на покупку/продажу данного товара, т.н. "биржевой стакан").
2. Выставить заявку на покупку/продажу заданного товара по заданной цене.
3. Просмотр своих заявок.
4. Отменить свою заявку с заданным номером.
Просмотр спроса/предложения доступен всем без ограничений.
На выставление заявки сервер должен:
1. Проверить, может ли она быть зарегистрирована (у пользователя достаточно денег или товара на бирже)
2. Зарегистрировать заявку, если возможно, и попробовать её исполнить (провести сделки между соответствующими заявками, если они существуют).
Например, я хочу купить стак обсидиана, за 100 денег/шт.
1. Смотрю актуальное предложение (составленное из зарегистрированных ранее заявок продавцов):
25 шт за 95
30 шт за 100
50 шт за 110
2. Отправляю заявку на покупку 64 обсидиана за 100 денег/шт.
3. Сервер проверяет, есть ли у меня 6400 денег. Затем регистрирует заявку и сразу же её частично удовлетворяет - покупает 25 шт. за 95 и 30 шт. за 100. 55 обсидиана переводится на мой биржевой счет, продавцам за 95 и 100 переводятся деньги. Не хватает ещё 9 шт. Заявка на 9 шт. остается на рынке, у меня блокируется с оставшегося счёта 900 денег.
4. Теперь в любое время я могу прийти в любое здание биржи и забрать свои 55 штук обсидиана, а если повезет и кто-нибудь, пока буду идти, продаст ещё 9 по цене не более 100, то заберу весь стак.