3502904656
Singleton в некоторых местах вместо решения #42. Новые шаги для решения #16 и #52. Closes #42. Closes #32. Closes #31.
48 lines
1.2 KiB
PHP
48 lines
1.2 KiB
PHP
<?php
|
|
|
|
use Battles\Bank;
|
|
use Battles\Database\Db;
|
|
use Battles\User;
|
|
|
|
require_once "functions.php";
|
|
if (User::getInstance()->getBattle()) {
|
|
exit();
|
|
}
|
|
const PRICES = [
|
|
'sleep15' => 20,
|
|
'sleep30' => 20,
|
|
'closebattle' => 100,
|
|
'heal20' => 10,
|
|
'heal35' => 25,
|
|
'heal50' => 50,
|
|
'travmoff' => 10,
|
|
'attack' => 10,
|
|
'bloodattack' => 25,
|
|
'death' => 100,
|
|
'comment' => 5,
|
|
'openbattle' => 100,
|
|
'reamdeath' => 50,
|
|
'clone' => 25,
|
|
'unclone' => 25,
|
|
];
|
|
|
|
$check_bonuses = Db::getInstance()->ofetch('select 1 from users_bonuses where user_id = ?', User::getInstance()->getId());
|
|
|
|
if (!$check_bonuses) {
|
|
exit('Запрещено: Вам нельзя покупать бонусы.');
|
|
}
|
|
|
|
function buy_bonus($name): bool
|
|
{
|
|
global $prices;
|
|
$bank = new Bank(User::getInstance()->getId());
|
|
if ($bank->getMoney() <= PRICES[$name]) {
|
|
return false;
|
|
}
|
|
$query = sprintf('update users_bonuses set %s = %s + 1 where user_id = ?', $name, $name);
|
|
Db::getInstance()->execute($query, User::getInstance()->getId());
|
|
$bank->setMoney($bank->getMoney() - $prices[$name]);
|
|
return true;
|
|
}
|
|
|
|
echo !empty($_POST['type']) && buy_bonus($_POST['type']) ? 'success' : 'error'; |