battles/functions.php

2131 lines
109 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Copyright (c) 2018.
* Author: Igor Barkov <lopar.4ever@gmail.com>
* Project name: Battles-Game
*/
require_once 'config.php';
/**
* Класс-заглушка для работы глобальных переменных в функциях.
* Возвращает массив данных таблицы users.
*/
if (isset($_SESSION['uid'])) $user = (new users_row($_SESSION['uid']))->result();
if (isset($user['id']) && $user['block'] == 1) {
die();
}
// ???
//define("HPADDICTIONEFFECT", 33);
$ip = filter_input(INPUT_SERVER, 'REMOTE_ADDR', FILTER_VALIDATE_IP);
if (isset($_GET['goto']) and isset($_GET['tStamp']) and isset($_GET['vcode'])) {
if ($_GET['vcode'] == md5(sha1($_GET['goto'] . $_GET['tStamp']))) {
db::c()->query('UPDATE `users`,`online` SET `users`.`room` = ?i, `online`.`room` = ?i WHERE `online`.`id` = `users`.`id` AND `online`.`id` = ?i', $_GET['goto'], $_GET['goto'], $_SESSION['uid']);
$user['room'] = intval($_GET['goto']);
}
}
function createbot($bot, $login = "")
{
$rec = db::c()->query('SELECT `id`, `login`, `maxhp` FROM `users` WHERE `id` = "?s" LIMIT 1', $bot)->fetch_assoc();
if (isset($rec['id'])) {
if ($login) {
$rec['login'] = $login;
}
$botname = $rec['login'];
db::c()->query('INSERT INTO `bots` (`name`, `prototype`, `hp`) VALUES ("?s", "?s", "?s")', $botname, $bot, $rec['maxhp']);
$nid = db::c()->getLastInsertId();
return ["id" => $nid, "login" => $botname];
} else {
return false;
}
}
function getuserdata($id = 0)
{
if (!$id) $id = isset($_SESSION['uid']) ? $_SESSION['uid'] : null; // Хорошее решение проверок, кстати.
if (!$id) return [];
$rec = db::c()->query('SELECT `hp`, `maxhp`, `fullhptime`, `battle` FROM `users` WHERE `id` = "?s"', $id)->fetch_assoc();
if ($rec['hp'] < $rec['maxhp'] && time() > $rec['fullhptime'] && !$rec['battle'] && ($rec['hp'] > 0)) {
// regenhp($rec, 0);
if ($rec['hp'] == $rec['maxhp']) {
$rec['hp']--;
}
}
return $rec;
}
if (!isset($user)) {
$user = getuserdata();
}
$var_map = [
'cell_1' => 'Березовая роща', 'cell_2' => 'Березовая просека', 'cell_3' => 'Тёмный угол', 'cell_4' => 'Мрачная опушка',
'cell_5' => 'Тёмное урочище', 'cell_6' => 'Бурелом', 'cell_7' => 'Старая ива', 'cell_8' => 'Разнолесье',
'cell_9' => 'Сосновая тропа', 'cell_10' => 'Забытая дорога', 'cell_11' => 'Новая дорога', 'cell_12' => 'Мщаник',
'cell_13' => 'Ясная поляна', 'cell_14' => 'Заросший тракт', 'cell_15' => 'Смутный ельник', 'cell_16' => 'Сосновый бор',
'cell_17' => 'Тихоход', 'cell_18' => 'Сосновый гай', 'cell_19' => 'Смешаный лес', 'cell_20' => 'Темная поляна',
'cell_21' => 'Осенний угол', 'cell_22' => 'Грибное место', 'cell_23' => 'Опушка', 'cell_24' => 'Рыжий лес',
'cell_25' => 'Полесье'
];
function get_out($u)
{
$pers = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $u . '" LIMIT 1'));
undressall($pers['id']);
mysql_query('UPDATE `inventory` SET `owner` = "' . $pers['id'] . '" WHERE `owner` = "' . ($pers['id'] + _BOTSEPARATOR_) . '"');
###
$row = mysql_query('SELECT * FROM `effects` WHERE `owner` = "' . ($pers['id'] + _BOTSEPARATOR_) . '"');
$travm = [11, 12, 13, 14];
while ($efs = mysql_fetch_array($row)) {
if (in_array($efs['type'], $travm)) {
$pers['sila'] -= $efs['sila'];
$pers['lovk'] -= $efs['lovk'];
$pers['inta'] -= $efs['inta'];
$pers['vinos'] -= $efs['vinos'];
} else {
$pers['sila'] += $efs['sila'];
$pers['lovk'] += $efs['lovk'];
$pers['inta'] += $efs['inta'];
$pers['vinos'] += $efs['vinos'];
$pers['maxhp'] += $efs['hp'];
}
$efs['owner'] = $_SESSION['uid'];
mysql_query('UPDATE `effects` SET `owner` = "' . $efs['owner'] . '" WHERE `id` = "' . $efs['id'] . '" LIMIT 1');
mysql_query('UPDATE `users` SET `sila` = "' . $pers['sila'] . '", `lovk` = "' . $pers['lovk'] . '", `inta` = "' . $pers['inta'] . '", `vinos` = "' . $pers['vinos'] . '", `maxhp` = "' . $pers['maxhp'] . '" WHERE `id` = "' . $pers['id'] . '" LIMIT 1');
}
###
}
function takeshopitem($item, $table = "shop", $present = '', $onlyonetrip = '', $fields = 0, $uid = 0, $koll = 1, $podzem = 0)
{
global $user;
$flds = [];
$goden = '';
if (!$uid) {
$uid = $user['id'];
}
$r = mysql_query("SHOW FIELDS FROM $table");
$r2 = mysql_query("SHOW FIELDS FROM inventory");
while ($rec = mysql_fetch_assoc($r2)) {
$flds[$rec['Field']] = 1;
}
$rec1 = mysql_fetch_array(mysql_query("SELECT * FROM `$table` WHERE `id` = '$item' LIMIT 1"));
if ($rec1['koll']) {
mysql_query("UPDATE `inventory` SET `koll` = (`koll`+$koll), `massa` = (`massa`+" . ($rec1['massa'] * $koll) . "), `cost` = (`cost`+" . $rec1['cost'] . ") WHERE `owner` = '$uid' AND `prototype` = '$item' LIMIT 1");
if (mysql_affected_rows() > 0) return ["img" => $rec1['img'], "name" => $rec1['name']];
$rec1['koll'] = $koll;
$rec1['massa'] *= $koll;
}
if ($rec1['onlyone']) {
$i = mysql_fetch_row(mysql_query("SELECT `id` FROM `inventory` WHERE `owner` = '$uid' AND `prototype` = '$item'"));
if ($i) {
return ["error" => "У вас слишком много таких вещей."];
}
}
if ($present) {
$rec1['present'] = $present;
$rec1['cost'] = 0;
$rec1['ecost'] = 0;
}
$sql = "";
while ($rec = mysql_fetch_assoc($r)) {
if (!$flds[$rec['Field']]) continue;
if ($rec['Field'] == "dategoden") {
$goden = $rec1[$rec['Field']];
}
if ($rec['Field'] == "goden") {
$goden = $rec1[$rec['Field']];
}
if ($rec['Field'] == "id" || $rec['Field'] == "prototype" || $rec['Field'] == "dategoden") continue;
$sql .= ", `$rec[Field]` = '" . $rec1[$rec['Field']] . "' ";
}
if ($podzem) {
$rec1['podzem'] = $podzem;
}
if ($fields['goden']) {
$goden = $fields["goden"];
}
mysql_query("INSERT INTO `inventory` SET " . ($present ? "`present` = '$present'," : "") . ($rec1['podzem'] ? "`podzem` = '$rec1[podzem]'," : "") . " `owner` = '$uid', `otdel` = $rec1[razdel] , `prototype` = '$item' " . ($onlyonetrip ? ", `foronetrip` = 1" : "") . ($goden ? ", `dategoden` = '" . ($goden * 60 * 60 * 24 + time()) . "'" : "") . " $sql");
return ["img" => $rec1['img'], "name" => $rec1['name'], "id" => mysql_insert_id()];
}
define('_BOTSEPARATOR_', 10000000);
header("Cache-Control: no-cache");
function level_up($uid)
{
global $exptable;
$us = db::c()->query('SELECT `id`, `login`, `level`, `money`, `exp`, `vinos`, `nextup`, `stats`, `master`, `maxhp`, `ip`, `in_tower` FROM `users` WHERE `id` =?i', $uid)->fetch_assoc();
if (isset($us['id'])) {
if ($us['exp'] >= $us['nextup'] && !$us['in_tower']) {
if ($exptable[$us['nextup']][4] == 1) {
addch("Персонаж <b>{$us['login']}</b> перешел на " . ($us['level'] + 1) . " уровень.");
addchp('<span class=\'success\'>Внимание!</span> Вы перешли на новый уровень. За это Вы получаете: ' . $exptable[$us['nextup']][3] . ' кр.', '{[]}' . $us['login'] . '{[]}');
} elseif ($exptable[$us['nextup']][4] == 0) {
addchp('<span class=\'success\'>Внимание!</span> Вы перешли на новый АП. За это Вы получаете: ' . $exptable[$us['nextup']][3] . ' кр.', '{[]}' . $us['login'] . '{[]}');
}
$us['nextup'] = $exptable[$us['nextup']][5];
$us['stats'] += $exptable[$us['nextup']][0];
$us['master'] += $exptable[$us['nextup']][1];
$us['vinos'] += $exptable[$us['nextup']][2];
$us['maxhp'] += ($exptable[$us['nextup']][2] * 6);
$us['money'] += $exptable[$us['nextup']][3];
db::c()->query('UPDATE `users` SET `nextup` = ?i, `stats` = ?i, `master` = ?i, `vinos` = ?i, `maxhp` = ?i, `money` = ?i, `level` = ?i WHERE `id` = ?i', $us['nextup'], $us['stats'], $us['master'], $us['vinos'], $us['maxhp'], $us['money'], $us['level'], $us['id']);
}
}
}
######## FIXME ВЕЧНЫЕ 12-ТКИ!!!!!!!!!!!!
if (isset($_SESSION['uid']))
$in_user = db::c()->query('SELECT `id`, `exp`, `nextup`, `level` FROM `users` WHERE `id` = ?i', $_SESSION['uid'])->fetch_assoc();
if (isset($in_user['id']) && ($in_user['exp'] >= $in_user['nextup']) && $in_user['level'] < 13) {
level_up($in_user['id']);
}
########
function savecavedata($cavedata, $caveleader, $floor)
{
$f1 = fopen("cavedata/$caveleader-$floor.dat", "wb+");
flock($f1, LOCK_EX);
fwrite($f1, serialize($cavedata));
flock($f1, LOCK_UN);
fclose($f1);
}
function topsethp()
{
global $user;
if ($user['hp'] >= $user['maxhp'] || $user['battle']) {
return "top.setHP($user[hp], $user[maxhp], 0)";
}
$fulltime = timetoheals($user);
$delay = round(1 / ($user['maxhp'] / $fulltime) * 1000);
return "top.setHP($user[hp], $user[maxhp], $delay);";
}
function nick($user)
{
$r = '';
if ($user['align'] > 0) {
$al = $user['align'];
} else {
$al = 0;
}
if ($user['klan'] != '') {
$cl = '<img title="' . ClanImage($user['klan']) . '" src="i/klan/' . ClanImage($user['klan']) . '.gif" />';
} else {
$cl = '';
}
$r .= '<div id="HP"><img src="i/align_' . $al . '.gif" />' . $cl . '';
$r .= '<b>' . $user['login'] . '</b> [' . $user['level'] . '] <a href="inf.php?' . $user['id'] . '" target="_blank"><img src="i/inf.gif" width="12" height="11" /></a>';
$r .= ' <img src="i/herz.gif" width="10" height="10" /> <img src="i/1green.gif" width="' . (150 * ($user['hp'] / $user['maxhp'])) . '" height="10" name="HP1" /><img src="i/1silver.gif" width="' . (150 - 150 * ($user['hp'] / $user['maxhp'])) . '" height="10" name="HP2" />: <span id=\'hp_value\'>' . $user['hp'] . '</span>/' . $user['maxhp'] . '</div>';
$r .= '';
return $r;
}
function nick4($id, $st)
{
$user = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id` = '{$id}' LIMIT 1"));
if ($user[0]) {
$effect = mysql_fetch_array(mysql_query("SELECT `time` FROM `effects` WHERE `owner` = '{$id}' AND `type` = '1022' LIMIT 1"));
if ($effect) {
$user['level'] = '??';
$user['login'] = '</a><b><i>невидимка</i></b>';
$user['align'] = '0';
$user['klan'] = '';
$user['id'] = '';
$user['hp'] = '??';
$user['maxhp'] = '??';
}
return "<span onclick=\"top.AddTo('" . $user['login'] . "')\" oncontextmenu=\"return OpenMenu(event," . $user['level'] . ")\" class={$st}>" . $user['login'] . "</span> [" . $user['hp'] . "/" . $user['maxhp'] . "]";
}
}
function check_proc($u)
{
$r = 100;
$usr = mysql_fetch_array(mysql_query('SELECT `id`, `vip`, `vip_time` FROM `users` WHERE `id` = "' . $u . '" LIMIT 1'));
if ($usr['vip_time'] > time()) {
if ($usr['vip'] == 1) {
$r += 10;
} elseif ($usr['vip'] == 2) {
$r += 15;
} elseif ($usr['vip'] == 3) {
$r += 20;
}
}
$effes = mysql_fetch_array(mysql_query('SELECT SUM(`proc_exp`) AS `sums` FROM `effects` WHERE `owner` = "' . $usr['id'] . '" AND `proc_exp` > 0'));
if ($effes['sums'] > 0) {
$r += $effes['sums'];
}
return $r;
}
function ClanImage($clan_id)
{
$clanimg = db::c()->query('SELECT `short` FROM `clans` WHERE `id` = ?i ', $clan_id)->fetch_assoc();
if ($clanimg['short']) {
return $clanimg['short'];
} else {
return "1x1";
}
}
function GiveExp($id, $exp)
{
mysql_query("UPDATE `users` SET `exp` = (`exp`+'" . $exp . "') WHERE `id` = '" . $id . "' LIMIT 1");
}
function GiveRep($id, $rep)
{
mysql_query("UPDATE `users` SET `doblest` = (`doblest`+$rep), `rep_laba` = (`rep_laba`+$rep) WHERE `id` = '" . $id . "' LIMIT 1");
}
// полоска НР
function setHP($hp, $maxhp)
{
$rr = '';
if ($hp < $maxhp * 0.33) {
$polosa = 'i/1red.gif';
} elseif ($hp < $maxhp * 0.66) {
$polosa = 'i/1yellow.gif';
} else {
$polosa = 'i/1green.gif';
}
$rr .= "<IMG SRC=i/herz.gif WIDTH=10 HEIGHT=10 ALT=\"Уровень жизни\"><IMG SRC='{$polosa}' WIDTH=";
$rr .= (122 * ($hp / $maxhp));
$rr .= ' HEIGHT=10 ALT="Уровень жизни" name=HP1 id=HP1><IMG SRC=i/1silver.gif WIDTH=';
$rr .= (122 - 122 * ($hp / $maxhp));
$rr .= ' HEIGHT=10 ALT="Уровень жизни" name=HP2 id=HP2>';
$rr .= '<span id=\'hp_value\'>' . $hp . '/' . $maxhp . '</span>';
return $rr;
}
/**
* @param $current
* @param $maximum
*/
function showProgressBar($current, $maximum, $line_color = 'limegreen', $bg_color = 'silver')
{
$bar = round($current / $maximum * 100);
$output = <<<HTML
<div style="width: 100%; height: 16px; background: $bg_color; overflow: hidden; border-radius: 3px;">
<div style="height: 16px; background: $line_color; border-radius: 3px; width: $bar%;"></div>
</div>
<div style="width: 100%; height: 16px; font-size: 14px; text-align: center; margin-top: -16px;">
$current / $maximum
</div>
HTML;
return $output;
}
function echoscroll($slot)
{
global $user;
if ($user['battle']) {
$script = 'fbattle';
} else {
$script = 'main';
}
$all_magic = 0;
if ($user['battle'] > 0) {
$bat = db::c()->query('SELECT `magic` FROM `battle` WHERE `id` = ?i', $user['battle'])->fetch_assoc();
$all_magic = unserialize($bat['magic']);
}
$dress = db::c()->query('SELECT `id`, `magic`, `name`, `img`, `duration`, `maxdur` FROM `inventory` WHERE `id` = ?i', $user[$slot])->fetch_assoc();
$need_charge = db::c()->query('SELECT `needcharge` FROM `magic` WHERE `id` = ?i', $dress['magic'])->fetch_assoc();
if (($user[$slot] > 0) && ($all_magic[$user['id']] < 1 || $need_charge['needcharge'] == 0)) {
$row['id'] = $user[$slot];
if ($dress['magic']) {
$magic = db::c()->query('SELECT * FROM `magic` WHERE `id` = ?i', $dress['magic'])->fetch_assoc();
echo "<a onclick=\"";
if ($magic['targeted'] == 1) {
echo "okno('Введите название предмета', '" . $script . ".php?use={$row['id']}', 'target'); ";
} else
if ($magic['targeted'] == 2) {
echo "findlogin('Введите имя персонажа', '" . $script . ".php?use={$row['id']}', 'target'); ";
} else {
echo "if(confirm('Использовать сейчас?')) { window.location='" . $script . ".php?use=" . $row['id'] . "';}";
}
echo "\"href='#'>";
}
echo '<img class=\'tooltip\' src="i/sh/' . $dress['img'] . '" width=\'40\' title="<b>' . $dress['name'] . '</b><br /> Прочность ' . $dress['duration'] . '/' . $dress['maxdur'] . '" height=\'25\' /></a>';
} elseif (($user[$slot] > 0) && ($all_magic[$user['id']] >= 1) && $need_charge['needcharge'] > 0) {
echo "<img src=\"i/sh/magicclock.gif\" width=\"40\" height=\"25\" title='Произведите размен ударами и магия снова станет доступна' />";
} else {
echo "<img class=\"tooltip\" src=\"i/w13.gif\" width=\"40\" height=\"25\" title='<b>Пустой слот магия</b>' />";
}
}
// ссылка на магию
function showhrefmagic($dress)
{
$user = db::c()->query('SELECT `battle` FROM `users` WHERE `id` = ?i', $_SESSION['uid'])->fetch_assoc();
$magic = db::c()->query('SELECT * FROM `magic` WHERE `id` = ?i', $dress['includemagic'])->fetch_assoc();
$r = '';
$script = 'main';
if ($user['battle']) $script = 'fbattle';
$r .= "<a onclick=\"";
if ($magic['targeted'] == 1) {
$r .= "okno('Введите название предмета', '{$script}.php?use={$dress['id']}', 'target')";
} elseif ($magic['targeted'] == 2) {
$r .= "findlogin('" . $magic['name'] . "', '{$script}.php?use={$dress['id']}', 'target')";
} else {
$r .= "if (confirm('Использовать сейчас?')) window.location='" . $script . ".php?use=" . $dress['id'] . "';";
}
$r .= "\"href='#'>";
$r .= "<img src=\"i/sh/{$dress['img']}\" style=\"filter:shadow(color=red, direction=90, strength=3);\" title=\"" . $dress['name'] . (($dress['text'] != null) ? "<br />На оружии выгравировано '{$dress['text']}'" : "") . "\"><br>";
return $r;
}
function timeOut($ttm)
{
$out = '';
$time_still = $ttm;
$tmp = floor($time_still / 2592000);
$id = 0;
if ($tmp > 0) {
$id++;
if ($id < 3) {
$out .= $tmp . " мес. ";
}
$time_still = $time_still - $tmp * 2592000;
}
$tmp = floor($time_still / 86400);
if ($tmp > 0) {
$id++;
if ($id < 3) {
$out .= $tmp . " дн. ";
}
$time_still = $time_still - $tmp * 86400;
}
$tmp = floor($time_still / 3600);
if ($tmp > 0) {
$id++;
if ($id < 3) {
$out .= $tmp . " ч. ";
}
$time_still = $time_still - $tmp * 3600;
}
$tmp = floor($time_still / 60);
if ($tmp > 0) {
$id++;
if ($id < 3) {
$out .= $tmp . " мин. ";
}
}
if ($out == '') {
if ($time_still < 0) {
$time_still = 0;
}
$out = $time_still . ' сек.';
}
return $out;
}
function show_eff_inf($u, $type)
{
$img = [
1 => "travma.gif", 2 => "magic/sleep.gif", 3 => "magic/sleepf.gif", 4 => "magic/haos.gif",
5 => "magic/obezl.gif", 6 => "expx15.gif", 7 => "euphoria.png", 8 => "sleep_obj.gif",
10 => "magic/chains.gif", 11 => "travma.gif", 12 => "travma.gif", 13 => "travma.gif",
14 => "travma.gif", 20 => "check.gif", 21 => "magic/al_neut_power.gif", 22 => "magic/fist_def.gif",
201 => "magic/defence.gif", 202 => "magic/devastate.gif", 203 => "magic/spell_luck.gif", 215 => "magic/wis_air_def1.gif",
216 => "magic/wis_air_def2.gif", 217 => "magic/wis_air_def3.gif", 218 => "magic/wis_earth_def1.gif", 219 => "magic/wis_earth_def2.gif",
220 => "magic/wis_earth_def3.gif", 221 => "magic/wis_fire_def1.gif", 222 => "magic/wis_fire_def2.gif", 223 => "magic/wis_fire_def3.gif",
224 => "magic/wis_water_def1.gif", 225 => "magic/wis_water_def2.gif", 226 => "magic/wis_water_def3.gif", 227 => "magic/attack_defence.gif",
1022 => "sh/hidden.gif"
];
$r = '';
$and = '';
$adds = '';
if ($type == 1) {
$and = " AND `type` != 1022";
}
$effs = db::c()->query('SELECT * FROM `effects` WHERE `type` <> 20 AND `owner` = ?i' . $and, $u)->fetch_assoc();
/* FIXME Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 132644820 bytes) in /home/combats/web/combats.loc/public_html/functions.php on line 873
* Если на человеке стоит type=20
*
*/
$etype = $effs['type'];
if ($type == 1) {
while ($effs) {
if ($etype == 11 || $etype == 12 || $etype == 13 || $etype == 14) {
if ($etype == 11) {
$adds = 'Легкая ';
} elseif ($etype == 12) {
$adds = 'Средняя ';
} elseif ($etype == 13) {
$adds = 'Тяжелая ';
} elseif ($etype == 14) {
$adds = 'Неизлечимая ';
} else {
$adds = '';
}
} else {
$adds = '';
}
$r .= '<div>';
$r .= '<img class="image" src="/i/{$img[$etype]}">';
$r .= '<span class="title">' . $adds . $effs['name'] . '</span>';
if ($effs['sleep'] != 0) {
$r .= '<div class="timeleft">Эффект заморожен</div>';
} else {
$r .= '<div class="timeleft">' . timeOut($effs['time'] - time()) . '</div>';
}
$r .= '</div>';
}
} else {
while ($effs) {
$r .= '<div>';
$r .= '<img class="image" src="/i/' . $img[$etype] . '" /> <a href=\'main.php?edit=1&del=1&efid=' . $effs['id'] . '\' onclick=\'return confirm("Удалить ' . $adds . $effs['name'] . '?")\'><img src=\'i/clear.gif\' style=\'float: right;\' /></a>';
$r .= '<span class="title">' . $adds . $effs['name'] . '</span>';
if ($effs['sleep'] != 0) {
$r .= '<div class="timeleft">Эффект заморожен</div>';
} else {
$r .= '<div class="timeleft">' . timeOut($effs['time'] - time()) . '</div>';
}
$r .= '</div>';
}
}
return $r;
}
function timetoheals($user)
{
$efs = mysql_fetch_array(mysql_query('SELECT SUM(`speed`) AS `speed` FROM `effects` WHERE `owner` = "' . $user['id'] . '" LIMIT 1'));
$efs['speed'] += 0;
if ($efs['speed'] > 0) {
$fulltime = $efs['speed'] * 2000;
} else {
$fulltime = 2000;
}
return $fulltime;
}
/**
* Функция отображения персонажа для других персонажей везде и для себя в бою.
*
* @param $id
* @param int $battle - в бою ли персонаж
* @param int $me - на себя ли я смотрю
*
* @return string
*/
function showinf_pers($id, $battle = 0, $me = 0) //FIXME 37 запросов! ТРИДЦАТЬ СЕМЬ! Чтобы отобразить предметы на персонаже.
{
global $rooms;
$r = '';
$user = db::c()->query('SELECT * FROM `users` WHERE `id` = ?i', $id)->fetch_assoc();
function item($image, $bg_color = '#AAA', $border_color = '#EEE')
{
return '<img src="' . $image . '" style="width: 48px; height: 48px; border-radius: 5px; border: 1px solid rgba(0, 0, 0, 0.25);
padding: 7px; display: inline-block; background-repeat: no-repeat;
background-color: ' . $bg_color . '; background-image: radial-gradient(circle, ' . $border_color . ', ' . $bg_color . ');">';
}
if ($id > _BOTSEPARATOR_) {
// Если ID большой, берём бота из базы ботов, подставляем имя и здоровье из прототипа в юзерах.
$bots = db::c()->query('SELECT `name`, `hp` FROM `bots` WHERE `id` = ?i', $id)->fetch_assoc();
$user = db::c()->query('SELECT * FROM `users` WHERE `id` = (SELECT `prototype` FROM `bots` WHERE `bots`.`id` = ?i)', $id)->fetch_assoc();
$user['login'] = $bots['name'];
$user['hp'] = $bots['hp'];
} else {
$invis = $user['invis'];
}
if ($invis and $user['id'] != $_SESSION['uid']) {
$r = <<<HTML
<div style="text-align: center;">
<b><i>невидимка</i></b><br><br><img src="i/shadow/0.gif">
</div>
<td style="width: 100%; vertical-align: top;">
HTML;
} else {
$r .= '<div style="text-align: center">';
if (!empty($user['align'])) $r .= "<img src='/i/align_{$user['align']}.gif' > ";
if ($user['block']) $r .= "<span class='private'><s>{$user['login']}</s></span>";
else $r .= "<b>$user[login]</b> ";
if (!empty($user['klan'])) $r .= "<img src='/i/klan/" . ClanImage($user['klan']) . ".gif' > ";
$r .= '</div>';
$r .= showProgressBar($user['hp'], $user['maxhp']);
$r .= "<table style='width: 100%; text-align: center;'>";
$r .= '<tr><td width=62 valign=top><table width=100%><tr><td>';
if ($user['sergi'] > 0) {
$dress = db::c()->query('SELECT `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $user['sergi'])->fetch_assoc();
if ($dress['includemagicdex'] && ($battle && $me)) {
$r .= showhrefmagic($dress);
} else {
$r .= '<img class="tooltip" src="i/sh/' . $dress['img'] . '" width=60 height=20 title="<b>' . $dress['name'] . "</b>" . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "") . '" />';
}
} else {
#$r .= '<img src="i/w1.gif" width="60" height="20" class="tooltip" title="Пустой слот Серьги" />';
$r .= item('i/1x1.gif');
}
$r .= '</td></tr><tr><td>';
if ($user['kulon'] > 0) {
$dress = db::c()->query('SELECT `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $user['kulon'])->fetch_assoc();
if ($dress['includemagicdex'] && ($battle && $me)) {
$r .= showhrefmagic($dress);
} else {
$r .= '<img class="tooltip" src="i/sh/' . $dress['img'] . '" width=60 height=20 title="<b>' . $dress['name'] . "</b>" . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "") . '" />';
}
} else {
#$r .= '<img src="i/w2.gif" width=60 height=20 class="tooltip" title="Пустой слот Ожерелье" />';
$r .= item('i/1x1.gif');
}
$r .= '</td></tr><tr><td>';
if ($user['weap'] > 0) {
$dress = db::c()->query('SELECT `minu`, `maxu`, `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $user['weap'])->fetch_assoc();
if ($dress['includemagicdex'] && ($battle && $me)) {
$r .= showhrefmagic($dress);
} else {
$r .= '<img class="tooltip" src="i/sh/' . $dress['img'] . '" width=60 height=60 title="<b>' . $dress['name'] . "</b>" . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "") . '" />';
}
} else {
#$r .= '<img class=\'tooltip\' src="i/w3.gif" width=60 height=60 title="Пустой слот Оружие" />';
$r .= item('i/1x1.gif');
}
$r .= '</td></tr><tr><td>';
if ($user['bron'] > 0 || $user['rybax'] > 0 || $user['plaw'] > 0) {
$title = '';
$d = '';
if ($user['plaw']) {
$d = $user['plaw'];
if ($user['bron']) {
$dress = db::c()->query('SELECT `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $user['bron'])->fetch_assoc();
$title .= '<br />--------------------<br /><b>' . $dress['name'] . '</b>' . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "");
}
if ($user['rybax']) {
$dress = db::c()->query('SELECT `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $user['rybax'])->fetch_assoc();
$title .= '<br />--------------------<br /><b>' . $dress['name'] . '</b>' . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "");
}
} elseif ($user['bron']) {
$d = $user['bron'];
if ($user['rybax']) {
$dress = db::c()->query('SELECT `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $user['rybax'])->fetch_assoc();
$title .= '<br />--------------------<br /><b>' . $dress['name'] . '</b>' . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "");
}
} elseif ($user['rybax']) {
$d = $user['rybax'];
}
$dress = db::c()->query('SELECT `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $d)->fetch_assoc();
if ($dress['includemagicdex'] && $battle && $me) {
$r .= showhrefmagic($dress);
} else {
$r .= '<img class="tooltip" src="i/sh/' . $dress['img'] . '" width=60 height=80 title="<b>' . $dress['name'] . "</b>" . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "") . '" />';
}
} else {
#$r .= '<img class=\'tooltip\' src="i/w4.gif" width=60 height=80 title="Пустой слот Броня" />';
$r .= item('i/1x1.gif');
}
$r .= '</td></tr>';
$r .= '</table></td>';
$r .= '<td valign=top><img src="i/shadow/' . $user['shadow'] . '" width="96" height="270" onerror=" this.src = \'i/shadow/0.gif\';"></td><td width="62" valign=top><table width=100%><tr><td>';
if ($user['helm'] > 0) {
$dress = db::c()->query('SELECT `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $user['helm'])->fetch_assoc();
if ($dress['includemagicdex'] && ($battle && $me)) {
$r .= showhrefmagic($dress);
} else {
$r .= '<img class="tooltip" src="i/sh/' . $dress['img'] . '" width=60 height=60 title="<b>' . $dress['name'] . "</b>" . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "") . '" />';
}
} else {
#$r .= '<img class=\'tooltip\' src="i/w9.gif" width=60 height=60 title="Пустой слот Шлем" />';
$r .= item('i/1x1.gif');
}
$r .= '</td></tr><tr><td>';
if ($user['perchi'] > 0) {
$dress = db::c()->query('SELECT `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $user['perchi'])->fetch_assoc();
if ($dress['includemagicdex'] && ($battle && $me)) {
$r .= showhrefmagic($dress);
} else {
$r .= '<img class="tooltip" src="i/sh/' . $dress['img'] . '" width=60 height=40 title="<b>' . $dress['name'] . "</b>" . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "") . '" />';
}
} else {
#$r .= '<img class=\'tooltip\' src="i/w11.gif" width=60 height=40 alt="Пустой слот Перчатки" />';
$r .= item('i/1x1.gif');
}
$r .= '</td></tr><tr><td>';
if ($user['shit'] > 0) {
$dress = db::c()->query('SELECT `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $user['shit'])->fetch_assoc();
if ($dress['includemagicdex'] && ($battle && $me)) {
$r .= showhrefmagic($dress);
} else {
$r .= '<img class="tooltip" src="i/sh/' . $dress['img'] . '" width=60 height=60 title="<b>' . $dress['name'] . "</b>" . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "") . '" />';
}
} else {
#$r .= '<img class=\'tooltip\' src="i/w10.gif" width=60 height=60 title="Пустой слот Щит" />';
$r .= item('i/1x1.gif');
}
$r .= '</td></tr><tr><td>';
if ($user['boots'] > 0) {
$dress = db::c()->query('SELECT `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $user['boots'])->fetch_assoc();
if ($dress['includemagicdex'] && ($battle && $me)) {
$r .= showhrefmagic($dress);
} else {
$r .= '<img class="tooltip" src="i/sh/' . $dress['img'] . '" width=60 height=40 title="<b>' . $dress['name'] . "</b>" . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "") . '" />';
}
} else {
#$r .= '<img class=\'tooltip\' src="i/w12.gif" width=60 height=40 title="Пустой слот Oбувь" />';
$r .= item('i/1x1.gif');
}
$data = db::c()->query('SELECT * FROM `online` WHERE `date` >= ?i AND `id` = ?i', time() - 60, $user['id'])->fetch_assoc();
$r .= '</td></tr></table></td></tr></table>';
$r .= '<div style="text-align: center">';
// TODO Не забыть включить отображение всплывашки с названием предмета!
if ($user['r1'] > 0) {
$dress = db::c()->query('SELECT `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $user['r1'])->fetch_assoc();
if ($dress['includemagicdex'] && ($battle && $me)) {
$r .= showhrefmagic($dress);
} else {
#$r .= '<img class="tooltip" src="i/sh/' . $dress['img'] . '" width=20 height=20 title="<b>' . $dress['name'] . "</b>" . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "") . '" />';
$r .= item('i/sh/' . $dress['img']) . " ";
}
} else {
#$r .= '<img class=\'tooltip\' src="i/w6.gif" width=20 height=20 title="Пустой слот Кольцо" />';
$r .= item('i/1x1.gif') . " ";
}
if ($user['r2'] > 0) {
$dress = db::c()->query('SELECT `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $user['r2'])->fetch_assoc();
if ($dress['includemagicdex'] && ($battle && $me)) {
$r .= showhrefmagic($dress);
} else {
#$r .= '<img class="tooltip" src="i/sh/' . $dress['img'] . '" width=20 height=20 title="<b>' . $dress['name'] . "</b>" . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "") . '" />';
$r .= item('i/sh/' . $dress['img']) . " ";
}
} else {
#$r .= '<img class=\'tooltip\' src="i/w6.gif" width=20 height=20 title="Пустой слот Кольцо" />';
$r .= item('i/1x1.gif') . " ";
}
if ($user['r3'] > 0) {
$dress = db::c()->query('SELECT `name`, `img`, `duration`, `maxdur`, `ghp`, `text`, `includemagicdex` FROM `inventory` WHERE `id` = ?i', $user['r3'])->fetch_assoc();
if ($dress['includemagicdex'] && ($battle && $me)) {
$r .= showhrefmagic($dress);
} else {
#$r .= '<img class="tooltip" src="i/sh/' . $dress['img'] . '" width=20 height=20 title="<b>' . $dress['name'] . "</b>" . ((!empty($dress['text'])) ? "<br><i>{$dress['text']}</i>" : "") . '" />';
$r .= item('i/sh/' . $dress['img']) . " ";
}
} else {
#$r .= '<img class=\'tooltip\' src="i/w6.gif" width=20 height=20 title="Пустой слот Кольцо" />';
$r .= item('i/1x1.gif') . " ";
}
$r .= '</div>';
$r .= '<center><table cellPadding=0 cellSpacing=0 width="100%"><tbody>';
if (!$battle) {
$r .= '<tr><td align=middle colSpan=2><b><small>' . GAMEDOMAIN . '</small></b></td></tr><tr><td colSpan=2>';
if ($data['id'] != null && $user['id'] != 326) {
if ($data['room'] > 500 && $data['room'] < 561) {
$rrm = 'Башня смерти, участвует в турнире';
} else {
$rrm = $rooms[$data['room']];
}
$r .= '<center>Персонаж сейчас находится в игре.<b>"' . $rrm . '"</b></center>';
} else {
$r .= "<center>Персонаж не в игре.</center>";
}
if ($user['battle'] > 0 && $user['invis'] == 0) {
$r .= '<br />Персонаж сейчас в <a target="_blank" href="logs.php?log=' . $user['battle'] . '">поединке</a>';
}
$r .= '</center>';
$r .= '<div class="effectList" style="padding-top: 15px;">';
$r .= show_eff_inf($user['id'], 1);
$r .= '</div></td></tr>';
$r .= '</tbody></table></center></td>';
$r .= '<td valign=top>';
$r .= 'Сила: ' . $user['sila'] . '<br>';
$r .= 'Ловкость: ' . $user['lovk'] . '<br>';
$r .= 'Интуиция: ' . $user['inta'] . '<br>';
$r .= 'Выносливость: ' . $user['vinos'] . '<br>';
$r .= 'Интеллект: ' . $user['intel'] . '<br>';
$r .= 'Мудрость: ' . $user['mudra'] . '<br>';
$r .= '<hr style=\'width: 50%; float: left;\' /><br />';
$r .= 'Уровень: ' . $user['level'] . '<br>';
$r .= 'Побед: <span>' . $user['win'] . '</span><br>';
$r .= 'Поражений: <span>' . $user['lose'] . '</span><br>';
$r .= 'Ничьих: <span>' . $user['nich'] . '</span><br>';
if ($user['klan']) {
$clann = db::c()->query('SELECT `name`, `glava` FROM `clans` WHERE `id` = ?i', $user['klan'])->fetch_assoc();
$r .= $clann['name'];
if ($clann['glava'] == $user['id']) $r .= " - <span style='color:teal;'>Глава клана</span><br>";
elseif (!empty($user['status'])) $r .= " - " . $user['status'] . "<br>";
}
if ($user['borntime']) {
$date1 = explode(" ", $user['borntime']);
$date2 = explode("-", $date1[0]);
$date3 = "" . $date2[2] . "-" . $date2[1] . "-" . $date2[0] . "";
$r .= 'День рождения персонажа: ' . $date3 . '<br>';
}
if ($user['palcom']) $r .= "<br><span class=private>{$user['palcom']}</span>";
$r .= '<hr />';
} else {
$r .= '<tr><td colSpan=2 style="padding-left: 25px;">';
$r .= 'Сила: ' . $user['sila'] . '<br>';
$r .= 'Ловкость: ' . $user['lovk'] . '<br>';
$r .= 'Интуиция: ' . $user['inta'] . '<br>';
$r .= 'Выносливость: ' . $user['vinos'] . '<br>';
$r .= 'Интеллект: ' . $user['intel'] . '<br>';
$r .= 'Мудрость: ' . $user['mudra'] . '<br>';
$r .= '</td></tr></table>';
}
}
return $r;
}
/**
* Смотрим на себя в главном окне игры.
*
* @param int $pas
*/
function showpersout($pas = 0) //FIXME Сделать по человечески!
{
global $user;
echo '<CENTER>';
nick::id($user['id'])->full();
if ($user['block']) {
echo "<br><span class=private>Персонаж заблокирован!</span>";
}
?>
<table class="allzeroes">
<tr>
<TD colspan=3>
<?= setHP($user['hp'], $user['maxhp']) ?>
</td>
</tr>
<?php if (($user['level'] > 3) && !$pas): ?>
<TR>
<TD colspan=3>
<?php
echoscroll('m1');
echoscroll('m2');
echoscroll('m3');
echoscroll('m4');
echoscroll('m5');
?>
</TD>
</TR>
<TR>
<TD colspan=3>
<?php
echoscroll('m6');
echoscroll('m7');
echoscroll('m8');
echoscroll('m9');
echoscroll('m10');
?>
</TD>
</TR>
<? endif; ?>
<TR>
<TD style="width: 62px;">
<TABLE class="allzeroes">
<TR>
<TD><?php
if ($user['sergi'] > 0) {
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $user['sergi'])->fetch_assoc();
if ($dress['includemagicdex'] && !$pas) {
echo showhrefmagic($dress);
} else {
echo '<img class=\'tooltip\' ' . ((($dress['maxdur'] - 2) <= $dress['duration'] && $dress['duration'] > 2 && !$pas) ? " style='background-image:url(i/blink.gif);' " : "") . ' src="i/sh/' . $dress['img'] . '" width=60 height=20 title="<b>' . $dress['name'] . "</b><br />Прочность " . $dress['duration'] . "/" . $dress['maxdur'] . "" . "" . (($dress['ghp'] > 0) ? "<br />Уровень жизни " . plusorminus($dress['ghp']) : "") . (($dress['text'] != null) ? "<br />На серьгах выгравировано '{$dress['text']}'" : "") . (($dress['gsila'] != 0) ? "<br />Сила " . plusorminus($dress['gsila']) : "") . (($dress['glovk'] != 0) ? "<br />Ловкость " . plusorminus($dress['glovk']) : "") . (($dress['ginta'] != 0) ? "<br />Интуиция " . plusorminus($dress['ginta']) : "") . (($dress['gintel'] != 0) ? "<br />Интеллект " . plusorminus($dress['gintel']) : "") . (($dress['bron1'] != 0) ? "<br />Броня головы: " . plusorminus($dress['bron1']) : "") . (($dress['bron2'] != 0) ? "<br />Броня корпуса: " . plusorminus($dress['bron2']) : "") . (($dress['bron3'] != 0) ? "<br />Броня пояса: " . plusorminus($dress['bron3']) : "") . (($dress['bron4'] != 0) ? "<br />Броня ног: " . plusorminus($dress['bron4']) : "") . '" />';
}
} else {
echo '<img src="i/w1.gif" width=60 height=20 class="tooltip" title="Пустой слот Серьги" />';
}
?></TD>
</TR>
<TR>
<TD><?php
if ($user['kulon'] > 0) {
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $user['kulon'])->fetch_assoc();
if ($dress['includemagicdex'] && !$pas) {
echo showhrefmagic($dress);
} else {
echo '<img class=\'tooltip\' ' . ((($dress['maxdur'] - 2) <= $dress['duration'] && $dress['duration'] > 2 && !$pas) ? " style='background-image:url(i/blink.gif);' " : "") . ' src="i/sh/' . $dress['img'] . '" width=60 height=20 title="<b>' . $dress['name'] . "</b><br />Прочность " . $dress['duration'] . "/" . $dress['maxdur'] . "" . "" . (($dress['ghp'] > 0) ? "<br />Уровень жизни " . plusorminus($dress['ghp']) : "") . (($dress['text'] != null) ? "<br />На ожерелье выгравировано '{$dress['text']}'" : "") . (($dress['gsila'] != 0) ? "<br />Сила " . plusorminus($dress['gsila']) : "") . (($dress['glovk'] != 0) ? "<br />Ловкость " . plusorminus($dress['glovk']) : "") . (($dress['ginta'] != 0) ? "<br />Интуиция " . plusorminus($dress['ginta']) : "") . (($dress['gintel'] != 0) ? "<br />Интеллект " . plusorminus($dress['gintel']) : "") . (($dress['bron1'] != 0) ? "<br />Броня головы: " . plusorminus($dress['bron1']) : "") . (($dress['bron2'] != 0) ? "<br />Броня корпуса: " . plusorminus($dress['bron2']) : "") . (($dress['bron3'] != 0) ? "<br />Броня пояса: " . plusorminus($dress['bron3']) : "") . (($dress['bron4'] != 0) ? "<br />Броня ног: " . plusorminus($dress['bron4']) : "") . '" />';
}
} else {
echo '<img src="i/w2.gif" width=60 height=20 class="tooltip" title="Пустой слот Ожерелье" />';
}
?></TD>
</TR>
<TR>
<TD><?php
if ($user['weap'] > 0) {
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $user['weap'])->fetch_assoc();
if ($dress['includemagicdex'] && !$pas) {
echo showhrefmagic($dress);
} else {
echo '<img class=\'tooltip\' ' . ((($dress['maxdur'] - 2) <= $dress['duration'] && $dress['duration'] > 2 && !$pas) ? " style='background-image:url(i/blink.gif);' " : "") . ' src="i/sh/' . $dress['img'] . '" width=60 height=60 title="<b>' . $dress['name'] . "</b><br />Прочность " . $dress['duration'] . "/" . $dress['maxdur'] . "" . "" . (($dress['ghp'] > 0) ? "<br />Уровень жизни " . plusorminus($dress['ghp']) : "") . (($dress['minu'] > 0) ? "<br />Урон {$dress['minu']}-{$dress['maxu']}" : "") . (($dress['text'] != null) ? "<br />На оружии выгравировано '{$dress['text']}'" : "") . (($dress['gsila'] != 0) ? "<br />Сила " . plusorminus($dress['gsila']) : "") . (($dress['glovk'] != 0) ? "<br />Ловкость " . plusorminus($dress['glovk']) : "") . (($dress['ginta'] != 0) ? "<br />Интуиция " . plusorminus($dress['ginta']) : "") . (($dress['gintel'] != 0) ? "<br />Интеллект " . plusorminus($dress['gintel']) : "") . (($dress['bron1'] != 0) ? "<br />Броня головы: " . plusorminus($dress['bron1']) : "") . (($dress['bron2'] != 0) ? "<br />Броня корпуса: " . plusorminus($dress['bron2']) : "") . (($dress['bron3'] != 0) ? "<br />Броня пояса: " . plusorminus($dress['bron3']) : "") . (($dress['bron4'] != 0) ? "<br />Броня ног: " . plusorminus($dress['bron4']) : "") . '" />';
}
} else {
echo '<img class=\'tooltip\' src="i/w3.gif" width=60 height=60 title="Пустой слот Оружие" />';
}
?></A></TD>
</TR>
<TR>
<TD><?php
if ($user['bron'] > 0 || $user['rybax'] > 0 || $user['plaw'] > 0) {
$title = '';
$d = '';
if ($user['plaw']) {
$d = $user['plaw'];
if ($user['bron']) {
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $user['bron'])->fetch_assoc();
$title .= '<br />--------------------<br /><b>' . $dress['name'] . '</b><br />Прочность ' . $dress['duration'] . '/' . $dress['maxdur'] . '' . (($dress['ghp'] > 0) ? '<br />Уровень жизни ' . plusorminus($dress['ghp']) : '') . (($dress['text'] != null) ? '<br />На одежде вышито ' . $dress['text'] . '' : '') . (($dress['gsila'] != 0) ? '<br />Сила ' . plusorminus($dress['gsila']) . '' : '') . (($dress['glovk'] != 0) ? '<br />Ловкость ' . plusorminus($dress['glovk']) . '' : '') . (($dress['ginta'] != 0) ? '<br />Интуиция ' . plusorminus($dress['ginta']) . '' : '') . (($dress['gintel'] != 0) ? '<br />Интеллект ' . plusorminus($dress['gintel']) . '' : '') . (($dress['bron1'] != 0) ? '<br />Броня головы: ' . plusorminus($dress['bron1']) . '' : '') . (($dress['bron2'] != 0) ? '<br />Броня корпуса: ' . plusorminus($dress['bron2']) . '' : '') . (($dress['bron3'] != 0) ? '<br />Броня пояса: ' . plusorminus($dress['bron3']) . '' : '') . (($dress['bron4'] != 0) ? '<br />Броня ног: ' . plusorminus($dress['bron4']) . '' : '');
}
if ($user['rybax']) {
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $user['rybax'])->fetch_assoc();
$title .= '<br />--------------------<br /><b>' . $dress['name'] . '</b><br />Прочность ' . $dress['duration'] . '/' . $dress['maxdur'] . '' . (($dress['ghp'] > 0) ? '<br />Уровень жизни ' . plusorminus($dress['ghp']) : '') . (($dress['text'] != null) ? '<br />На одежде вышито ' . $dress['text'] . '' : '') . (($dress['gsila'] != 0) ? '<br />Сила ' . plusorminus($dress['gsila']) . '' : '') . (($dress['glovk'] != 0) ? '<br />Ловкость ' . plusorminus($dress['glovk']) . '' : '') . (($dress['ginta'] != 0) ? '<br />Интуиция ' . plusorminus($dress['ginta']) . '' : '') . (($dress['gintel'] != 0) ? '<br />Интеллект ' . plusorminus($dress['gintel']) . '' : '') . (($dress['bron1'] != 0) ? '<br />Броня головы: ' . plusorminus($dress['bron1']) . '' : '') . (($dress['bron2'] != 0) ? '<br />Броня корпуса: ' . plusorminus($dress['bron2']) . '' : '') . (($dress['bron3'] != 0) ? '<br />Броня пояса: ' . plusorminus($dress['bron3']) . '' : '') . (($dress['bron4'] != 0) ? '<br />Броня ног: ' . plusorminus($dress['bron4']) . '' : '');
}
} elseif ($user['bron']) {
$d = $user['bron'];
if ($user['rybax']) {
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $user['rybax'])->fetch_assoc();
$title .= "<br />--------------------<br /><b>$dress[name]</b><br />Прочность $dress[duration]/$dress[maxdur]" . (($dress['ghp'] > 0) ? "<br />Уровень жизни " . plusorminus($dress['ghp']) : "") . (($dress['text'] != null) ? "<br />На одежде вышито '{$dress['text']}'" : "") . (($dress['gsila'] != 0) ? "<br />Сила " . plusorminus($dress['gsila']) : "") . (($dress['glovk'] != 0) ? "<br />Ловкость " . plusorminus($dress['glovk']) : "") . (($dress['ginta'] != 0) ? "<br />Интуиция " . plusorminus($dress['ginta']) : "") . (($dress['gintel'] != 0) ? "<br />Интеллект " . plusorminus($dress['gintel']) : "") . (($dress['bron1'] != 0) ? "<br />Броня головы: " . plusorminus($dress['bron1']) : "") . (($dress['bron2'] != 0) ? "<br />Броня корпуса: " . plusorminus($dress['bron2']) : "") . (($dress['bron3'] != 0) ? "<br />Броня пояса: " . plusorminus($dress['bron3']) : "") . (($dress['bron4'] != 0) ? "<br />Броня ног: " . plusorminus($dress['bron4']) : "") . '"';
}
} elseif ($user['rybax']) {
$d = $user['rybax'];
}
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $d)->fetch_assoc();
if ($dress['includemagicdex'] && !$pas) {
echo showhrefmagic($dress);
} else {
echo '<img class=\'tooltip\' ' . ((($dress['maxdur'] - 2) <= $dress['duration'] && $dress['duration'] > 2 && !$pas) ? " style='background-image:url(i/blink.gif);' " : "") . ' src="i/sh/' . $dress['img'] . '" width=60 height=80 title="<b>' . $dress['name'] . "</b><br />Прочность " . $dress['duration'] . "/" . $dress['maxdur'] . "" . "" . (($dress['ghp'] > 0) ? "<br />Уровень жизни " . plusorminus($dress['ghp']) : "") . (($dress['text'] != null) ? "<br />На одежде вышито '{$dress['text']}'" : "") . (($dress['gsila'] != 0) ? "<br />Сила " . plusorminus($dress['gsila']) : "") . (($dress['glovk'] != 0) ? "<br />Ловкость " . plusorminus($dress['glovk']) : "") . (($dress['ginta'] != 0) ? "<br />Интуиция " . plusorminus($dress['ginta']) : "") . (($dress['gintel'] != 0) ? "<br />Интеллект " . plusorminus($dress['gintel']) : "") . (($dress['bron1'] != 0) ? "<br />Броня головы: " . plusorminus($dress['bron1']) : "") . (($dress['bron2'] != 0) ? "<br />Броня корпуса: " . plusorminus($dress['bron2']) : "") . (($dress['bron3'] != 0) ? "<br />Броня пояса: " . plusorminus($dress['bron3']) : "") . (($dress['bron4'] != 0) ? "<br />Броня ног: " . plusorminus($dress['bron4']) : "") . $title . '" />';
}
} else {
echo '<img class=\'tooltip\' src="i/w4.gif" width=60 height=80 title="Пустой слот Броня" />';
}
?></a></TD>
</TR>
<TR>
<TD>
<TABLE class="allzeroes">
<tr>
<td><?php
if ($user['r1'] > 0) {
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $user['r1'])->fetch_assoc();
if ($dress['includemagicdex'] && !$pas) {
showhrefmagic($dress);
} else {
echo '<img class=\'tooltip\' ' . ((($dress['maxdur'] - 2) <= $dress['duration'] && $dress['duration'] > 2 && !$pas) ? " style='background-image:url(i/blink.gif);' " : "") . ' src="i/sh/' . $dress['img'] . '" width=20 height=20 title="<b>' . $dress['name'] . "</b><br />Прочность " . $dress['duration'] . "/" . $dress['maxdur'] . "" . "" . (($dress['ghp'] > 0) ? "<br />Уровень жизни " . plusorminus($dress['ghp']) : "") . (($dress['text'] != null) ? "<br />На кольце выгравировано '{$dress['text']}'" : "") . (($dress['gsila'] != 0) ? "<br />Сила " . plusorminus($dress['gsila']) : "") . (($dress['glovk'] != 0) ? "<br />Ловкость " . plusorminus($dress['glovk']) : "") . (($dress['ginta'] != 0) ? "<br />Интуиция " . plusorminus($dress['ginta']) : "") . (($dress['gintel'] != 0) ? "<br />Интеллект " . plusorminus($dress['gintel']) : "") . (($dress['bron1'] != 0) ? "<br />Броня головы: " . plusorminus($dress['bron1']) : "") . (($dress['bron2'] != 0) ? "<br />Броня корпуса: " . plusorminus($dress['bron2']) : "") . (($dress['bron3'] != 0) ? "<br />Броня пояса: " . plusorminus($dress['bron3']) : "") . (($dress['bron4'] != 0) ? "<br />Броня ног: " . plusorminus($dress['bron4']) : "") . '" />';
}
} else {
echo '<img class=\'tooltip\' src="i/w6.gif" width=20 height=20 title="Пустой слот Кольцо" />';
}
?></A></td>
<td><?php
if ($user['r2'] > 0) {
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $user['r2'])->fetch_assoc();
if ($dress['includemagicdex'] && !$pas) {
echo showhrefmagic($dress);
} else {
echo '<img class=\'tooltip\' ' . ((($dress['maxdur'] - 2) <= $dress['duration'] && $dress['duration'] > 2 && !$pas) ? " style='background-image:url(i/blink.gif);' " : "") . ' src="i/sh/' . $dress['img'] . '" width=20 height=20 title="<b>' . $dress['name'] . "</b><br />Прочность " . $dress['duration'] . "/" . $dress['maxdur'] . "" . "" . (($dress['ghp'] > 0) ? "<br />Уровень жизни " . plusorminus($dress['ghp']) : "") . (($dress['text'] != null) ? "<br />На кольце выгравировано '{$dress['text']}'" : "") . (($dress['gsila'] != 0) ? "<br />Сила " . plusorminus($dress['gsila']) : "") . (($dress['glovk'] != 0) ? "<br />Ловкость " . plusorminus($dress['glovk']) : "") . (($dress['ginta'] != 0) ? "<br />Интуиция " . plusorminus($dress['ginta']) : "") . (($dress['gintel'] != 0) ? "<br />Интеллект " . plusorminus($dress['gintel']) : "") . (($dress['bron1'] != 0) ? "<br />Броня головы: " . plusorminus($dress['bron1']) : "") . (($dress['bron2'] != 0) ? "<br />Броня корпуса: " . plusorminus($dress['bron2']) : "") . (($dress['bron3'] != 0) ? "<br />Броня пояса: " . plusorminus($dress['bron3']) : "") . (($dress['bron4'] != 0) ? "<br />Броня ног: " . plusorminus($dress['bron4']) : "") . '" />';
}
} else {
echo '<img class=\'tooltip\' src="i/w6.gif" width=20 height=20 title="Пустой слот Кольцо" />';
}
?></A></td>
<td><?php
if ($user['r3'] > 0) {
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $user['r3'])->fetch_assoc();
if ($dress['includemagicdex'] && !$pas) {
echo showhrefmagic($dress);
} else {
echo '<img class=\'tooltip\' ' . ((($dress['maxdur'] - 2) <= $dress['duration'] && $dress['duration'] > 2 && !$pas) ? " style='background-image:url(i/blink.gif);' " : "") . ' src="i/sh/' . $dress['img'] . '" width=20 height=20 title="<b>' . $dress['name'] . "</b><br />Прочность " . $dress['duration'] . "/" . $dress['maxdur'] . "" . "" . (($dress['ghp'] > 0) ? "<br />Уровень жизни " . plusorminus($dress['ghp']) : "") . (($dress['text'] != null) ? "<br />На кольце выгравировано '{$dress['text']}'" : "") . (($dress['gsila'] != 0) ? "<br />Сила " . plusorminus($dress['gsila']) : "") . (($dress['glovk'] != 0) ? "<br />Ловкость " . plusorminus($dress['glovk']) : "") . (($dress['ginta'] != 0) ? "<br />Интуиция " . plusorminus($dress['ginta']) : "") . (($dress['gintel'] != 0) ? "<br />Интеллект " . plusorminus($dress['gintel']) : "") . (($dress['bron1'] != 0) ? "<br />Броня головы: " . plusorminus($dress['bron1']) : "") . (($dress['bron2'] != 0) ? "<br />Броня корпуса: " . plusorminus($dress['bron2']) : "") . (($dress['bron3'] != 0) ? "<br />Броня пояса: " . plusorminus($dress['bron3']) : "") . (($dress['bron4'] != 0) ? "<br />Броня ног: " . plusorminus($dress['bron4']) : "") . '" />';
}
} else {
echo '<img class=\'tooltip\' src="i/w6.gif" width=20 height=20 title="Пустой слот Кольцо" />';
}
?></A></td>
</tr>
</table>
</TD>
</TR>
</TABLE>
</TD>
<TD><img src="i/shadow/<?= $user['shadow'] ?>" width=76 height=209 alt="<?= $user['login'] ?>">
</TD>
<TD style="width: 62px;">
<TABLE class="allzeroes">
<TR>
<TD><?php
if ($user['helm'] > 0) {
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $user['helm'])->fetch_assoc();
if ($dress['includemagicdex'] && !$pas) {
echo showhrefmagic($dress);
} else {
echo '<img class=\'tooltip\' ' . ((($dress['maxdur'] - 2) <= $dress['duration'] && $dress['duration'] > 2 && !$pas) ? " style='background-image:url(i/blink.gif);' " : "") . ' src="i/sh/' . $dress['img'] . '" width=60 height=60 title="<b>' . $dress['name'] . "</b><br />Прочность " . $dress['duration'] . "/" . $dress['maxdur'] . "" . "" . (($dress['ghp'] > 0) ? "<br />Уровень жизни " . plusorminus($dress['ghp']) : "") . (($dress['text'] != null) ? "<br />На шлеме выгравировано '{$dress['text']}'" : "") . (($dress['gsila'] != 0) ? "<br />Сила " . plusorminus($dress['gsila']) : "") . (($dress['glovk'] != 0) ? "<br />Ловкость " . plusorminus($dress['glovk']) : "") . (($dress['ginta'] != 0) ? "<br />Интуиция " . plusorminus($dress['ginta']) : "") . (($dress['gintel'] != 0) ? "<br />Интеллект " . plusorminus($dress['gintel']) : "") . (($dress['bron1'] != 0) ? "<br />Броня головы: " . plusorminus($dress['bron1']) : "") . (($dress['bron2'] != 0) ? "<br />Броня корпуса: " . plusorminus($dress['bron2']) : "") . (($dress['bron3'] != 0) ? "<br />Броня пояса: " . plusorminus($dress['bron3']) : "") . (($dress['bron4'] != 0) ? "<br />Броня ног: " . plusorminus($dress['bron4']) : "") . '" />';
}
} else {
echo '<img class=\'tooltip\' src="i/w9.gif" width=60 height=60 title="Пустой слот Шлем" />';
}
?></A></TD>
</TR>
<TR>
<TD><?php
if ($user['perchi'] > 0) {
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $user['perchi'])->fetch_assoc();
if ($dress['includemagicdex'] && !$pas) {
echo showhrefmagic($dress);
} else {
echo '<img class=\'tooltip\' ' . ((($dress['maxdur'] - 2) <= $dress['duration'] && $dress['duration'] > 2 && !$pas) ? " style='background-image:url(i/blink.gif);' " : "") . ' src="i/sh/' . $dress['img'] . '" width=60 height=40 title="<b>' . $dress['name'] . "</b><br />Прочность " . $dress['duration'] . "/" . $dress['maxdur'] . "" . "" . (($dress['ghp'] > 0) ? "<br />Уровень жизни " . plusorminus($dress['ghp']) : "") . (($dress['text'] != null) ? "<br />На перчатках выгравировано '{$dress['text']}'" : "") . (($dress['gsila'] != 0) ? "<br />Сила " . plusorminus($dress['gsila']) : "") . (($dress['glovk'] != 0) ? "<br />Ловкость " . plusorminus($dress['glovk']) : "") . (($dress['ginta'] != 0) ? "<br />Интуиция " . plusorminus($dress['ginta']) : "") . (($dress['gintel'] != 0) ? "<br />Интеллект " . plusorminus($dress['gintel']) : "") . '" />';
}
} else {
echo '<img class=\'tooltip\' src="i/w11.gif" width=60 height=40 alt="Пустой слот Перчатки" />';
}
?></A></TD>
</TR>
<TR>
<TD><?php
if ($user['shit'] > 0) {
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $user['shit'])->fetch_assoc();
if ($dress['includemagicdex'] && !$pas) {
echo showhrefmagic($dress);
} else {
echo '<img class=\'tooltip\' ' . ((($dress['maxdur'] - 2) <= $dress['duration'] && $dress['duration'] > 2 && !$pas) ? " style='background-image:url(i/blink.gif);' " : "") . ' src="i/sh/' . $dress['img'] . '" width=60 height=60 title="<b>' . $dress['name'] . "</b><br />Прочность " . $dress['duration'] . "/" . $dress['maxdur'] . "" . "" . (($dress['ghp'] > 0) ? "<br />Уровень жизни " . plusorminus($dress['ghp']) : "") . (($dress['text'] != null) ? "<br />На щите выгравировано '{$dress['text']}'" : "") . (($dress['gsila'] != 0) ? "<br />Сила " . plusorminus($dress['gsila']) : "") . (($dress['glovk'] != 0) ? "<br />Ловкость " . plusorminus($dress['glovk']) : "") . (($dress['ginta'] != 0) ? "<br />Интуиция " . plusorminus($dress['ginta']) : "") . (($dress['gintel'] != 0) ? "<br />Интеллект " . plusorminus($dress['gintel']) : "") . (($dress['bron1'] != 0) ? "<br />Броня головы: " . plusorminus($dress['bron1']) : "") . (($dress['bron2'] != 0) ? "<br />Броня корпуса: " . plusorminus($dress['bron2']) : "") . (($dress['bron3'] != 0) ? "<br />Броня пояса: " . plusorminus($dress['bron3']) : "") . (($dress['bron4'] != 0) ? "<br />Броня ног: " . plusorminus($dress['bron4']) : "") . '" />';
}
} else {
echo '<img class=\'tooltip\' src="i/w10.gif" width=60 height=60 title="Пустой слот Щит" />';
}
?></A></TD>
</TR>
<TR>
<TD><?php
if ($user['boots'] > 0) {
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `id` = ?i', $user['boots'])->fetch_assoc();
if ($dress['includemagicdex'] && !$pas) {
echo showhrefmagic($dress);
} else {
echo '<img class=\'tooltip\' ' . ((($dress['maxdur'] - 2) <= $dress['duration'] && $dress['duration'] > 2 && !$pas) ? " style='background-image:url(i/blink.gif);' " : "") . ' src="i/sh/' . $dress['img'] . '" width=60 height=40 title="<b>' . $dress['name'] . "</b><br />Прочность " . $dress['duration'] . "/" . $dress['maxdur'] . "" . "" . (($dress['ghp'] > 0) ? "<br />Уровень жизни " . plusorminus($dress['ghp']) : "") . (($dress['text'] != null) ? "<br />На ботинках выгравировано '{$dress['text']}'" : "") . (($dress['gsila'] != 0) ? "<br />Сила " . plusorminus($dress['gsila']) : "") . (($dress['glovk'] != 0) ? "<br />Ловкость " . plusorminus($dress['glovk']) : "") . (($dress['ginta'] != 0) ? "<br />Интуиция " . plusorminus($dress['ginta']) : "") . (($dress['gintel'] != 0) ? "<br />Интеллект " . plusorminus($dress['gintel']) : "") . (($dress['bron1'] != 0) ? "<br />Броня головы: " . plusorminus($dress['bron1']) : "") . (($dress['bron2'] != 0) ? "<br />Броня корпуса: " . plusorminus($dress['bron2']) : "") . (($dress['bron3'] != 0) ? "<br />Броня пояса: " . plusorminus($dress['bron3']) : "") . (($dress['bron4'] != 0) ? "<br />Броня ног: " . plusorminus($dress['bron4']) : "") . '" />';
}
} else {
echo '<img class=\'tooltip\' src="i/w12.gif" width=60 height=40 title="Пустой слот Oбувь" />';
}
?>
</A>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</table>
<TABLE class="allzeroes">
<TBODY>
<?
if (!$pas) {
// FIXME Научиться отображать травмы
// if ($trt) {
// echo "<TR><TD><IMG height=25 src=\"i/travma.gif\" width=40></TD><TD><SMALL>У персонажа $trt травма.</SMALL></TD></TR>";
// }
$dd = db::c()->query('SELECT `time`, `type` FROM `effects` WHERE `owner` = ?i', $user['id']);
$param_bonus = [];
array_fill_keys($param_bonus, 0);
while ($row = $dd->fetch_assoc()) {
if ($row['time'] < time()) {
$row['time'] = time();
}
if ($row['type'] == 21) {
$param_bonus = [];
$param_bonus['sila'] = $row['sila'];
$param_bonus['lovk'] = $row['lovk'];
$param_bonus['inta'] = $row['inta'];
$param_bonus['vinos'] = $row['vinos'];
}
}
?>
</TBODY></TABLE></CENTER>
</TD>
<TD valign=top style='width:450px;'></TD>
Сила: <?= $user['sila'] ?>
<?php if (isset($param_bonus['sila'])) echo " <span class='success'>(+" . $param_bonus['sila'] . ")</span>"; ?>
<BR>
Ловкость: <?= $user['lovk'] ?>
<?php if (isset($param_bonus['lovk'])) echo " <span class='success'>(+" . $param_bonus['lovk'] . ")</span>"; ?>
<BR>
Интуиция: <?= $user['inta'] ?>
<?php if (isset($param_bonus['inta'])) echo " <span class='success'>(+" . $param_bonus['inta'] . ")</span>"; ?>
<BR>
Выносливость:<?= $user['vinos'] ?>
<?php if (isset($param_bonus['vinos'])) echo " <span class='success'>(+" . $param_bonus['vinos'] . ")</span>"; ?>
<BR>
Интеллект: <?= $user['intel'] ?><BR>
Мудрость: <?= $user['mudra'] ?><BR>
<?php if ($user['stats'] > 0 || $user['master'] > 0): ?>
<a href="main.php?edit=1">+ Способности</a>
<?php endif; ?>
<hr>
Опыт: <b><?= $user['exp'] ?></b> (<?= $user['nextup'] ?>) <br>
Уровень: <?= $user['level'] ?><br>
Побед: <?= $user['win'] ?><br>
Поражений: <?= $user['lose'] ?><br>
Ничьих: <?= $user['nich'] ?><br>
<?
$ekr_bank = db::c()->query('SELECT SUM(`ekr`) AS `bank_ekr`,SUM(`cr`) AS `bank_cr` FROM `bank` WHERE `id`= ?i', $user['id'])->fetch_assoc();
?>
Деньги: <b><?= $user['money'] ?></b> кр.<br>
В банке: <b><?= $ekr_bank['bank_cr'] ?></b> кр. / <b><?= $ekr_bank['bank_ekr'] ?></b> eкр.<br>
<?
if ($user['klan']) {
echo "Клан: " . ClanImage($user['klan']) . "<BR>";
}
} else {
?>
<TR>
<TD colSpan=2 style="padding-left:25px;">
Сила: <?= $user['sila'] ?><BR>
Ловкость: <?= $user['lovk'] ?><BR>
Интуиция: <?= $user['inta'] ?><BR>
Выносливость: <?= $user['vinos'] ?><BR>
Интеллект: <?= $user['intel'] ?><BR>
Мудрость: <?= $user['mudra'] ?><BR>
</td>
</tr></table>
<?
}
}
/**
* @param $time
* @param $vars
* @param $vls
* @param $uid
*
* @return bool
*/
function addActions($time, $vars, $vls, $uid)
{
db::c()->query('LOCK TABLES `actions` WRITE');
$ins = db::c()->query('INSERT INTO `actions` (`uid`,`time`,`city`,`room`,`vars`,`ip`,`vals`) VALUES (?i, ?i, "?s", ?i, "?s", "?s", "?s")', $uid, $time, "capitalcity", 0, $vars, $_SERVER['HTTP_X_REAL_IP'], $vls);
db::c()->query('UNLOCK TABLES');
if ($ins) {
return true;
} else {
return false;
}
}
function plusorminus($n, $shownum = 1)
{
if (empty($shownum)) {
if ($n >= 2) return "++";
if ($n > 0) return "+";
if ($n < 0) return "-";
}
if ($n >= 0) {
return "+$n";
} else {
return $n;
}
}
function undressall($id)
{
for ($i = 1; $i <= 26; $i++) {
dropitemid($i, $id);
}
}
function dropitemid($slot, $id)
{
switch ($slot) {
case 1:
$slot1 = 'sergi';
break;
case 2:
$slot1 = 'kulon';
break;
case 3:
$slot1 = 'weap';
break;
case 4:
$slot1 = 'bron';
break;
case 5:
$slot1 = 'r1';
break;
case 6:
$slot1 = 'r2';
break;
case 7:
$slot1 = 'r3';
break;
case 8:
$slot1 = 'helm';
break;
case 9:
$slot1 = 'perchi';
break;
case 10:
$slot1 = 'shit';
break;
case 11:
$slot1 = 'boots';
break;
case 12:
$slot1 = 'm1';
break;
case 13:
$slot1 = 'm2';
break;
case 14:
$slot1 = 'm3';
break;
case 15:
$slot1 = 'm4';
break;
case 16:
$slot1 = 'm5';
break;
case 17:
$slot1 = 'm6';
break;
case 18:
$slot1 = 'm7';
break;
case 19:
$slot1 = 'm8';
break;
case 20:
$slot1 = 'm9';
break;
case 21:
$slot1 = 'm10';
break;
case 22:
$slot1 = 'rybax';
break;
case 23:
$slot1 = 'plaw';
break;
default:
$slot1 = '';
break;
}
$checkid = db::c()->query('SELECT 1 FROM `users` WHERE `id` = ?i', $id);
if ($checkid->getNumRows()) {
if (mysql_query('UPDATE `users`, `inventory` SET `users`.`' . $slot1 . '` = 0, `inventory`.`dressed` = 0, `users`.`sila` = `users`.`sila` - `inventory`.`gsila`, `users`.`lovk` = `users`.`lovk` - `inventory`.`glovk`, `users`.`inta` = `users`.`inta` - `inventory`.`ginta`, `users`.`intel` = `users`.`intel` - `inventory`.`gintel`, `users`.`maxhp` = `users`.`maxhp` - `inventory`.`ghp`, `users`.`noj` = `users`.`noj` - `inventory`.`gnoj`, `users`.`topor` = `users`.`topor` - `inventory`.`gtopor`, `users`.`dubina` = `users`.`dubina` - `inventory`.`gdubina`, `users`.`mec` = `users`.`mec` - `inventory`.`gmech`, `users`.`mfire` = `users`.`mfire` - `inventory`.`gfire`, `users`.`mwater` = `users`.`mwater` - `inventory`.`gwater`, `users`.`mair` = `users`.`mair` - `inventory`.`gair`, `users`.`mearth` = `users`.`mearth` - `inventory`.`gearth`, `users`.`mlight` = `users`.`mlight` - `inventory`.`glight`, `users`.`mgray` = `users`.`mgray` - `inventory`.`ggray`, `users`.`mdark` = `users`.`mdark` - `inventory`.`gdark`, `users`.`fkrit` = `users`.`fkrit` - `inventory`.`mfkrit`, `users`.`fakrit` = `users`.`fakrit` - `inventory`.`mfakrit`, `users`.`fuvorot` = `users`.`fuvorot` - `inventory`.`mfuvorot`, `users`.`fauvorot` = `users`.`fauvorot` - `inventory`.`mfauvorot`, `users`.`ubron1` = `users`.`ubron1` - `inventory`.`bron1`, `users`.`ubron2` = `users`.`ubron2` - `inventory`.`bron2`, `users`.`ubron3` = `users`.`ubron3` - `inventory`.`bron3`, `users`.`ubron4` = `users`.`ubron4` - `inventory`.`bron4`, `users`.`uminu` = `users`.`uminu` - `inventory`.`minu`, `users`.`umaxu` = `users`.`umaxu` - `inventory`.`maxu` WHERE `inventory`.`id` = `users`.`' . $slot1 . '` AND `inventory`.`dressed` = 1 AND `inventory`.`owner` = "' . $id . '" AND `users`.`id` = "' . $id . '"')) {
db::c()->query('UPDATE `users` SET `hp` = `maxhp`, `fullhptime` = ?i WHERE `hp` > `maxhp` AND `id` = ?i', time(), $id);
$user[$slot1] = 0;
}
return true;
} else return false;
}
// снять предмет
function dropitem($slot)
{
global $user;
$wear_arr = [];
switch ($slot) {
case 1:
$slot1 = 'sergi';
break;
case 2:
$slot1 = 'kulon';
break;
case 3:
$slot1 = 'weap';
break;
case 4:
$slot1 = 'bron';
break;
case 5:
$slot1 = 'r1';
break;
case 6:
$slot1 = 'r2';
break;
case 7:
$slot1 = 'r3';
break;
case 8:
$slot1 = 'helm';
break;
case 9:
$slot1 = 'perchi';
break;
case 10:
$slot1 = 'shit';
break;
case 11:
$slot1 = 'boots';
break;
case 12:
$slot1 = 'm1';
break;
case 13:
$slot1 = 'm2';
break;
case 14:
$slot1 = 'm3';
break;
case 15:
$slot1 = 'm4';
break;
case 16:
$slot1 = 'm5';
break;
case 17:
$slot1 = 'm6';
break;
case 18:
$slot1 = 'm7';
break;
case 19:
$slot1 = 'm8';
break;
case 20:
$slot1 = 'm9';
break;
case 21:
$slot1 = 'm10';
break;
case 22:
$slot1 = 'rybax';
break;
case 23:
$slot1 = 'plaw';
break;
default:
$slot1 = '';
break;
}
{
if (db::c()->query('UPDATE `users` as `u`, `inventory` as `i` SET `u`.?f = 0, `i`.`dressed` = 0,
`u`.`sila` = `u`.`sila` - `i`.`gsila`,
`u`.`lovk` = `u`.`lovk` - `i`.`glovk`,
`u`.`inta` = `u`.`inta` - `i`.`ginta`,
`u`.`intel` = `u`.`intel` - `i`.`gintel`,
`u`.`maxhp` = `u`.`maxhp` - `i`.`ghp`,
`u`.`noj` = `u`.`noj` - `i`.`gnoj`,
`u`.`topor` = `u`.`topor` - `i`.`gtopor`,
`u`.`dubina` = `u`.`dubina` - `i`.`gdubina`,
`u`.`mec` = `u`.`mec` - `i`.`gmech`,
`u`.`mfire` = `u`.`mfire` - `i`.`gfire`,
`u`.`mwater` = `u`.`mwater` - `i`.`gwater`,
`u`.`mair` = `u`.`mair` - `i`.`gair`,
`u`.`mearth` = `u`.`mearth` - `i`.`gearth`,
`u`.`mlight` = `u`.`mlight` - `i`.`glight`,
`u`.`mgray` = `u`.`mgray` - `i`.`ggray`,
`u`.`mdark` = `u`.`mdark` - `i`.`gdark`,
`u`.`ubron1` = `u`.`ubron1` - `i`.`bron1`,
`u`.`ubron2` = `u`.`ubron2` - `i`.`bron2`,
`u`.`ubron3` = `u`.`ubron3` - `i`.`bron3`,
`u`.`ubron4` = `u`.`ubron4` - `i`.`bron4`,
`u`.`fkrit` = `u`.`fkrit` - `i`.`mfkrit`,
`u`.`fakrit` = `u`.`fakrit` - `i`.`mfakrit`,
`u`.`fuvorot` = `u`.`fuvorot` - `i`.`mfuvorot`,
`u`.`fauvorot` = `u`.`fauvorot` - `i`.`mfauvorot`,
`u`.`uminu` = `u`.`uminu` - `i`.`minu`,
`u`.`umaxu` = `u`.`umaxu` - `i`.`maxu`
WHERE `i`.`id` = `u`.?f AND `i`.`dressed` = 1 AND `i`.`owner` = ?i AND u.id = ?i', $slot1, $slot1, $user['id'], $user['id']))
db::c()->query('UPDATE `users` SET `hp` = `maxhp`, `fullhptime` = ?i WHERE `hp` > `maxhp` AND `id` = ?i', time(), $user['id']);
$wear_raw = db::c()->query('SELECT * FROM `inventory` where `owner` = ?i AND `dressed` = 1', $user['id']);
while ($wear_list = $wear_raw->fetch_assoc()) {
$wear_arr[] = $wear_list['prototype'];
}
$item['id'] = $user[$slot1];
$get_pro = db::c()->query('SELECT * FROM `inventory` where `id` = ?i', $item['id'])->fetch_assoc();
/////////////////////
$sets_items = db::c()->query('SELECT * FROM `item_sets`');
//для каждого комплекта
while ($items_in_set = $sets_items->fetch_assoc()) {
$checker = 0;
$temp_is = explode(",", $items_in_set['prot_id']);
$set_id = $items_in_set['set_id'];
//если прото в комплекте и не одет
if (in_array($get_pro['prototype'], $temp_is) && (!in_array($get_pro['prototype'], $wear_arr))) {
$checker = 1;
// echo("<BR>ITEM SETS<BR>");
//foreach($temp_is as $tis) echo($tis."<BR>");
//для каждого одетого предмета
foreach ($temp_is as $check_proto)
if ($check_proto != $get_pro['prototype']) {
if (!in_array($check_proto, $wear_arr)) {
$checker = 0;
}
// echo("Checker=".$checker." at set #".$set_id." item #".$check_proto." Compare=".$get_pro['prototype']."<BR>");
}
//echo("Checker=".$checker." at set #".$set_id);
}
//
if (($checker == 1) && (!in_array($get_pro['prototype'], $wear_arr))) {
db::c()->query('UPDATE `users` as `u`, `item_sets` as `s` SET
`u`.`uminu` = `u`.`uminu` - `s`.`minu`,
`u`.`umaxu` = `u`.`umaxu` - `s`.`maxu`,
`u`.`sila = `u`.`sila - `s`.`gsila`,
`u`.`lovk = `u`.`lovk - `s`.`glovk`,
`u`.`inta = `u`.`inta - `s`.`ginta`,
`u`.`intel = `u`.`intel - `s`.`gintel`,
`u`.`maxhp = `u`.`maxhp - `s`.`ghp`,
`u`.`maxmana = `u`.`maxmana - `s`.`gmana`,
`u`.`fkrit = `u`.`fkrit - `s`.`mfkrit`,
`u`.`fakrit = `u`.`fakrit - `s`.`mfakrit`,
`u`.`fuvorot = `u`.`fuvorot - `s`.`mfuvorot`,
`u`.`fauvorot = `u`.`fauvorot - `s`.`mfauvorot`,
`u`.`noj = `u`.`noj - `s`.`gnoj`,
`u`.`topor = `u`.`topor - `s`.`gtopor`,
`u`.`dubina = `u`.`dubina - `s`.`gdubina`,
`u`.`mec = `u`.`mec - `s`.`gmech`,
`u`.`ubron1 = `u`.`ubron1 - `s`.`bron1`,
`u`.`ubron2 = `u`.`ubron2 - `s`.`bron2`,
`u`.`ubron3 = `u`.`ubron3 - `s`.`bron3`,
`u`.`ubron4 = `u`.`ubron4 - `s`.`bron4`,
`u`.`mfire = `u`.`mfire - `s`.`gfire`,
`u`.`mwater = `u`.`mwater - `s`.`gwater`,
`u`.`mair = `u`.`mair - `s`.`gair`,
`u`.`mearth = `u`.`mearth - `s`.`gearth`,
`u`.`mlight = `u`.`mlight - `s`.`glight`,
`u`.`mgray = `u`.`mgray - `s`.`ggray`
WHERE
`u`.`id` = ?i AND `s`.`set_id`= ?i', $user['id'], $set_id);
}
}
return true;
}
}
function ref_drop()
{
# global $user;
//сможет держать
function derj($id)
{
//global $user;
$user = db::c()->query('SELECT `id`, `align` FROM `users` WHERE `id` = ?i', $_SESSION['uid'])->fetch_assoc();
$ts = db::c()->query('SELECT `id`, `nalign` FROM `inventory` WHERE `id` = ?i', $id)->fetch_assoc();
$al = '(1 = 1)';
if ($ts['nalign'] == 1.1) $al = '(1 = 2)';
$dd = db::c()->query('SELECT `i`.`id` FROM `users` AS `u`, `inventory` AS `i`
WHERE
`i`.`needident` = 0 AND
`i`.`id` = ?i AND
`i`.`duration` < `i`.`maxdur` AND
`i`.`owner` = ?i AND
`u`.`sila` >= `i`.`nsila` AND
`u`.`lovk` >= `i`.`nlovk` AND
`u`.`inta` >= `i`.`ninta` AND
`u`.`vinos` >= `i`.`nvinos` AND
`u`.`intel` >= `i`.`nintel` AND
`u`.`mudra` >= `i`.`nmudra` AND
`u`.`level` >= `i`.`nlevel` AND
("?s" OR (?i = `i`.`nalign`) or (`i`.`nalign` = 0)) AND
`u`.`noj` >= `i`.`nnoj` AND
`u`.`topor` >= `i`.`ntopor` AND
`u`.`dubina` >= `i`.`ndubina` AND
`u`.`mec` >= `i`.`nmech` AND
`u`.`mfire` >= `i`.`nfire` AND
`u`.`mwater` >= `i`.`nwater` AND
`u`.`mair` >= `i`.`nair` AND
`u`.`mearth` >= `i`.`nearth` AND
`u`.`mlight` >= `i`.`nlight` AND
`u`.`mgray` >= `i`.`ngray` AND
`u`.`mdark` >= `i`.`ndark` AND
`i`.`setsale` = 0 AND
`u`.`id` = ?i', $id, $user['id'], $al, $user['align'], $user['id']);
if ($dd->getNumRows() > 0) {
return true;
} else {
return false;
}
}
$slot = ['sergi', 'kulon', 'weap', 'bron', 'r1', 'r2', 'r3', 'helm', 'perchi', 'shit', 'boots', 'm1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7', 'm8', 'm9', 'm10'];
$user = db::c()->query('SELECT `sergi`,`kulon`,`weap`,`bron`,`r1`,`r2`,`r3`,`helm`,`perchi`,`shit`,`boots`,`m1`,`m2`,`m3`,`m4`,`m5`,`m6`,`m7`,`m8`,`m9`,`m10` FROM `users` WHERE id = ?i', $_SESSION['uid'])->fetch_assoc();
for ($i = 0; $i <= 20; $i++) {
if ($user[$slot[$i]] && !derj($user[$slot[$i]])) {
dropitem($i + 1);
$user[$slot[$i]] = null;
}
}
}
// убить предмет
function destructitem($id)
{
global $user;
$slot1 = '';
$dress = db::c()->query('SELECT * FROM `inventory` WHERE `owner` = ?i AND `id` = ?i', $user['id'], $id)->fetch_assoc();
switch ($dress['type']) {
case 1:
$slot1 = 'sergi';
break;
case 2:
$slot1 = 'kulon';
break;
case 3:
$slot1 = 'weap';
break;
case 4:
$slot1 = 'bron';
break;
case 5:
$slot1 = 'r1';
break;
case 6:
$slot1 = 'r2';
break;
case 7:
$slot1 = 'r3';
break;
case 8:
$slot1 = 'helm';
break;
case 9:
$slot1 = 'perchi';
break;
case 10:
$slot1 = 'shit';
break;
case 11:
$slot1 = 'boots';
break;
case 12:
$slot1 = 'm1';
break;
case 22:
$slot1 = 'rybax';
break;
case 23:
$slot1 = 'plaw';
break;
}
if ($dress['type'] == 5) {
if ($user['r1'] == $dress['id']) {
$slot1 = 'r1';
} elseif ($user['r2'] == $dress['id']) {
$slot1 = 'r2';
} elseif ($user['r3'] == $dress['id']) {
$slot1 = 'r3';
}
} elseif ($dress['type'] == 12) {
if ($user['m1'] == $dress['id']) {
$slot1 = 'm1';
} elseif ($user['m2'] == $dress['id']) {
$slot1 = 'm2';
} elseif ($user['m3'] == $dress['id']) {
$slot1 = 'm3';
} elseif ($user['m4'] == $dress['id']) {
$slot1 = 'm4';
} elseif ($user['m5'] == $dress['id']) {
$slot1 = 'm5';
} elseif ($user['m6'] == $dress['id']) {
$slot1 = 'm6';
} elseif ($user['m7'] == $dress['id']) {
$slot1 = 'm7';
} elseif ($user['m8'] == $dress['id']) {
$slot1 = 'm8';
} elseif ($user['m9'] == $dress['id']) {
$slot1 = 'm9';
} elseif ($user['m10'] == $dress['id']) {
$slot1 = 'm10';
}
}
if (($dress['owner'] == $user['id'])) {
if ($dress['dressed'] == 1) db::c()->query('UPDATE `users` SET ?f = 0 WHERE `id` = ?i', $slot1, $user['id']);
db::c()->query('DELETE FROM `inventory` WHERE `id` = ?i', $id);
}
}
// использовать магию
function usemagic($id)
{
global $user;
$row = mysql_fetch_array(mysql_query("SELECT * FROM `inventory` WHERE `owner` = '{$user['id']}' AND `id` = '" . mysql_real_escape_string($id) . "' LIMIT 1"));
$bat = mysql_fetch_array(mysql_query("SELECT * FROM `battle` WHERE `id` = '{$user['battle']}' LIMIT 1"));
$all_magic = unserialize($bat['magic']);
$charge = 0;
$magic = mysql_fetch_array(mysql_query("SELECT * FROM `magic` WHERE `id` = '" . $row['magic'] . "' LIMIT 1"));
if ($magic['needcharge'] > 0) {
$charge = $magic['needcharge'];
}
$incmagic = mysql_fetch_array(mysql_query("SELECT * FROM `magic` WHERE `id` = '" . $row['includemagic'] . "' LIMIT 1"));
if ($incmagic['needcharge'] > 0) {
$charge = $incmagic['needcharge'];
}
if (($all_magic[$user['id']] < 1) || ($charge == '0'))
if ((($user['sila'] >= $row['nsila']) &&
($user['lovk'] >= $row['nlovk']) &&
($user['inta'] >= $row['ninta']) &&
($user['vinos'] >= $row['nvinos']) &&
($user['intel'] >= $row['nintel']) &&
($user['level'] >= $row['nlevel']) &&
(($user['align'] > 7 && $user['align'] < 8) || ((int)$user['align'] == (int)$row['nalign']) || ($row['nalign'] == 0)) &&
($user['noj'] >= $row['nnoj']) &&
($user['topor'] >= $row['ntopor']) &&
($user['dubina'] >= $row['ndubina']) &&
($user['mec'] >= $row['nmech']) &&
($row['type'] < 13 || $row['type'] == 50) && ($user['mfire'] >= $row['nfire']) &&
($user['mwater'] >= $row['nwater']) &&
($user['mair'] >= $row['nair']) &&
($user['mearth'] >= $row['nearth']) &&
($user['mlight'] >= $row['nlight']) &&
($user['mgray'] >= $row['ngray']) &&
($user['mdark'] >= $row['ndark']) &&
($row['needident'] == 0)
) || $row['magic'] == 48 || $row['magic'] == 50) {
if (!$row['magic']) {
$incmagic['name'] = $row['includemagicname'];
$incmagic['cur'] = $row['includemagicdex'];
$incmagic['max'] = $row['includemagicmax'];
if ($incmagic['cur'] <= 0) {
return false;
}
$magic['targeted'] = $incmagic['targeted'];
echo "<font color=red><b>";
include("magic/" . $incmagic['file']);
echo "</b></font>";
} else {
echo "<font color=red><b>";
include("magic/" . $magic['file']);
echo "</b></font>";
}
if ($bat) {
if ($row['maxdur'] <= ($row['duration'] + 1)) {
//echo "<!--";
destructitem($row['id']);
//echo "-->";
} else {
if (!$row['magic']) {
mysql_query("UPDATE `inventory` SET `includemagicdex` =`includemagicdex`-{$bat} WHERE `id` = {$row['id']} LIMIT 1;");
} else {
mysql_query("UPDATE `inventory` SET `duration` =`duration`+{$bat} WHERE `id` = {$row['id']} LIMIT 1;");
}
}
if (!$charge) $charge = 0;
//ограничение по кол-ву за ход
if ($user['battle'] > 0)
$bat = mysql_fetch_array(mysql_query("SELECT * FROM `battle` WHERE `id`='{$user['battle']}';"));
if ($bat['magic'] == '')
$all_magic = [];
else
$all_magic = unserialize($bat['magic']);
$all_magic[$user['id']] += $charge;
mysql_query("UPDATE `battle` SET `magic`='" . serialize($all_magic) . "' WHERE `id`='{$user['battle']}';");
}
}
}
function addch($text, $room = 0)
{
global $user;
if ($room == 0) {
$room = $user['room'];
}
if ($fp = @fopen("tmp/chat.txt", "a")) { //открытие
flock($fp, LOCK_EX); //БЛОКИРОВКА ФАЙЛА
fputs($fp, ":[" . time() . "]:[!sys!!]:[" . ($text) . "]:[" . $room . "]\r\n"); //работа с файлом
fflush($fp); //ОЧИЩЕНИЕ ФАЙЛОВОГО БУФЕРА И ЗАПИСЬ В ФАЙЛ
flock($fp, LOCK_UN); //СНЯТИЕ БЛОКИРОВКИ
fclose($fp); //закрытие
}
}
function addchp($text, $who, $room = 0)
{
global $user;
if ($room == 0) {
$room = $user['room'];
}
$fp = fopen("tmp/chat.txt", "a"); //открытие
flock($fp, LOCK_EX); //БЛОКИРОВКА ФАЙЛА
fputs($fp, ":[" . time() . "]:[{$who}]:[" . ($text) . "]:[" . $room . "]\r\n"); //работа с файлом
fflush($fp); //ОЧИЩЕНИЕ ФАЙЛОВОГО БУФЕРА И ЗАПИСЬ В ФАЙЛ
flock($fp, LOCK_UN); //СНЯТИЕ БЛОКИРОВКИ
fclose($fp); //закрытие
}
/**
* @param $msg
*
* @throws \Krugozor\Database\Mysql\Exception
* Отправка системного сообщения в чат.
*/
function AddChatSystem($msg)
{
if ($msg) db::c()->query('INSERT INTO `chat` (`cid`,`msg`,`type`) VALUES (?i,"?s","?s")', 1, $msg, 'sys');
}
function err($t)
{
echo '<span class="error">' . $t . '</span>';
return true;
}
// ставим травму
function settravma($id, $type, $time = 86400, $kill = false)
{
$user = mysql_fetch_array(mysql_query("SELECT `align`, `level` FROM `users` WHERE `id` = '{$id}' LIMIT 1"));
if ((($user['align'] == 2 && mt_rand(1, 100) > 20) && !$kill) || ($user['level'] == 0)) {
return false;
} else {
$travmalist = ["разбитый нос", "сотрясение первой степени", "потрепанные уши", "прикушенный язык", "перелом переносицы", "растяжение ноги", "растяжение руки", "подбитый глаз", "синяк под глазом", "кровоточащее рассечение", "отбитая <пятая точка>", "заклинившая челюсть", "выбитый зуб <мудрости>", "косоглазие"];
$travmalist2 = ["отбитые почки", "вывих <вырезано цензурой>", "сотрясение второй степени", "оторванное ухо", "вывих руки", "оторванные уши", "поврежденный позвоночник", "отбитые почки", "поврежденный копчик", "разрыв сухожилия", "перелом ребра", "перелом двух ребер", "вывих ноги", "сломанная челюсть"];
$travmalist3 = ["пробитый череп", "разрыв селезенки", "смещение позвонков", "открытый перелом руки", "открытый перелом <вырезано цензурой>", "излом носоглотки", "непонятные, но множественные травмы", "сильное внутреннее кровотечение", "раздробленная коленная чашечка", "перелом шеи", "смещение позвонков", "открытый перелом ключицы", "перелом позвоночника", "вывих позвоночника", "сотрясение третьей степени"];
$owntravma = mysql_fetch_array(mysql_query("SELECT `type`, `id`, `sila`, `lovk`, `inta`, `hp` FROM `effects` WHERE `owner` = " . $id . " AND (`type` = 11 OR `type` = 12 OR `type` = 13) ORDER BY `type` DESC LIMIT 1"));
if ($type != 0 && $type != 100) {
$owntravma['type'] = $type;
} elseif ($type != 0 && $type == 100 && $owntravma['type'] == 0) {
$type = mt_rand(1, 100);
if ($type < 10) {
$owntravma['type'] = 25;
} elseif ($type < 60) {
$owntravma['type'] = "set";
} elseif ($type < 85) {
$owntravma['type'] = 11;
} else {
$owntravma['type'] = 12;
}
} elseif ($owntravma['type'] == 0) {
$tr = mt_rand(1, 3);
switch ($tr) {
case 1:
$owntravma['type'] = 0;
break;
case 2:
$owntravma['type'] = 11;
break;
case 3:
$owntravma['type'] = 12;
break;
}
}
switch ($owntravma['type']) {
case 20:
$st = mt_rand(0, 2);
$zz = mt_rand(1, 3);
$s = 0;
$l = 0;
$i = 0;
switch ($zz) {
case 1:
$s = ($user['level'] + $st) * 3;
break;
case 2:
$l = ($user['level'] + $st) * 3;
break;
case 3:
$i = ($user['level'] + $st) * 3;
break;
}
$trv = $travmalist3[mt_rand(0, count($travmalist3) - 1)];
mysql_query("INSERT INTO `effects` (`owner`, `name`, `time`, `type`, `sila`, `lovk`, `inta`, `vinos`) VALUES ('" . $id . "', 'Травма &quot;" . $trv . "&quot;', " . (time() + $time) . ", '13', '" . $s . "', '" . $l . "', '" . $i . "', '0')");
mysql_query("UPDATE `users` SET `sila` = (`sila`-'" . $s . "'), `lovk` = (`lovk`-'" . $l . "'), `inta` = (`inta`-'" . $i . "') WHERE `id` = '" . $id . "' LIMIT 1");
return $trv;
break;
default:
$st = mt_rand(0, 2);
$zz = mt_rand(1, 3);
$s = 0;
$l = 0;
$i = 0;
switch ($zz) {
case 1:
$s = $user['level'] + $st;
break;
case 2:
$l = $user['level'] + $st;
break;
case 3:
$i = $user['level'] + $st;
break;
}
$trv = $travmalist[mt_rand(0, count($travmalist) - 1)];
$time = 60 * 60 * mt_rand(1, 5);
mysql_query("INSERT INTO `effects` (`owner`, `name`, `time`, `type`, `sila`, `lovk`, `inta`, `vinos`) VALUES ('" . $id . "', 'Травма &quot;" . $trv . "&quot;', " . (time() + $time) . ", '11', '" . $s . "', '" . $l . "', '" . $i . "', '0')");
mysql_query("UPDATE `users` SET `sila` = (`sila`-'" . $s . "'), `lovk` = (`lovk`-'" . $l . "'), `inta` = (`inta`-'" . $i . "') WHERE `id` = '" . $id . "' LIMIT 1");
return $trv;
break;
case 11:
$zz = mt_rand(1, 3);
$s = 0;
$l = 0;
$i = 0;
switch ($zz) {
case 1:
$s = ($user['level']) * 2;
break;
case 2:
$l = ($user['level']) * 2;
break;
case 3:
$i = ($user['level']) * 2;
break;
}
$trv = $travmalist2[mt_rand(0, count($travmalist2) - 1)];
$time = 60 * 60 * mt_rand(5, 15);
mysql_query("INSERT INTO `effects` (`owner`, `name`, `time`, `type`, `sila`, `lovk`, `inta`, `vinos`) VALUES ('" . $id . "', 'Травма &quot;" . $trv . "&quot;', " . (time() + $time) . ", '12', '" . $s . "', '" . $l . "', '" . $i . "', '0')");
mysql_query("UPDATE `users` SET `sila` = (`sila`-'" . $s . "'), `lovk` = (`lovk`-'" . $l . "'), `inta` = (`inta`-'" . $i . "') WHERE `id` = '" . $id . "' LIMIT 1");
return $trv;
break;
case 12:
$zz = mt_rand(1, 3);
$s = 0;
$l = 0;
$i = 0;
switch ($zz) {
case 1:
$s = ($user['level']) * 3;
break;
case 2:
$l = ($user['level']) * 3;
break;
case 3:
$i = ($user['level']) * 3;
break;
}
$trv = $travmalist3[mt_rand(0, count($travmalist3) - 1)];
$time = 60 * 60 * mt_rand(15, 24);
mysql_query("INSERT INTO `effects` (`owner`, `name`, `time`, `type`, `sila`, `lovk`, `inta`, `vinos`) VALUES ('" . $id . "', 'Травма &quot;" . $trv . "&quot;', " . (time() + $time) . ", '13', '" . $s . "', '" . $l . "', '" . $i . "', '0')");
mysql_query("UPDATE `users` SET `sila` = (`sila`-'" . $s . "'), `lovk` = (`lovk`-'" . $l . "'), `inta` = (`inta`-'" . $i . "') WHERE `id` = '" . $id . "' LIMIT 1");
return $trv;
break;
case 13:
$zz = mt_rand(1, 3);
$s = 0;
$l = 0;
$i = 0;
switch ($zz) {
case 1:
$s = ($user['level']) * 3;
break;
case 2:
$l = ($user['level']) * 3;
break;
case 3:
$i = ($user['level']) * 3;
break;
}
$trv = $travmalist3[mt_rand(0, count($travmalist3) - 1)];
$time = 60 * 60 * mt_rand(25, 26);
mysql_query("INSERT INTO `effects` (`owner`, `name`, `time`, `type`, `sila`, `lovk`, `inta`, `vinos`) VALUES ('" . $id . "', 'Травма &quot;" . $trv . "&quot;', " . (time() + $time) . ", '14', '" . $s . "', '" . $l . "', '" . $i . "', '0')");
mysql_query("UPDATE `users` SET `sila` = (`sila`-'" . $s . "'), `lovk` = (`lovk`-'" . $l . "'), `inta` = (`inta`-'" . $i . "') WHERE `id` = '" . $id . "' LIMIT 1");
return $trv;
break;
}
}
}
function deltravma($id)
{
$owntravmadb = mysql_query("SELECT `type`, `id`, `sila`, `lovk`, `inta`, `owner` FROM `effects` WHERE `id` = " . $id . " AND (`type` = 11 OR `type` = 12 OR `type` = 13 OR `type` = 14)");
while ($owntravma = mysql_fetch_array($owntravmadb)) {
mysql_query("DELETE FROM `effects` WHERE `id` = '" . $owntravma['id'] . "' LIMIT 1");
mysql_query("UPDATE `users` SET `sila` = (`sila`+'" . $owntravma['sila'] . "'), `lovk` = (`lovk`+'" . $owntravma['lovk'] . "'), `inta` = (`inta`+'" . $owntravma['inta'] . "') WHERE `id` = '" . $owntravma['owner'] . "' LIMIT 1");
}
}
/**
* @param $name
* @param $text
*
* @throws \Krugozor\Database\Mysql\Exception
*/
function telegraph($userId, $text)
{
db::c()->query('SELECT 1 FROM `users` WHERE `id` = ?i', $userId)->fetch_assoc();
if (db::c()->getAffectedRows()) db::c()->query('INSERT INTO `telegraph` (receiver, text) VALUES (?i,"?s")', $userId, $text);
}
function get_meshok()
{
global $user;
$d = db::c()->query('SELECT SUM(`gmeshok`) AS `ves` FROM `inventory` WHERE `owner` = ?i AND `setsale` = 0 AND `gmeshok` > 0', $_SESSION['uid'])->fetch_assoc();
return ($user['sila'] * 4 + $d['ves']);
}
/**
* Надеюсь временная заглушка, которая объединяет get_meshok() и другую выдачу одной строкой.
* @return string
*/
function getItemsMassaInfo()
{
$i_row = db::c()->query('SELECT SUM(`massa`) AS `massa`, SUM(`gmeshok`) AS `massa_bonus` FROM `inventory` WHERE `setsale` = 0 AND `owner` = ?i', $_SESSION['uid'])->fetch_assoc();
$u_row = db::c()->query('SELECT `sila` FROM `users` WHERE `id` = ?i', $_SESSION['uid'])->fetch_assoc();
if ($i_row['massa'] > $u_row['sila'] * 4 + $i_row['massa_bonus'])
return "<span style='color:maroon;'>" . $i_row['massa'] . "</span>/" . ($u_row['sila'] * 4 + $i_row['massa_bonus']);
else return $i_row['massa'] . "/" . ($u_row['sila'] * 4 + $i_row['massa_bonus']);
}
function addlog($id, $log)
{
$fp = fopen("backup/logs/battle" . $id . ".txt", "a");
flock($fp, LOCK_EX);
fputs($fp, $log);
fflush($fp);
flock($fp, LOCK_UN);
fclose($fp);
unset($id, $log);
}
function star_sign($month, $day)
{
if (empty($month) or empty($day)) {
$month = (int)sprintf("%02d", mt_rand(1, 12));
$day = (int)sprintf("%02d", mt_rand(1, 29));
}
$signs = ["10", "11", "12", "01", "02", "03", "04", "05", "06", "07", "08", "09"];
$signsstart = [01 => 21, 02 => 20, 03 => 20, 04 => 20, 05 => 20, 06 => 20, 07 => 21, 08 => 22, 09 => 23, 10 => 23, 11 => 23, 12 => 23];
return $day < $signsstart[$month + 1] ? $signs[$month - 1] : $signs[$month % 12];
}
function SolveExp($at_id, $def_id, $damage)
{
$mods = ['bloodb' => 1.2, 'btl_1' => 1, 'btl_2' => 0.5, 'btl_3' => 0.05];
$baseexp = ["0" => "2", "1" => "5", "2" => "10", "3" => "15", "4" => "30", "5" => "60", "6" => "90", "7" => "115", "8" => "300", "9" => "400", "10" => "500", "11" => "600", "12" => "700", "13" => "800", "14" => "900", "15" => "1000", "16" => "1100", "17" => "1200", "18" => "1300", "19" => "1400", "20" => "1500", "21" => "1600"];
$expmf = 0;
$bot_active = false;
$bot_def = false;
if ($at_id > _BOTSEPARATOR_) {
$bots = mysql_fetch_array(mysql_query('SELECT * FROM `bots` WHERE `id` = "' . $at_id . '" LIMIT 1'));
$at_id = $bots['prototype'];
$bot_active = true;
}
$at = db::c()->query('SELECT `level` FROM `users` WHERE `id` = ?i', $at_id)->fetch_assoc();
$def = db::c()->query('SELECT `level` FROM `users` WHERE `id` = ?i', $def_id)->fetch_assoc();
$at_cost = mysql_fetch_array(mysql_query("SELECT 1+IFNULL((SELECT SUM(`cost`) FROM `inventory` WHERE `owner` = `users`.`id` AND `dressed` = 1), 0), `align` FROM `users` WHERE `id` = '" . $at_id . "' LIMIT 1"));
$def_cost = mysql_fetch_array(mysql_query("SELECT 1+IFNULL((SELECT SUM(`cost`) FROM `inventory` WHERE `owner` = `users`.`id` AND `dressed` = 1), 0), `align` FROM `users` WHERE `id` = '" . $def_id . "' LIMIT 1"));
if ($at_id > _BOTSEPARATOR_) {
$bat_raw = mysql_fetch_array(mysql_query("SELECT `battle` FROM `bots` WHERE `id` = '$at_id' LIMIT 1"));
} else {
$bat_raw = mysql_fetch_array(mysql_query("SELECT `battle` FROM `users` WHERE `id` = '$at_id' LIMIT 1"));
}
$bat = $bat_raw['battle'];
$bt = db::c()->query('SELECT `blood`,`type`,`t1`,`t2` FROM `battle` WHERE `id` = ?i', $bat)->fetch_assoc();
if ($def_id > _BOTSEPARATOR_) {
$bots = mysql_fetch_array(mysql_query('SELECT * FROM `bots` WHERE `id` = "' . $def_id . '" LIMIT 1'));
$def_id = $bots['prototype'];
$bot_def = true;
}
if ($bt['blood']) {
$expmf = $mods['bloodb'];
}
$filebtl = '/tmp/' . $at_id . '.btl';
if ($bt['type'] == 1 && file_exists($filebtl)) {
$btfl = fopen($filebtl, 'r');
$contents = fread($btfl, filesize($filebtl));
fclose($btfl);
$cnt = substr_count($contents, $def_id);
$exmod = 1;
if ($cnt <= 1) {
$exmod = $mods['btl_1'];
} elseif ($cnt == 2) {
$exmod = $mods['btl_2'];
} elseif ($cnt > 2) {
$exmod = $mods['btl_3'];
}
$expmf = $expmf * $exmod;
}
$standart = [
"0" => 1,
"1" => 1,
"2" => 15,
"3" => 111,
"4" => 265,
"5" => 526,
"6" => 882,
"7" => 919,
"8" => 919,
"9" => 919,
"10" => 919,
"11" => 919,
"12" => 919,
"13" => 919, "14" => 919, "15" => 919, "16" => 919, "17" => 919, "18" => 919, "19" => 919, "20" => 919, "21" => 919, "22" => 919, "23" => 919, "24" => 919, "25" => 919];
$mfit = ($at_cost[0] / ($standart[$at['level']] / 3));
if ($mfit < 0.8) {
$mfit = 0.8;
}
if ($mfit > 1.5) {
$mfit = 1.5;
}
$pls = count(explode(";", $bt['t1'])) + count(explode(";", $bt['t2']));
if ($pls > 2) {
$mfbot = $bot_active == true ? 0.3 : 1;
$mfbot2 = $bot_def == true ? 0.7 : 1;
} else {
$mfbot = 1;
$mfbot2 = 1;
}
if ($expmf == 0) {
$expmf = 1;
}
$result = ($baseexp[$def['level']]) * ($def_cost[0] / (($at_cost[0] + $def_cost[0]) / 2)) * ($damage / $def['maxhp']) * $expmf * $mfit * $mfbot * $mfbot2;
$result = $result / 3;
$result = round($result, 0);
return $result;
}
/**
* Функция записи в личное дело.
*
* @param string $message - текст записи.
* @param int $user_id - ID пользователя которому добавляется запись.
* @param int $type - тип записи: (1)обычная, (2)модераторская.
*
* @return bool
*/
function addToDelo($message, $user_id = 0, $type = 1)
{
if (empty($user_id)) $user_id = $_SESSION['uid'];
db::c()->query('INSERT INTO `delo` (pers, text, type, date) VALUES (?i,"?s",?i,?i)', $user_id, $message, $type, time());
return true;
}
/**
* Апаем стат или мастерство на единицу.
*
* @param $name - техническое имя параметра, как в базе.
* @param null $param - выбор что повышать.
*
* @return void
*/
function addOnePoint($name, $param = null)
{
$allowed_stats = ['sila', 'lovk', 'inta', 'vinos', 'intel', 'mudra'];
$allowed_mastery = ['noj', 'mec', 'dubina', 'topor', 'mfire', 'mwater', 'mair', 'mearth', 'mlight', 'mgray', 'mdark'];
$naming = [
'sila' => 'Сила',
'lovk' => 'Ловкость',
'inta' => 'Интуиция',
'vinos' => 'Выносливость',
'intel' => 'Интеллект',
'mudra' => 'Мудрость',
'noj' => 'Владение кинжалами',
'mec' => 'Владение мечами',
'dubina' => 'Владение дубинами',
'topor' => 'Владение топорами',
'mfire' => 'Магия огня',
'mwater' => 'Магия воды',
'mair' => 'Магия воздуха',
'mearth' => 'Магия земли',
'mlight' => 'Магия света',
'mgray' => 'Магия серости',
'mdark' => 'Магия тьмы'
];
if ($param == 'stat' AND in_array($name, $allowed_stats)) {
db::c()->query('UPDATE `users` SET ?f = ?f + 1, `stats` = `stats` - 1 WHERE `id` = ?i', $name, $name, $_SESSION['uid']);
echo "<span style='color:darkgreen'>Параметр {$naming[$name]} увеличен на 1 ед.</span>";
} elseif ($param == 'mastery' AND in_array($name, $allowed_mastery)) {
$mastery_level = db::c()->query('SELECT ?f FROM `users` WHERE `id` = ?i', $name, $_SESSION['uid'])->fetch_assoc();
if ($mastery_level[$name] < 10) {
db::c()->query('UPDATE `users` SET ?f = ?f + 1, `master` = `master` - 1 WHERE `id` = ?i', $name, $name, $_SESSION['uid']);
echo "<span style='color:darkgreen'>Параметр {$naming[$name]} увеличен на 1 ед.</span>";
} else echo "<span style='color: maroon;'>Ошибка: параметр достиг максимального значения!</span>";
} else return null;
}
function checkIntInRange($int, $min = 1, $max = PHP_INT_MAX)
{
return (int)filter_var($int, FILTER_VALIDATE_INT, ['options' => ['min_range' => $min, 'max_range' => $max]]);
}