diff --git a/classes/User.php b/classes/User.php
index c5a3ff8..04c8e88 100644
--- a/classes/User.php
+++ b/classes/User.php
@@ -67,104 +67,6 @@ class User
$this->maxMana = round(($this->wisdom * 3) + ($this->wisdom / 2) * ($this->level - 1) + ($this->wisdom / 5) * (($this->level - 1) * ($this->level - 2) / 2));
}
- /**
- * Отображает куклу персонажа (образ и слоты).
- *
- * @param int $isBattle - установить 1, если куклу нужно отобразить в поединке (показывает параметры при наведении
- * на образ).
- * @param int $isMain - установить 1, если куклу надо показать на странице игрока (по клику на предмет снимает
- * его).
- *
- * @throws \Krugozor\Database\Mysql\Exception
- */
- private function UserInfoDoll($isBattle = 0, $isMain = 0)
- {
- //https://jsfiddle.net/ngx0yvhc
- //TODO переверстать grid, чтобы он касался только куклы.
- $di = new DressedItems($this->id);
- $dressedItems = $di->getItemsInSlots();
- for ($i = 1; $i <= 12; $i++) {
- echo sprintf('
', $i);
- if (!empty($dressedItems[$i])) {
- if (!$isBattle && $isMain) {
- $itemString = '
';
- echo sprintf($itemString, $i, $dressedItems[$i]['image'], $dressedItems[$i]['name'], $dressedItems[$i]['name']);
- } else {
- $itemString = '
%s';
- echo sprintf($itemString, $dressedItems[$i]['image'], $dressedItems[$i]['name'], $dressedItems[$i]['name']);
- }
- } else {
- echo sprintf('
', $i, $i);
- }
- echo sprintf('
', $i);
- }
- echo '';
- if ($isBattle) {
- $sh = '
%sУровень: %s
Сила: %s
Ловкость: %s
Интуиция: %s
Выносливость: %s
Интеллект: %s
Мудрость: %s';
- echo sprintf($sh, $this->shadow, $this->login, $this->login, $this->level, $this->strength, $this->dexterity, $this->intuition, $this->endurance, $this->intelligence, $this->wisdom);
- unset($sh);
- } else {
- echo '
';
- }
- echo '
';
- }
-
- private function UserInfoStats($isMainWindow = 0)
- {
- $captions = 'Уровень:
Сила:
Ловкость:
Интуиция:
Выносливость:
Интеллект:
Мудрость:
Местонахождение:';
- $variables =
- $this->level . '
' .
- $this->getStat('strength') . '
' .
- $this->getStat('dexterity') . '
' .
- $this->getStat('intuition') . '
' .
- $this->getStat('endurance') . '
' .
- $this->getStat('intelligence') . '
' .
- $this->getStat('wisdom') . '
' .
- $this->getRoomName($this->room);
- if ($isMainWindow) {
- $this->Bank = new Bank($this->id);
- $captions = 'Уровень:
Здоровье:
Сила:
Ловкость:
Интуиция:
Выносливость:
Интеллект:
Мудрость:
Опыт:
Очки характеристик:
Деньги:
Деньги в банке:';
- $variables =
- $this->level . '
' .
- $this->health . '
' .
- $this->getStat('strength', 1) . '
' .
- $this->getStat('dexterity', 1) . '
' .
- $this->getStat('intuition', 1) . '
' .
- $this->getStat('endurance', 1) . '
' .
- $this->getStat('intelligence', 1) . '
' .
- $this->getStat('wisdom', 1) . '
' .
- $this->experience . '
' .
- $this->free_stat_points . '
' .
- $this->money . '
' .
- $this->Bank->money;
- }
- if ($this->align) {
- $nameString = sprintf('', $this->align);
- }
- if ($this->block) {
- $nameString .= '' . $this->login . '';
- } else {
- $nameString .= ' ' . $this->login . ' ';
- }
- if ($this->clan) {
- $nameString .= sprintf('', $this->clan);
- }
- echo '';
- echo '
';
- echo '' . $nameString . '';
- echo '
';
- echo '
';
- echo '
';
- echo $captions;
- echo '
';
- echo '
';
- echo $variables;
- echo '
';
- echo '
';
- echo '
TODO: Сделать рассчёт модификаторов. Вывести полоску здоровья когда будет от чего отталкиваться.
';
- echo '
';
- }
-
/**
* Отдаёт информацию о базовом(!) стате.
* @param $stat_name - имя стата. Может принимать значения 'strength', 'dexterity', 'intuition', 'endurance', 'intelligence', 'wisdom'.
@@ -207,51 +109,7 @@ class User
}
- private function UserInfo()
- {
- echo '';
- $this->UserInfoDoll();
- $this->UserInfoStats();
- echo '
';
- if ($this->married) {
- echo sprintf('
', $this->married, $this->married, $this->married);
- }
- echo '
';
- echo '
';
- echo sprintf('
', $this->showStarSign());
- echo '
';
- echo '
';
- echo '
';
- echo '';
- echo '
Об игроке
';
- if ($this->realname) {
- echo sprintf('Имя: %s
', $this->realname);
- }
- if ($this->info) {
- echo nl2br($this->info);
- }
- echo '';
-
- if ($this->watcherIsAdmin || $this->watcherIsModerator) {
- echo '';
- $infoString = 'E-Mail: %s
ДР Игрока: %s
IP Регистрации: %s';
- echo sprintf($infoString, $this->email, date('d.m.Y', strtotime($this->borndate)), $this->ip);
- if ($this->watcherIsAdmin) {
- $this->Bank = new Bank($this->id);
- $infoString = '
ИД Игрока: %s
ИД Комнаты: %s
Деньги: %s
Деньги в банке: %s
Опыт: %s
Нераспределённые очки: %s
Текущая сессия: %s';
- echo sprintf($infoString, $this->id, $this->room, $this->money, $this->Bank->money, $this->experience, $this->free_stat_points, $this->session_id);
- }
- $this->UserLogs = new UserLogModel($this->id);
- echo '
Личное дело
';
- while ($userLogRow = $this->UserLogs->getUserLog()->fetch_object()) {
- echo sprintf('%s
', date("d.m.Y H:i ", strtotime($userLogRow->date)) . $userLogRow->text);
- }
- echo '
';
- echo '
';
- }
- }
-
- private function WatcherStatus()
+ protected function WatcherStatus()
{
$query = db::c()->query('SELECT `align`,`admin` FROM `users` WHERE `id` = ?i', $this->watcher_id)->fetch_assoc();
if ($query['admin']) {
@@ -262,41 +120,7 @@ class User
}
}
- public function showUserInfo()
- {
- $this->effects = new EffectsModel($this->id);
- $this->WatcherStatus();
-
- if ($this->block && (!$this->watcherIsAdmin || !$this->watcherIsModerator)) {
- throw new Exception('Персонаж ' . $this->login . ' заблокирован!');
- } 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('Персонаж ' . $this->login . ' обезличен ' . $date . '.');
- } else {
- $this->UserInfo();
- }
- }
-
- public function showUserDoll($isBattle = 0, $isMain = 0)
- {
- echo '';
- $this->UserInfoDoll($isBattle, $isMain);
- echo '
';
- }
-
- public function showUserInfoMain()
- {
- echo '';
- $this->UserInfoDoll();
- $this->userInfoStats(1);
- echo '
';
- }
-
- public function showStarSign()
+ protected function showStarSign()
{
/*
* 1 aries
@@ -347,9 +171,4 @@ class User
{
return $this->mana . '/' . $this->maxMana;
}
-
- public function setRoom()
- {
-
- }
}
\ No newline at end of file
diff --git a/classes/UserInfo.php b/classes/UserInfo.php
new file mode 100644
index 0000000..9c9bf4a
--- /dev/null
+++ b/classes/UserInfo.php
@@ -0,0 +1,187 @@
+id);
+ $dressedItems = $di->getItemsInSlots();
+ for ($i = 1; $i <= 12; $i++) {
+ echo sprintf('', $i);
+ if (!empty($dressedItems[$i])) {
+ if (!$isBattle && $isMain) {
+ $itemString = '
';
+ echo sprintf($itemString, mt_rand(), $i, $dressedItems[$i]['image'], $dressedItems[$i]['name'], $dressedItems[$i]['name']);
+ } else {
+ $itemString = '
%s';
+ echo sprintf($itemString, $dressedItems[$i]['image'], $dressedItems[$i]['name'], $dressedItems[$i]['name']);
+ }
+ } else {
+ echo sprintf('
', $i, $i);
+ }
+ echo sprintf('
', $i);
+ }
+ echo '';
+ if ($isBattle) {
+ $sh = '
%sУровень: %s
Сила: %s
Ловкость: %s
Интуиция: %s
Выносливость: %s
Интеллект: %s
Мудрость: %s';
+ echo sprintf($sh, $this->shadow, $this->login, $this->login, $this->level, $this->strength, $this->dexterity, $this->intuition, $this->endurance, $this->intelligence, $this->wisdom);
+ unset($sh);
+ } else {
+ echo '
';
+ }
+ echo '
';
+ }
+
+ private function UserInfoStats($isMainWindow = 0)
+ {
+ $captions = 'Уровень:
Сила:
Ловкость:
Интуиция:
Выносливость:
Интеллект:
Мудрость:
Местонахождение:';
+ $variables =
+ $this->level . '
' .
+ parent::getStat('strength') . '
' .
+ parent::getStat('dexterity') . '
' .
+ parent::getStat('intuition') . '
' .
+ parent::getStat('endurance') . '
' .
+ parent::getStat('intelligence') . '
' .
+ parent::getStat('wisdom') . '
' .
+ parent::getRoomName($this->room);
+ if ($isMainWindow) {
+ $this->Bank = new Bank($this->id);
+ $captions = 'Уровень:
Здоровье:
Сила:
Ловкость:
Интуиция:
Выносливость:
Интеллект:
Мудрость:
Опыт:
Очки характеристик:
Деньги:
Деньги в банке:';
+ $variables =
+ $this->level . '
' .
+ $this->health . '
' .
+ parent::getStat('strength', 1) . '
' .
+ parent::getStat('dexterity', 1) . '
' .
+ parent::getStat('intuition', 1) . '
' .
+ parent::getStat('endurance', 1) . '
' .
+ parent::getStat('intelligence', 1) . '
' .
+ parent::getStat('wisdom', 1) . '
' .
+ $this->experience . '
' .
+ $this->free_stat_points . '
' .
+ $this->money . '
' .
+ $this->Bank->money;
+ }
+ $nameString = '';
+ if ($this->align) {
+ $nameString = sprintf('', $this->align);
+ }
+ if ($this->block) {
+ $nameString .= '' . $this->login . '';
+ } else {
+ $nameString .= ' ' . $this->login . ' ';
+ }
+ if ($this->clan) {
+ $nameString .= sprintf('', $this->clan);
+ }
+ echo '';
+ echo '
';
+ echo '' . $nameString . '';
+ echo '
';
+ echo '
';
+ echo '
';
+ echo $captions;
+ echo '
';
+ echo '
';
+ echo $variables;
+ echo '
';
+ echo '
';
+ echo '
TODO: Сделать рассчёт модификаторов. Вывести полоску здоровья когда будет от чего отталкиваться.
';
+ echo '
';
+ }
+
+ private function Info()
+ {
+ echo '';
+ $this->UserInfoDoll();
+ $this->UserInfoStats();
+ echo '
';
+ if ($this->married) {
+ echo sprintf('
', $this->married, $this->married, $this->married);
+ }
+ echo '
';
+ echo '
';
+ echo sprintf('
', $this->showStarSign());
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '';
+ echo '
Об игроке
';
+ if ($this->realname) {
+ echo sprintf('Имя: %s
', $this->realname);
+ }
+ if ($this->info) {
+ echo nl2br($this->info);
+ }
+ echo '';
+
+ if ($this->watcherIsAdmin || $this->watcherIsModerator) {
+ echo '';
+ $infoString = 'E-Mail: %s
ДР Игрока: %s
IP Регистрации: %s';
+ echo sprintf($infoString, $this->email, date('d.m.Y', strtotime($this->borndate)), $this->ip);
+ if ($this->watcherIsAdmin) {
+ $this->Bank = new Bank($this->id);
+ $infoString = '
ИД Игрока: %s
ИД Комнаты: %s
Деньги: %s
Деньги в банке: %s
Опыт: %s
Нераспределённые очки: %s
Текущая сессия: %s';
+ echo sprintf($infoString, $this->id, $this->room, $this->money, $this->Bank->money, $this->experience, $this->free_stat_points, $this->session_id);
+ }
+ $this->UserLogs = new UserLogModel($this->id);
+ echo '
Личное дело
';
+ while ($userLogRow = $this->UserLogs->getUserLog()->fetch_object()) {
+ echo sprintf('%s
', date("d.m.Y H:i ", strtotime($userLogRow->date)) . $userLogRow->text);
+ }
+ echo '
';
+ echo '
';
+ }
+ }
+
+ public function showUserInfo()
+ {
+ $this->effects = new EffectsModel($this->id);
+ $this->WatcherStatus();
+
+ if ($this->block && (!$this->watcherIsAdmin || !$this->watcherIsModerator)) {
+ throw new Exception('Персонаж ' . $this->login . ' заблокирован!');
+ } 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('Персонаж ' . $this->login . ' обезличен ' . $date . '.');
+ } else {
+ $this->Info();
+ }
+ }
+
+ public function showUserDoll($isBattle = 0, $isMain = 0)
+ {
+ echo '';
+ $this->UserInfoDoll($isBattle, $isMain);
+ echo '
';
+ }
+
+ public function showUserInfoMain()
+ {
+ echo '';
+ $this->UserInfoDoll();
+ $this->userInfoStats(1);
+ echo '
';
+ }
+
+}
\ No newline at end of file
diff --git a/functions.php b/functions.php
index 3453445..6f4c058 100644
--- a/functions.php
+++ b/functions.php
@@ -6,17 +6,11 @@
* Project name: Battles-Game
*/
require_once 'config.php';
-/**
- * Класс-заглушка для работы глобальных переменных в функциях.
- * Возвращает массив данных таблицы users.
- */
if (isset($_SESSION['uid'])) {
- //$user = (new users_row($_SESSION['uid']))->result();
$user = new User($_SESSION['uid']);
} else {
echo "Не могу проинициализировать игрока!";
}
-
if ($user->id && $user->block) {
exit('user blocked!');
}
diff --git a/inf.php b/inf.php
index 80ac604..11ee4ea 100644
--- a/inf.php
+++ b/inf.php
@@ -3,10 +3,10 @@ session_start();
include_once 'config.php';
$login = urldecode($_SERVER['QUERY_STRING']) ?? '';
-$user = new User($login);
-$presentsModel = new PresentsModel($user->id);
+$userInfo = new UserInfo($login);
+$presentsModel = new PresentsModel($userInfo->id);
$presentsList = $presentsModel->getAllPresents();
-$user->watcher_id = $_SESSION['uid'] ?? null;
+$userInfo->watcher_id = $userInfo->id ?? null;
if (empty($user->id)): ?>
@@ -31,7 +31,8 @@ if (empty($user->id)): ?>
showUserInfo();
+ $userInfo->showUserInfo();
+
} catch (Exception $e_showUserInfo) {
echo "Ошибка генератора showUserInfo() в User.php: {$e_showUserInfo}
";
}
diff --git a/main.php b/main.php
index d99ccb1..09dbc69 100644
--- a/main.php
+++ b/main.php
@@ -39,6 +39,7 @@ $ids = $_GET['ids'] ?? null;
$setShadow = $_POST['setshadow'] ?? null;
$edit = $_GET['edit'] ?? null;
// Подготавливаем отображение инфы и предметов.
+$userInfo = new UserInfo($user->id);
$getItemsBonuses = new DressedItems($_SESSION['uid']);
$data_query = 'SELECT * FROM inventory WHERE owner_id = ?i AND dressed_slot = 0 AND on_sale = 0';
$data = db::c()->query($data_query, $_SESSION['uid']);
@@ -47,6 +48,7 @@ while ($row = $data->fetch_assoc()) {
$iteminfo[] = new InventoryItem($row);
}
+
/* === проверяем соответствие комнаты и скрипта === */
if (in_array($user->room, [20, 21, 26, 48, 51, 52, 651, 2655, 2601, 2701, 2702, 2111], 1)) {
header('Location: city.php');