<?php if (isset($_POST['end'])) { header("Location: main.php"); exit; } require_once 'functions.php'; //include('cave/cave_bots.php'); $cavebots = $botnames; db::c()->query('LOCK TABLES `bots` WRITE, `laba_obj` WRITE, `qst_user` WRITE, `qst` WRITE, `` WRITE, `battle` WRITE, `logs` WRITE, `users` WRITE, `inventory` WRITE, `magic` WRITE, `effects` WRITE, `online` WRITE, `clans` WRITE, `variables` WRITE, `logs_arena` WRITE, `cavebots` WRITE, `caveparties` WRITE'); if (isset($user['id'])) { db::c()->query('UPDATE `online` SET `real_time` = ?i WHERE `id` = ?i', time(), $user['id']); } include('./classes/battle_new.class.php'); $fbattle = new fbattle($user['battle']); \Battles\Template::header('fbattle'); ?> <script type="text/javascript" src="js/sl2.js"></script> <script type="text/javascript" src="js/ch.js"></script> <script> function refreshPeriodic() { <?php if($fbattle->battle) { ?>location.href = '<?=$_SERVER['PHP_SELF']?>?batl=<?=$_REQUEST['batl']?>';//reload(); <?}?> const timerID = setTimeout("refreshPeriodic()", 20000); } timerID = setTimeout("refreshPeriodic()", 20000); let Hint3Name = ''; function findlogin(title, script, name) { document.all("hint3").innerHTML = '<table width=100% cellspacing=1 cellpadding=0 bgcolor=CCC3AA><tr><td align=center><B>' + title + '</td><td width=20 align=right valign=top style="cursor: pointer" onclick="closehint3();"><BIG><B>x</td></tr><tr><td colspan=2>' + '<form action="' + script + '" method=POST><table width=100% cellspacing=0 cellpadding=2 bgcolor=FFF6DD><tr><INPUT TYPE=hidden name=sd4 value="6"><td colspan=2>' + 'Укажите логин персонажа:<small><BR>(можно щелкнуть по логину в чате)</TD></TR><TR><TD width=50% align=right><INPUT TYPE=text NAME="' + name + '"></TD><TD width=50%><INPUT TYPE="submit" value=" »» "></TD></TR></TABLE></FORM></td></tr></table>'; document.all("hint3").style.visibility = "visible"; document.all("hint3").style.left = 100; document.all("hint3").style.top = 100; document.all(name).focus(); Hint3Name = name; } let attack = false; let defend = false; function check() { if ((!attack) || (!defend)) { alert('Блок или удар не выбран.'); return false; } return true; } function Prv(logins) { top.frames['bottom'].window.document.F1.text.focus(); top.frames['bottom'].document.forms[0].text.value = logins + top.frames['bottom'].document.forms[0].text.value; } function setattack() { attack = true; } function setdefend() { defend = true; } function refreshPeriodic() { <?php if($fbattle->battle) { ?>location.href = '<?=$_SERVER['PHP_SELF']?>?batl=<?=$_REQUEST['batl']?>'; <? } ?> const timerID = setTimeout("refreshPeriodic()", 30000); } timerID = setTimeout("refreshPeriodic()", 30000); function checksubmit() { const ajaxload = 1; if (ajaxload > 0) { let enemy =; let batl =; const tac_at = $('input[name=attack]:checked').val(); const att = "&attack=" + $('input[name=attack]:checked').val(); const def = $('input[name=defend]:checked').val(); if (tac_at >= 1 && def >= 1) { $.ajax({ url: "fbattle.php", type: "POST", cache: false, data: "batl=" + batl + "&myid=1053012363" + att + "&defend=" + def + "&enemy=" + enemy + "", success: function (html) { $("body").html(html); } }); } else { alert('Выберите зону атаки и блока!'); $("#at").prop("disabled", false); } } else { document.f1.submit(); } } $("document").ready(function () { $('#refresh').click(function () { $.ajax({ url: "fbattle.php", cache: false, success: function (html) { $("body").html(html); } }); }); $(".tooltip").tipTip({maxWidth: "auto", edgeOffset: 0, fadeIn: 300, fadeOut: 500}); }); </script> <style type="text/css"> span { font-family: Verdana, Arial, Helvetica, Tahoma, sans-serif; text-decoration: none; font-weight: bold; cursor: pointer; } </style> <div id="hint3" class="ahint"></div> <form action="<?= $_SERVER['PHP_SELF'] ?>" method="POST" name="f1" id="f1"> <table width=100% cellspacing=0 cellpadding=0 border=0> <input type="hidden" value="<?= ($user['battle'] ? $user['battle'] : $_REQUEST['batl']) ?>" name="batl"/><input type="hidden" value="<?= $enemy ?>" name="enemy1"/><input type="hidden" name="myid" value="1053012363"/> <tr> <td valign=top> <table width=250 cellspacing=0 cellpadding=0> <tr> <td valign=top width=250 nowrap> <?php $myinfo = new \Battles\User($_SESSION['uid']); $myinfo->showUserDoll(1); ?> </td> </tr> </table> </td> <td valign=top width=80%> <?php switch ($fbattle->return) { case 1 : ?> <table width=100% cellspacing=0 cellpadding=0> <tr> <td colspan=2><h3>Поединок</td> </tr> <tr> <td><font color=660000><b>Ваш ход</b></td> <td align=right> </td> </tr> </table> <center> <? if ($user['level'] > 3) { if ($_GET['use']) { $dressed = db::c()->query('SELECT `id` FROM `inventory` WHERE `id` = ?i AND `dressed` = 1', $_GET['use'])->fetch_row(); if ((int)$dressed[0] > 0) { $my_class = $fbattle->my_class; usemagic($_GET['use'], "" . $_POST['target']); $bb = explode("<!--", ob_get_clean()); $bb = str_replace('"', """, (strip_tags($bb[0]))); header("Location: " . $_SERVER['PHP_SELF'] . "?buf=" . $bb); } else { exit; } } if ($_GET['buf']) { echo "<font color=red><b>" . $_GET['buf'] . "</b></font><br />"; } echoscroll('m1'); echoscroll('m2'); echoscroll('m3'); echoscroll('m4'); echoscroll('m5'); echoscroll('m6'); echoscroll('m7'); echoscroll('m8'); echoscroll('m9'); echoscroll('m10'); } ?> <table cellspacing=0 cellpadding=0> <tr> <td align=center bgcolor=f2f0f0><b>Атака</b></td> <td> </td> <td align=center bgcolor=f2f0f0><b>Защита</b></td> </tr> <tr> <td> <table cellspacing=0 cellpadding=0> <tr> <td> <input type="radio" id="A1" name="attack" value="1" onclick="setattack()"/><label for="A1">удар в голову</label> </td> </tr> <tr> <td> <input type="radio" id="A2" name="attack" value="2" onclick="setattack()"/><label for="A2">удар в корпус</label> </td> </tr> <tr> <td> <input type="radio" id="A3" name="attack" value="3" onclick="setattack()"/><label for="A3">удар в пояс(пах)</label> </td> </tr> <tr> <td> <input type="radio" id="A4" name="attack" value="4" onclick="setattack()"/><label for="A4">удар по ногам</label> </td> </tr> </table> </td> <td> </td> <td> <table cellspacing=0 cellpadding=0> <tr> <td> <input type="radio" id="D1" name="defend" value="1" onclick="setdefend()"/><label for="D1">блок головы и корпуса</label> </td> </tr> <tr> <td> <input type="radio" id="D2" name="defend" value="2" onclick="setdefend()"/><label for="D2">блок корпуса и пояса</label> </td> </tr> <tr> <td> <input type="radio" id="D3" name="defend" value="3" onclick="setdefend()"/><label for="D3">блок пояса и ног</label> </td> </tr> <tr> <td> <input type="radio" id="D4" name="defend" value="4" onclick="setdefend()"/><label for="D4">блок головы и ног</label> </td> </tr> </table> </td> </tr> <tr> <td colspan=3 align=center bgcolor=f2f0f0> <table cellspacing=0 cellpadding=0 width=100%> <tr> <td align=center> <input type="submit" name="go" value="Ударить!" onclick="this.disabled = true; checksubmit(); return false;" id="at"/> </td><!--checksubmit(); --> <td align=right> <a onclick="location.href='<?= $_SERVER['PHP_SELF'] ?>?batl=<?= $_REQUEST['batl'] ?>';"> <img src='i/ico_refresh.gif' width=16 height=19 style='cursor:pointer' alt='Обновить'> </a> <a onClick="findlogin('Сменить противника', 'fbattle.php?smena=1', 'smena'); "> <img src='i/fight/buttons/ico_change.gif' width=16 height=19 style='cursor:pointer' alt='Сменить противника'> </a> </td> </tr> </table> </td> </tr> <input type="hidden" name="enemy" value="<?= $fbattle->enemy ?>"/> </TABLE> </CENTER> <? break; case 2 : if (($user['hp'] > 0) && $fbattle->battle) { echo '<center><FONT COLOR=red><b>Ожидаем хода противника...</b></FONT><BR><INPUT TYPE=submit value="Обновить" name=' . (($user['battle'] > 0) ? "battle" : "end") . '><BR></CENTER>'; } elseif ($user['hp'] <= 0 && $fbattle->battle) { ref_drop(); echo '<center><FONT COLOR=red><b>Ожидаем, пока бой закончат другие игроки...</b></FONT><BR><INPUT TYPE=submit value="Обновить" name=' . (($user['battle'] > 0) ? "battle" : "end") . '><BR></CENTER>'; } break; case 3 : echo "<center><BR>Противник долго не делает свой ход, вы можете закончить бой победителем<BR> <INPUT TYPE=submit value=\"Да, я победил!!!\" name=victory_time_out id=\"refreshb\"><BR>"; if (!$fbattle->user['in_tower'] && $fbattle->user['room'] != 200) { echo "или признать ничью<BR> <INPUT TYPE=submit id=\"refreshb\" value=\"Считаем, что этого боя не было\" name=victory_time_out2><BR>"; } echo "или<BR> <INPUT TYPE=submit value=\"Подождать еще немного\" name=", (($user['battle'] > 0) ? "battle" : "end"), "> </center>"; break; } if ($enemy == 0) { // проверяем на вшивость if (!$fbattle->battle) { if ($user['battle']) { $ll = $user['battle']; } else { $ll = $_POST['batl']; } if (!$ll) { $ll_r = mysql_fetch_array(mysql_query("SELECT `id` FROM `battle` WHERE (`t1` LIKE '%{$user['id']}%' || `t2` LIKE '%{$user['id']}%') AND `win` = '3' LIMIT 1")); $ll = $ll_r['id']; } $data = db::c()->query('SELECT * FROM `battle` WHERE `id` = ?i', $ll)->fetch_assoc(); $damage = unserialize($data['damage']); $exp = unserialize($data['exp']); if (empty($damage[$user['id']])) { $damage[$user['id']] = 0; } if ($user['caveleader'] > 0 || $user['laba'] > 0) { $rep = floor($damage[$user['id']] / 300); if ($rep <= 0) { $rep = 0; } $ads = '. Репутации: ' . $rep . ' ед.'; } else { $rep = 0; $ads = '.'; } echo '<center><br /><b><font color=red>Бой закончен! Всего вами нанесено урона ' . $damage[$user['id']] . ' HP. Получено опыта ' . (int)$exp[$user['id']] . ' (100%)' . $ads . '</FONT></B><br /><input type="submit" value="Вернуться" name="end" /><br /></center>'; } } else { ?> </center> <? } if ($fbattle->battle) { ?> <hr/> <div id=mes> <? foreach ($fbattle->t1 as $k => $v) { if (in_array($v, array_keys($fbattle->battle))) { ++$i; if ($i > 1) { $cc = ', '; } else { $cc = ''; } $ffs .= $cc . Nick::id($v)->battleShort('B1'); $zz .= "private [" . Nick::id($v)->short() . "] "; } } $i = 0; ?> <img src="i/lock.gif" width="20" height="15" border="0" style="cursor: pointer;" onclick="Prv('<?= $zz ?> ')"/> <?= $ffs ?> против <? $ffs = ''; $zz = ''; foreach ($fbattle->t2 as $k => $v) { if (in_array($v, array_keys($fbattle->battle))) { ++$i; if ($i > 1) { $cc = ', '; } else { $cc = ''; } $ffs .= $cc . Nick::id($v)->battleShort('B2'); $zz .= "private [" . Nick::id($v)->short() . "] "; } } $i = 0; ?> <img src="i/lock.gif" width="20" height="15" border="0" style="cursor: pointer;" onclick="Prv('<?= $zz ?> ')"/> <?= $ffs ?> <hr/> На данный момент вами нанесено урона: <b><?= (int)$fbattle->damage[$user['id']] ?> HP</b>. <? if (!$user['in_tower']) { ?> <font style="margin-left: 200px;">(Бой идет с таймаутом <?= $fbattle->battle_data['timeout'] ?> мин.)</font> <? } ?> <br/> <hr/> </div> <? } else { echo "<HR>"; } if ($user['battle']) { $ll = $user['battle']; } elseif ($_REQUEST['batl']) { $ll = $_REQUEST['batl']; } else { $ll = $_SESSION['batl']; } if (!$ll) { $ll_r = mysql_fetch_array(mysql_query("SELECT `id` FROM `battle` WHERE (`t1` LIKE '%{$user['id']}%' OR `t2` LIKE '%{$user['id']}%') AND `win` = 3 LIMIT 1")); $ll = $ll_r['id']; } $fs = filesize("backup/logs/battle" . $ll . ".txt"); $fh = fopen("backup/logs/battle" . $ll . ".txt", "r"); fseek($fh, -4256, SEEK_END); $log[0] = fread($fh, 4256); fclose($fh); $log = explode("<BR>", $log[0]); $ic = count($log) - 2; if ($fs >= 4256) { $max = 1; } else { $max = 0; } for ($i = $ic; $i >= 0 + $max; --$i) { if (eregi("<hr>", $log[$i])) { $log[$i] = str_replace("<hr>", "", $log[$i]); $log[$i] = $log[$i] . "<hr>"; } if (eregi(">" . $user['login'] . "</span>", $log[$i])) { $log[$i] = str_replace("<span class=date>", "<span class=date2>", $log[$i]); } if ($ll != 0) { if (eregi("<hr>", $log[$i])) { echo $log[$i]; } else { echo $log[$i] . "<br />"; } } } unset($ic); if ($max == 1) { ?> Обрезано для уменьшения объема информации. Полную версию смотрите <a href="logs.php?log=<?= $user['battle'] ?>" target="_blank">здесь»</a> <BR><? } if (!$user['in_tower']) { ?> <font class=dsc>(Бой идет с таймаутом <?= $fbattle->battle_data['timeout'] ?> мин.)</font><BR> <? } ?> <BR> На данный момент вами нанесено урона: <B><?= (int)$fbattle->damage[$user['id']] ?> HP</B>. </td> <td valign=top align=rigth> <table width=250 cellspacing=0 cellpadding=0> <tr> <td valign=top width=250 nowrap> <center> <?php if ($fbattle->return == 1) { $enemyInfo = new \Battles\User($fbattle->enemy); $enemyInfo->showUserDoll(1); } else { if ($fbattle->battle_data['type'] == 4 || $fbattle->battle_data['type'] == 5) { $a = [6, 16]; echo "<img src='i/im/" . $a[mt_rand(0, 1)] . ".gif' />"; } elseif ($fbattle->return > 1) { echo "<img src='i/im/" . mt_rand(1, 34) . ".jpg' />"; } elseif ($exp[$user['id']] > 0) { echo "<img src='i/im/" . mt_rand(113, 115) . ".jpg' />"; } else { echo "<img src='i/im/" . mt_rand(110, 112) . ".jpg' />"; } } if ($fbattle->needrefresh) { header("Location: fbattle.php?" . time()); } if ($fbattle->battle_data['needbb']) { foreach ($fbattle->battle as $k => $v) { if ($k > _BOTSEPARATOR_) { foreach ($v as $k2 => $v2) { if ($k2 < _BOTSEPARATOR_) continue; $hp_1 = db::c()->query('SELECT `hp` FROM `bots` WHERE `id` = ?i', $k)->fetch_assoc(); $hp_2 = db::c()->query('SELECT `hp` FROM `bots` WHERE `id` = ?i', $k2)->fetch_assoc(); if ($fbattle->battle[$k][$k2][0] && $fbattle->battle[$k2][$k][0] && $hp_1['hp'] > 0 && $hp_2['hp'] > 0 && time() - $fbattle->battle[$k][$k2][2] > 1 && time() - $fbattle->battle[$k2][$k][2] > 1) { $at_1 = $fbattle->battle[$k][$k2][0]; $def_1 = $fbattle->battle[$k][$k2][1]; $at_2 = $fbattle->battle[$k2][$k][0]; $def_2 = $fbattle->battle[$k2][$k][1]; $fbattle->makechange($k, $k2, $at_1, $at_2, $def_1, $def_2); $fbattle->write_log(); $fbattle->battle[$k][$k2] = [0, 0, time()]; $fbattle->battle[$k2][$k] = [0, 0, time()]; $fbattle->needupdate = 1; } } } } if ($fbattle->needupdate) { $fbattle->UpdateBattle(); } } ?> </td> </tr> </table> </td> </tr> </table> </td></tr> </table> </form> <div id="oMenu" onmouseout="closeMenu()" style="position: absolute; border: 1px solid #666; background-color: #CCC; display: none; "></div> <?php db::c()->query('UNLOCK TABLES'); ?>