game/inf.php

1124 lines
53 KiB
PHP
Raw Normal View History

<?php
2023-11-02 13:57:39 +00:00
use Admin\Monster;
use Clan\ClanInfo;
use Core\Config;
use Core\Database;
use Core\Db;
use Helper\Conversion;
2023-11-02 13:57:39 +00:00
use Inf\Awards;
use Inf\LastNames;
use Inf\Twinks;
use Inf\Zodiac;
use Model\Constant\Stat;
2023-11-02 13:57:39 +00:00
use User\Effects;
if (!defined('GAME_VERSION')) {
require_once '_incl_data/autoload.php';
}
if (isset($_GET['md5'])) {
die(md5($_GET['md5']));
2022-06-06 21:30:34 +00:00
}
Config::init();
Database::init();
2022-06-06 21:30:34 +00:00
$c['inf'] = true;
2023-11-02 13:57:39 +00:00
2022-06-06 21:30:34 +00:00
include_once('_incl_data/class/__db_connect.php');
$u = User::start();
2024-01-16 07:13:15 +00:00
$statnames = new Stat();
$statnames->getBonus();
2022-06-06 21:30:34 +00:00
const LOWERCASE = 3;
const UPPERCASE = 1;
2022-06-06 21:30:34 +00:00
$uplogin = explode('&', $_SERVER['QUERY_STRING']);
2022-06-06 21:30:34 +00:00
$uplogin = $uplogin[0];
if (!isset($_GET['id'])) {
$_GET['id'] = 0;
2022-06-06 21:30:34 +00:00
}
if (!isset($_GET['login'])) {
$_GET['login'] = null;
2022-06-06 21:30:34 +00:00
}
2023-11-02 13:57:39 +00:00
match (true) {
!empty($_GET['id']) && $_GET['id'] > 0 => $inf = User::getInfo($_GET['id']),
!empty($_GET['login']) && $_GET['login'] !== 'delete' => $inf = User::getInfo($_GET['login']),
!empty($uplogin) && $uplogin !== 'delete' => $inf = User::getInfo($uplogin),
};
2022-06-06 21:30:34 +00:00
2023-11-02 13:57:39 +00:00
if (empty($inf) || $inf['login'] == 'delete' || $inf['login'] == 'DELETE') {
unset($inf);
} else {
2023-11-02 13:57:39 +00:00
if ($inf['info_delete'] > 1 && $inf['info_delete'] < time()) {
$inf['info_delete'] = 0;
Db::sql('update users set info_delete = 0 where id = ?', [$inf['id']]);
}
2022-06-06 21:30:34 +00:00
}
2023-11-02 13:57:39 +00:00
if (isset($_GET['restartmonster']) && $u->isAdmin()) { //что ты такое??
Db::sql('update stats set res_x = 0 where id = ?', [$inf['id']]);
$inf['res_x'] = 0;
}
if ($u->isAdmin() && isset($_GET['wipe']) && $u->newAct($_GET['sd4'])) {
Db::sql('update stats set wipe = 1 where id = ?', [$inf['id']]);
$uer = 'Сброс характеристик прошел успешно<br>';
}
if ($inf['room'] == 303 && $u->info['admin'] == 0) {
unset($inf);
2022-06-06 21:30:34 +00:00
}
if (!isset($inf['id'])) {
2023-01-10 16:29:32 +00:00
die('Ошибка. Персонаж не найден.');
2022-06-06 21:30:34 +00:00
}
2023-11-02 13:57:39 +00:00
$zodiac = new Zodiac($inf['bithday']);
2023-11-02 13:57:39 +00:00
function statInfo($s): string
2022-06-06 21:30:34 +00:00
{
2023-11-02 13:57:39 +00:00
global $st, $st2;
2022-06-06 21:30:34 +00:00
2023-11-02 13:57:39 +00:00
if (isset($st[$s])) {
$st[$s] = (int)$st[$s];
} else {
$st[$s] = 0;
}
2022-06-06 21:30:34 +00:00
2023-11-02 13:57:39 +00:00
if (isset($st2[$s])) {
$st2[$s] = (int)$st2[$s];
} else {
$st2[$s] = 0;
}
2022-06-06 21:30:34 +00:00
2023-11-02 13:57:39 +00:00
if ($st[$s] == $st2[$s]) {
return '<b>' . $st[$s] . '</b>';
} else {
$s1 = '+';
if ($st2[$s] > $st[$s]) {
$s1 = '-';
}
2023-11-02 13:57:39 +00:00
$colours = ['black', 'darkred', 'darkgreen', 'green'];
$si = 0;
if ($s1 == '-') {
2023-11-02 13:57:39 +00:00
$si = 2;
}
$t = $st[$s];
$j = $st[$s] - $st2[$s];
$t = $t - $j;
if ($j > 0) {
if ($t == 0) {
$t = 1;
}
$d = $j * 100 / $t;
if ($d < 0 && $t + $j >= 0) {
$d = 100;
}
if ($d < 33) {
2023-11-02 13:57:39 +00:00
$si = 2;
} elseif ($d > 100) {
2023-11-02 13:57:39 +00:00
$si = 3;
}
} elseif ($j < 0) {
2023-11-02 13:57:39 +00:00
$si = 1;
}
2023-11-02 13:57:39 +00:00
if ($st[$s] < 0 || $st[$s] <= round($st2[$s])) {
$si = 1;
}
2023-11-02 13:57:39 +00:00
return '<b style="color:' . $colours[$si] . '">' . $st[$s] . '</b> <small>(' . $st2[$s] . ' ' . $s1 . ' ' . abs($st[$s] - $st2[$s]) . ')</small>';
}
2022-06-06 21:30:34 +00:00
}
2023-11-02 13:57:39 +00:00
$room['name'] = $inf['room_name'];
2022-06-06 21:30:34 +00:00
$nopal = false;
2023-11-02 13:57:39 +00:00
if (!$u->isAdmin() && $inf['admin'] > 0) {
$nopal = true;
2022-06-06 21:30:34 +00:00
}
2023-11-02 13:57:39 +00:00
if ($inf['inTurnir'] > 0 && ($u->info['inTurnir'] == $inf['inTurnir'] || $u->isAdmin())) {
$bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `id` = "' . $inf['inTurnir'] . '" LIMIT 1'));
if (isset($bs['id']) && ($bs['users'] <= 2 || $bs['type_btl'] == 1)) {
$bs_rm = mysql_fetch_array(
mysql_query(
'SELECT `id`,`name` FROM `bs_map` WHERE `mid` = "' . $bs['type_map'] . '" AND `x` = "' . $inf['x'] . '" AND `y` = "' . $inf['y'] . '" LIMIT 1'
)
);
if (isset($bs_rm['id'])) {
$room['name'] .= ' - ' . $bs_rm['name'];
}
}
2022-06-06 21:30:34 +00:00
}
2023-11-02 13:57:39 +00:00
$st = [];
$st2 = [];
$st = $u->getStats($inf['id'], 1, 0, true);
$st2 = $st[1];
$st = $st[0];
$rgd = $u->regen($inf['id'], $st, 1);
$us = $u->getInfoPers($inf['id'], 1, $st);
if (isset($bs['id']) && $bs['type_btl'] == 2 && ($u->info['x'] != $inf['x'] || $u->info['y'] != $inf['y'])) {
$us[0] = '<div style="width:255px; height300px; text-align: center; padding: 200px 0;">Информация скрыта,<br>Вы в разных комнатах.</div>';
}
if ($inf['align'] == 9) {
$st['hpNow'] = $st['hpNow'] / ($st['hpAll'] / 100);
$st['hpAll'] = '100%';
$rgd[0] = '0.28';
}
2022-06-06 21:30:34 +00:00
?>
<!DOCTYPE html>
2023-11-02 13:57:39 +00:00
<html lang="ru">
2022-06-06 21:30:34 +00:00
<head>
2023-03-31 16:54:33 +00:00
<title>Информация о <?= $inf['login']; ?></title>
2023-11-02 13:57:39 +00:00
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes">
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/jquery.zclip.js"></script>
<script type="text/javascript" src="/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/js/title.js"></script>
<script type="text/javascript" src="/js/hpregen.js"></script>
2023-11-02 13:57:39 +00:00
<link rel="stylesheet" href="<?= Config::img() ?>/css/main.css">
<link rel="stylesheet" href="/css/inf.css">
<style>
.pg_btn1 {
2023-11-02 13:57:39 +00:00
background-image: url(<?= Config::img() ?>/pg_btn_left.png);
}
.pg_btn2 {
2023-11-02 13:57:39 +00:00
background-image: url(<?= Config::img() ?>/pg_btn_right.png);
}
</style>
2023-11-02 13:57:39 +00:00
<script type="text/javascript">
var lafstReg = {};
function lookGift(e, id, nm, img, txt, from) {
if (from == 1) {
from = '<i>Невидимка</i>';
}
if (!e) {
e = window.event;
}
var body2 = document.body;
mX = e.x;
mY = e.y + (body2 && body2.scrollTop || 0);
var gf = document.getElementById('gi');
if (gf != undefined) {
gf.style.top = mY + 'px';
gf.style.left = mX + 'px';
if (from == '<i>Анонима</i>') {
from = '</a><i>Анонима</i><a>';
}
gf.innerHTML = `<b><span style="float:left;">${nm}</span> <span style="float:right;">&nbsp; <a href="javascript:void(0);" onClick="closeGift();">X</a></span></b><br><div align="center" style="padding:5px;background-color:#dcdedc;"><img src="//img.new-combats.tech/i/items/${img}"></div>${txt}<div>Подарок от <a target="_blank" href="/info/${from}">${from}</a></div>`;
gf.innerHTML = `<small>${gf.innerHTML}</small>`;
gf.style.display = '';
}
}
function closeGift() {
var gf = document.getElementById('gi');
if (gf != undefined) {
gf.innerHTML = '';
gf.style.display = 'none';
}
}
function tstlgnthm() {
if (window.opener && (window.opener.textmsg != undefined || window.opener.parent.textmsg != undefined)) {
if (window.opener.textmsg != undefined) {
$('#lgnthm').html('<img onclick="window.opener.chat.addto(\'<?=$inf['login']?>\',\'private\');" style="cursor:pointer" title="Написать персонажу" src="//img.new-combats.tech/i/lock3.gif" width="20" height="15">' + $('#lgnthm').html());
return
}
$('#lgnthm').html('<img onclick="window.opener.parent.chat.addto(\'<?=$inf['login']?>\',\'private\');" style="cursor:pointer" title="Написать персонажу" src="//img.new-combats.tech/i/lock3.gif" width="20" height="15">' + $('#lgnthm').html());
}
2023-11-02 13:57:39 +00:00
}
</script>
2022-06-06 21:30:34 +00:00
</head>
2023-11-02 13:57:39 +00:00
<body style="padding-top:0; margin-top:7px; height:100%; background-color:#E2E0E1;">
<div id="ttl" class="ttl_css" style="display:none;z-index:1111;"></div>
2022-06-06 21:30:34 +00:00
<div id="gi" class="gifin" style="display:none;z-index:1110;"></div>
<?php
if (isset($uer)) {
2023-11-02 13:57:39 +00:00
echo '<div style="color: red;">' . $uer . '</div><br>';
} ?>
2023-11-02 13:57:39 +00:00
<div class="grid-container-main">
<div>
<div style="margin-left:11px; text-align: center;">
<?= $us ? $us[0] : '<img src="https://placehold.co/240x280?text=No%20Data" alt="nan">' ?>
</div>
<!-- pos2 -->
<div></div>
<div></div>
<script>
tstlgnthm();
lafstReg[<?= $inf['id']; ?>] = 1;
startHpRegen('top', <?= $inf['id'] . ',' . (0 + $st['hpNow']) . ',' . (0 + $st['hpAll']) . ',' . (0 + $st['mpNow']) . ',' . (0 + $st['mpAll']) . ',' . (time() - $inf['regHP']) . ',' . (time() - $inf['regMP']) . ',' . (0 + $rgd[0]) . ',' . (0 + $rgd[1]); ?>, 1);
</script>
<!-- pos1 -->
<?php
//Персонаж онлайн
if ($inf['battle']) {
$b = new \Model\BattleModel($inf['battle']);
$battleid = $b->battle->time_over == 0 ? $b->battle->id : false;
unset($b);
}
2023-11-02 13:57:39 +00:00
if ($inf['room'] != 303) {
if ($inf['online'] > time() - 520 && $inf['banned'] == 0 && $inf['invis'] != 1 && $inf['invis'] < time()) {
echo 'Персонаж сейчас находится в клубе.<br><b>"' . $room['name'] . '"</b>';
} else {
echo 'Персонаж не в клубе';
2023-11-02 13:57:39 +00:00
if ($inf['online'] == 0) {
$inf['online'] = $inf['timeREG'];
}
2023-11-02 13:57:39 +00:00
if (date('Y', $inf['online']) == date('Y')) {
echo ', но был тут:<br>' . date('d.m.Y H:i', $inf['online']) .
'<img title="Время сервера" alt="Время сервера" src="' . Config::img() . '/i/clok3_2.png">' .
'<br>(' . Conversion::secondsToTimeout(time() - $inf['online']) . ' назад)';
}
}
2023-11-02 13:57:39 +00:00
if ($inf['inUser'] > 0 && $inf['id'] != 12059) {
echo '<br>Персонаж вселился в <a target="_blank" href="/info/' . $inf['inUser'] . '">бота</a>';
}
2023-11-02 13:57:39 +00:00
if ($inf['battle'] > 0 && $battleid) {
echo '<br>Персонаж сейчас в <a target="_blank" href="/logs.php?log=' . $battleid . '">поединке</a>';
}
2023-11-02 13:57:39 +00:00
} else {
if ($inf['res_x'] - time() > 0) {
echo '<div style="padding-top:3px; text-align: center;">Появится через <b>' . Conversion::secondsToTimeout($inf['res_x'] - time()) . '</b></div>';
} else {
echo '<div style="padding-top:3px; text-align: center;">Появится в ближайшее время...<br></div>';
}
}
//Эффект админ
if ($u->isAdmin()) {
function effAdm($pl): string
{
if ($pl['v1'] != 'priem') {
$eff = Db::getRow('select img, actionTime from eff_main where id2 = ?', [$pl['id_eff']]);
$pl['img2'] = $eff['img'];
$pl['name'] .= "\r" . 'Действует еще ' . Conversion::secondsToTimeout($pl['timeUse'] - time() + $eff['actionTime']);
}
2023-11-02 13:57:39 +00:00
return '<img onDblClick="location.href=\'/info/' . $pl['uid'] . '&cancel_eff=' . $pl['id'] . '\'" style="padding:1px;" ' .
' title="' . $pl['name'] . '" src="' . Config::img() . '/i/eff/' . $pl['img2'] . '" width="40" height="25">';
}
2023-11-02 13:57:39 +00:00
if (isset($_GET['cancel_eff'])) {
Effects::removeByEffectId($inf['id'], (int)$_GET['cancel_eff']);
die('<script>top.location.href="/info/' . $inf['id'] . '"</script>');
}
2023-11-02 13:57:39 +00:00
$eff_adm = '';
foreach (Effects::getActive($inf['id']) as $effect) {
$eff_adm .= effAdm($effect);
}
2023-11-02 13:57:39 +00:00
if (!empty($eff_adm)) {
echo '<br><small style="display:block;text-align:center;">Эффекты на персонаже:<br>' . $eff_adm . '</small>';
}
?>
<br>
<script>
function mf_admin_statsfx() {
if ($('#mf_admin_stats').css('display') == 'none') {
$('#mf_admin_stats').css('display', '');
$('#mf_admin_statstxt').html('Скрыть');
return
}
$('#mf_admin_stats').css('display', 'none');
$('#mf_admin_statstxt').html('Показать');
}
2023-11-02 13:57:39 +00:00
</script>
<div id="mf_admin_stats" style="display:none;">
<div style="height:1px; width:240px; background-color:#999999; margin:3px; text-align: center;"></div>
<div style="padding:5px;">
<small>
<?php
2024-01-16 07:13:15 +00:00
foreach ($statnames->sysBonusNames as $stat) {
2023-11-02 13:57:39 +00:00
if (empty($st[$stat]) || empty($u->is[$stat])) {
continue;
}
if ($st[$stat] > 0) {
$st[$stat] = '+' . $st[$stat];
}
2024-01-16 07:13:15 +00:00
echo '&bull; ' . $statnames->bonusNames[$stat] . ': ' . $st[$stat] . ' <br>';
2023-11-02 13:57:39 +00:00
}
?>
</small>
</div>
</div>
<div style="height:1px; width:240px; background-color:#999999; margin:3px; text-align: center;">
<div onClick="mf_admin_statsfx();"
style="border:1px solid #999999; cursor:pointer; background-color:#EAEAEA; width:150px; text-align: center; font-size: small;">
<span id="mf_admin_statstxt">Показать</span> модификаторы
</div>
</div>
<?php
}
?>
2023-11-02 13:57:39 +00:00
</div>
<div class="center">
2023-11-02 13:57:39 +00:00
<?php
if ($u->isAdmin()) {
$nodell = Db::getRow('select id, inUser from users where login = ? order by id limit 1', [$inf['login']]);
$sp = Db::getRows('select id from users where login = ? and id != ?', [$inf['login'], $inf['id']]);
$nolog = '';
foreach ($sp as $pl) {
if (isset($_GET['del_copy']) && $_GET['del_copy'] == $pl['id']) {
if ($nodell['inUser'] != $pl['id'] && $pl['id'] != $nodell['id']) {
Db::sql('update users set login = ? where id = ?', ['DELETE', $pl['id']]);
}
} else {
$nolog .= '<div>' . User::getLogin($pl['id']);
2023-11-02 13:57:39 +00:00
if ($nodell['inUser'] != $pl['id'] && $pl['id'] != $nodell['id']) {
$nolog .= ' (персонажа можно <a href="?' . $inf['id'] . '&del_copy=' . $pl['id'] . '">удалить</a>)';
}
if ($pl['id'] == $nodell['id']) {
$nolog .= ' (основной персонаж)';
}
$nolog .= '</div>';
}
}
2023-11-02 13:57:39 +00:00
if (!empty($nolog)) {
echo '<small><b>Копии персонажа:</b>' . $nolog . '</small>';
}
2023-11-02 13:57:39 +00:00
}
?>
<div style="padding:5px;">
Сила: <?= statInfo('s1'); ?><br>
Ловкость: <?= statInfo('s2'); ?><br>
Интуиция: <?= statInfo('s3'); ?><br>
Выносливость: <?= statInfo('s4'); ?><br>
Интеллект: <?= statInfo('s5'); ?><br>
Мудрость: <?= statInfo('s6'); ?><br>
<?php if ($inf['level'] > 9 || $st['s7'] != 0) { ?>
Духовность: <?= statInfo('s7'); ?><br>
<?php } ?>
Рейтинг сегодня: <b><?= $inf['repexp']; ?></b><br>
</div>
<div style="height:1px; background-color:#999999; margin:3px;"></div>
<div style="padding:5px;">
Уровень: <?= $inf['level']; ?><br>
<?php if ($inf['no_ip'] != 'trupojor') {
$inf['win'] = number_format($inf['win'], 0, ',', ' ');
$inf['lose'] = number_format($inf['lose'], 0, ',', ' ');
$inf['nich'] = number_format($inf['nich'], 0, ',', ' ');
?>
Побед:
<?= '<a title="Персонаж учавствует в рейтинге" href="/rating_pers/id' . $inf['id'] . '#' . $inf['id'] . '" target="_blank">' . $inf['win'] . '</a>'; ?><br>
Поражений: <?= $inf['lose'] ?><br>
Ничьих: <?= $inf['nich'] ?><br>
<?php }
$inf['mod_zvanie'] = htmlspecialchars($inf['mod_zvanie'] ?? '');
if ($inf['clan'] > 0) {
$pc = ClanInfo::getById($inf['clan']);
if (isset($pc['id'])) {
if ($inf['clan_prava'] == 'glava') {
$inf['mod_zvanie'] = '- <b style="color: teal;">Глава клана</b>';
} elseif (!empty($inf['mod_zvanie'])) {
$inf['mod_zvanie'] = '- ' . htmlspecialchars($inf['mod_zvanie'], null);
$inf['mod_zvanie'] = str_replace('&lt;b&gt;', '<b>', $inf['mod_zvanie']);
$inf['mod_zvanie'] = str_replace('&lt;/b&gt;', '</b>', $inf['mod_zvanie']);
$inf['mod_zvanie'] = str_replace('&lt;u&gt;', '<u>', $inf['mod_zvanie']);
$inf['mod_zvanie'] = str_replace('&lt;/u&gt;', '</u>', $inf['mod_zvanie']);
$inf['mod_zvanie'] = str_replace('&lt;i&gt;', '<i>', $inf['mod_zvanie']);
$inf['mod_zvanie'] = str_replace('&lt;/i&gt;', '</i>', $inf['mod_zvanie']);
}
2023-11-02 13:57:39 +00:00
echo 'Клан: <a href="/clan/' . $pc['id'] . '" target="_blank">' . $pc['name'] . '</a> ' . $inf['mod_zvanie'] . '<br>';
} elseif ($u->isAdmin()) {
echo '<i style="color: dimgrey;">Подана заявка на регистрацию клана или ошибка в базе кланов.</i>';
}
}
2023-11-02 13:57:39 +00:00
$accountStatus = new class {
public static function print(bool $condition, string $type, string $color, string $status = ''): void
{
if (!$condition) {
return;
}
2023-11-02 13:57:39 +00:00
echo "<b style='color: $color;'>$type</b>";
if (!empty($status)) {
echo " - $status";
}
2023-11-02 13:57:39 +00:00
echo '<br>';
}
2023-11-02 13:57:39 +00:00
};
$accountStatus::print(!empty($inf['admin']), 'Администратор', 'green');
$accountStatus::print($inf['pass'] === 'saintlucia' && $u->isAdmin(), 'NPC', 'dimgray');
$accountStatus::print(
($inf['align'] > 1 && $inf['align'] < 2 || $inf['align'] > 3 && $inf['align'] < 4) && empty($inf['admin']),
'Модератор',
'green',
$inf['mod_zvanie']);
$accountStatus::print($inf['align'] === 50, 'Алхимик', 'orange', $inf['mod_zvanie']);
echo 'День рождения персонажа: ';
if (empty($inf['timereg'])) {
echo 'До начала времен...';
} else {
echo date('d.m.Y', $inf['timereg']);
}
2023-11-02 13:57:39 +00:00
echo '<br>';
$twinks = new Twinks($inf['id'], $inf['twink']);
$lastnames = new LastNames($inf['id']);
$ai = new Achievements($u);
$awards = new Awards($inf['id']);
$status = new \Inf\Status();
$achievements = '';
foreach ($ai->getTypes() as $type) {
$i = $ai->getInfo($inf['id']);
if (empty($i[$type])) {
continue;
}
$achievements .=
'<div class="dvfirs">' .
'<div class="dvsec">' . $i['name' . $type] . '</div>' .
'<div class="dvtre">Ранг <b>' . $i['klas' . $type] . '</b> : </div>' .
'<progress value="' . $i['klasP' . $type] . '" max="100" class="prog' . $i['klas' . $type] . '"> ' . $i['name' . $type] . ' </progress>' .
'</div>';
}
2023-11-02 13:57:39 +00:00
if ($inf['align'] == 50) {
$awards->addCustom('Официальный дилер', 'Имеет право вести коммерческую деятельность.', 'alchemy1.gif');
}
2023-11-02 13:57:39 +00:00
if ($inf['vip'] === 1) {
$awards->addCustom('За помощь в развитии проекта.', '', 'vip2.gif');
}
2023-11-02 13:57:39 +00:00
if (!empty($inf['marry'])) {
$partner = Db::getValue('select login from users where id = ?', [$inf['marry']]);
if ($partner) {
$awards->addCustom('Семейные узы', "В счастливом браке с <b>$partner</b>.", 'i/i_marry.gif');
}
}
2023-11-02 13:57:39 +00:00
//сам себя наебал, condition не заменяет isset, а вот ?? null это уже чисто костыль, который будет тут висеть пока не придёт ясность как формируется $st
$status->add($inf['jail'] > time(), 'В заточении', $inf['jail'], 'i/jail.gif');
$status->add(!empty($st['puti']), 'Не может передвигаться', $st['puti'] ?? null, 'i/items/chains.gif');
$status->add($inf['molch1'] > time(), 'Не может общаться в чате', $inf['molch1'], 'i/sleeps' . $inf['sex'] . '.gif');
$status->add($inf['molch2'] > time(), 'Не может общаться на форуме', $inf['molch2'], 'i/fsleeps' . $inf['sex'] . '.gif');
$status->add($inf['clan_delay'] > time(), 'Не может вступать в кланы', $inf['clan_delay']);
$status->add($inf['info_delete'] > time() || $inf['info_delete'] === 1, 'Профиль скрыт', $inf['info_delete'], 'stopinfo.png');
2023-11-02 13:57:39 +00:00
foreach (Effects::getAllInjuries($inf['id']) as $injury) {
$status->add(true, 'Травма: «<b>' . $injury['name'] . '</b>»', $injury['timeUse'] + $injury['timeAce'], 'i/jail.gif');
}
2023-11-02 13:57:39 +00:00
$twinks->print();
$lastnames->print();
?>
</div>
<div style="height:1px; background-color:#999999; margin: 3px 3px 7px;"></div>
<!-- значки -->
<?php
$awards->print();
$status->print();
if (!empty($achievements)) {
echo <<<HTML
<div style="padding-top:20px;">
<div style="padding-bottom:10px;">
<u>Достижения персонажа:</u>
</div>
<div style="float: left; width: 800px;">$achievements</div>
</div>
HTML;
}
if ($inf['banned'] > 0 || $inf['jail'] > time()) {
Delo::printPublicModerationStatus($inf['id']);
}
//подарки (это какой-то сферический пиздец в вакууме!)
if ($inf['info_delete'] < time() && $inf['info_delete'] != 1 || $u->isModerator()) {
$gs = ['', '', ''];
$i = 0;
$ij1 = 1;
$ij2 = 1;
$q1 = "select * from items_users left join items_main on items_main.id = items_users.item_id
where uid = ? and gift != '' order by items_users.id desc";
$presentsList1 = Db::getRows($q1, [$inf['id']]);
foreach ($presentsList1 as $pl) {
if (stristr($pl['data'], 'gift_id')) {
$po = Conversion::dataStringToArray($pl['data']);
$pl_gift = $po['gift_id'];
if ($pl_gift > 0) {
$pl_gift = Db::getRow('select name, img from users_gifts where id = ?', [$pl_gift]);
if ($pl_gift) {
//Именной подарок
$pl['name'] = $pl_gift['name'];
$pl['img'] = $pl_gift['img'];
}
}
}
2023-11-02 13:57:39 +00:00
//подарки
if ($pl['gift'] == 1) {
$pl['gift2'] = 'Невидимка';
} else {
$pl['gift2'] = $pl['gift'];
}
2023-11-02 13:57:39 +00:00
$gs[0] .= '<img src="' . Config::img() . '/i/items/' . $pl['img'] . '" style="margin:1px 1px 0 0;display:block;float:left;cursor:pointer;" ' .
' onClick="lookGift(event,0,\'' . $pl['name'] . '\',\'' . $pl['img'] . '\',\'' . $pl['gtxt1'] . '\',\'' . $pl['gift'] . '\');" ' .
' title="' . $pl['gtxt1'] . 'Подарок от ' . $pl['gift2'] . '" />';
$ij1++;
}
2023-11-02 13:57:39 +00:00
$q2 = "select * from items_users left join items_main on items_main.id = items_users.item_id
where uid = ? and gift != '' and inOdet = 0 and (type in (63,37) or data like '%|giftsee=2%') order by items_users.id desc";
$presentsList2 = Db::getRows($q2, [$inf['id']]);
foreach ($presentsList2 as $pl) {
if ($pl['gift'] == 1) {
$pl['gift2'] = 'Невидимка';
} else {
$pl['gift2'] = $pl['gift'];
}
2023-11-02 13:57:39 +00:00
$gs[1] .= '<img src="' . Config::img() . '/i/items/' . $pl['img'] . '" style="margin:1px 1px 0 0;display:block;float:left;cursor:pointer;" ' .
' onClick="lookGift(event,0,\'' . $pl['name'] . '\',\'' . $pl['img'] . '\',\'' . $pl['gtxt1'] . '\',\'' . $pl['gift'] . '\');" ' .
' title="' . $pl['gtxt1'] . 'Подарок от ' . $pl['gift2'] . '" />';
$ij2++;
}
if (!empty($gs[0]) || !empty($gs[1])) {
echo '<br><br><table style="max-width:1260px; width:800px;"><tr><td>' .
'<div style="padding-top:20px; padding-bottom:2px;"><u>Подарки:</u></div><br>' . $gs[0] .
'</td></tr>' .
'<tr><td style="padding-top:7px;">' .
$gs[1] .
'</td></tr></table>';
$q3 = "select count(items_users.id) from items_users left join items_main on items_main.id = items_users.item_id
where (type in (28,63,38,64,37) or data like '%|giftsee=1' or data like '%|giftsee=2%') and uid = ? and gift != '' and inOdet = 0";
$ij4 = Db::getValue($q3, [$inf['id']]);
if ($ij1 + $ij2 + 1 < $ij4) {
if (!isset($_GET['maxgift'])) {
echo '<small><a href="/info/' . $inf['id'] . '&maxgift=1">Нажмите сюда, чтобы увидеть все подарки...</a></small>';
} else {
2023-11-02 13:57:39 +00:00
echo '<small><a href="/info/' . $inf['id'] . '">Нажмите сюда, чтобы скрыть подарки</a></small>';
}
}
}
2023-11-02 13:57:39 +00:00
}
2023-11-02 13:57:39 +00:00
if ($inf['align'] == '9' && $u->isAdmin()) {
if (isset($_GET['emonster'])) {
$monster = new Monster($inf['id']);
2023-11-02 13:57:39 +00:00
?>
<b style="color:red">Параметры монстра:</b><br>
<form method="post" action="/info/<?= $inf['id'] ?>&emonster">
<table style="padding-left:10px;" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Место появления (id комнаты):
<input type="text" name="bot_sroom" id="bot_sroom" value="<?= $monster->info['start_room'] ?>">
&nbsp; <input value="Обнулить ожидание" type="button" onclick="location.href='/info/<?= $inf['id'] ?>&emonster&restartmonster'"/>
</td>
</tr>
<tr>
<td>Время ожидания после поражения бота:
<input name="bot_trs" id="bot_trs" value="<?= $monster->info['time_restart'] ?>" type="text"> мин.
</td>
</tr>
<tr>
<td>Исчезнет после своей победы:
<select name="bot_winback" id="bot_winback">
<option value="0">Нет</option>
<option <?php if ($monster->info['win_back'] == 1) {
echo 'selected';
} ?> value="1">Да
</option>
</select></td>
</tr>
<tr>
<td>
<div align="left"
style="height:1px; width:300px; background-color:#999999; margin:3px;"></div>
</td>
</tr>
<tr>
<td>Появляется,
ДН
<select name="bot_sday" id="bot_sday">
<option value="-1">&bull; День недели</option>
<option <?php if ($monster->info['start_day'] == 1) {
echo 'selected';
} ?> value="1">Понедельник
</option>
<option <?php if ($monster->info['start_day'] == 2) {
echo 'selected';
} ?> value="2">Вторник
</option>
<option <?php if ($monster->info['start_day'] == 3) {
echo 'selected';
} ?> value="3">Среда
</option>
<option <?php if ($monster->info['start_day'] == 4) {
echo 'selected';
} ?> value="4">Четверг
</option>
<option <?php if ($monster->info['start_day'] == 5) {
echo 'selected';
} ?> value="5">Пятница
</option>
<option <?php if ($monster->info['start_day'] == 6) {
echo 'selected';
} ?> value="6">Суббота
</option>
<option <?php if ($monster->info['start_day'] == 7) {
echo 'selected';
} ?> value="7">Воскресенье
</option>
</select>
Д
<select name="bot_sdd" id="bot_sdd">
<option value="-1">&bull; День</option>
<?php $i = 0;
while ($i < 31) {
$i++; ?>
<option <?php if ($monster->info['start_dd'] == $i) {
echo 'selected';
2023-11-02 13:57:39 +00:00
} ?> value="<?= $i ?>">
<?= $i ?>
</option>
2023-11-02 13:57:39 +00:00
<?php } ?>
</select>
М
<select name="bot_smm" id="bot_smm">
<option value="-1">&bull; Месяц</option>
<?php $i = 0;
while ($i < 12) {
$i++; ?>
<option <?php if ($monster->info['start_mm'] == $i) {
echo 'selected';
2023-11-02 13:57:39 +00:00
} ?> value="<?= $i ?>"><?= $i ?></option>
<?php } ?>
</select>
Ч
<select name="bot_shh" id="bot_shh">
<option value="-1">&bull; Час</option>
<?php $i = -1;
while ($i < 23) {
$i++; ?>
<option <?php if ($monster->info['start_hh'] == $i) {
echo 'selected';
2023-11-02 13:57:39 +00:00
} ?> value="<?= $i ?>"><?= $i ?></option>
<?php } ?>
</select>
Мин
<select name="bot_smin" id="bot_smin">
<option value="-1">&bull; Мин</option>
<?php $i = -1;
while ($i < 58) {
$i++; ?>
<option <?php if ($monster->info['start_min'] == $i) {
echo 'selected';
2023-11-02 13:57:39 +00:00
} ?> value="<?= $i ?>"><?= $i ?></option>
<?php } ?>
</select>
</td>
</tr>
<tr>
<td>Исчезает, &nbsp; &nbsp;ДН
<select name="bot_bday" id="bot_bday">
<option value="-1">&bull; День недели</option>
<option <?php if ($monster->info['back_day'] == 1) {
echo 'selected';
} ?> value="1">Понедельник
</option>
<option <?php if ($monster->info['back_day'] == 2) {
echo 'selected';
} ?> value="2">Вторник
</option>
<option <?php if ($monster->info['back_day'] == 3) {
echo 'selected';
} ?> value="3">Среда
</option>
<option <?php if ($monster->info['back_day'] == 4) {
echo 'selected';
} ?> value="4">Четверг
</option>
<option <?php if ($monster->info['back_day'] == 5) {
echo 'selected';
} ?> value="5">Пятница
</option>
<option <?php if ($monster->info['back_day'] == 6) {
echo 'selected';
} ?> value="6">Суббота
</option>
<option <?php if ($monster->info['back_day'] == 7) {
echo 'selected';
} ?> value="7">Воскресенье
</option>
</select>
Д
<select name="bot_bdd" id="bot_bdd">
<option value="-1">&bull; День</option>
<?php $i = 0;
while ($i < 31) {
$i++; ?>
<option <?php if ($monster->info['back_dd'] == $i) {
echo 'selected';
2023-11-02 13:57:39 +00:00
} ?> value="<?= $i ?>">
<?= $i ?>
</option>
2023-11-02 13:57:39 +00:00
<?php } ?>
</select>
М
<select name="bot_bmm" id="bot_bmm">
<option value="-1">&bull; Месяц</option>
<?php $i = 0;
while ($i < 12) {
$i++; ?>
<option <?php if ($monster->info['back_mm'] == $i) {
echo 'selected';
2023-11-02 13:57:39 +00:00
} ?> value="<?= $i ?>"><?= $i ?></option>
<?php } ?>
</select>
Ч
<select name="bot_bhh" id="bot_bhh">
<option value="-1">&bull; Час</option>
<?php $i = -1;
while ($i < 23) {
$i++; ?>
<option <?php if ($monster->info['back_hh'] == $i) {
echo 'selected';
2023-11-02 13:57:39 +00:00
} ?> value="<?= $i ?>"><?= $i ?></option>
<?php } ?>
</select>
Мин
<select name="bot_bmin" id="bot_bmin">
<option value="-1">&bull; Мин</option>
<?php $i = -1;
while ($i < 58) {
$i++; ?>
<option <?php if ($monster->info['back_min'] == $i) {
echo 'selected';
2023-11-02 13:57:39 +00:00
} ?> value="<?= $i ?>"><?= $i ?></option>
<?php } ?>
</select></td>
</tr>
<tr>
<td>
<div align="left"
style="height:1px; width:300px; background-color:#999999; margin:3px;"></div>
</td>
</tr>
<tr>
<td>Текст появления (Логин бота <b>{b}</b>, Логины игроков <b>{u}</b>):</td>
</tr>
<tr>
<td><input value="<?= $monster->info['start_text'] ?>" name="bot_stext"
type="text" id="bot_stext" size="100" maxlength="250"></td>
</tr>
<tr>
<td>Текст исчезновения:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['back_text'] ?>" name="bot_btext" type="text"
id="bot_btext" size="100" maxlength="250"></td>
</tr>
<tr>
<td>Текст победы игрока:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['win_text'] ?>" name="bot_wintext"
type="text" id="bot_wintext" size="100" maxlength="250"></td>
</tr>
<tr>
<td>Текст поражения игрока:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['lose_text'] ?>" name="bot_losetext"
type="text" id="bot_losetext" size="100" maxlength="250"></td>
</tr>
<tr>
<td>Текст ничьей:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['nich_text'] ?>" name="bot_nichtext"
type="text" id="bot_nichtext" size="100" maxlength="250"></td>
</tr>
<tr>
<td>
<div align="left"
style="height:1px; width:300px; background-color:#999999; margin:3px;"></div>
<b>Награда (победа игрока):</b></td>
</tr>
<tr>
<td>Кр.:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['win_money1'] ?>" name="bot_winmoney1"
type="text" id="bot_winmoney1" size="100" maxlength="17"></td>
</tr>
<tr>
<td>Екр.:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['win_money2'] ?>" name="bot_winmoney2"
type="text" id="bot_winmoney2" size="100" maxlength="10"></td>
</tr>
<tr>
<td>Опыт (За 100% НР монстра):</td>
</tr>
<tr>
<td><input value="<?= $monster->info['win_exp'] ?>" name="bot_winexp" type="text"
id="bot_winexp" size="100" maxlength="17"></td>
</tr>
<tr>
<td>Предметы (id@kolvo@data, ...):</td>
</tr>
<tr>
<td><input value="<?= $monster->info['win_itm'] ?>" name="bot_winitm" type="text"
id="bot_winitm" size="100" maxlength="500"></td>
</tr>
<tr>
<td>Эффект:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['win_eff'] ?>" name="bot_wineff" type="text"
id="bot_wineff" size="100" maxlength="500"></td>
</tr>
<tr>
<td>Подвиги:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['win_ico'] ?>" name="bot_winico" type="text"
id="bot_winico" size="100" maxlength="500"></td>
</tr>
<tr>
<td>
<div style="height:1px; width:300px; background-color:#999999; margin:3px;"></div>
<b>Награда (поражение игрока):</b></td>
</tr>
<tr>
<td>Кр.:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['lose_money1'] ?>" name="bot_losemoney1"
type="text" id="bot_losemoney1" size="100" maxlength="10"></td>
</tr>
<tr>
<td>Екр.:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['lose_money2'] ?>" name="bot_losemoney2"
type="text" id="bot_losemoney2" size="100" maxlength="10"></td>
</tr>
<tr>
<td>Опыт:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['lose_exp'] ?>" name="bot_loseexp"
type="text" id="bot_loseexp" size="100" maxlength="17"></td>
</tr>
<tr>
<td>Предметы:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['lose_itm'] ?>" name="bot_loseitm"
type="text" id="bot_loseitm" size="100" maxlength="500"></td>
</tr>
<tr>
<td>Эффект:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['lose_eff'] ?>" name="bot_loseeff"
type="text" id="bot_loseeff" size="100" maxlength="500"></td>
</tr>
<tr>
<td>Подвиги:</td>
</tr>
<tr>
<td><input value="<?= $monster->info['lose_ico'] ?>" name="bot_loseico"
type="text" id="bot_loseico" size="100" maxlength="500"></td>
</tr>
</table>
<div style="padding-left:120px;">
<input type="submit" value="Сохранить"/>
</div>
2023-11-02 13:57:39 +00:00
<br><br>
</form>
<div style="height:1px; width:300px; background-color:#999999; margin:3px; text-align: center;">
<div onClick="location.href='/info/<?= $inf['id'] ?>'"
style="border:1px solid #999999; cursor:pointer; background-color:#EAEAEA; width:150px; text-align: center; font-size: small">
Скрыть
</div>
2023-11-02 13:57:39 +00:00
</div>
<?php
} else {
?>
<div style="height:1px; width:300px; background-color:#999999; margin:3px; text-align: center;">
<div onClick="location.href='/info/<?= $inf['id'] ?>&emonster'"
style="border:1px solid #999999; cursor:pointer; background-color:#EAEAEA; width:150px; text-align: center; font-size: small;">
Настройка монстра
</div>
</div>
<?php
}
}
//темные делишки :D
if ($inf['align'] != 9 && $u->isModerator() && !$nopal) {
$m = [];
$mults = Db::getRows('select * from mults where (uid = ? or uid2 = ?) and uid != 0 and uid2 != 0', [$inf['id'], $inf['id']]);
foreach ($mults as $mult) {
$usr = $inf['id'] === $mult['uid'] ? $mult['uid2'] : $mult['uid'];
if (empty($usr) || $usr === $inf['id']) {
continue;
}
2023-11-02 13:57:39 +00:00
$m[] = User::getLogin($usr);
}
2023-11-02 13:57:39 +00:00
echo '<div style="color:#828282; margin-top: 20px;">За игроком замечены следующие темные делишки:<br><small><span class=dsc>';
if (!isset($_GET['mod_inf'])) {
echo '<a href="/info/' . $inf['id'] . '&mod_inf">Показать личное дело</a>';
} else {
//Личное дело персонажа
foreach (Delo::getAllByUserId($inf['id']) as $logstr) {
echo date('d.m.Y H:i:s', $logstr['time']) . '&nbsp;' . $logstr['text'] . '<br>';
}
2023-11-02 13:57:39 +00:00
echo '<a href="/info/' . $inf['id'] . '">Скрыть личное дело</a>';
}
echo '</small><br>';
2023-11-02 13:57:39 +00:00
//Информация для паладинов\тарманов\ангелов
2023-11-02 13:57:39 +00:00
if ((int)$inf['host_reg'] >= 1) {
$inf['ref'] = User::getLogin((int)$inf['host_reg']);
2023-11-02 13:57:39 +00:00
} else {
$inf['ref'] = '--';
}
if (!isset($inf['ipReg'])) {
$inf['ipReg'] = '--';
}
2023-11-02 13:57:39 +00:00
echo '<br><span style="color:red; text-decoration: underline; font-weight: bold;">Секретно!</span><br>';
echo 'День рождения: ' . $inf['bithday'] . '<br>';
echo date('Последний вход: d.m.Y H:i', $inf['online']) . '<br>';
echo '<br>';
echo 'Персонажа пригласили: ' . $inf['ref'] . '<br>' .
'IP при регистрации: ' . $inf['ipReg'] . '<br>';
echo 'Текущий IP: ' . $inf['ip'] . '<br>Последние входы:<br>';
$auth = Db::getRows('select ip, time from logs_auth where uid = ? and type = 1 order by id desc', [$inf['id']]);
foreach ($auth as $a) {
$date = date(': d.m.Y H:i', $a['time']);
echo "{$a['ip']}<small><b>$date</b></small><br>";
}
2023-11-02 13:57:39 +00:00
if (!empty($m)) {
echo 'Другие ники этого бойца: ' . implode(', ', $m) . '<br>';
}
2023-11-02 13:57:39 +00:00
$refusers = [];
$invitedByUser = Db::getRows('select ip, ipreg, online, timereg from users where host_reg = ? order by timereg desc', [$inf['id']]);
foreach ($invitedByUser as $refuser) {
$refusers[] = date('Дата регистрации: d.m.Y H:i', $refuser['timereg']) .
DIRECTORY_SEPARATOR .
date('Был тут: d.m.Y H:i ', $refuser['online']) .
User::getLogin($inf['id']) .
2023-11-02 13:57:39 +00:00
"<small>({$refuser['ip']}, {$refuser['ipreg']})</small>";
}
2023-07-11 15:16:35 +00:00
2023-11-02 13:57:39 +00:00
if (!empty($refusers)) {
echo '<hr><b>Рефералы бойца:</b><br>' . implode('<br>', $refusers) . '<hr>';
}
2023-07-11 15:16:35 +00:00
2023-11-02 13:57:39 +00:00
if ($u->isAdmin()) {
$mls = Db::getValue('select count(*) from users_rbk where email = ?', [$inf['mail']]) > 0;
$online = Db::getRow('select time_all, time_today from online where uid = ?', [$inf['id']]);
2023-11-02 13:57:39 +00:00
echo '<div style="color: darkred; margin: 5px 0;">';
echo 'Комната: ' . $inf['room'] . '<br>';
echo 'E-mail: ' . $inf['mail'];
if ($mls) {
echo ' (рассылка)';
}
echo ' &nbsp; & &nbsp; ' . $inf['send'] . '<br>';
echo "<br><button onclick='location.href=\"/info/{$inf['id']}&wipe&sd4={$u->info['nextAct']}\"'>Сбросить характеристики</button><br>";
if (isset($online['time_all'], $online['time_today'])) {
echo 'Время в онлайне (всего): ' . Conversion::secondsToTimeout($online['time_all']) .
'<br>Время в онлайне (сегодня): ' . Conversion::secondsToTimeout($online['time_today']) . '<br>';
}
2023-11-02 13:57:39 +00:00
echo '</div>';
}
2023-11-02 13:57:39 +00:00
$donatedEkr = Db::getValue('select sum(ekr) from pay_operation where uid = ? and good > 1', [$inf['id']]) ?: 0;
echo "Опыт: {$inf['exp']} <br>" .
"Нераспределённые статы: {$inf['ability']} <br>" .
"Кредиты: {$inf['money']}<br>" .
"ЕвроКредиты: {$inf['money2']}<br>" .
"<br><span class='donatedEkr'>Куплено: $donatedEkr екр.</span>";
echo '</div>';
}
?>
2023-11-02 13:57:39 +00:00
</div>
<div>
<img title="<?= $zodiac->getName() ?>" alt="<?= $zodiac->getName() ?>" style="margin-bottom: 25px; padding:5px;" src='<?= $zodiac->getImageLink() ?>'><br>
<a href='/news' target='_blank'>
<img style="padding:5px;" src='<?= Config::img() ?>/i/flag_gray.gif'>
</a>
</div>
<div class="bottom">
<?php if ($inf['info_delete'] == 0 || $u->isModerator()): ?>
<div style="line-height:11pt;">
<hr style="border-color:#999999;">
<h3 style="color:#8f0000">Анкетные данные</h3>
<?php if (!empty($inf['name'])): ?>
<b style="color:#444">Имя:</b> <?= $inf['name']; ?><br>
<?php endif; ?>
<b style="color:#444">Пол:</b>
<?= $inf['sex'] == 0 ? 'Мужской' : 'Женский' ?><br>
<?php if (!empty($inf['hobby'])): ?>
<b style="color:#444">Увлечения / хобби:</b><br>
<?= str_replace("\n", '<br>', $inf['hobby']) ?>
<?php endif; ?>
</div>
<?php endif; ?>
</div>
2022-06-06 21:30:34 +00:00
</div>
</body>
</html>