tests
This commit is contained in:
parent
b5299b8afd
commit
8d34a55435
119
functions.php
119
functions.php
@ -38,7 +38,7 @@ function createbot($bot, $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 array("id" => $nid, "login" => $botname);
|
||||
return ["id" => $nid, "login" => $botname];
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@ -56,8 +56,8 @@ $userslots = ['sergi', 'kulon', 'perchi', 'weap', 'bron', 'r1', 'r2', 'r3', 'hel
|
||||
|
||||
function getuserdata($id = 0)
|
||||
{
|
||||
if (!$id) $id = isset($_SESSION['uid']) ? $_SESSION['uid'] : NULL; // Хорошее решение проверок, кстати.
|
||||
if (!$id) return array();
|
||||
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);
|
||||
@ -72,7 +72,7 @@ if (!isset($user)) {
|
||||
$user = getuserdata();
|
||||
}
|
||||
|
||||
$var_map = array(
|
||||
$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' => 'Мщаник',
|
||||
@ -80,7 +80,7 @@ $var_map = array(
|
||||
'cell_17' => 'Тихоход', 'cell_18' => 'Сосновый гай', 'cell_19' => 'Смешаный лес', 'cell_20' => 'Темная поляна',
|
||||
'cell_21' => 'Осенний угол', 'cell_22' => 'Грибное место', 'cell_23' => 'Опушка', 'cell_24' => 'Рыжий лес',
|
||||
'cell_25' => 'Полесье'
|
||||
);
|
||||
];
|
||||
|
||||
function get_out($u)
|
||||
{
|
||||
@ -89,7 +89,7 @@ function get_out($u)
|
||||
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 = array(11, 12, 13, 14);
|
||||
$travm = [11, 12, 13, 14];
|
||||
while ($efs = mysql_fetch_array($row)) {
|
||||
if (in_array($efs['type'], $travm)) {
|
||||
$pers['sila'] -= $efs['sila'];
|
||||
@ -130,7 +130,7 @@ function takeshopitem($item, $table = "shop", $present = '', $onlyonetrip = '',
|
||||
|
||||
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 array("img" => $rec1['img'], "name" => $rec1['name']);
|
||||
if (mysql_affected_rows() > 0) return ["img" => $rec1['img'], "name" => $rec1['name']];
|
||||
$rec1['koll'] = $koll;
|
||||
$rec1['massa'] *= $koll;
|
||||
}
|
||||
@ -138,7 +138,7 @@ function takeshopitem($item, $table = "shop", $present = '', $onlyonetrip = '',
|
||||
if ($rec1['onlyone']) {
|
||||
$i = mysql_fetch_row(mysql_query("SELECT `id` FROM `inventory` WHERE `owner` = '$uid' AND `prototype` = '$item'"));
|
||||
if ($i) {
|
||||
return array("error" => "У вас слишком много таких вещей.");
|
||||
return ["error" => "У вас слишком много таких вещей."];
|
||||
}
|
||||
}
|
||||
|
||||
@ -170,11 +170,11 @@ function takeshopitem($item, $table = "shop", $present = '', $onlyonetrip = '',
|
||||
}
|
||||
|
||||
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 array("img" => $rec1['img'], "name" => $rec1['name'], "id" => mysql_insert_id());
|
||||
return ["img" => $rec1['img'], "name" => $rec1['name'], "id" => mysql_insert_id()];
|
||||
}
|
||||
|
||||
$abils_array = array('attack', 'sleep', 'sleepf');
|
||||
$ab_user = array('sleep15', 'sleep30', 'closebattle', 'heal20', 'heal35', 'heal50', 'travmoff', 'attack', 'bloodattack', 'death', 'comment', 'openbattle', 'reamdeath', 'clone', 'unclone');
|
||||
$abils_array = ['attack', 'sleep', 'sleepf'];
|
||||
$ab_user = ['sleep15', 'sleep30', 'closebattle', 'heal20', 'heal35', 'heal50', 'travmoff', 'attack', 'bloodattack', 'death', 'comment', 'openbattle', 'reamdeath', 'clone', 'unclone'];
|
||||
|
||||
define('_BOTSEPARATOR_', 10000000);
|
||||
|
||||
@ -532,19 +532,19 @@ $rooms = [
|
||||
|
||||
];
|
||||
//эффективность магии
|
||||
$elem_align = array(
|
||||
"a" => array("a" => "1", "e" => "0", "f" => "0.5", "w" => "0.5"),
|
||||
"e" => array("a" => "0", "e" => "1", "f" => "0.5", "w" => "0.5"),
|
||||
"f" => array("a" => "0.5", "e" => "0.5", "f" => "1", "w" => "0"),
|
||||
"w" => array("a" => "0.5", "e" => "0.5", "f" => "0", "w" => "1"),
|
||||
);
|
||||
$elem_align = [
|
||||
"a" => ["a" => "1", "e" => "0", "f" => "0.5", "w" => "0.5"],
|
||||
"e" => ["a" => "0", "e" => "1", "f" => "0.5", "w" => "0.5"],
|
||||
"f" => ["a" => "0.5", "e" => "0.5", "f" => "1", "w" => "0"],
|
||||
"w" => ["a" => "0.5", "e" => "0.5", "f" => "0", "w" => "1"],
|
||||
];
|
||||
|
||||
$elem_bonus = array(
|
||||
"a" => array("a" => "1", "e" => "0.75", "f" => "1.25", "w" => "1"),
|
||||
"e" => array("a" => "1.25", "e" => "1", "f" => "1", "w" => "0.75"),
|
||||
"f" => array("a" => "0.75", "e" => "1", "f" => "1", "w" => "1.25"),
|
||||
"w" => array("a" => "1", "e" => "1.25", "f" => "0.75", "w" => "1"),
|
||||
);
|
||||
$elem_bonus = [
|
||||
"a" => ["a" => "1", "e" => "0.75", "f" => "1.25", "w" => "1"],
|
||||
"e" => ["a" => "1.25", "e" => "1", "f" => "1", "w" => "0.75"],
|
||||
"f" => ["a" => "0.75", "e" => "1", "f" => "1", "w" => "1.25"],
|
||||
"w" => ["a" => "1", "e" => "1.25", "f" => "0.75", "w" => "1"],
|
||||
];
|
||||
|
||||
header("Cache-Control: no-cache");
|
||||
|
||||
@ -708,9 +708,9 @@ function setHP($hp, $maxhp)
|
||||
*/
|
||||
function setHP2($hp, $maxhp)
|
||||
{
|
||||
$bar = round($hp/$maxhp*100);
|
||||
$bar = round($hp / $maxhp * 100);
|
||||
$output = <<<HTML
|
||||
<div style="width: 75%; height: 16px; background: silver; overflow: hidden; border-radius: 3px;">
|
||||
<div style="width: 100%; height: 16px; background: silver; overflow: hidden; border-radius: 3px;">
|
||||
<div style="height: 16px; background: limegreen; border-radius: 3px; width: $bar%;"></div>
|
||||
</div>
|
||||
<div style="width: 100%; height: 16px; font-size: 14px; text-align: center; margin-top: -16px;">
|
||||
@ -908,21 +908,29 @@ function timetoheals($user)
|
||||
return $fulltime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Функция отображения персонажа для других персонажей везде и для себя в бою.
|
||||
*
|
||||
* @param $id
|
||||
* @param int $pas
|
||||
* @param int $battle
|
||||
* @param int $me
|
||||
* @param bool $main
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function showinf_pers($id, $pas = 0, $battle = 0, $me = 0, $main = false) //FIXME 37 запросов! ТРИДЦАТЬ СЕМЬ! Чтобы отобразить предметы на персонаже.
|
||||
{
|
||||
global $rooms;
|
||||
$r = '';
|
||||
if ($id > _BOTSEPARATOR_) { //FIXME Оно как бы и работает, но два тяжёлющих запроса в самые крупные базы, чтобы подменить два значения...
|
||||
// $bots = mysql_fetch_array(mysql_query('SELECT * FROM `bots` WHERE `id` = "' . (int)$id . '" LIMIT 1'));
|
||||
// $id = $bots['prototype'];
|
||||
// $user = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id` = '{$id}' LIMIT 1"));
|
||||
// $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'];
|
||||
die('Неустранимая ошибка в showinf_pers(), обратитесь к разработчику.');
|
||||
$user = db::c()->query('SELECT * FROM `users` WHERE `id` = ?i', $id)->fetch_assoc();
|
||||
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 {
|
||||
// $user = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id` = '{$id}' LIMIT 1"));
|
||||
$user = db::c()->query('SELECT * FROM `users` WHERE `id` = ?i', $id)->fetch_assoc();
|
||||
$invis = $user['invis'];
|
||||
}
|
||||
|
||||
@ -954,7 +962,7 @@ function showinf_pers($id, $pas = 0, $battle = 0, $me = 0, $main = false) //FIXM
|
||||
}
|
||||
|
||||
$r .= '<center>';
|
||||
$r .= "<a href=\"javascript: top.AddToPrivate('$user[login]', top.CtrlPress)\" target=\"refreshed\"><img src=\"/i/lock.gif\" width=\"20\" height=\"15\" /></a>" . ($user['align'] > 0 ? "<img src=\"/i/align_" . $user['align'] . ".gif\" />" : "") . ($user['klan'] != '' ? '<img title="' . ClanImage($user['klan']) . '" src="i/klan/' . ClanImage($user['klan']) . '.gif" />' : "") . "<b>$user[login]</b> [";
|
||||
$r .= ($user['align'] > 0 ? "<img src=\"/i/align_" . $user['align'] . ".gif\" />" : "") . ($user['klan'] != '' ? '<img title="' . ClanImage($user['klan']) . '" src="i/klan/' . ClanImage($user['klan']) . '.gif" />' : "") . "<b>$user[login]</b> [";
|
||||
$r .= $user['level'];
|
||||
$r .= "]<a href=\"inf.php?$user[id]\" target=\"_blank\"><img src=\"/i/inf.gif\" width=\"12\" height=\"11\" /></a>";
|
||||
|
||||
@ -1253,6 +1261,7 @@ function showinf_pers($id, $pas = 0, $battle = 0, $me = 0, $main = false) //FIXM
|
||||
|
||||
/**
|
||||
* Смотрим на себя в главном окне игры.
|
||||
*
|
||||
* @param int $pas
|
||||
*/
|
||||
function showpersout($pas = 0) //FIXME Сделать по человечески!
|
||||
@ -1593,6 +1602,7 @@ function showpersout($pas = 0) //FIXME Сделать по человеческ
|
||||
* @param $vars
|
||||
* @param $vls
|
||||
* @param $uid
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
function addActions($time, $vars, $vls, $uid)
|
||||
@ -1647,10 +1657,11 @@ function showitem2()
|
||||
/**
|
||||
* По ходу, главная функция отображения предметов.
|
||||
*
|
||||
* @param array $row - массив значений, передаваймый из запроса к таблице inventory
|
||||
* @param int $type - тип предмета. Где бы их всех взять?
|
||||
* @param bool $returned
|
||||
* @param bool $infOnly
|
||||
* @param array $row - массив значений, передаваймый из запроса к таблице inventory
|
||||
* @param int $type - тип предмета. Где бы их всех взять?
|
||||
* @param bool $returned
|
||||
* @param bool $infOnly
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
|
||||
@ -1898,7 +1909,7 @@ function showitem($row, $type = null, $returned = false, $infOnly = false)
|
||||
}
|
||||
} else $returnHTML .= "<br><b style='color: maroon'>Свойства предмета не идентифицированы!</b>";
|
||||
|
||||
$osob = array(22, 23);
|
||||
$osob = [22, 23];
|
||||
if (in_array($row['type'], $osob)) {
|
||||
$returnHTML .= 'Особенности:<br />';
|
||||
if ($row['type'] == 22) {
|
||||
@ -2477,7 +2488,7 @@ function usemagic($id)
|
||||
if ($user['battle'] > 0)
|
||||
$bat = mysql_fetch_array(mysql_query("SELECT * FROM `battle` WHERE `id`='{$user['battle']}';"));
|
||||
if ($bat['magic'] == '')
|
||||
$all_magic = array();
|
||||
$all_magic = [];
|
||||
else
|
||||
$all_magic = unserialize($bat['magic']);
|
||||
$all_magic[$user['id']] += $charge;
|
||||
@ -2519,6 +2530,7 @@ function addchp($text, $who, $room = 0)
|
||||
|
||||
/**
|
||||
* @param $msg
|
||||
*
|
||||
* @throws \Krugozor\Database\Mysql\Exception
|
||||
* Отправка системного сообщения в чат.
|
||||
*/
|
||||
@ -2540,9 +2552,9 @@ function settravma($id, $type, $time = 86400, $kill = false)
|
||||
if ((($user['align'] == 2 && mt_rand(1, 100) > 20) && !$kill) || ($user['level'] == 0)) {
|
||||
return false;
|
||||
} else {
|
||||
$travmalist = array("разбитый нос", "сотрясение первой степени", "потрепанные уши", "прикушенный язык", "перелом переносицы", "растяжение ноги", "растяжение руки", "подбитый глаз", "синяк под глазом", "кровоточащее рассечение", "отбитая <пятая точка>", "заклинившая челюсть", "выбитый зуб <мудрости>", "косоглазие");
|
||||
$travmalist2 = array("отбитые почки", "вывих <вырезано цензурой>", "сотрясение второй степени", "оторванное ухо", "вывих руки", "оторванные уши", "поврежденный позвоночник", "отбитые почки", "поврежденный копчик", "разрыв сухожилия", "перелом ребра", "перелом двух ребер", "вывих ноги", "сломанная челюсть");
|
||||
$travmalist3 = array("пробитый череп", "разрыв селезенки", "смещение позвонков", "открытый перелом руки", "открытый перелом <вырезано цензурой>", "излом носоглотки", "непонятные, но множественные травмы", "сильное внутреннее кровотечение", "раздробленная коленная чашечка", "перелом шеи", "смещение позвонков", "открытый перелом ключицы", "перелом позвоночника", "вывих позвоночника", "сотрясение третьей степени");
|
||||
$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;
|
||||
@ -2757,10 +2769,10 @@ function get_meshok()
|
||||
*/
|
||||
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();
|
||||
$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']);
|
||||
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']);
|
||||
}
|
||||
|
||||
@ -2777,6 +2789,10 @@ function addlog($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];
|
||||
@ -2882,8 +2898,9 @@ function SolveExp($at_id, $def_id, $damage)
|
||||
* Функция записи в личное дело.
|
||||
*
|
||||
* @param string $message - текст записи.
|
||||
* @param int $user_id - ID пользователя которому добавляется запись.
|
||||
* @param int $type - тип записи: (1)обычная, (2)модераторская.
|
||||
* @param int $user_id - ID пользователя которому добавляется запись.
|
||||
* @param int $type - тип записи: (1)обычная, (2)модераторская.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
function addToDelo($message, $user_id = 0, $type = 1)
|
||||
@ -2895,8 +2912,10 @@ function addToDelo($message, $user_id = 0, $type = 1)
|
||||
|
||||
/**
|
||||
* Апаем стат или мастерство на единицу.
|
||||
* @param $name - техническое имя параметра, как в базе.
|
||||
*
|
||||
* @param $name - техническое имя параметра, как в базе.
|
||||
* @param null $param - выбор что повышать.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function addOnePoint($name, $param = null)
|
||||
|
Loading…
Reference in New Issue
Block a user