Изменено поле в БД, вынесены лишние функции их functions в профильные файлы. Оказывается, давно не работал логин и плохо работали сессии. Проверяется. Прочие мелкие баги и чистка самых хвостов.
This commit is contained in:
@@ -1,55 +1,48 @@
|
||||
<?php
|
||||
//Покупка абилок? Тут?!
|
||||
if (empty($_SESSION['uid'])) {
|
||||
header('Location: Index.php');
|
||||
exit;
|
||||
}
|
||||
include('config.php');
|
||||
$is_now = db::c()->query('SELECT `id`, `uid` FROM `abils_user` WHERE `uid` = ?i', $user['id'])->fetch_assoc();
|
||||
|
||||
function add_user_abil($ab, $cost)
|
||||
use Battles\Bank;
|
||||
use Battles\Database\DBPDO;
|
||||
use Battles\User;
|
||||
|
||||
require_once "functions.php";
|
||||
if (User::$current->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 = DBPDO::$db->ofetch('select 1 from users_bonuses where user_id = ?', User::$current->getId());
|
||||
|
||||
if (!$check_bonuses) {
|
||||
exit('Запрещено: Вам нельзя покупать бонусы.');
|
||||
}
|
||||
|
||||
function buy_bonus($name): bool
|
||||
{
|
||||
global $user, $banks;
|
||||
if (isset($ab) && $banks['ekr'] >= $cost) {
|
||||
$isset = mysql_fetch_array(mysql_query('SELECT `id`, `' . $ab . '` FROM `abils_user` WHERE `uid` = "' . $user['id'] . '" LIMIT 1'));
|
||||
$isset[$ab] += 1;
|
||||
mysql_query('UPDATE `abils_user` SET `' . $ab . '` = "' . $isset[$ab] . '" WHERE `uid` = "' . $user['id'] . '"');
|
||||
$banks['ekr'] -= $cost;
|
||||
mysql_query('UPDATE `bank` SET `ekr` = "' . $banks['ekr'] . '" WHERE `id` = "' . $user['id'] . '"');
|
||||
return true;
|
||||
global $prices;
|
||||
$bank = new Bank(User::$current->getId());
|
||||
if ($bank->getMoney() <= PRICES[$name]) {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
$query = sprintf('update users_bonuses set %s = %s + 1 where user_id = ?', $name, $name);
|
||||
DBPDO::$db->execute($query, User::$current->getId());
|
||||
$bank->setMoney($bank->getMoney() - $prices[$name]);
|
||||
return true;
|
||||
}
|
||||
|
||||
$cost = [1, 2, 10, 0.50, 0.80, 1, 1, 0.10, 0.20, 4, 0.02, 20, 10, 1, 1];
|
||||
$mag = ['sleep15', 'sleep30', 'closebattle', 'heal20', 'heal35', 'heal50', 'travmoff', 'attack', 'bloodattack', 'death', 'comment', 'openbattle', 'reamdeath', 'clone', 'unclone'];
|
||||
|
||||
if (isset($_POST['type'], $_POST['user'])) {
|
||||
if (isset($user['id'])) {
|
||||
$price = $cost[$_POST['type'] - 1];
|
||||
$abil = $mag[$_POST['type'] - 1];
|
||||
if (isset($banks['id'])) {
|
||||
if ($banks['ekr'] >= $price) {
|
||||
if (isset($is_now['id'])) {
|
||||
if ($user['battle'] == 0) {
|
||||
if (add_user_abil($abil, $price)) {
|
||||
echo 'success';
|
||||
} else {
|
||||
echo 'Error';
|
||||
}
|
||||
} else {
|
||||
echo 'Не в бою ...';
|
||||
}
|
||||
} else {
|
||||
echo 1;
|
||||
}
|
||||
} else {
|
||||
echo 'Не хватает средств';
|
||||
}
|
||||
} else {
|
||||
echo '<small>Выберите счёт в банке</small>';
|
||||
}
|
||||
} else {
|
||||
echo "Вы не авторизированы";
|
||||
}
|
||||
}
|
||||
echo !empty($_POST['type']) && buy_bonus($_POST['type']) ? 'success' : 'error';
|
||||
Reference in New Issue
Block a user