battles/c_haos_in.php
lopar b9b4c01cf0 Зимние правки. MVC/
Signed-off-by: lopar <lopar.4ever@gmail.com>
2022-08-09 22:57:43 +03:00

356 lines
18 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
require_once "functions.php";
$in_haos = mysql_fetch_array(mysql_query("SELECT * FROM `cit_haos_status` WHERE `id` = '{$user['id']}' LIMIT 1;"));
$wait_msg = "Ждем готовности всей группы...";
//rooms
$ch_rooms = [
// 0 - empty
"1" => "Ворота (1)",
"2" => "Двор (2)",
"3" => "Внешний корридор (3)",
"4" => "Спуск в подвал (4)",
"5" => "Подвал (5)",//босс Душа
"6" => "Люк на Западную стену (6)",
"7" => "Западная стена (7)",
"8" => "Галерея Страха (8)",
"9" => "Западная башня (9)",
"10" => "Галерея Смерти (10)",//босс Зомби
"11" => "Проход к Северной стене (11)",
"12" => "Галерея Тьмы (12)",
"13" => "Северная стена (13)",
"14" => "Галерея Бликов (14)",
"15" => "Внутренний корридор (15)",//босс Повелитель
"16" => "Гостевая (16)",
"17" => "Руины Северной башни (17)",
"18" => "Поминальная комната (18)",
"19" => "Галерея Порталов (19)",
"20" => "Зал Посвященных (20)",//босс Хромой Билли
"21" => "Старая лестница (21)",
"22" => "Трофейная (22)",
"23" => "Костяной зал (23)",
"24" => "Склеп (24)",
"25" => "Лабиринт (25)",//босс Мародер
"26" => "Тронный зал (26)",
"27" => "Тайный корридор (27)",
"28" => "Комната прислуги (28)",
"29" => "Королевские покои (29)",
"30" => "Переход (30)"//босс Грохобот
];
//bots
$ch_bots = [];
//1 - упырь
//2 - падший
//3 - душа
$db = mysql_fetch_array(mysql_query("SELECT * FROM `cit_haos_var` WHERE `group`='" . $in_haos['group'] . "' limit 1; "));
if (!$db['bots']) {
$bot_low = [
// 0 - empty
"1" => "Упырь",
"2" => "Посланник смерти",
"3" => "Падший",
"4" => "Отморозок",
"5" => "Проклятие глубин"
];
for ($i = 1; $i <= 30; $i++) {
$ch_get_bot = rand(1, 5);
$ch_bots[$i] = ["0" => $bot_low[$ch_get_bot]];
}
$ch_bots[5] = ["0" => "Душа"];
$ch_bots[10] = ["0" => "Зомби"];
$ch_bots[15] = ["0" => "Повелитель"];
$ch_bots[20] = ["0" => "Хромой Билли"];
$ch_bots[25] = ["0" => "Мародер"];
$ch_bots[30] = ["0" => "Грохобот"];
$dbb = serialize($ch_bots);
mysql_query("UPDATE `cit_haos_var` SET bots='" . $dbb . "' WHERE `group`='" . $in_haos['group'] . "'; ");
} else {
$ch_bots = unserialize($db['bots']);
}
// комната - опыт == доблесть
$ch_priz = [
"5" => [100, 1],
"10" => [200, 2],
"15" => [300, 3],
"20" => [400, 4],
"25" => [500, 5],
"30" => [600, 10]
];
// комната - кирка == уник_7 == цветок == уник_8
$ch_drop = [
"25" => [10, 60, 95, 100],
"30" => [3, 6, 7, 8],
];
$priz_low =
["727"];
$priz_med =
["775", "776", "777", "778"];
$priz_flow =
["14"];
$priz_high =
["803", "804", "805", "806"];
/*$ch_bots[1]=array
(
"0"=>"Младший страж глубин",
"1"=>"Младший страж глубин",
"2"=>"Босс глубин"
);
$ch_bots[2]=array
(
"0"=>"Младший страж глубин",
"1"=>"Босс глубин"
);*/
if ($in_haos['status'] == 4) {
mysql_query("UPDATE `users`,`online` SET `users`.`room` = '600',`online`.`room` = '600' WHERE `online`.`id` = `users`.`id` AND `online`.`id` = '{$_SESSION['uid']}' ;");
mysql_query("UPDATE `cit_haos_status` SET room='0',bot='0',group='0' WHERE id = '{$user['id']}'; ");
header('location: c_haos.php');
}
if (!$ch_rooms[$in_haos['room']]) {
mysql_query("UPDATE `users`,`online` SET `users`.`room` = '600',`online`.`room` = '600' WHERE `online`.`id` = `users`.`id` AND `online`.`id` = '{$_SESSION['uid']}' ;");
if ($in_haos['status'] == 2) {
mysql_query("UPDATE `cit_haos_status` SET room='0',status='5',bot='0' WHERE id = '{$user['id']}'; ");
addchp('Вы пробились до двери на 2 уровень подземелий Цитадели Хаоса. Только опытный воин и храбрый страж сможет пройти через нее (10 уровень, страж 2 уровня)', '{[]}' . Nick::id($user['id'])->short() . '{[]}');
}
mysql_query("UPDATE `cit_haos_var` SET bots='',players='' WHERE group='" . $in_haos['group'] . "'; ");
header('location: c_haos.php');
}
\Battles\Template::header('c_haos_in');
?>
<script>
function refreshPeriodic() {
location.href = 'c_haos_in.php';//reload()
timerID = setTimeout("refreshPeriodic()", 30000);
}
timerID = setTimeout("refreshPeriodic()", 30000);
</script>
<TABLE border=0 width=340 cellspacing="0" cellpadding="0" align=left>
<tr>
<td><h3>Цитадель Хаоса: <?= $ch_rooms[$in_haos['room']] ?><br/>
<br/></td>
</tr>
<?php
//attack
if ($_POST['go_attack']) {
if ($in_haos['status'] == 2) {
$bot_name = $ch_bots[$in_haos['room']][$in_haos['bot']];
switch ($bot_name) {
case "Упырь":
$bot_id = 2897;
$bot_count = rand(10, 30);
break;
case "Падший":
$bot_id = 2903;
$bot_count = rand(3, 9);
break;
case "Посланник смерти":
$bot_id = 2896;
$bot_count = 2;
break;
case "Отморозок":
$bot_id = 2893;
$bot_count = 3;
break;
case "Проклятие глубин":
$bot_id = 2892;
$bot_count = rand(1, 5);
break;
case "Душа":
$bot_id = 2895;
$bot_count = 1;
break;
case "Зомби":
$bot_id = 2901;
$bot_count = 5;
break;
case "Повелитель":
$bot_id = 2902;
$bot_count = 1;
break;
case "Хромой Билли":
$bot_id = 2898;
$bot_count = 1;
break;
case "Мародер":
$bot_id = 2899;
$bot_count = 1;
break;
case "Грохобот":
$bot_id = 2900;
$bot_count = 1;
break;
}
$b_pers = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='{$bot_id}' LIMIT 1;"));
$bot_hp = $b_pers['maxhp'];
$bots = [];
$group_raw = mysql_query("SELECT * FROM `cit_haos_status` WHERE `group` = '{$in_haos['group']}' AND status='2';");
while ($gr = mysql_fetch_array($group_raw)) {
addchp('<font color=red>Внимание!</font> ' . $bot_name . ' напал на Вашу группу!', '{[]}' . Nick::id($gr['id'])->short() . '{[]}');
}
for ($bot_c = 0; $bot_c < $bot_count; $bot_c++) {
$nb = mysql_fetch_array(mysql_query("SELECT count(`id`) FROM `bots` WHERE `name` LIKE '" . $bot_name . "%';"));
mysql_query("INSERT INTO `bots` (`name`,`prototype`,`battle`,`hp`) values ('" . $bot_name . " " . ($nb[0] + 1) . "','" . $bot_id . "','','" . $bot_hp . "');");
$bot = mysql_insert_id();
$bots[] = $bot;
}
// командный вход
$group_fight = [];
$group_raw = mysql_query("SELECT * FROM `cit_haos_status` WHERE `group` = '{$in_haos['group']}' AND status='2';");
while ($gr = mysql_fetch_array($group_raw)) {
$group_fight[] = $gr['id'];
}
$teams = [];
foreach ($bots as $b) {
foreach ($group_fight as $gf) {
$teams[$gf][$b] = [0, 0, time()];
$teams[$b][$gf] = [0, 0, time()];
mysql_query("UPDATE `cit_haos_status` SET `status` = '3' WHERE `id` ='{$gf}'; ");
}
}
mysql_query("INSERT INTO `battle`
(
`id`,`coment`,`teams`,`timeout`,`type`,`status`,`t1`,`t2`,`to1`,`to2`
)
VALUES
(
NULL,'','" . serialize($teams) . "','3','1','0','" . implode(";", $group_fight) . "','" . implode(";", $bots) . "','" . time() . "','" . time() . "'
)");
$id = mysql_insert_id();
// апдейтим бота
foreach ($bots as $b) {
mysql_query("UPDATE `bots` SET `battle` = {$id} WHERE `id` = {$b} LIMIT 1;");
}
foreach ($group_fight as $gf) {
mysql_query("UPDATE users SET `battle` ={$id},`zayavka`=0 WHERE `id`= {$gf};");
}
exit("<script>location.href='fbattle.php';</script>");
}
}
$group_num = mysql_num_rows(mysql_query("SELECT * FROM `cit_haos_status` WHERE `group` = '{$in_haos['group']}';"));
$group_ready = mysql_num_rows(mysql_query("SELECT * FROM `cit_haos_status` WHERE (`room` = '{$in_haos['room']}' AND `group` = '{$in_haos['group']}');"));
$cit_haos_t = mysql_fetch_array(mysql_query("SELECT * FROM `variables` WHERE `var` = 'cit_haos_time' LIMIT 1;"));
$tm = time();
if ($in_haos['status'] == 2) {
if (($tm > ($cit_haos_t['value'] + 960)) || ($tm < ($cit_haos_t['value'] - 600)))//def 960
{
$flag_ref = 1;
foreach ($ch_bots[$in_haos['room']] as $bot_id => $bot_name)
if ($bot_id >= $in_haos['bot']) {
echo '<tr><td><FORM action="c_haos_in.php" method=POST>';
if ($bot_id == $in_haos['bot']) echo '<strong>' . $bot_name . '</strong>'; else echo($bot_name);
if ($bot_id == $in_haos['bot']) echo ' - <INPUT TYPE="submit" value="Напасть" name="go_attack">';
echo ' </FORM></td></tr>';
$flag_ref = 0;
}
if (!array_key_exists($in_haos['bot'], $ch_bots[$in_haos['room']])) {
echo($wait_msg);
//проверяем есть ли приз
if (array_key_exists($in_haos['room'], $ch_priz)) {
$priz_exp = $ch_priz[$in_haos['room']][0];
$priz_dobl = $ch_priz[$in_haos['room']][1];
} else {
$priz_exp = 0;
$priz_dobl = 0;
}
if (array_key_exists($in_haos['room'], $ch_drop)) {
$got_drop = rand(0, 400);//100 - norm, 400 - 25%
} else {
$got_drop = -1;
}
//выбираем приз
if ($in_haos['room'] < 30) {
if ($got_drop >= 0 && $got_drop < $ch_drop[$in_haos['room']][0]) {
$rand_k = array_rand($priz_low, 1);
$p_id = $priz_low[$rand_k];
$p_shop = "shop";
} elseif ($got_drop >= $ch_drop[$in_haos['room']][0] && $got_drop < $ch_drop[$in_haos['room']][1]) {
$rand_k = array_rand($priz_med, 1);
$p_id = $priz_med[$rand_k];
$p_shop = "shop";
} elseif ($got_drop >= $ch_drop[$in_haos['room']][1] && $got_drop < $ch_drop[$in_haos['room']][2]) {
$rand_k = array_rand($priz_flow, 1);
$p_id = $priz_flow[$rand_k];
$p_shop = "fshop";
} elseif ($got_drop >= $ch_drop[$in_haos['room']][2] && $got_drop <= $ch_drop[$in_haos['room']][3]) {
$rand_k = array_rand($priz_high, 1);
$p_id = $priz_high[$rand_k];
$p_shop = "shop";
}
} elseif ($in_haos['room'] == 30) {
if ($got_drop <= 200)//400max/4=>50%
{
$priz_low =
["808", "809"];
$rand_k = array_rand($priz_low, 1);
$p_id = $priz_low[$rand_k];
$p_shop = "shop";
}
}
//выбираем получателя
$all_get = [];
$gr_raw = mysql_query("SELECT * FROM `cit_haos_status` WHERE `group` = '{$in_haos['group']}';");
while ($g_id = mysql_fetch_array($gr_raw)) {
$all_get[] = $g_id['id'];
}
$l_id = rand(0, count($all_get) - 1);
//даем призы
if ($p_id > 0) {
$dress = mysql_fetch_array(mysql_query("SELECT * FROM `{$p_shop}` WHERE `id` = '{$p_id}' LIMIT 1;"));
mysql_query("INSERT INTO `inventory`
(`prototype`,`owner`,`name`,`type`,`massa`,`cost`,`img`,`maxdur`,`isrep`,
`gsila`,`glovk`,`ginta`,`gintel`,`ghp`,`gnoj`,`gtopor`,`gdubina`,`gmech`,`gfire`,`gwater`,`gair`,`gearth`,`glight`,`ggray`,`gdark`,`needident`,`nsila`,`nlovk`,`ninta`,`nintel`,`nmudra`,`nvinos`,`nnoj`,`ntopor`,`ndubina`,`nmech`,`nfire`,`nwater`,`nair`,`nearth`,`nlight`,`ngray`,`ndark`,
`mfkrit`,`mfakrit`,`mfuvorot`,`mfauvorot`,`bron1`,`bron2`,`bron3`,`bron4`,`maxu`,`minu`,`magic`,`nlevel`,`nalign`,`dategoden`,`goden`,`otdel`,`gmp`,`gmeshok`,`encicl`,`artefact`,`duration`,`present`
)
VALUES
('{$dress['id']}','{$all_get[$l_id]}','{$dress['name']}','{$dress['type']}',{$dress['massa']},{$dress['cost']},'{$dress['img']}',{$dress['maxdur']},{$dress['isrep']},'{$dress['gsila']}','{$dress['glovk']}','{$dress['ginta']}','{$dress['gintel']}','{$dress['ghp']}','{$dress['gnoj']}','{$dress['gtopor']}','{$dress['gdubina']}','{$dress['gmech']}','{$dress['gfire']}','{$dress['gwater']}','{$dress['gair']}','{$dress['gearth']}','{$dress['glight']}','{$dress['ggray']}','{$dress['gdark']}','{$dress['needident']}','{$dress['nsila']}','{$dress['nlovk']}','{$dress['ninta']}','{$dress['nintel']}','{$dress['nmudra']}','{$dress['nvinos']}','{$dress['nnoj']}','{$dress['ntopor']}','{$dress['ndubina']}','{$dress['nmech']}','{$dress['nfire']}','{$dress['nwater']}','{$dress['nair']}','{$dress['nearth']}','{$dress['nlight']}','{$dress['ngray']}','{$dress['ndark']}',
'{$dress['mfkrit']}','{$dress['mfakrit']}','{$dress['mfuvorot']}','{$dress['mfauvorot']}','{$dress['bron1']}','{$dress['bron3']}','{$dress['bron2']}','{$dress['bron4']}','{$dress['maxu']}','{$dress['minu']}','{$dress['magic']}','{$dress['nlevel']}','{$dress['nalign']}','" . (($dress['goden']) ? ($dress['goden'] * 24 * 60 * 60 + time()) : "") . "','{$dress['goden']}','{$dress['razdel']}','{$dress['gmp']}','{$dress['gmeshok']}','{$dress['encicl']}','{$dress['artefact']}','{$dur}','Мусорщик'
) ;");
mysql_query("INSERT INTO `delo` (`id` , `author` ,`pers`, `text`, `type`, `date`) VALUES ('','0','$all_get[$l_id]','\"" . $user['login'] . "\" получил в ЦХ предмет: \"" . $dress['name'] . "\" " . $dresscount . "id:(" . $dressid . ") [0/" . $dress['maxdur'] . "]',1,'" . time() . "');");
addchp('За убийство босса Цитадели Хаоса вы получили ' . $dress['name'], '{[]}' . Nick::id($all_get[$l_id])->short() . '{[]}');
}
if ($priz_exp > 0) {
\Battles\User::getInstance($all_get[$l_id])->addExperience($priz_exp);
addchp('За убийство босса Цитадели Хаоса вы получили ' . $priz_exp . ' опыта', '{[]}' . Nick::id($all_get[$l_id])->short() . '{[]}');
mysql_query("INSERT INTO `delo` (`id` , `author` ,`pers`, `text`, `type`, `date`)
VALUES ('','0','{$cur_user['id']}','\"" . $all_get[$l_id] . "\" получил в ЦХ \"" . $priz_exp . "\" опыта',1,'" . time() . "');");
}
if ($priz_dobl > 0) {
mysql_query("UPDATE users SET `doblest`=`doblest`+'" . $priz_dobl . "' WHERE `id` = '" . $all_get[$l_id] . "';");
addchp('За убийство босса Цитадели Хаоса вы получили ' . $priz_dobl . ' доблести', '{[]}' . Nick::id($all_get[$l_id])->short() . '{[]}');
mysql_query("INSERT INTO `delo` (`id` , `author` ,`pers`, `text`, `type`, `date`)
VALUES ('','0','{$cur_user['id']}','\"" . $all_get[$l_id] . "\" получил в ЦХ \"" . $priz_dobl . "\" доблести',1,'" . time() . "');");
}
mysql_query("UPDATE `cit_haos_status` SET `room` = `room`+1,`bot`=0 WHERE `group` = '{$in_haos['group']}'; ");
if (!headers_sent()) {
header('location: c_haos_in.php');
}
}
if ($flag_ref == 0 && !headers_sent()) {
header('location: c_haos_in.php');
}
} else {
echo "<TR><TD>Ждем готовности группы... Приготовьтесь!</TR></TD>";
echo '<tr><td><FORM action="c_haos_in.php" method=POST><INPUT TYPE="submit" value="Обновить" name="refresh">';
echo ' </FORM></td></tr>';
}
}
?>
</table>
<?php
echo '<div align=right><img width="260" src="i/zitadel/' . ($in_haos['room'] + 1) . '.jpg" /></div>';
?>