This commit is contained in:
Igor Barkov (iwork) 2021-01-27 15:53:39 +02:00
parent a10f3911f2
commit 0cb06d6333
2 changed files with 39 additions and 32 deletions

View File

@ -1,5 +1,6 @@
<?php <?php
namespace Battles; namespace Battles;
use db;
/** /**
* Разные способы отображения строки с логином персонажа. * Разные способы отображения строки с логином персонажа.
*/ */
@ -15,7 +16,7 @@ class Nick extends User
* Отображение иконки склонности. * Отображение иконки склонности.
* @return string * @return string
*/ */
private function getAlign() private function getAlign():string
{ {
if (isset($this->align)) { if (isset($this->align)) {
return sprintf('<img src="i/align_%s.gif">', $this->align); return sprintf('<img src="i/align_%s.gif">', $this->align);
@ -28,7 +29,7 @@ class Nick extends User
* Отображение иконки клана. * Отображение иконки клана.
* @return string * @return string
*/ */
private function getClan() private function getClan():string
{ {
if (isset($this->clan)) { if (isset($this->clan)) {
return sprintf('<img src="i/clan/%s.png">', $this->clan); return sprintf('<img src="i/clan/%s.png">', $this->clan);
@ -51,12 +52,11 @@ class Nick extends User
/** /**
* Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль. * Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль.
* *
* @param int $showInvisibility - По умолчанию 0. Выбрать 1, если надо отображать невидимый статус. * @param int $showInvisibility отображать логин даже если персонаж невидимка.
* *
* @return string * @return string
* @throws \Krugozor\Database\Mysql\Exception
*/ */
public function full($showInvisibility = 0) public function full($showInvisibility = 0):string
{ {
if ($showInvisibility && $this->getInvisibilityStatus()) { if ($showInvisibility && $this->getInvisibilityStatus()) {
return '<i>невидимка</i>'; return '<i>невидимка</i>';
@ -66,12 +66,12 @@ class Nick extends User
/** /**
* Возвращает строку с логином или невидимым статусом. * Возвращает строку с логином или невидимым статусом.
* @param int $showInvisibility отображать логин даже если персонаж невидимка.
* @return string * @return string
* @throws \Krugozor\Database\Mysql\Exception
*/ */
public function short() public function short($showInvisibility = 0):string
{ {
if ($this->getInvisibilityStatus()) { if ($showInvisibility && $this->getInvisibilityStatus()) {
return '<i>невидимка</i>'; return '<i>невидимка</i>';
} else { } else {
return htmlspecialchars($this->login); return htmlspecialchars($this->login);
@ -82,7 +82,7 @@ class Nick extends User
* Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль, здоровьем. * Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль, здоровьем.
* @return string * @return string
*/ */
public function battle() public function battle():string
{ {
return $this->getAlign().$this->getClan().sprintf('<b>%s</b> [%s] <a href="inf.php?%s" target="_blank"><img src="i/inf.gif" style="width:12px;height:11px"></a> <img src="i/herz.gif" alt="HP"> _hp_/_maxhp_', $this->login, $this->level, $this->login); return $this->getAlign().$this->getClan().sprintf('<b>%s</b> [%s] <a href="inf.php?%s" target="_blank"><img src="i/inf.gif" style="width:12px;height:11px"></a> <img src="i/herz.gif" alt="HP"> _hp_/_maxhp_', $this->login, $this->level, $this->login);
} }
@ -93,7 +93,7 @@ class Nick extends User
* *
* @return string * @return string
*/ */
public function battleShort($textstyle) public function battleShort($textstyle):string
{ {
if ($this->getInvisibilityStatus()) { if ($this->getInvisibilityStatus()) {
return '<i>невидимка</i>'; return '<i>невидимка</i>';

View File

@ -1,7 +1,15 @@
<?php <?php
use Battles\Bank;
use Battles\GameLogs;
use Battles\InventoryItem;
use Battles\Nick;
use Battles\Template;
use Battles\User;
session_start(); session_start();
require_once 'functions.php'; require_once 'functions.php';
$user = $user ?? new \Battles\User($_SESSION['uid']); $user = $user ?? new User($_SESSION['uid']);
if ($_GET['change'] ?? 0) { if ($_GET['change'] ?? 0) {
unset($_SESSION['receiverName']); unset($_SESSION['receiverName']);
} }
@ -41,25 +49,30 @@ if ($_SESSION['receiverName']) {
$user->money -= 1; $user->money -= 1;
Bank::setWalletMoney($user->money, $user->id); Bank::setWalletMoney($user->money, $user->id);
db::c()->query('UPDATE `inventory` SET owner_id = ?i WHERE item_id= ?i AND owner_id = ?i', $receiverId, $sendItemId, $_SESSION['uid']); db::c()->query('UPDATE `inventory` SET owner_id = ?i WHERE item_id= ?i AND owner_id = ?i', $receiverId, $sendItemId, $_SESSION['uid']);
$statusMessage = 'Предмет "' . $res['name'] . '" передан персонажу ' . $receiverId; $statusMessage = 'Предмет "' . $res['name'] . '" передан персонажу ' . Nick::id($receiverId)->short(1);
$receiverLogMessage = 'Получен предмет "' . $res['name'] . '" от персонажа ' . Nick::id($_SESSION['uid'])->short(1);
db::c()->query('INSERT INTO `telegraph` (`receiver`,`text`) VALUES (?i,"?s")', $receiverId, 'Почтовый перевод: ' . $res['name'] . ' от персонажа ' . $user['login'] . '.'); db::c()->query('INSERT INTO `telegraph` (`receiver`,`text`) VALUES (?i,"?s")', $receiverId, 'Почтовый перевод: ' . $res['name'] . ' от персонажа ' . $user['login'] . '.');
// Пишем в лог отправителю.
GameLogs::addUserLog($_SESSION['uid'], $statusMessage, 'почта');
// Пишем в лог получателю.
GameLogs::addUserLog($receiverId, $receiverLogMessage, 'почта');
} }
} }
$queryItems = db::c()->query('SELECT * FROM inventory WHERE dressed_slot = 0 AND on_sale = 0 AND owner_id = ?i', $user->id); $queryItems = db::c()->query('SELECT * FROM inventory WHERE dressed_slot = 0 AND on_sale = 0 AND owner_id = ?i', $user->id);
while ($row = $queryItems->fetch_assoc()) { while ($row = $queryItems->fetch_assoc()) {
$iteminfo[] = new \Battles\InventoryItem($row); $iteminfo[] = new InventoryItem($row);
} }
} }
} }
\Battles\Template::header('Почта'); Template::header('Почта');
?> ?>
<div style="float: right"> <div style="float: right">
<button onclick="top.frames['gameframe'].location = 'city.php?cp'">Вернуться</button> <button onclick="top.frames['gameframe'].location = 'city.php?cp'">Вернуться</button>
</div> </div>
<h1>Почта</h1> <h1>Почта</h1>
<div style="text-align: center;"><span class="error"><?= $statusMessage ?></span></div> <div style="text-align: center;"><span class="error"><?= $statusMessage ?></span></div>
<legend>Услуги почты платные: 1 кредит.</legend> <legend>Услуги почты платные: 1 кредит.</legend>
<?php if ($_SESSION['receiverName'] ?? ''): ?> <?php if ($_SESSION['receiverName'] ?? ''): ?>
Получатель: <?= Nick::id($receiverId)->full() ?> Получатель: <?= Nick::id($receiverId)->full() ?>
<a href="?change">Сменить</a> <a href="?change">Сменить</a>
@ -78,11 +91,10 @@ if ($_SESSION['receiverName']) {
<input type="submit" value="Отправить"> <input type="submit" value="Отправить">
</fieldset> </fieldset>
</form> </form>
</td>
<td valign=top align=right> <td valign=top align=right>
<table class="zebra" WIDTH=100%" cellspacing="1" cellpadding="2"> <table class="zebra" WIDTH=100%" cellspacing="1" cellpadding="2">
<th colspan="2">Передача предметов</th> <th colspan="2">Передача предметов
<?php foreach ($iteminfo as $ii): ?> <?php foreach ($iteminfo as $ii): ?>
<tr> <tr>
<td bgcolor='#d3d3d3'> <td bgcolor='#d3d3d3'>
<?php $ii->printImage(); ?> <?php $ii->printImage(); ?>
@ -91,20 +103,15 @@ if ($_SESSION['receiverName']) {
<input type="hidden" name="item_id" value="<?= $ii->getId() ?>"> <input type="hidden" name="item_id" value="<?= $ii->getId() ?>">
<input type="submit" value="Передать за 1кр."> <input type="submit" value="Передать за 1кр.">
</form> </form>
</td>
<td bgcolor='#d3d3d3'> <td bgcolor='#d3d3d3'>
<?php $ii->printInfo(); ?> <?php $ii->printInfo(); ?>
</td>
</tr> <?php endforeach; ?>
<?php endforeach; ?> <?php if (empty($queryItems->getNumRows())): ?>
<?php if (empty($queryItems->getNumRows())): ?>
<tr> <tr>
<td align=center bgcolor=#C7C7C7>Нечего передавать...</td> <td align=center bgcolor=#C7C7C7>Нечего передавать...
</tr>
<?php endif ?> <?php endif ?>
</table> </table>
</td>
</tr>
</table> </table>
<?php else: ?> <?php else: ?>
<form method="post"> <form method="post">