* Project name: Battles-Game */ require_once 'config.php'; /** * Класс-заглушка для работы глобальных переменных в функциях. * Возвращает массив данных таблицы users. */ $u = new users_row($_SESSION['uid']); $user = $u->result(); 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`, `battle`, `hp`) VALUES ("?s", "?s", "?s", "?s")', $botname, $bot, $battle, $rec['maxhp']); $nid = db::c()->getLastInsertId(); return array("id" => $nid, "login" => $botname); } else { return false; } } #####Для нападалок. Сперва комнаты в которых нельзя напасть, потом персонаж на которого нельзя напасть. $unkilable = array( 'rooms' => array(620, 621, 1051, 1052), 'users' => array(10962, 10964, 10965) ); $runes_exp = array('1' => 10500, '2' => 23500, '3' => 38500, '4' => 57000, '5' => 77000, '6' => 103000, '7' => 136500, '8' => 171500, '9' => 212500, '10' => 257500); $canalenters = array(620); $caverooms = array(621); $userslots = array('sergi', 'kulon', 'perchi', 'weap', 'bron', 'r1', 'r2', 'r3', 'helm', 'shit', 'boots', 'rybax', 'plaw', 'm1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7', 'm8', 'm9', 'm10'); function getuserdata($id = 0) { if (!$id) $id = isset($_SESSION['uid'])?$_SESSION['uid']:NULL; // Хорошее решение проверок, кстати. if (!$id) return array(); $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(); } //if (empty($user['battle']) && ($user['hp'] < @$user['maxhp'])) { // regenhp($user); //} $inder = filter_input(INPUT_COOKIE, 'inder'); if (!isset($banks['id'])) { $banks = db::c()->query('SELECT `id`, `cr`, `ekr` FROM `bank` WHERE `id` = "?s" AND `owner` = "?s" LIMIT 1', $inder, $user['id'])->fetch_assoc(); } function auth_bank($id, $pass, $us) { global $banks; $bn = db::c()->query('SELECT `id`, `pass` FROM `bank` WHERE `id` = ?i AND `owner` = "?s"', $id, $us)->fetch_assoc(); if (isset($bn['id'])) { if ($bn['pass'] == md5($pass)) { setcookie('inder', $bn['id'], time() + 60 * 60 * 24 * 7, '/', GAMEDOMAIN, 0, true); $banks['id'] = $bn['id']; $msg = 'Успешная авторизация ...'; } else { $msg = 'Неверный пароль ...'; } } else { $msg = 'Счёт не найден ...'; } return $msg; } function exit_bank($link) { global $banks; $r = 'Работа со счётом завершена ...'; setcookie('inder', '', time() + 60 * 60 * 24 * 7, '', GAMEDOMAIN); $banks['id'] = null; header('Location: ' . $link); return $r; } function getNum($v) { $plid = $v; $pi = iconv_strlen($plid); if ($pi < 5) { $i = 0; while ($i <= 5 - $pi) { $plid = '0' . $plid; $i++; } } return $plid; } function banks() { global $user, $banks; $bank = db::c()->query('SELECT `id`, `cr`, `ekr` FROM `bank` WHERE `id` = "?s" AND `owner` = "?s" LIMIT 1', $banks['id'], $user['id'])->fetch_assoc(); if (isset($bank['id'])) { echo '
'; } else { $sp = db::c()->query('SELECT `id` FROM `bank` WHERE `owner` = "?s" ORDER BY `id` ASC', $user['id']); if ($sp->getNumRows() > 0) { $nums .= ' '; } else { $nums = 'У вас нет счетов'; } $auth = $nums; echo ''; } } if (isset($user['id']) && $user['block'] == 1) { die(); } $var_map = array( '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 close_dangling_tags($html) { preg_match_all("#<([a-z]+)( .*)?(?!/)>#iU", $html, $result); $openedtags = $result[1]; preg_match_all("#([a-z]+)>#iU", $html, $result); $closedtags = $result[1]; $len_opened = count($openedtags); if (count($closedtags) == $len_opened) { return $html; } $openedtags = array_reverse($openedtags); for ($i = 0; $i < $len_opened; $i++) { if (!in_array($openedtags[$i], $closedtags)) { $html .= '' . $openedtags[$i] . '>'; } else { unset($closedtags[array_search($openedtags[$i], $closedtags)]); } } return $html; } function gotoroom($r, $redir = 1) { mysql_query("UPDATE `users`, `online` SET `users`.`room` = '$r', `online`.`room` = '$r' WHERE `online`.`id` = `users`.`id` AND `online`.`id` = '{$_SESSION['uid']}'"); if ($redir) { redirectbyroom($r); } } function redirectbyroom($r) { global $canalenters; if (in_array($r, $canalenters)) { header("location: enter_cave.php"); die(); } if ($r == 1) { header("location: main.php"); die(); } } function battlewithbot($b, $name = '', $time = 3, $blood = 1, $group = 1, $battleid = 0, $otherbots = array(), $noredir = 0, $userid = 0, $type = 1) { global $user; if (!$userid) { $user1 = $user; } elseif (is_array($userid)) { $user1 = $userid; } else { $user1 = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id` = '$userid' LIMIT 1")); } $bot = mysql_fetch_array(mysql_query("SELECT `login`, `maxhp` FROM `users` WHERE `id` = '$b' LIMIT 1")); if (!$name) { $name = $bot['login']; } if ($battleid) { $botid = mysql_fetch_assoc(mysql_query("SELECT `id` FROM `bots` WHERE `prototype` = '$b' AND `battle` = '$battleid' LIMIT 1")); } elseif ($group) { $arha = mysql_fetch_array(mysql_query("SELECT * FROM `bots` WHERE `prototype` = '$b' ORDER BY `id` DESC LIMIT 1")); $battleid = $arha['battle']; $botid = $arha['id']; } if (@$battleid > 0) { $bd = mysql_fetch_array(mysql_query("SELECT * FROM `battle` WHERE `id` = '$battleid' LIMIT 1")); $battle = unserialize($bd['teams']); $t1 = explode(";", $bd['t1']); $t2 = explode(";", $bd['t2']); $ak = array_keys($battle[$t2[0]]); $battle[$user1['id']] = $battle[$ak[0]]; foreach ($battle[$user1['id']] as $k => $v) { $battle[$user1['id']][$k] = array(0, 0, time()); $battle[$k][$user1['id']] = array(0, 0, time()); } if (in_array($botid, $t1)) { $ttt = 2; } else { $ttt = 1; } if ($user1['invis'] == 1) { addlog($battleid, '' . date("H:i") . ' невидимка вмешался в поединок!"; $r .= setHP($user['hp'], $user['maxhp'], $battle); $r .= ' | ||||||||||||||
';
$r .= echoscroll('m1');
$r .= echoscroll('m2');
$r .= echoscroll('m3');
$r .= echoscroll('m4');
$r .= echoscroll('m5');
$r .= ' | ||||||||||||||
'; $r .= echoscroll('m6') . '' . echoscroll('m7') . '' . echoscroll('m8') . '' . echoscroll('m9') . '' . echoscroll('m10'); $r .= ' | ||||||||||||||
| ';
$r .= '
|
' . $ru_1 . ' | ' . $ru_2 . ' | ' . $ru_3 . ' |
'.GAMEDOMAIN.' | |
';
$online = db::c()->query('SELECT `u`.*, `o`.`date`, `u`.*, `o`.`real_time` FROM `users` AS `u`, `online` AS `o` WHERE `u`.`id` = `o`.`id` AND `u`.`id` = ?i ', $user['id'])->fetch_assoc();
if ($invis) {
$invis = db::c()->query('SELECT `time` FROM `effects` WHERE `owner` = ?i AND `type` = 1022', $user['id'])->fetch_assoc();//FIXME Тип содержит число, невозможное в базе.
}
if ($invis > time()) {
$data['id'] = null;
$online['date'] -= 60 * 120 - ($invis - time());
}
if ($data['id'] != null && $user['id'] != 326) {
if ($data['room'] > 500 && $data['room'] < 561) {
$rrm = 'Башня смерти, участвует в турнире';
} else {
$rrm = $rooms[$data['room']];
}
$r .= ' Персонаж сейчас в поединке'; } $r .= ''; $r .= ' ';
$r .= show_eff_inf($user['id'], 1);
$r .= ' |
echo setHP($user['hp'], $user['maxhp'], $battle); ?> | ||||||||||||||
echoscroll('m1'); echoscroll('m2'); echoscroll('m3'); echoscroll('m4'); echoscroll('m5'); ?> | ||||||||||||||
echoscroll('m6'); echoscroll('m7'); echoscroll('m8'); echoscroll('m9'); echoscroll('m10'); ?> | ||||||||||||||
|
|
echo show_rune(1, $user['id']); ?> | echo show_rune(2, $user['id']); ?> | echo show_rune(3, $user['id']); ?> |
=GAMEDOMAIN?> | |
time()) {
$data['id'] = null;
$online['date'] -= 60 * 120 - ($invis - time());
}
if ($data['id'] != null && $user['id'] != 326) {
if ($data['room'] > 500 && $data['room'] < 561) {
$rrm = 'Башня смерти, участвует в турнире';
} else {
$rrm = $rooms[$data['room']];
}
echo ' Персонаж сейчас в поединке'; } ?>
echo show_eff_inf($user['id'], 1); ?>
| |
У персонажа $trt травма. |
' . $txt . ' | '; $r .= ''; $r .= '';
$r .= ' ' . $row['name'] . ' (масса: ' . $row['massa'] . ') ' . (($row['present']) ? ' ' : "") . ' ';
} else {
$r .= 'Свойства предмета не идентифицированы'; if ($row['ecost'] > 0) { $r .= 'Цена: ' . $row['ecost'] . ' екр. '; } elseif ($row['point'] > 0) { $r .= 'Цена: ' . $row['point'] . ' реп. '; } else { $r .= 'Цена: ' . $row['cost'] . ' кр. '; } if ($row['zeton'] > 0) { $r .= 'Жетон: ' . $row['zeton'] . '  '; } $r .= 'Долговечность: ' . $row['duration'] . '/' . $row['maxdur'] . ' '; if (!$row['needident']) { if ($magic['chanse']) { if ($magic['chanse'] >= 95) $magic['chanse'] = 95; $r .= 'Вероятность срабатывания: ' . $magic['chanse'] . '% '; } if ($magic['time']) { $r .= 'Продолжительность действия магии: ' . $magic['time'] . ' мин. '; } if ($row['goden']) { $r .= 'Срок годности: ' . $row['goden'] . ' дн. (до ' . date("Y.m.d H:i", $row['dategoden']) . ') '; } $r .= ' ';
$user = array();
if ($row['nsila']) {
$r .= '• ';
if ($row['nsila'] > $user['sila']) {
$r .= '';
}
$r .= 'Требуется Сила: ' . $row['nsila'] . ' '; } if ($row['nlovk']) { $r .= '• '; if ($row['nlovk'] > $user['lovk']) { $r .= ''; } $r .= 'Требуется Ловкость: ' . $row['nlovk'] . ' '; } if ($row['ninta']) { $r .= '• '; if ($row['ninta'] > $user['inta']) { $r .= ''; } $r .= 'Требуется Интуиция: ' . $row['ninta'] . ' '; } if ($row['nvinos']) { $r .= '• '; if ($row['nvinos'] > $user['vinos']) { $r .= ''; } $r .= 'Требуется Выносливость: ' . $row['nvinos'] . ' '; } if ($row['nlevel']) { $r .= '• '; if ($row['nlevel'] > $user['level']) { $r .= ''; } $r .= 'Требуется Уровень: ' . $row['nlevel'] . ' '; } if ($row['nintel']) { $r .= '• '; if ($row['nintel'] > $user['intel']) { $r .= ''; } $r .= 'Требуется Интеллект: ' . $row['nintel'] . ' '; } if ($row['nnoj']) { $r .= '• '; if ($row['nnoj'] > $user['noj']) { $r .= ''; } $r .= 'Требуется Мастерство владения ножами и кастетами: ' . $row['nnoj'] . ' '; } if ($row['ntopor']) { $r .= '• '; if ($row['ntopor'] > $user['topor']) { $r .= ''; } $r .= 'Требуется Мастерство владения топорами и секирами: ' . $row['ntopor'] . ' '; } if ($row['ndubina']) { $r .= '• '; if ($row['ndubina'] > $user['dubina']) { $r .= ''; } $r .= 'Требуется Мастерство владения дубинами и булавами: ' . $row['ndubina'] . ' '; } if ($row['nmech']) { $r .= '• '; if ($row['nmech'] > $user['mech']) { $r .= ''; } $r .= 'Требуется Мастерство владения мечами: ' . $row['nmech'] . ' '; } if ($row['nfire']) { $r .= '• '; if ($row['nfire'] > $user['mfire']) { $r .= ''; } $r .= 'Требуется Магия Огня: ' . $row['nfire'] . ' '; } if ($row['nwater']) { $r .= '• '; if ($row['nwater'] > $user['mwater']) { $r .= ''; } $r .= 'Требуется Магия Воды: ' . $row['nwater'] . ' '; } if ($row['nair']) { $r .= '• '; if ($row['nair'] > $user['mair']) { $r .= ''; } $r .= 'Требуется Магия Воздуха:: ' . $row['nair'] . ' '; } if ($row['nearth']) { $r .= '• '; if ($row['nearth'] > $user['mearth']) { $r .= ''; } $r .= 'Требуется Магия Земли: ' . $row['nearth'] . ' '; } if ($row['nlight']) { $r .= '• '; if ($row['nlight'] > $user['mlight']) { $r .= ''; } $r .= 'Требуется Магия Света: ' . $row['nlight'] . ' '; } if ($row['ngray']) { $r .= '• '; if ($row['ngray'] > $user['mgray']) { $r .= ''; } $r .= 'Требуется Магия Равновесия: ' . $row['ngray'] . ' '; } if ($row['ndark']) { $r .= '• '; if ($row['ndark'] > $user['mdark']) { $r .= ''; } $r .= 'Требуется Магия Тьмы: ' . $row['ndark'] . ' '; } $r .= ' '; $r .= ' ';
if ($row['minu']) $r .= '+' . $row['minu'] . ' Минимальное наносимое повреждение ';
if ($row['letter']) $r .= 'На бумаге записан текст: '; if ($row['maxu']) $r .= '+' . $row['maxu'] . ' Максимальное наносимое повреждение '; if ($row['gsila']) $r .= '+' . $row['gsila'] . ' Сила '; if ($row['glovk']) $r .= '+' . $row['glovk'] . ' Ловкость '; if ($row['ginta']) $r .= '+' . $row['ginta'] . ' Интуиция '; if ($row['gintel']) $r .= '+' . $row['gintel'] . ' Интеллект '; if ($row['ghp']) $r .= '+' . $row['ghp'] . ' Уровень жизни '; if ($row['mfkrit']) $r .= '+' . $row['mfkrit'] . '% Мф. критических ударов '; if ($row['mfakrit']) $r .= '+' . $row['mfakrit'] . '% Мф. против крит. ударов '; if ($row['mfuvorot']) $r .= '+' . $row['mfuvorot'] . '% Мф. увертливости '; if ($row['mfauvorot']) $r .= '+' . $row['mfauvorot'] . '% Мф. против увертливости '; if ($row['gnoj']) $r .= '+' . $row['gnoj'] . ' Мастерство владения ножами и кастетами '; if ($row['gtopor']) $r .= '+' . $row['gtopor'] . ' Мастерство владения топорами и секирами '; if ($row['gdubina']) $r .= '+' . $row['gdubina'] . ' Мастерство владения дубинами и булавами '; if ($row['gmech']) $r .= '+' . $row['gmech'] . ' Мастерство владения мечами '; if ($row['gfire']) $r .= '+' . $row['gfire'] . ' Мастерство владения стихией Огня '; if ($row['gwater']) $r .= '+' . $row['gwater'] . ' Мастерство владения стихией Воды '; if ($row['gair']) $r .= '+' . $row['gair'] . ' Мастерство владения стихией Воздуха '; if ($row['gearth']) $r .= '+' . $row['gearth'] . ' Мастерство владения стихией Земли '; if ($row['glight']) $r .= '+' . $row['glight'] . ' Мастерство владения магией Светa '; if ($row['ggray']) $r .= '+' . $row['ggray'] . ' Мастерство владения Cерой магией '; if ($row['gdark']) $r .= '+' . $row['gdark'] . ' Мастерство владения магией Тьмы '; if ($row['bron1']) $r .= '+' . $row['bron1'] . ' Броня головы '; if ($row['bron2']) $r .= '+' . $row['bron2'] . ' Броня корпуса '; if ($row['bron3']) $r .= '+' . $row['bron3'] . ' Броня пояса '; if ($row['bron4']) $r .= '+' . $row['bron4'] . ' Броня ног '; if ($row['gmeshok']) $r .= '+' . $row['gmeshok'] . ' Увеличивает рюкзак: '; $r .= ' ' . nl2br($row['letter']) . ' '; if ($magic['name'] && $row['type'] != 50) $r .= 'Наложены заклятия: ' . $magic['name'] . ' '; if ($row['text']) $r .= 'На ручке выгравирована надпись: '; if ($incmagic['max']) $r .= 'Встроено заклятие ' . $incmagic['cur'] . ' шт. '; if ($row['podzem']) $r .= 'Предмет из подземелья '; if ($row['laba'] == 1) $r .= 'Пропадёт если не найти выход '; if ($row['laba'] == 2) $r .= 'Предмет пропадёт после выхода '; if ($row['isrep']) $r .= 'Предмет не подлежит ремонту '; if ($row['free_bron']) $r .= '+' . $row['free_bron'] . ' Улучшений брони '; if ($row['free_stat']) $r .= '+' . $row['free_stat'] . ' Улучшений параметров '; if ($row['free_mf']) $r .= '+' . $row['free_mf'] . ' Улучшений модификаторов '; $r .= ' '; } $osob = array(22, 23); if (in_array($row['type'], $osob)) { $r .= 'Особенности: '; if ($row['type'] == 22) { $r .= '• может одеваться под броню'; } elseif ($row['type'] == 23) { $r .= '• может одеваться на броню'; } } $r .= ' | ';
$r .= '
echo show_rune(1, $user['id'], 1); ?> | echo show_rune(2, $user['id'], 1); ?> | echo show_rune(3, $user['id'], 1); ?> |