Будь проклят тот день, когда я решил ввести неймспейсы...
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
* Date: 03.07.2020
|
||||
* Time: 07:24
|
||||
*/
|
||||
namespace Battles;
|
||||
|
||||
class Bank
|
||||
{
|
||||
@@ -25,8 +26,8 @@ class Bank
|
||||
|
||||
public function __construct($row)
|
||||
{
|
||||
$bank_row = db::c()->query('SELECT user_id, money FROM bank WHERE user_id = ?i', $row)->fetch_assoc();
|
||||
$this->user = db::c()->query('SELECT money FROM users WHERE id = ?i', $row)->fetch_object();
|
||||
$bank_row = \db::c()->query('SELECT user_id, money FROM bank WHERE user_id = ?i', $row)->fetch_assoc();
|
||||
$this->user = \db::c()->query('SELECT money FROM users WHERE id = ?i', $row)->fetch_object();
|
||||
foreach ($this as $key => $value) {
|
||||
if (isset($bank_row[$key])) {
|
||||
$this->$key = $bank_row[$key];
|
||||
@@ -34,7 +35,7 @@ class Bank
|
||||
}
|
||||
// Если ВДРУГ у человека нет счёта в банке - создаём.
|
||||
if (empty($this->user_id)) {
|
||||
db::c()->query('INSERT INTO bank (user_id) VALUES (?i)', $row);
|
||||
\db::c()->query('INSERT INTO bank (user_id) VALUES (?i)', $row);
|
||||
$this->user_id = $row;
|
||||
}
|
||||
}
|
||||
@@ -48,7 +49,7 @@ class Bank
|
||||
*/
|
||||
private function bankCommission(int $amount): int
|
||||
{
|
||||
$bankCommission = round($amount * Config::$bank_commission);
|
||||
$bankCommission = round($amount * \Config::$bank_commission);
|
||||
if ($bankCommission < 1) {
|
||||
return 1;
|
||||
} else {
|
||||
@@ -82,7 +83,7 @@ class Bank
|
||||
$text .= " Комиссия: " . $this->bankCommission($amount);
|
||||
}
|
||||
|
||||
db::c()->query('INSERT INTO `bank_logs` (sender_id, receiver_id, amount_result, type, text)
|
||||
\db::c()->query('INSERT INTO `bank_logs` (sender_id, receiver_id, amount_result, type, text)
|
||||
VALUES (?i, ?i, ?i, "?s", "?s")', $senderId, $receiverId, $amount, $operationType, $text);
|
||||
}
|
||||
|
||||
@@ -92,21 +93,21 @@ class Bank
|
||||
* @param int $receiver ID получателя.
|
||||
* @param int $amount сумма.
|
||||
*
|
||||
* @return void
|
||||
* @return int
|
||||
* @throws \Krugozor\Database\Mysql\Exception
|
||||
*/
|
||||
public function sendMoney(int $receiver, int $amount): void
|
||||
public function sendMoney(int $receiver, int $amount): int
|
||||
{
|
||||
$receiverWallet = db::c()->query('SELECT money FROM bank WHERE user_id = ?i', $receiver)->fetch_object();
|
||||
$receiverWallet = \db::c()->query('SELECT money FROM bank WHERE user_id = ?i', $receiver)->fetch_object();
|
||||
if ($amount <= 0) {
|
||||
throw new Exception(self::ERROR_WRONG_AMOUNT);
|
||||
throw new \Exceptions\GameException(self::ERROR_WRONG_AMOUNT);
|
||||
}
|
||||
if (!$receiverWallet) {
|
||||
throw new Exception(self::ERROR_NO_BANK_ACCOUNT);
|
||||
throw new \Exceptions\GameException(self::ERROR_NO_BANK_ACCOUNT);
|
||||
}
|
||||
$amountWithComission = $amount + $this->bankCommission($amount);
|
||||
if ($amountWithComission > $this->money) {
|
||||
throw new Exception(self::ERROR_NO_MONEY_IN_BANK_ACCOUNT);
|
||||
throw new \Exceptions\GameException(self::ERROR_NO_MONEY_IN_BANK_ACCOUNT);
|
||||
}
|
||||
// Снимаем сумму с комиссией у отправителя
|
||||
$this->money -= $amountWithComission;
|
||||
@@ -116,6 +117,8 @@ class Bank
|
||||
$receiverWallet->money += $amount;
|
||||
self::setBankMoney($receiverWallet->money, $receiver);
|
||||
$this->bankLogs($receiver, $receiverWallet->money, "receiveMoney");
|
||||
// Возвращаем изменившиеся значения
|
||||
return $this->money;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -123,26 +126,30 @@ class Bank
|
||||
*
|
||||
* @param int $amount сумма.
|
||||
*
|
||||
* @return void
|
||||
* @return array
|
||||
* @throws \Krugozor\Database\Mysql\Exception
|
||||
*/
|
||||
public function depositMoney(int $amount): void
|
||||
public function depositMoney(int $amount): array
|
||||
{
|
||||
if ($amount <= 0) {
|
||||
throw new Exception(self::ERROR_WRONG_AMOUNT);
|
||||
throw new \Exceptions\GameException(self::ERROR_WRONG_AMOUNT);
|
||||
}
|
||||
$wallet = db::c()->query('SELECT money FROM users WHERE id = ?i', $this->user_id)->fetch_object();
|
||||
$wallet = \db::c()->query('SELECT money FROM users WHERE id = ?i', $this->user_id)->fetch_object();
|
||||
if ($wallet->money < $amount) {
|
||||
throw new Exception(self::ERROR_NO_MONEY_IN_WALLET);
|
||||
throw new \Exceptions\GameException(self::ERROR_NO_MONEY_IN_WALLET);
|
||||
}
|
||||
// Забираем деньги из кошелька получателя
|
||||
//todo check it!
|
||||
$this->user->money -= $amount;
|
||||
self::setWalletMoney($this->user->money, $this->user_id);
|
||||
// Отдаём сумму на счёт получателю
|
||||
$this->money += $amount;
|
||||
self::setBankMoney($this->money, $this->user_id);
|
||||
$this->bankLogs(0, $this->money, "depositMoney");
|
||||
// Возвращаем изменившиеся значения
|
||||
return [
|
||||
'walletMoney' => $this->user->money,
|
||||
'bankMoney' => $this->money
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -150,26 +157,30 @@ class Bank
|
||||
*
|
||||
* @param int $amount сумма.
|
||||
*
|
||||
* @return void
|
||||
* @return array
|
||||
* @throws \Krugozor\Database\Mysql\Exception
|
||||
*/
|
||||
public function withdrawMoney(int $amount): void
|
||||
public function withdrawMoney(int $amount):array
|
||||
{
|
||||
if ($amount <= 0) {
|
||||
throw new Exception(self::ERROR_WRONG_AMOUNT);
|
||||
throw new \Exceptions\GameException(self::ERROR_WRONG_AMOUNT);
|
||||
}
|
||||
$amountWithComission = $amount + $this->bankCommission($amount);
|
||||
if ($this->money < $amountWithComission) {
|
||||
throw new Exception(self::ERROR_NO_MONEY_IN_BANK_ACCOUNT);
|
||||
throw new \Exceptions\GameException(self::ERROR_NO_MONEY_IN_BANK_ACCOUNT);
|
||||
}
|
||||
// Снимаем сумму с комиссией у отправителя
|
||||
$this->money -= $amountWithComission;
|
||||
self::setBankMoney($this->money, $this->user_id);
|
||||
$this->bankLogs(0, $this->money, "withdrawMoney");
|
||||
// Отдаём сумму в кошелёк получателя
|
||||
//todo check it!
|
||||
$this->user->money += $amount;
|
||||
self::setWalletMoney($this->user->money, $this->user_id);
|
||||
// Возвращаем изменившиеся значения
|
||||
return [
|
||||
'walletMoney' => $this->user->money,
|
||||
'bankMoney' => $this->money
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -184,10 +195,15 @@ class Bank
|
||||
*/
|
||||
public static function setBankMoney(int $amount, int $user_id, string $operationType = ''): void
|
||||
{
|
||||
db::c()->query('UPDATE bank SET money = ?i WHERE user_id = ?i', $amount, $user_id);
|
||||
if ($operationType) {
|
||||
(new Bank($user_id))->bankLogs(0, $amount, $operationType);
|
||||
try {
|
||||
\db::c()->query('UPDATE bank SET money = ?i WHERE user_id = ?i', $amount, $user_id);
|
||||
if ($operationType) {
|
||||
(new Bank($user_id))->bankLogs(0, $amount, $operationType);
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
echo "Не отработал запрос в БД в файле {$e->getFile()}({$e->getLine()})";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -201,7 +217,12 @@ class Bank
|
||||
*/
|
||||
public static function setWalletMoney(int $amount, int $user_id): void
|
||||
{
|
||||
db::c()->query('UPDATE users SET money = ?i WHERE `id` = ?i', $amount, $user_id);
|
||||
try {
|
||||
\db::c()->query('UPDATE users SET money = ?i WHERE `id` = ?i', $amount, $user_id);
|
||||
} catch (\Throwable $e) {
|
||||
echo "Не отработал запрос в БД в файле {$e->getFile()}({$e->getLine()})";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function getMoney()
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
# Date: 26.10.2020 (17:56)
|
||||
namespace Battles;
|
||||
// todo: #10
|
||||
class City
|
||||
{
|
||||
@@ -4,7 +4,7 @@
|
||||
* Date: 06.07.2020
|
||||
* Time: 22:41
|
||||
*/
|
||||
|
||||
namespace Battles;
|
||||
class DressedItems
|
||||
{
|
||||
private $DB;
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Battles;
|
||||
class InventoryItem extends Item
|
||||
{
|
||||
private $present;
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Battles;
|
||||
abstract class Item
|
||||
{
|
||||
protected $item_id;
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
# Date: 16.09.2020 (08:23)
|
||||
// Магия лечения травм
|
||||
namespace Battles\Magic;
|
||||
use Battles\UserEffects;
|
||||
use Battles\User;
|
||||
|
||||
class CureInjury extends magic
|
||||
{
|
||||
private $target;
|
||||
use UserEffects;
|
||||
|
||||
/**
|
||||
* Магия лечения травм. Если у персонажа несколько травм, лечится самая тяжёлая.
|
||||
* @param $target - кого лечим.
|
||||
* @param $injuryType - тип травмы, которую лечим. 11 лёгкая, 12 средняя, 13 тяжёлая, 14 неизлечимая.
|
||||
* @throws \Krugozor\Database\Mysql\Exception
|
||||
*/
|
||||
public function __construct($target, $injuryType)
|
||||
{
|
||||
$this->target = $target;
|
||||
if ($target && $this->isUsable()) {
|
||||
$injury = \db::c()->query('SELECT effect_id, type, name FROM users_effects WHERE type IN (11,12,13,14) AND owner_id = ?i ORDER BY type DESC LIMIT 1', $target)->fetch_object();
|
||||
$targetName = $this->target->login;
|
||||
if (in_array($injury->effect_id, [11, 12, 13, 14]) && $injuryType >= $injury->type) {
|
||||
\db::c()->query('DELETE FROM users_effects WHERE effect_id = ?i', $injury->effect_id);
|
||||
if (empty($injury->name) || $injury->name == 'Неизвестный эффект') {
|
||||
$injuryName = self::$effectName[$injury->type];
|
||||
} else {
|
||||
$injuryName = $injury->name;
|
||||
}
|
||||
return "Вы вылечили повреждение ${injuryName} персонажу ${targetName}.";
|
||||
} elseif ($injury->effect_id && $injuryType == 15) {
|
||||
\db::c()->query('DELETE FROM users_effects WHERE type IN (11,12,13,14) AND owner_id = ?i', $target);
|
||||
return "Вы вылечили все повреждения персонажу ${targetName}.";
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return $this->status;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверки на успех.
|
||||
* @return bool
|
||||
*/
|
||||
private function isUsable()
|
||||
{
|
||||
$caster = new User($_SESSION['uid']);
|
||||
if ($this->target == $_SESSION['uid']) {
|
||||
$this->target = $caster;
|
||||
} else {
|
||||
$this->target = new User($this->target);
|
||||
}
|
||||
return ($this->isVisible($caster, $this->target) && $this->isNotDead($caster) && $this->enoughMana($caster) && $this->isNotInBattle($caster));
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
# Date: 16.09.2020 (08:45)
|
||||
|
||||
namespace Battles\Magic;
|
||||
class Magic
|
||||
{
|
||||
protected $status;
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace magic\attack;
|
||||
namespace Battles\Magic;
|
||||
|
||||
use db;
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* Author: lopiu
|
||||
* Date: 05.07.2020
|
||||
* Time: 23:32
|
||||
*/
|
||||
namespace Battles\Models;
|
||||
class EffectsModel
|
||||
{
|
||||
protected $DB;
|
||||
const EFFECT_HIDEUSERINFO = 5; // Обезлик
|
||||
public function __construct(int $user_id) {
|
||||
try {
|
||||
$this->DB = \db::c()->query('SELECT * FROM users_effects WHERE owner_id = ?i', $user_id);
|
||||
} catch (\Throwable $e) {echo '<div class="debug">class EffectsModel: Не могу подключиться к таблице effects!</div>';}
|
||||
}
|
||||
|
||||
private function getEffects($user_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверка обезличен ли персонаж.
|
||||
* @return int date() до конца эффекта или 0.
|
||||
*/
|
||||
public function getHideUserInfoStatus()
|
||||
{
|
||||
if ($this->DB) {
|
||||
while ($row = $this->DB->fetch_object()) {
|
||||
if ($row->type == self::EFFECT_HIDEUSERINFO) {
|
||||
return $row->time;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
/**
|
||||
* Author: lopiu
|
||||
* Date: 04.07.2020
|
||||
* Time: 13:17
|
||||
*/
|
||||
namespace Battles\Models;
|
||||
use Exceptions\GameException;
|
||||
|
||||
class PresentsModel
|
||||
{
|
||||
protected $DB;
|
||||
|
||||
public function __construct(int $user_id)
|
||||
{
|
||||
if (!$this->DB) {
|
||||
$this->DB = \db::c()->query('SELECT sender_id, image FROM `users_presents` WHERE owner_id = ?i', $user_id);
|
||||
if ($this->DB->getNumRows() == 0) {
|
||||
throw new GameException("<div class='debug'>class PresentsModel: Не прогрузилась база!</div>");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllPresents()
|
||||
{
|
||||
return $this->DB;
|
||||
}
|
||||
|
||||
public function getPresentsSum()
|
||||
{
|
||||
return $this->DB->getNumRows();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
/**
|
||||
* Author: lopiu
|
||||
* Date: 05.07.2020
|
||||
* Time: 22:38
|
||||
*/
|
||||
namespace Battles\Models;
|
||||
class UserLogModel
|
||||
{
|
||||
protected $DB;
|
||||
|
||||
public function __construct(int $user_id)
|
||||
{
|
||||
$this->DB = \db::c()->query('SELECT * FROM users_logs WHERE user_id = ?i ORDER BY `id` ASC', $user_id);
|
||||
|
||||
}
|
||||
|
||||
public function getUserLog()
|
||||
{
|
||||
return $this->DB;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Battles;
|
||||
/**
|
||||
* Разные способы отображения строки с логином персонажа.
|
||||
*/
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
namespace Battles;
|
||||
/*
|
||||
* Список наименований игровых комнат.
|
||||
*/
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Battles;
|
||||
class ShopItem extends Item
|
||||
{
|
||||
public function printInfo()
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
# Date: 30.09.2020 (09:42)
|
||||
|
||||
namespace Battles;
|
||||
class Template
|
||||
{
|
||||
/**
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
# Date: 26.10.2020 (16:08)
|
||||
|
||||
namespace Battles;
|
||||
class Travel
|
||||
{
|
||||
/**
|
||||
@@ -48,8 +48,8 @@ class Travel
|
||||
*/
|
||||
public static function toRoom(int $roomId, int $roomIdCurrent): void
|
||||
{
|
||||
$itemsWeight = db::c()->query('SELECT SUM(weight) AS all_weight FROM `inventory` WHERE owner_id = ?i AND on_sale = 0', $_SESSION['uid'])->fetch_assoc();
|
||||
$eff = db::c()->query('SELECT type FROM users_effects WHERE owner_id = ?i AND (`type` = 10 OR `type` = 13 OR `type` = 14)', $_SESSION['uid'])->fetch_assoc();
|
||||
$itemsWeight = \db::c()->query('SELECT SUM(weight) AS all_weight FROM `inventory` WHERE owner_id = ?i AND on_sale = 0', $_SESSION['uid'])->fetch_assoc();
|
||||
$eff = \db::c()->query('SELECT type FROM users_effects WHERE owner_id = ?i AND (`type` = 10 OR `type` = 13 OR `type` = 14)', $_SESSION['uid'])->fetch_assoc();
|
||||
$errors = [];
|
||||
if ($itemsWeight['all_weight'] > get_meshok()) {
|
||||
$errors[0] = 'У вас переполнен рюкзак, вы не можете передвигаться...';
|
||||
@@ -65,7 +65,7 @@ class Travel
|
||||
echo sprintf('<span class="error">%s</span>', $error);
|
||||
}
|
||||
} elseif (in_array($roomId, self::allowedRoomMoves($roomIdCurrent))) {
|
||||
db::c()->query('UPDATE users, online SET users.room = ?i, online.room = ?i WHERE `online`.`user_id` = `users`.`id` AND `online`.`user_id` = ?i', $roomId, $roomId, $_SESSION['uid']);
|
||||
\db::c()->query('UPDATE users, online SET users.room = ?i, online.room = ?i WHERE `online`.`user_id` = `users`.`id` AND `online`.`user_id` = ?i', $roomId, $roomId, $_SESSION['uid']);
|
||||
header('location: ' . self::$roomFileName[$roomId]);
|
||||
exit;
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
<?php
|
||||
namespace Battles;
|
||||
use Exceptions\GameException;
|
||||
|
||||
class User
|
||||
{
|
||||
@@ -51,7 +53,7 @@ class User
|
||||
|
||||
public function __construct($user)
|
||||
{
|
||||
$user_query = db::c()->query('SELECT * FROM users WHERE id = "?s" OR login = "?s"', $user, $user)->fetch_assoc();
|
||||
$user_query = \db::c()->query('SELECT * FROM users WHERE id = "?s" OR login = "?s"', $user, $user)->fetch_assoc();
|
||||
foreach ($this as $key => $value) {
|
||||
if (isset($user_query[$key])) {
|
||||
$this->$key = $user_query[$key];
|
||||
@@ -66,7 +68,7 @@ class User
|
||||
* @param $stat_name - имя стата. Может принимать значения 'strength', 'dexterity', 'intuition', 'endurance', 'intelligence', 'wisdom'.
|
||||
* @param int $isMainWindow - переключатель "главного окна". Если включить, дополнительно будет показывать ссылку на повышение стата на 1, при условии наличия свободных очков статов.
|
||||
* @return string
|
||||
* @throws Exception
|
||||
* @throws GameException
|
||||
*/
|
||||
public function getStat($stat_name, $isMainWindow = 0)
|
||||
{
|
||||
@@ -78,14 +80,14 @@ class User
|
||||
return $this->$stat_name;
|
||||
}
|
||||
} else {
|
||||
throw new Exception(self::ERROR_STAT_UNKNOWN);
|
||||
throw new \Exceptions\GameException(self::ERROR_STAT_UNKNOWN);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Повышает один из выбранных статов на 1, но не выше self::STAT_MAXIMUM_AMOUNT при условии наличия свободных очков статов.
|
||||
* @param $stat_name - имя стата. Может принимать значения 'strength', 'dexterity', 'intuition', 'endurance', 'intelligence', 'wisdom'.
|
||||
* @throws \Krugozor\Database\Mysql\Exception
|
||||
* @throws GameException
|
||||
*/
|
||||
public function addOnePointToStat($stat_name)
|
||||
{
|
||||
@@ -93,12 +95,12 @@ class User
|
||||
if (in_array($stat_name, $allowed)) {
|
||||
if ($this->free_stat_points > 0 && $this->$stat_name <= self::STAT_MAXIMUM_AMOUNT) {
|
||||
$query = 'UPDATE users SET ?f = ?f + 1, free_stat_points = free_stat_points - 1 WHERE id = ?i';
|
||||
db::c()->query($query, $stat_name, $stat_name, $this->id);
|
||||
\db::c()->query($query, $stat_name, $stat_name, $this->id);
|
||||
} else {
|
||||
throw new Exception(self::ERROR_STAT_IS_MAXIMUM);
|
||||
throw new \Exceptions\GameException(self::ERROR_STAT_IS_MAXIMUM);
|
||||
}
|
||||
} else {
|
||||
throw new Exception(self::ERROR_STAT_UNKNOWN);
|
||||
throw new \Exceptions\GameException(self::ERROR_STAT_UNKNOWN);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
# Date: 16.09.2020 (08:28)
|
||||
# Названия эффектов, налагаемых на персонажа.
|
||||
|
||||
namespace Battles;
|
||||
trait UserEffects
|
||||
{
|
||||
public static $effectName = [
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Battles;
|
||||
class UserInfo extends User
|
||||
{
|
||||
use Rooms;
|
||||
@@ -141,7 +141,7 @@ class UserInfo extends User
|
||||
$infoString = '<br><span>ИД Игрока: %s<br> ИД Комнаты: %s<br> Деньги: %s<br> Деньги в банке: %s<br> Опыт: %s<br> Нераспределённые очки: %s<br> Текущая сессия: %s</span>';
|
||||
echo sprintf($infoString, $this->id, $this->room, $this->money, $this->Bank->getMoney(), $this->experience, $this->free_stat_points, $this->session_id);
|
||||
}
|
||||
$this->UserLogs = new UserLogModel($this->id);
|
||||
$this->UserLogs = new \Battles\Models\UserLogModel($this->id);
|
||||
echo '<div class="secret-info-user-log"><b>Личное дело</b><br>';
|
||||
while ($userLogRow = $this->UserLogs->getUserLog()->fetch_object()) {
|
||||
echo sprintf('<code>%s</code><br>', date("d.m.Y H:i ", strtotime($userLogRow->date)) . $userLogRow->text);
|
||||
@@ -153,18 +153,18 @@ class UserInfo extends User
|
||||
|
||||
public function showUserInfo()
|
||||
{
|
||||
$this->effects = new EffectsModel($this->id);
|
||||
$this->effects = new \Battles\Models\EffectsModel($this->id);
|
||||
$this->WatcherStatus();
|
||||
|
||||
if ($this->block && (!$this->watcherIsAdmin || !$this->watcherIsModerator)) {
|
||||
throw new Exception('<span class="error">Персонаж ' . $this->login . ' заблокирован!</span>');
|
||||
throw new \Exceptions\GameException('<span class="error">Персонаж ' . $this->login . ' заблокирован!</span>');
|
||||
} elseif ($this->effects->getHideUserInfoStatus() && (!$this->watcherIsAdmin || !$this->watcherIsModerator)) {
|
||||
if ($this->effects->getHideUserInfoStatus() == -1) {
|
||||
$date = 'навсегда';
|
||||
} else {
|
||||
$date = 'до' . date('d.m.Y', strtotime($this->effects->getHideUserInfoStatus()));
|
||||
}
|
||||
throw new Exception('<span class="error">Персонаж ' . $this->login . ' обезличен ' . $date . '.</span>');
|
||||
throw new \Exceptions\GameException('<span class="error">Персонаж ' . $this->login . ' обезличен ' . $date . '.</span>');
|
||||
} else {
|
||||
$this->Info();
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
/**
|
||||
* @author Vasiliy Makogon, makogon-vs@yandex.ru
|
||||
* @link https://github.com/Vasiliy-Makogon/Database/
|
||||
*/
|
||||
namespace Krugozor\Database\Mysql;
|
||||
|
||||
class Exception extends \Exception
|
||||
{
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,167 @@
|
||||
<?php
|
||||
/**
|
||||
* @author Vasiliy Makogon, makogon-vs@yandex.ru
|
||||
* @link https://github.com/Vasiliy-Makogon/Database/
|
||||
*
|
||||
* Обёртка над объектом mysqli_result.
|
||||
*/
|
||||
namespace Krugozor\Database\Mysql;
|
||||
|
||||
class Statement
|
||||
{
|
||||
/**
|
||||
* Рузультат SQL-операции в виде объекта mysqli_result.
|
||||
*
|
||||
* @var mysqli_result
|
||||
*/
|
||||
private $mysqli_result = null;
|
||||
|
||||
/**
|
||||
* @param mysqli_result
|
||||
*/
|
||||
public function __construct(\mysqli_result $mysqli_result)
|
||||
{
|
||||
$this->mysqli_result = $mysqli_result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Извлекает результирующий ряд в виде ассоциативного массива.
|
||||
*
|
||||
* @see mysqli_fetch_assoc
|
||||
* @param void
|
||||
* @return array
|
||||
*/
|
||||
|
||||
public function fetch_assoc()
|
||||
{
|
||||
return mysqli_fetch_assoc($this->mysqli_result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Извлекает результирующий ряд в виде массива.
|
||||
*
|
||||
* @see mysqli_fetch_row
|
||||
* @param void
|
||||
* @return array
|
||||
*/
|
||||
public function fetch_row()
|
||||
{
|
||||
return mysqli_fetch_row($this->mysqli_result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Извлекает результирующий ряд в виде объекта.
|
||||
*
|
||||
* @see mysqli_fetch_object
|
||||
* @param void
|
||||
* @return stdClass
|
||||
*/
|
||||
public function fetch_object()
|
||||
{
|
||||
return mysqli_fetch_object($this->mysqli_result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает результат в виде массива ассоциативных массивов.
|
||||
*
|
||||
* @param void
|
||||
* @return array
|
||||
*/
|
||||
public function fetch_assoc_array()
|
||||
{
|
||||
$array = array();
|
||||
|
||||
while ($row = mysqli_fetch_assoc($this->mysqli_result)) {
|
||||
$array[] = $row;
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает результат в виде массива массивов.
|
||||
*
|
||||
* @param void
|
||||
* @return array
|
||||
*/
|
||||
public function fetch_row_array()
|
||||
{
|
||||
$array = array();
|
||||
|
||||
while ($row = mysqli_fetch_row($this->mysqli_result)) {
|
||||
$array[] = $row;
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает результат в виде массива объектов.
|
||||
*
|
||||
* @param void
|
||||
* @return array
|
||||
*/
|
||||
public function fetch_object_array()
|
||||
{
|
||||
$array = array();
|
||||
|
||||
while ($row = mysqli_fetch_object($this->mysqli_result)) {
|
||||
$array[] = $row;
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает значение первого поля результирующей таблицы.
|
||||
*
|
||||
* @param void
|
||||
* @return string
|
||||
*/
|
||||
public function getOne()
|
||||
{
|
||||
$row = mysqli_fetch_row($this->mysqli_result);
|
||||
|
||||
return $row[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает количество рядов в результате.
|
||||
* Эта команда верна только для операторов SELECT.
|
||||
*
|
||||
* @see mysqli_num_rows
|
||||
* @param void
|
||||
* @return int
|
||||
*/
|
||||
public function getNumRows()
|
||||
{
|
||||
return mysqli_num_rows($this->mysqli_result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает объект результата mysqli_result.
|
||||
*
|
||||
* @param void
|
||||
* @return mysqli_result
|
||||
*/
|
||||
public function getResult()
|
||||
{
|
||||
return $this->mysqli_result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Освобождает память занятую результатами запроса.
|
||||
*
|
||||
* @param void
|
||||
* @return void
|
||||
*/
|
||||
public function free()
|
||||
{
|
||||
$this->mysqli_result->free();
|
||||
}
|
||||
|
||||
public function __destruct()
|
||||
{
|
||||
$this->free();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,436 @@
|
||||
-- phpMyAdmin SQL Dump
|
||||
-- version 5.0.1
|
||||
-- https://www.phpmyadmin.net/
|
||||
--
|
||||
-- Хост: localhost
|
||||
-- Время создания: Окт 21 2020 г., 17:33
|
||||
-- Версия сервера: 10.3.17-MariaDB
|
||||
-- Версия PHP: 7.2.24
|
||||
|
||||
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||
SET AUTOCOMMIT = 0;
|
||||
START TRANSACTION;
|
||||
SET time_zone = "+00:00";
|
||||
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
|
||||
--
|
||||
-- База данных: `battles`
|
||||
--
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Структура таблицы `bank`
|
||||
--
|
||||
|
||||
CREATE TABLE `bank` (
|
||||
`user_id` smallint(6) NOT NULL,
|
||||
`money` smallint(5) UNSIGNED DEFAULT 0
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
--
|
||||
-- Дамп данных таблицы `bank`
|
||||
--
|
||||
|
||||
INSERT INTO `bank` (`user_id`, `money`) VALUES
|
||||
(2, 0);
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Структура таблицы `bank_logs`
|
||||
--
|
||||
|
||||
CREATE TABLE `bank_logs` (
|
||||
`id` int(11) NOT NULL,
|
||||
`sender_id` smallint(6) DEFAULT NULL,
|
||||
`receiver_id` smallint(6) DEFAULT NULL,
|
||||
`amount` int(11) NOT NULL,
|
||||
`type` varchar(16) NOT NULL,
|
||||
`text` text NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Структура таблицы `chat`
|
||||
--
|
||||
|
||||
CREATE TABLE `chat` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`user_id` smallint(6) NOT NULL,
|
||||
`receiver_id` smallint(6) DEFAULT NULL,
|
||||
`msg` text NOT NULL,
|
||||
`msgdate` timestamp NULL DEFAULT current_timestamp(),
|
||||
`type` varchar(10) NOT NULL DEFAULT 'msg'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Chat messages';
|
||||
|
||||
--
|
||||
-- Дамп данных таблицы `chat`
|
||||
--
|
||||
|
||||
INSERT INTO `chat` (`id`, `user_id`, `receiver_id`, `msg`, `msgdate`, `type`) VALUES
|
||||
(1, 2, NULL, 'dfdf', '2020-06-23 13:41:58', 'msg'),
|
||||
(2, 2, NULL, 'А вот и чёртов чат. :)', '2020-06-23 13:42:15', 'msg'),
|
||||
(3, 2, NULL, 'Почему этот кусок дебила работает в строчку?', '2020-06-23 13:42:38', 'msg'),
|
||||
(4, 2, NULL, 'Переполнение!', '2020-07-21 07:15:57', 'msg'),
|
||||
(5, 2, NULL, 'Надо переполнение!', '2020-07-21 07:16:03', 'msg'),
|
||||
(6, 2, NULL, 'Точно надо переполнение!', '2020-07-21 07:16:10', 'msg'),
|
||||
(7, 2, NULL, 'Ещё раз, переполенение.', '2020-07-21 07:16:19', 'msg'),
|
||||
(8, 2, NULL, 'Текст-текстик!', '2020-07-21 07:16:25', 'msg'),
|
||||
(9, 2, NULL, 'Ещё немного!', '2020-07-21 07:16:29', 'msg'),
|
||||
(10, 2, NULL, 'Бдыщ!', '2020-07-21 07:16:35', 'msg'),
|
||||
(11, 2, NULL, 'Серьёзно?', '2020-07-21 07:16:41', 'msg'),
|
||||
(12, 2, NULL, 'Внезапно...', '2020-07-21 07:16:49', 'msg'),
|
||||
(13, 2, NULL, 'Да вы издеваетесь...', '2020-07-21 07:17:00', 'msg'),
|
||||
(14, 2, NULL, 'Скотыняка. :(', '2020-07-21 07:17:15', 'msg');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Структура таблицы `inventory`
|
||||
--
|
||||
|
||||
CREATE TABLE `inventory` (
|
||||
`item_id` int(11) NOT NULL,
|
||||
`owner_id` smallint(6) NOT NULL,
|
||||
`name` varchar(255) NOT NULL DEFAULT 'Неизвестный предмет',
|
||||
`item_type` smallint(6) NOT NULL DEFAULT 0,
|
||||
`durability` smallint(6) NOT NULL,
|
||||
`price` int(11) NOT NULL DEFAULT 0,
|
||||
`need_strength` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`need_dexterity` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`need_intuition` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`need_endurance` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`need_intelligence` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`need_wisdom` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`add_strength` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`add_dexterity` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`add_intuition` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`add_endurance` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`add_intelligence` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`add_wisdom` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`add_accuracy` smallint(6) DEFAULT 0,
|
||||
`add_evasion` smallint(6) DEFAULT 0,
|
||||
`add_criticals` smallint(6) DEFAULT 0,
|
||||
`add_min_physical_damage` smallint(5) UNSIGNED DEFAULT 0,
|
||||
`add_max_physical_damage` smallint(5) UNSIGNED DEFAULT 0,
|
||||
`dressed_slot` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`image` varchar(64) NOT NULL DEFAULT 'noitem.png',
|
||||
`weight` smallint(5) UNSIGNED DEFAULT 1,
|
||||
`on_sale` tinyint(4) DEFAULT 0
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Инвентарь персонажей';
|
||||
|
||||
--
|
||||
-- Дамп данных таблицы `inventory`
|
||||
--
|
||||
|
||||
INSERT INTO `inventory` (`item_id`, `owner_id`, `name`, `item_type`, `durability`, `price`, `need_strength`, `need_dexterity`, `need_intuition`, `need_endurance`, `need_intelligence`, `need_wisdom`, `add_strength`, `add_dexterity`, `add_intuition`, `add_endurance`, `add_intelligence`, `add_wisdom`, `add_accuracy`, `add_evasion`, `add_criticals`, `add_min_physical_damage`, `add_max_physical_damage`, `dressed_slot`, `image`, `weight`, `on_sale`) VALUES
|
||||
(1, 2, 'Кольчужка', 2, 10, 55, 10, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'armor.png', 6, 0),
|
||||
(2, 2, 'Нож', 6, 5, 12, 4, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 'katana.png', 1, 0),
|
||||
(3, 2, 'Ещё кольчужка', 2, 10, 50, 8, 2, 2, 8, 0, 0, -1, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'armor.png', 5, 0),
|
||||
(4, 2, 'Колечко', 9, 4, 150, 15, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 20, 10, 0, 0, 0, 'ring1.png', 1, 0),
|
||||
(5, 2, 'Перстенёк', 9, 6, 180, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 'ring2.png', 1, 0),
|
||||
(6, 2, 'Перстенёк', 9, 6, 180, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 'ring2.png', 1, 0),
|
||||
(7, 2, 'Кольцо общей слабости', 9, 100, 5311, 0, 0, 0, 0, 0, 0, -7, -7, -7, -7, -5, -5, -20, -20, -20, 0, 0, 0, 'ring1.png', 1, 0),
|
||||
(8, 2, 'Кольцо общей слабости', 9, 100, 5311, 0, 0, 0, 0, 0, 0, -7, -7, -7, -7, -5, -5, -20, -20, -20, 0, 0, 0, 'ring1.png', 1, 0);
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Структура таблицы `online`
|
||||
--
|
||||
|
||||
CREATE TABLE `online` (
|
||||
`user_id` smallint(6) NOT NULL DEFAULT 0,
|
||||
`date` int(12) UNSIGNED DEFAULT 0,
|
||||
`real_time` int(11) NOT NULL,
|
||||
`room` smallint(5) UNSIGNED DEFAULT 0
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
--
|
||||
-- Дамп данных таблицы `online`
|
||||
--
|
||||
|
||||
INSERT INTO `online` (`user_id`, `date`, `real_time`, `room`) VALUES
|
||||
(2, 1601412403, 1601651536, 1);
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Структура таблицы `users`
|
||||
--
|
||||
|
||||
CREATE TABLE `users` (
|
||||
`id` smallint(6) NOT NULL,
|
||||
`login` varchar(64) NOT NULL,
|
||||
`email` varchar(64) DEFAULT 'no_mail_set',
|
||||
`pass` varchar(255) DEFAULT NULL,
|
||||
`realname` varchar(64) DEFAULT NULL,
|
||||
`borndate` varchar(24) DEFAULT '',
|
||||
`info` longtext DEFAULT NULL,
|
||||
`level` tinyint(4) NOT NULL DEFAULT 1,
|
||||
`align` tinyint(4) DEFAULT 0,
|
||||
`clan` varchar(16) DEFAULT '',
|
||||
`money` int(11) DEFAULT 0,
|
||||
`strength` tinyint(3) UNSIGNED NOT NULL DEFAULT 10,
|
||||
`dexterity` tinyint(3) UNSIGNED NOT NULL DEFAULT 10,
|
||||
`intuition` tinyint(3) UNSIGNED NOT NULL DEFAULT 10,
|
||||
`endurance` tinyint(3) UNSIGNED NOT NULL DEFAULT 10,
|
||||
`intelligence` tinyint(3) UNSIGNED NOT NULL DEFAULT 10,
|
||||
`wisdom` tinyint(3) UNSIGNED NOT NULL DEFAULT 10,
|
||||
`free_stat_points` tinyint(3) UNSIGNED DEFAULT 0,
|
||||
`health` int(11) NOT NULL,
|
||||
`mana` int(11) NOT NULL,
|
||||
`ip` varchar(16) DEFAULT NULL,
|
||||
`session_id` varchar(128) DEFAULT NULL,
|
||||
`admin` tinyint(4) DEFAULT 0,
|
||||
`enter_game` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`room` smallint(5) UNSIGNED NOT NULL DEFAULT 1,
|
||||
`block` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`shadow` varchar(64) NOT NULL DEFAULT ''
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
--
|
||||
-- Дамп данных таблицы `users`
|
||||
--
|
||||
|
||||
INSERT INTO `users` (`id`, `login`, `email`, `pass`, `realname`, `borndate`, `info`, `level`, `align`, `clan`, `money`, `strength`, `dexterity`, `intuition`, `endurance`, `intelligence`, `wisdom`, `free_stat_points`, `health`, `mana`, `ip`, `session_id`, `admin`, `enter_game`, `room`, `block`, `shadow`) VALUES
|
||||
(2, 'Father', 'father@battles.lan', '$2y$10$avSnIjtR/v1i5hJJ3dXH/e638WDbXFUtDmrSkUuyhmwsgmk7f35hq', 'Отец', '1986-10-20', 'И немного о себе..', 1, 6, '7', 0, 10, 10, 10, 10, 10, 10, 0, 17, 4, '192.168.20.15', 'lnuefs4n3air4jbpd76npq7hsl', 1, 0, 30, 0, 'father.png');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Структура таблицы `users_effects`
|
||||
--
|
||||
|
||||
CREATE TABLE `users_effects` (
|
||||
`effect_id` int(11) NOT NULL,
|
||||
`owner_id` smallint(6) NOT NULL,
|
||||
`type` smallint(6) NOT NULL DEFAULT 0,
|
||||
`name` varchar(64) NOT NULL DEFAULT 'Неизвестный эффект',
|
||||
`remaining_time` int(11) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Структура таблицы `users_logs`
|
||||
--
|
||||
|
||||
CREATE TABLE `users_logs` (
|
||||
`id` int(11) NOT NULL,
|
||||
`user_id` smallint(6) NOT NULL,
|
||||
`author_id` smallint(6) NOT NULL DEFAULT 0,
|
||||
`type` varchar(24) NOT NULL DEFAULT 'system',
|
||||
`date` datetime DEFAULT current_timestamp(),
|
||||
`text` text NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
--
|
||||
-- Дамп данных таблицы `users_logs`
|
||||
--
|
||||
|
||||
INSERT INTO `users_logs` (`id`, `user_id`, `author_id`, `type`, `date`, `text`) VALUES
|
||||
(1, 2, 0, 'system', '2020-07-05 23:03:52', 'Проверочная запись.');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Структура таблицы `users_presents`
|
||||
--
|
||||
|
||||
CREATE TABLE `users_presents` (
|
||||
`id` int(11) NOT NULL,
|
||||
`owner_id` smallint(6) NOT NULL,
|
||||
`sender_id` smallint(6) NOT NULL,
|
||||
`image` varchar(64) NOT NULL DEFAULT 'null.png'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Структура таблицы `users_recovery`
|
||||
--
|
||||
|
||||
CREATE TABLE `users_recovery` (
|
||||
`login` varchar(64) NOT NULL,
|
||||
`hash` varchar(64) NOT NULL,
|
||||
`ip` varchar(16) NOT NULL,
|
||||
`date` varchar(64) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
--
|
||||
-- Индексы сохранённых таблиц
|
||||
--
|
||||
|
||||
--
|
||||
-- Индексы таблицы `bank`
|
||||
--
|
||||
ALTER TABLE `bank`
|
||||
ADD UNIQUE KEY `bank_id_uindex` (`user_id`);
|
||||
|
||||
--
|
||||
-- Индексы таблицы `bank_logs`
|
||||
--
|
||||
ALTER TABLE `bank_logs`
|
||||
ADD PRIMARY KEY (`id`);
|
||||
|
||||
--
|
||||
-- Индексы таблицы `chat`
|
||||
--
|
||||
ALTER TABLE `chat`
|
||||
ADD PRIMARY KEY (`id`),
|
||||
ADD KEY `chat_users_id_fk` (`user_id`);
|
||||
|
||||
--
|
||||
-- Индексы таблицы `inventory`
|
||||
--
|
||||
ALTER TABLE `inventory`
|
||||
ADD PRIMARY KEY (`item_id`),
|
||||
ADD KEY `inventory_users_id_fk` (`owner_id`);
|
||||
|
||||
--
|
||||
-- Индексы таблицы `online`
|
||||
--
|
||||
ALTER TABLE `online`
|
||||
ADD UNIQUE KEY `online_user_id_uindex` (`user_id`);
|
||||
|
||||
--
|
||||
-- Индексы таблицы `users`
|
||||
--
|
||||
ALTER TABLE `users`
|
||||
ADD PRIMARY KEY (`id`),
|
||||
ADD UNIQUE KEY `users_login_uindex` (`login`),
|
||||
ADD UNIQUE KEY `users_email_uindex` (`email`);
|
||||
|
||||
--
|
||||
-- Индексы таблицы `users_effects`
|
||||
--
|
||||
ALTER TABLE `users_effects`
|
||||
ADD PRIMARY KEY (`effect_id`),
|
||||
ADD KEY `users_effects_users_id_fk` (`owner_id`);
|
||||
|
||||
--
|
||||
-- Индексы таблицы `users_logs`
|
||||
--
|
||||
ALTER TABLE `users_logs`
|
||||
ADD PRIMARY KEY (`id`),
|
||||
ADD KEY `users_logs_users_id_fk` (`user_id`);
|
||||
|
||||
--
|
||||
-- Индексы таблицы `users_presents`
|
||||
--
|
||||
ALTER TABLE `users_presents`
|
||||
ADD PRIMARY KEY (`id`),
|
||||
ADD KEY `users_presents_users_id_fk` (`owner_id`);
|
||||
|
||||
--
|
||||
-- Индексы таблицы `users_recovery`
|
||||
--
|
||||
ALTER TABLE `users_recovery`
|
||||
ADD PRIMARY KEY (`login`),
|
||||
ADD UNIQUE KEY `users_recovery_login_uindex` (`login`),
|
||||
ADD UNIQUE KEY `users_recovery_hash_uindex` (`hash`);
|
||||
|
||||
--
|
||||
-- AUTO_INCREMENT для сохранённых таблиц
|
||||
--
|
||||
|
||||
--
|
||||
-- AUTO_INCREMENT для таблицы `bank_logs`
|
||||
--
|
||||
ALTER TABLE `bank_logs`
|
||||
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
|
||||
|
||||
--
|
||||
-- AUTO_INCREMENT для таблицы `chat`
|
||||
--
|
||||
ALTER TABLE `chat`
|
||||
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15;
|
||||
|
||||
--
|
||||
-- AUTO_INCREMENT для таблицы `inventory`
|
||||
--
|
||||
ALTER TABLE `inventory`
|
||||
MODIFY `item_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;
|
||||
|
||||
--
|
||||
-- AUTO_INCREMENT для таблицы `users`
|
||||
--
|
||||
ALTER TABLE `users`
|
||||
MODIFY `id` smallint(6) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
|
||||
|
||||
--
|
||||
-- AUTO_INCREMENT для таблицы `users_effects`
|
||||
--
|
||||
ALTER TABLE `users_effects`
|
||||
MODIFY `effect_id` int(11) NOT NULL AUTO_INCREMENT;
|
||||
|
||||
--
|
||||
-- AUTO_INCREMENT для таблицы `users_logs`
|
||||
--
|
||||
ALTER TABLE `users_logs`
|
||||
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
|
||||
|
||||
--
|
||||
-- AUTO_INCREMENT для таблицы `users_presents`
|
||||
--
|
||||
ALTER TABLE `users_presents`
|
||||
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
|
||||
|
||||
--
|
||||
-- Ограничения внешнего ключа сохраненных таблиц
|
||||
--
|
||||
|
||||
--
|
||||
-- Ограничения внешнего ключа таблицы `bank`
|
||||
--
|
||||
ALTER TABLE `bank`
|
||||
ADD CONSTRAINT `bank_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
--
|
||||
-- Ограничения внешнего ключа таблицы `chat`
|
||||
--
|
||||
ALTER TABLE `chat`
|
||||
ADD CONSTRAINT `chat_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
--
|
||||
-- Ограничения внешнего ключа таблицы `inventory`
|
||||
--
|
||||
ALTER TABLE `inventory`
|
||||
ADD CONSTRAINT `inventory_users_id_fk` FOREIGN KEY (`owner_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
--
|
||||
-- Ограничения внешнего ключа таблицы `online`
|
||||
--
|
||||
ALTER TABLE `online`
|
||||
ADD CONSTRAINT `online_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
--
|
||||
-- Ограничения внешнего ключа таблицы `users_effects`
|
||||
--
|
||||
ALTER TABLE `users_effects`
|
||||
ADD CONSTRAINT `users_effects_users_id_fk` FOREIGN KEY (`owner_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
--
|
||||
-- Ограничения внешнего ключа таблицы `users_logs`
|
||||
--
|
||||
ALTER TABLE `users_logs`
|
||||
ADD CONSTRAINT `users_logs_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
--
|
||||
-- Ограничения внешнего ключа таблицы `users_presents`
|
||||
--
|
||||
ALTER TABLE `users_presents`
|
||||
ADD CONSTRAINT `users_presents_users_id_fk` FOREIGN KEY (`owner_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
COMMIT;
|
||||
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: lopiu
|
||||
* Date: 28.01.2018
|
||||
* Time: 16:35
|
||||
*/
|
||||
|
||||
class db
|
||||
{
|
||||
private static $_instance = null;
|
||||
|
||||
private function __clone() {}
|
||||
private function __construct() {}
|
||||
/**
|
||||
* @return \Krugozor\Database\Mysql\Mysql
|
||||
*/
|
||||
|
||||
public static function c()
|
||||
{
|
||||
if (!self::$_instance)
|
||||
{
|
||||
self::$_instance = Krugozor\Database\Mysql\Mysql::create("192.168.20.5", "battles", "bottle-neck-horse", 32101)
|
||||
// Выбор базы данных
|
||||
->setDatabaseName("battles")
|
||||
// Выбор кодировки
|
||||
->setCharset("utf8");
|
||||
}
|
||||
return self::$_instance;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user