Реализация простая как двери. Есть ID предмета, есть таймер, есть стартовая цена. Игроки могут повышать ставки нажимая на кнопку. Каждая новая ставка увеличивает цену на 10% от прошлой ставки. Все цифры настраиваются в конфиге.
Я это писал потому что мне было интересно реализовать полную модульность - когда вся логика в отдельной папке и модифицировать файлы игры надо по самому минимуму, не влезая в логику игры вообще. Захотел - подключил, захотел - отключил, захотел - вырезал и ушёл продавать на других площадках (совесть имейте, хоть на бутылочку винишка скиньте, если уже продаёте).
MiniAuction.7z (5,5 КБ)
Использование
-
Залить файлы.
-
Прописать базу и настройки в config.php.
-
Запустить install.php.
-
Настроить cron.
-
Подключить объект User к api.php
-
Подключить к проекту:
// Прописываем путь куда залили папку. require_once __DIR__ . '/MiniAuction/init.php'; // Запуск аукциона $controller = new AuctionController(); $result = $controller->startAuction($itemId, $startPrice); $auctionId = $result['auction_id']; // Показ интерфейса include miniAuctionPath('views/auction.php'); // Выдача наград AuctionEventManager::on('auction.ended', function ($data) { $winnerId = $data['winner_id']; $itemId = $data['item_id']; $price = $data['price']; // Списать деньги, добавить предмет и т.д. });
Нюансы
Вообще есть три колхоза:
- Операции в случае победы. Списание денег, выдача предметов итд итп - это надо прописать.
- auction.php это чисто базовый html, нужно сделать красиво под себя.
- В api.php есть строчка
$user = getCurrentUser();и этополная хуетазаглушка. Туда надо передать объект$userиз вашего проекта и убедиться, что он умеет отдавать$user->idи$user->money. Тут просто красивее не придумалось, так как надо взаимодействовать с игроком проверяя го баланс, когда он повышает ставку. Придумаю что-то красивее - обновлю.