2018-01-28 16:40:49 +00:00
< ? php
session_start ();
2020-08-30 15:39:27 +00:00
if ( empty ( $_SESSION [ 'uid' ])) {
2020-08-29 23:21:22 +00:00
header ( 'Location: index.php' );
exit ();
}
2020-08-30 15:39:27 +00:00
require_once 'functions.php' ;
//require_once 'cave/cave_bots.php';
2018-07-02 15:35:25 +00:00
function cancarry ( $m , $u )
{
global $user ;
if ( ! $u ) {
$u = $user [ 'id' ];
}
$bp = mysql_fetch_array ( mysql_query ( " SELECT SUM(`massa`) AS `massa`, SUM(`gmeshok`) AS `gmeshok` FROM `inventory` WHERE `owner` = ' $u[id] ' AND `dressed` = 1 AND `setsale` = 0 " ));
$mw = 40 * $user [ 'level' ] + $user [ 'vinos' ] + $bp [ 'gmeshok' ];
if ( $bp [ 'massa' ] + $m > $mw ) {
return false ;
}
return true ;
}
function placeinbackpack ( $qty , $userid = 0 )
{
global $user ;
if ( ! $userid ) {
$userid = $user [ 'id' ];
}
if ( $userid == $user [ 'id' ]) {
$user1 = $user ;
} else {
$user1 = mysql_fetch_array ( mysql_query ( " SELECT `id`, `level` FROM `users` WHERE `id` = ' $user1[id] ' LIMIT 1 " ));
}
$cnt = mysql_fetch_assoc ( mysql_query ( " SELECT COUNT(`id`) AS `cnt` FROM `inventory` WHERE `owner` = ' $user1[id] ' AND `dressed` = 0 AND `setsale` = 0 " ));
return $cnt [ 'cnt' ] + $qty <= backpacksize ( $user1 [ 'id' ]);
}
function backpacksize ( $u = 0 )
{ // $l * 10 +5
$l = 0 ;
if ( $u ) {
$l = $u [ 'level' ];
}
if ( $l == 0 ) {
return 75 ;
}
if ( $l == 1 ) {
return 100 ;
}
if ( $l == 2 ) {
return 125 ;
}
if ( $l == 3 ) {
return 175 ;
}
if ( $l == 4 ) {
return 225 ;
}
if ( $l == 5 ) {
return 325 ;
}
if ( $l == 6 ) {
return 425 ;
}
if ( $l == 7 ) {
return 525 ;
}
if ( $l == 8 ) {
return 625 ;
}
if ( $l == 9 ) {
return 725 ;
}
if ( $l == 10 ) {
return 825 ;
}
if ( $l == 11 ) {
return 925 ;
}
if ( $l >= 12 ) {
return 1025 ;
}
}
2020-08-29 23:21:22 +00:00
function battlewithbot ( $b , $name = '' , $time = 3 , $blood = 1 , $group = 1 , $battleid = 0 , $otherbots = [], $noredir = 0 , $userid = 0 , $type = 1 )
2018-07-02 15:35:25 +00:00
{
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 ) {
2020-08-29 23:21:22 +00:00
$battle [ $user1 [ 'id' ]][ $k ] = [ 0 , 0 , time ()];
$battle [ $k ][ $user1 [ 'id' ]] = [ 0 , 0 , time ()];
2018-07-02 15:35:25 +00:00
}
if ( in_array ( $botid , $t1 )) {
$ttt = 2 ;
} else {
$ttt = 1 ;
}
if ( $user1 [ 'invis' ] == 1 ) {
addlog ( $battleid , '<span class=date>' . date ( " H:i " ) . '</span> <b>невидимка</b> вмешался в поединок!<BR>' );
} else {
2020-08-27 12:17:02 +00:00
addlog ( $battleid , '<span class=date>' . date ( " H:i " ) . '</span> ' . Nick :: id ( $user [ 'id' ]) -> short () . ' вмешался в поединок!<BR>' );
2018-07-02 15:35:25 +00:00
}
mysql_query ( 'UPDATE `battle` SET `teams` = \'' . serialize ( $battle ) . '\', `t' . $ttt . '` = CONCAT(`t' . $ttt . '`,\';' . $user1 [ 'id' ] . '\') WHERE `id` = ' . $battleid . ' LIMIT 1' );
mysql_query ( " UPDATE `users` SET `battle` = " . $battleid . " , `zayavka` = 0 WHERE `id`= " . $user1 [ 'id' ] . " LIMIT 1 " );
if ( ! $noredir ) {
header ( " Location: fbattle.php " );
}
} else {
mysql_query ( " INSERT INTO `bots` (`name`, `prototype`, `battle`, `hp`) VALUES (' $name ', ' $b ', '', ' " . $bot [ 'maxhp' ] . " ') " );
$hps [ $b ] = $bot [ 'maxhp' ];
$botid1 = mysql_insert_id ();
$cond = " `id` = ' $botid1 ' " ;
2020-08-29 23:21:22 +00:00
$teams = [];
$teams [ $user1 [ 'id' ]][ $botid1 ] = [ 0 , 0 , time ()];
$teams [ $botid1 ][ $user1 [ 'id' ]] = [ 0 , 0 , time ()];
2018-07-02 15:35:25 +00:00
$t2 = " $botid1 " ;
$others = " " ;
2020-08-29 23:21:22 +00:00
$hps = [];
2018-07-02 15:35:25 +00:00
foreach ( $otherbots as $k => $v ) {
2020-08-30 15:39:27 +00:00
if ( CaveBots :: $botnames [ $v [ 'name' ]]) {
2018-07-02 15:35:25 +00:00
$i = 1 ;
2020-08-30 15:39:27 +00:00
while ( CaveBots :: $botnames [ " $v[name] ( $i ) " ]) $i ++ ;
2018-07-02 15:35:25 +00:00
$botname = " $v[name] ( $i ) " ;
} else {
$botname = $v [ 'name' ];
}
2020-08-30 15:39:27 +00:00
CaveBots :: $botnames [ $botname ] = 1 ;
2018-07-02 15:35:25 +00:00
if ( !@ $hps [ $v [ 'id' ]]) {
$hps [ $v [ 'id' ]] = mysql_fetch_array ( mysql_query ( " SELECT `maxhp` FROM `users` WHERE `id` = ' $v[id] ' LIMIT 1 " ));
}
mysql_query ( " INSERT INTO `bots` (`name`, `prototype`, `battle`, `hp`) VALUES (' $botname ', ' $v[id] ', '', ' " . $hps [ $v [ 'id' ]][ 'maxhp' ] . " ') " );
$botid = mysql_insert_id ();
$cond .= " OR `id` = ' $botid ' " ;
2020-08-29 23:21:22 +00:00
$teams [ $user1 [ 'id' ]][ $botid ] = [ 0 , 0 , time ()];
$teams [ $botid ][ $user1 [ 'id' ]] = [ 0 , 0 , time ()];
2018-07-02 15:35:25 +00:00
$others .= " <span class=date> " . date ( " H:i " ) . " </span> <span class=B2> $botname </span> вмешался в поединок.<BR> " ;
$t2 .= " ; $botid " ;
}
mysql_query ( " INSERT INTO `battle` (`id`, `coment`, `teams`, `timeout`, `type`, `status`, `t1`, `t2`, `to1`, `to2`, `blood`, `date`) VALUES (NULL, '', ' " . serialize ( $teams ) . " ', ' " . $time . " ', ' $type ', '0', ' " . $user1 [ 'id' ] . " ', ' " . $t2 . " ', ' " . time () . " ', ' " . time () . " ', ' $blood ', ' " . date ( " Y-m-d H:i " ) . " ') " );
$battleid = mysql_insert_id ();
mysql_query ( " UPDATE `bots` SET `battle` = { $battleid } WHERE $cond " );
mysql_query ( " UPDATE `users` SET `battle` = { $battleid } WHERE `id` = { $user1 [ 'id' ] } LIMIT 1 " );
if ( $user1 [ 'invis' ] == 1 ) {
2020-08-27 12:17:02 +00:00
$rr = " <b>невидимка</b> и <b> " . Nick :: id ( $botid1 ) -> full ( 1 ) . " </b> " ;
2018-07-02 15:35:25 +00:00
} else {
2020-08-27 12:17:02 +00:00
$rr = " <b> " . Nick :: id ( $user1 [ 'id' ]) -> full ( 1 ) . " </b> и <b> " . Nick :: id ( $botid1 ) -> full ( 1 ) . " </b> " ;
2018-07-02 15:35:25 +00:00
}
addlog ( $battleid , " Часы показывали <span class=date> " . date ( " Y.m.d H.i " ) . " </span>, когда " . $rr . " бросили вызов друг другу. <BR> " . ( $others ? " $others <BR> " : " " ));
if ( ! $noredir ) {
header ( " Location: fbattle.php " );
}
}
return $battleid ;
}
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 )
{
2020-08-30 16:28:15 +00:00
if ( in_array ( $r , Config :: $canalenters )) {
2018-07-02 15:35:25 +00:00
header ( " location: enter_cave.php " );
2020-09-30 12:01:33 +00:00
exit ;
2018-07-02 15:35:25 +00:00
}
if ( $r == 1 ) {
header ( " location: main.php " );
2020-09-30 12:01:33 +00:00
exit ;
2018-07-02 15:35:25 +00:00
}
}
2020-08-29 23:21:22 +00:00
$roomnames = [ 621 => " Рудник " ];
2018-01-28 16:40:49 +00:00
2020-08-29 23:21:22 +00:00
if ( $user [ " login " ] == " Rallo Tabs " ) {
if ( isset ( $_GET [ 'goto' ])) {
mysql_query ( " UPDATE `caveparties` SET `x` = ' $_GET[x] ', `y` = ' $_GET[y] ', `floor` = ' $_GET[floor] ' WHERE `caveparties`.`user` = $user[id] LIMIT 1 " );
header ( 'Location: cave.php' );
exit ();
}
header ( " Content-Type: text/html; charset=utf-8 " );
}
if ( $user [ 'battle' ] > 0 ) {
header ( " location: fbattle.php " );
2020-09-30 12:01:33 +00:00
exit ;
2020-08-29 23:21:22 +00:00
}
$objsizes = [ 0 => [ 0 , 0 ], 1 => [ 120 , 60 ], 2 => [ 120 , 60 ], 3 => [ 120 , 60 ], 4 => [ 110 , 72 ], 5 => [ 120 , 120 ]];
$objdata [ 3 ][ 0 ] = [ " wd " => 1.44 , " ht " => 1.44 , " y " => 1 , " x " => 176 ];
$objdata [ 3 ][ 1 ] = [ " coef " => 1 , " y " => 202 , " x " => 176 ];
$objdata [ 1 ][ 1 ] = [ " coef " => 1 , " y " => 202 , " x " => - 65 ];
$objdata [ 5 ][ 1 ] = [ " coef " => 1 , " y " => 202 , " x " => 435 ];
$objdata [ 3 ][ 2 ] = [ " coef " => 0.67 , " y " => 162 , " x " => 176 ];
$objdata [ 1 ][ 2 ] = [ " coef " => 0.67 , " y " => 162 , " x " => 18 ];
$objdata [ 5 ][ 2 ] = [ " coef " => 0.67 , " y " => 162 , " x " => 342 ];
$objdata [ 3 ][ 3 ] = [ " coef " => 0.50 , " y " => 141 , " x " => 176 ];
$objdata [ 1 ][ 3 ] = [ " coef " => 0.50 , " y " => 141 , " x " => 50 ];
$objdata [ 5 ][ 3 ] = [ " coef " => 0.50 , " y " => 141 , " x " => 300 ];
$imgdata [ 3 ][ 0 ] = [ " wd " => 173 , " ht " => 317 , " y " => 1 , " x " => [ - 37 , 89 , 215 ]];
$imgdata [ 3 ][ 1 ] = [ " wd " => 87 , " ht " => 161 , " y " => 41 , " x " => [ 68 , 132 , 196 ]];
$imgdata [ 1 ][ 1 ] = [ " wd " => 87 , " ht " => 161 , " y " => 41 , " x " => [ - 171 , - 44 , - 44 ]];
$imgdata [ 5 ][ 1 ] = [ " wd " => 87 , " ht " => 161 , " y " => 41 , " x " => [ 308 , 308 , 435 ]];
$imgdata [ 3 ][ 2 ] = [ " wd " => 58 , " ht " => 107 , " y " => 55 , " x " => [ 104 , 147 , 189 ]];
$imgdata [ 1 ][ 2 ] = [ " wd " => 58 , " ht " => 107 , " y " => 55 , " x " => [ - 56 , 29 , 29 ]];
$imgdata [ 5 ][ 2 ] = [ " wd " => 58 , " ht " => 107 , " y " => 55 , " x " => [ 264 , 264 , 350 ]];
$imgdata [ 3 ][ 3 ] = [ " wd " => 44 , " ht " => 81 , " y " => 61 , " x " => [ 122 , 154 , 186 ]];
$imgdata [ 1 ][ 3 ] = [ " wd " => 44 , " ht " => 81 , " y " => 61 , " x " => [ 1 , 65 , 65 ]];
$imgdata [ 5 ][ 3 ] = [ " wd " => 44 , " ht " => 81 , " y " => 61 , " x " => [ 242 , 242 , 306 ]];
$eventdata [ 3 ][ 1 ] = [ " x " => 176 , " y " => 200 , " q " => 1 ];
$eventdata [ 3 ][ 2 ] = [ " x " => 176 , " y " => 149 , " q " => 0.66 ];
$eventdata [ 1 ][ 2 ] = [ " x " => 16 , " y " => 149 , " q " => 0.66 ];
$eventdata [ 5 ][ 2 ] = [ " x " => 335 , " y " => 149 , " q " => 0.66 ];
$eventdata [ 3 ][ 3 ] = [ " x " => 176 , " y " => 133 , " q " => 0.5 ];
$eventdata [ 1 ][ 3 ] = [ " x " => 56 , " y " => 133 , " q " => 0.5 ];
$eventdata [ 5 ][ 3 ] = [ " x " => 296 , " y " => 133 , " q " => 0.5 ];
$objects = [ 1 => " Спуск " , 2 => " Спуск " , 3 => " Спуск " , 4 => " Сундук " , 5 => " Спуск " ];
$events = [];
$dialogs = [];
2018-01-28 16:40:49 +00:00
$noautoexit = 0 ;
2020-08-29 23:21:22 +00:00
function usagesleft ( $x , $y )
{
global $map ;
$cell = explode ( " / " , $map [ $y * 2 ][ $x * 2 ]);
return $cell [ 3 ];
}
function takeusage ( $x , $y )
{
global $map ;
$cell = explode ( " / " , $map [ $y * 2 ][ $x * 2 ]);
$cell [ 3 ] -- ;
$map [ $y * 2 ][ $x * 2 ] = implode ( " / " , $cell );
updmap ();
}
function makedeath ()
{
global $user , $floor , $loses , $x , $y , $dir ;
2020-09-29 22:39:06 +00:00
$cavedata = Config :: $cavedata ? ? [];
2020-09-30 12:01:33 +00:00
if ( ! isset ( $cavedata [ $user -> room ][ 'x' . $floor ])) {
2020-08-29 23:21:22 +00:00
$floor = 1 ;
loadmap ();
}
2020-09-30 12:01:33 +00:00
mysql_query ( " UPDATE `caveparties` SET `floor` = $floor , `x` = ' " . $cavedata [ $user -> room ][ 'x' . $floor ] . " ', `y` = ' " . $cavedata [ $user -> room ][ 'y' . $floor ] . " ', `dir` = ' " . $cavedata [ $user -> room ][ 'dir' . $floor ] . " ', `loses` = (`loses`+1) WHERE `user` = ' $user[id] ' LIMIT 1 " );
2020-08-29 23:21:22 +00:00
mysql_query ( 'UPDATE `users` SET `hp` = 1 WHERE `id` = "' . $user [ 'id' ] . '" LIMIT 1' );
2020-09-30 12:01:33 +00:00
$x = $cavedata [ $user -> room ][ 'x' . $floor ];
$y = $cavedata [ $user -> room ][ 'y' . $floor ];
$dir = $cavedata [ $user -> room ][ 'dir' . $floor ];
2020-08-29 23:21:22 +00:00
updparties ();
$loses ++ ;
}
function pickupitem ( $item , $foronetrip , $notmore1 , $incave = 0 , $podzem = 1 , $destiny = 0 )
{
global $user ;
if ( $notmore1 ) {
$i = mysql_fetch_assoc ( mysql_query ( " SELECT `id` FROM `inventory` WHERE `prototype` = ' $item ' AND `owner` = ' $user[id] ' LIMIT 1 " ));
if ( isset ( $i [ 'id' ])) {
return " Вы уже получили здесь всё необходимое. " ;
}
}
$flds = [ 'podzem' => 1 , 'podzem' => $podzem ];
if ( $incave ) {
$flds [ 'incave' ] = 1 ;
}
$taken = takeshopitem ( $item , 'shop' , '' , $foronetrip , $destiny , $flds );
return " Вы получили <b> $taken[name] </b> " ;
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
function itemtofloor ( $item , $foronetrip , $incave = 0 , $podzem = 1 , $from = 'shop' , $small = 0 )
{
global $user , $x , $y , $floor ;
$rec = mysql_fetch_array ( mysql_query ( " SELECT `name`, `img` FROM ` $from ` WHERE `id` = ' $item ' LIMIT 1 " ));
mysql_query ( " INSERT INTO `caveitems` SET `leader` = ' $user[caveleader] ', `name` = ' $rec[name] ', `img` = ' $rec[img] ', `small` = ' $small ', `x` = ' " . ( $x * 2 ) . " ', `y` = ' " . ( $y * 2 ) . " ', `floor` = ' $floor ', `item` = ' $item ', `foronetrip` = ' $foronetrip ', `incave` = ' $incave ', `podzem` = ' $podzem ' " );
return " Вы нашли <b> $rec[name] </b>. " ;
}
function makeinjury ()
{
global $user , $floor , $noautoexit , $loses , $x , $y , $dir ;
settravma ( $user [ 'id' ], 20 , rand ( 1 , 600 ), 1 , 1 );
makedeath ();
$noautoexit = 1 ;
}
function cavewall ( $w )
{
if ( $w < 100 ) {
return floor ( $w / 10 );
} else {
return floor ( $w / 1000 ) + 100 ;
2018-01-28 16:40:49 +00:00
}
}
2020-08-29 23:21:22 +00:00
function passablewall ( $n )
{
if ( $n == 0 || $n == 31 ) {
return true ;
}
return false ;
}
function canmoveto ( $cell , $freecell = 0 , $passing = 0 )
{
if ( ! passablewall ( $passing )) {
return false ;
}
$obj = substr ( $cell , 0 , 1 );
if ( $obj == " e " || $obj == " u " || $obj == " s " || $obj == " p " ) {
return true ;
}
if ( ! $freecell && $cell ) {
return false ;
}
if ( $cell == $freecell ) {
return true ;
}
return false ;
}
function gotoxy ( $tox , $toy , $tofloor = 0 , $msg = '' )
{
global $map , $x , $y , $floor , $user ;
$floor1 = $floor ;
$upd = " " ;
if ( $tox ) {
$tox = $tox / 2 ;
if ( $upd ) {
$upd .= " , " ;
}
$upd .= " `x` = ' $tox ' " ;
$x = $tox ;
}
if ( $toy ) {
$toy = $toy / 2 ;
if ( $upd ) {
$upd .= " , " ;
}
$upd .= " `y` = ' $toy ' " ;
$y = $toy ;
}
if ( $tofloor && $tofloor != $floor ) {
if ( $upd ) {
$upd .= " , " ;
}
$upd .= " `floor` = ' $tofloor ' " ;
$floor = $tofloor ;
}
mysql_query ( " UPDATE `caveparties` SET $upd WHERE `user` = ' $user[id] ' LIMIT 1 " );
if ( $tofloor && $tofloor != $floor1 ) {
$map = mysql_fetch_assoc ( mysql_query ( " SELECT `map` FROM `caves` WHERE `leader` = ' $user[caveleader] ' AND `floor` = ' $floor ' LIMIT 1 " ));
$map = unserialize ( $map );
}
updparties ();
if ( $msg ) {
header ( " Location: " . $_SERVER [ 'PHP_SELF' ] . ( $msg ? '?msg=' . $msg : '' ));
exit ();
}
}
function updparties ()
{
global $user , $x , $y , $floor , $dir , $party ;
foreach ( $party as $k => $v ) {
if ( $v [ 'user' ] == $user [ 'id' ]) {
$party [ $k ][ 'dir' ] = $dir ;
$party [ $k ][ 'x' ] = $x ;
$party [ $k ][ 'y' ] = $y ;
$party [ $k ][ 'floor' ] = $floor ;
}
}
}
function loadmap ()
{
global $user , $map , $floor ;
$map = mysql_fetch_array ( mysql_query ( " SELECT `map` FROM `caves` WHERE `leader` = ' $user[caveleader] ' AND `floor` = ' $floor ' LIMIT 1 " ));
$map = unserialize ( $map [ 'map' ]);
2018-01-28 16:40:49 +00:00
}
2018-07-02 15:35:25 +00:00
function getslot ( $i , $user1 = 0 )
{
2020-08-30 16:28:15 +00:00
global $user ;
2018-07-02 15:35:25 +00:00
if ( ! $user1 ) {
$user1 = $user ;
}
2020-08-30 16:28:15 +00:00
foreach ( Config :: $userslots as $k => $v ) {
2018-07-02 15:35:25 +00:00
if ( $user1 [ $v ] == $i ) {
return $v ;
}
}
}
function getcavedata ( $caveleader , $floor )
{
return unserialize ( implode ( " " , file ( " cavedata/ $caveleader - $floor .dat " )));
}
2020-09-30 12:01:33 +00:00
if ( ! in_array ( $user -> room , Config :: $caverooms )) {
2020-08-29 23:21:22 +00:00
header ( " Location: main.php " );
2020-09-30 12:01:33 +00:00
exit ( 'Not in this life ...' );
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
if ( isset ( $_GET [ 'direction' ])) {
$dir = ( int ) $_GET [ 'direction' ];
if ( $dir >= 0 && $dir <= 3 ) {
mysql_query ( " UPDATE `caveparties` SET `dir` = ' $dir ' WHERE `user` = ' $user[id] ' LIMIT 1 " );
}
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
$party = [];
2018-01-28 16:40:49 +00:00
$r = mysql_query ( " SELECT `user`, `x`, `y`, `dir`, `login`, `shadow`, `floor`, `loses` FROM `caveparties` WHERE `leader` = ' $user[caveleader] ' ORDER BY `id` DESC " );
2020-08-29 23:21:22 +00:00
while ( $rec = mysql_fetch_assoc ( $r )) {
if ( $rec [ 'user' ] == $user [ 'id' ]) {
$x = $rec [ 'x' ];
$y = $rec [ 'y' ];
$dir = $rec [ 'dir' ];
$floor = $rec [ 'floor' ];
$loses = $rec [ 'loses' ];
}
$party [] = $rec ;
2018-01-28 16:40:49 +00:00
}
2020-09-30 12:01:33 +00:00
if ( $user -> room == 621 ) {
2020-08-29 23:21:22 +00:00
$base = " /underdesigns/alchcave " ;
2018-01-28 16:40:49 +00:00
}
$maxloses = 3 ;
2020-08-29 23:21:22 +00:00
if ( $loses >= $maxloses && ! $noautoexit ) {
$_GET [ 'exit' ] = 1 ;
}
if ( @ $_GET [ 'kill' ] && $user [ 'id' ] == $user [ 'caveleader' ] && $_GET [ 'kill' ] != $user [ 'login' ]) {
foreach ( $party as $k => $v ) {
if ( $v [ 'login' ] == $_GET [ 'kill' ]) {
mysql_query ( " DELETE FROM `caveparties` WHERE `user` = ' $v[user] ' " );
mysql_query ( " UPDATE `users` SET `room` = (`room`-1), `caveleader` = 0 WHERE `id` = ' $v[user] ' LIMIT 1 " );
$r = mysql_query ( " SELECT `id`, `dressed` FROM `inventory` WHERE `owner` = ' $v[user] ' AND `dressed` = 1 AND `foronetrip` = 1 " );
if ( mysql_num_rows ( $r ) > 0 ) {
2020-08-30 16:28:15 +00:00
$usr = mysql_fetch_array ( mysql_query ( " SELECT " . implode ( " , " , Config :: $userslots ) . " FROM `users` WHERE `id` = ' $v[user] ' " ));
2020-08-29 23:21:22 +00:00
}
while ( $rec = mysql_fetch_assoc ( $r )) {
$slot = getslot ( $rec [ 'id' ], $usr );
if ( $slot ) {
dropitemid ( 0 , $v [ 'user' ], $slot );
}
}
mysql_query ( " DELETE FROM `inventory` WHERE `owner` = ' $v[user] ' AND `foronetrip` = 1 " );
unset ( $party [ $k ]);
$report = " Персонаж $v[login] исключён из похода. " ;
break ;
2018-01-28 16:40:49 +00:00
}
}
2020-08-29 23:21:22 +00:00
if ( !@ $report ) {
$report = " Персонаж $_GET[kill] не найден. " ;
}
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
if ( $_GET [ 'change' ] && $user [ 'id' ] == $user [ 'caveleader' ] && $_GET [ 'change' ] != $user [ 'login' ]) {
foreach ( $party as $k => $v ) {
if ( $v [ 'login' ] == $_GET [ 'change' ]) {
mysql_query ( " LOCK TABLES `users` WRITE, `caveparties` WRITE, `cavebots` WRITE, `caves` WRITE, `caveitems` WRITE " );
mysql_query ( " UPDATE `users` SET `caveleader` = ' $v[user] ' WHERE `caveleader` = ' $user[id] ' " );
mysql_query ( " UPDATE `cavebots` SET `leader` = ' $v[user] ' WHERE `leader` = ' $user[id] ' " );
mysql_query ( " UPDATE `caves` SET `leader` = ' $v[user] ' WHERE `leader` = ' $user[id] ' " );
mysql_query ( " UPDATE `caveparties` SET `leader` = ' $v[user] ' WHERE `leader` = ' $user[id] ' " );
mysql_query ( " UPDATE `caveitems` SET `leader` = ' $v[user] ' WHERE `leader` = ' $user[id] ' " );
$user [ 'caveleader' ] = $v [ 'user' ];
$report = " Персонажу $v[login] присвоено лидерство. " ;
mysql_query ( " UNLOCK TABLES " );
break ;
}
}
if ( !@ $report ) {
$report = " Персонаж $_GET[change] не найден. " ;
2018-01-28 16:40:49 +00:00
}
}
2020-08-29 23:21:22 +00:00
if ( @ $_GET [ 'useitem' ] || @ $_GET [ 'usewallitem' ]) {
mysql_query ( " LOCK TABLES `effects` WRITE, `cavebots` WRITE, `battle` WRITE, `users` WRITE, `caveparties` WRITE, `caves` WRITE, `shop` WRITE, `inventory` WRITE, `bots` WRITE, `caveitems` WRITE " );
2018-01-28 16:40:49 +00:00
}
loadmap ();
2020-08-29 23:21:22 +00:00
if ( @ $_GET [ 'useitem' ]) {
if ( $dir == 0 ) {
$tx = $x - 1 ;
$ty = $y ;
}
if ( $dir == 1 ) {
$tx = $x ;
$ty = $y - 1 ;
}
if ( $dir == 2 ) {
$tx = $x + 1 ;
$ty = $y ;
}
if ( $dir == 3 ) {
$tx = $x ;
$ty = $y + 1 ;
}
if ( @ $_GET [ 'useitem' ]) {
2020-09-30 12:01:33 +00:00
if ( file_exists ( " underground/objects/ $user->room .php " )) {
include " underground/objects/ $user->room .php " ;
2020-08-29 23:21:22 +00:00
}
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
[ $t , $obj ] = explode ( " / " , $map [ $ty * 2 ][ $tx * 2 ]);
2018-01-28 16:40:49 +00:00
2020-08-29 23:21:22 +00:00
if ( $t == " o " ) {
if ( $obj == 500 ) {
$report = " В этот сундук уже кто-то заглядывал" ;
}
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
mysql_query ( " UNLOCK TABLES " );
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
function updmap ()
{
global $map , $user , $floor ;
mysql_query ( " UPDATE `caves` SET `map` = ' " . serialize ( $map ) . " ' WHERE `leader` = ' $user[caveleader] ' AND `floor` = ' $floor ' LIMIT 1 " );
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
if ( @ $_GET [ 'usewallitem' ]) {
if ( $dir == 0 ) {
$tx = $x * 2 - 1 ;
$ty = $y * 2 ;
}
if ( $dir == 1 ) {
$tx = $x * 2 ;
$ty = $y * 2 - 1 ;
}
if ( $dir == 2 ) {
$tx = $x * 2 + 1 ;
$ty = $y * 2 ;
}
if ( $dir == 3 ) {
$tx = $x * 2 ;
$ty = $y * 2 + 1 ;
}
2018-01-28 16:40:49 +00:00
2020-08-29 23:21:22 +00:00
$obj = $map [ $ty ][ $tx ];
2018-01-28 16:40:49 +00:00
2020-08-29 23:21:22 +00:00
if ( $obj == 18 ) {
$report = " Вы не обнаружили ничего интересного. " ;
}
if ( $obj == 19 ) {
$report = " Уже проверено, сюда лучше не лазить. " ;
}
mysql_query ( " UNLOCK TABLES " );
2018-01-28 16:40:49 +00:00
}
$r = mysql_query ( " SELECT `id`, `bot`, `x`, `y`, `cnt`, `type`, `battle` FROM `cavebots` WHERE `leader` = ' $user[caveleader] ' AND `floor` = ' $floor ' " );
2020-08-29 23:21:22 +00:00
$mapbots = [];
$ambushes = [];
2018-01-28 16:40:49 +00:00
$cavedata = getcavedata ( $user [ 'caveleader' ], $floor );
2020-08-29 23:21:22 +00:00
if ( time () - $cavedata [ 'wander' ] > 21 ) {
$wander = 1 ;
} else {
$wander = 0 ;
}
$wanderers = [];
while ( $rec = mysql_fetch_assoc ( $r )) {
if ( $rec [ 'type' ] == 1 && $wander && $rec [ 'battle' ] == 0 ) {
$wanderers [] = $rec ;
continue ;
}
if ( !@ $mapbots [ $rec [ 'y' ]][ $rec [ 'x' ]]) {
$mapbots [ $rec [ 'y' ]][ $rec [ 'x' ]] = " b " ;
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
if (( $rec [ 'type' ] == 1 || $rec [ 'type' ] == 2 ) && $rec [ 'battle' ] == 0 ) {
$ambushes [ $rec [ 'y' ]][ $rec [ 'x' ]] = 1 ;
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
$mapbots [ $rec [ 'y' ]][ $rec [ 'x' ]] .= " / $rec[bot] / $rec[cnt] " ;
}
if ( $wander && ! isset ( $_GET [ 'attack' ])) {
foreach ( $wanderers as $k => $v ) {
$d = rand ( 0 , 3 );
for ( $i = 0 ; $i < 4 ; $i ++ ) {
if ( $d == 0 ) {
$tx = $v [ 'x' ] - 2 ;
$ty = $v [ 'y' ];
}
if ( $d == 1 ) {
$tx = $v [ 'x' ];
$ty = $v [ 'y' ] - 2 ;
}
if ( $d == 2 ) {
$tx = $v [ 'x' ] + 2 ;
$ty = $v [ 'y' ];
}
if ( $d == 3 ) {
$tx = $v [ 'x' ];
$ty = $v [ 'y' ] + 2 ;
}
2020-09-30 12:01:33 +00:00
if ( $user -> room == 74 || $user -> room == 76 ) {
2020-08-29 23:21:22 +00:00
if ( strpos ( $map [ $ty ][ $tx ], 's/' ) !== false && !@ $mapbots [ $ty ][ $tx ]) {
break ;
}
} else {
if ( $map [ $ty ][ $tx ] == 2 && !@ $mapbots [ $ty ][ $tx ]) {
break ;
}
}
$d ++ ;
if ( $d > 3 ) {
$d = 0 ;
}
}
if ( $i < 4 ) {
mysql_query ( " UDPATE `cavebots` set `x` = ' $tx ', `y` = ' $ty ' WHERE `id` = ' $v[id] ' LIMIT 1 " );
$v [ 'x' ] = $tx ;
$v [ 'y' ] = $ty ;
}
if ( !@ $mapbots [ $v [ 'y' ]][ $v [ 'x' ]]) {
$mapbots [ $v [ 'y' ]][ $v [ 'x' ]] = " b " ;
}
$ambushes [ $v [ 'y' ]][ $v [ 'x' ]] = 1 ;
$mapbots [ $v [ 'y' ]][ $v [ 'x' ]] .= " / $v[bot] / $v[cnt] " ;
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
$cavedata [ 'wander' ] = time ();
savecavedata ( $cavedata , $user [ 'caveleader' ], $floor );
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
foreach ( $mapbots as $k => $v ) {
foreach ( $v as $k2 => $v2 ) {
$map [ $k ][ $k2 ] = $v2 ;
}
2018-01-28 16:40:49 +00:00
}
$moved = 0 ;
2020-08-29 23:21:22 +00:00
if ( @ $_GET [ 'move' ] && $_SESSION [ 'movetime' ] < time ()) {
if ( $_GET [ 'move' ] == " x1 " && canmoveto ( $map [ $y * 2 ][ $x * 2 + 2 ], 2 , $map [ $y * 2 ][ $x * 2 + 1 ], 2 )) {
mysql_query ( " UPDATE `caveparties` SET `x` = (`x`+1) WHERE `user` = ' $user[id] ' LIMIT 1 " );
$x ++ ;
$moved = 1 ;
}
if ( $_GET [ 'move' ] == " x2 " && canmoveto ( $map [ $y * 2 ][ $x * 2 - 2 ], 2 , $map [ $y * 2 ][ $x * 2 - 1 ])) {
mysql_query ( " UPDATE `caveparties` SET `x` = (`x`-1) WHERE `user` = ' $user[id] ' LIMIT 1 " );
$x -- ;
$moved = 1 ;
}
if ( $_GET [ 'move' ] == " y1 " && canmoveto ( $map [ $y * 2 + 2 ][ $x * 2 ], 2 , $map [ $y * 2 + 1 ][ $x * 2 ])) {
mysql_query ( " UPDATE `caveparties` SET `y` = (`y`+1) WHERE `user` = ' $user[id] ' LIMIT 1 " );
$y ++ ;
$moved = 1 ;
}
if ( $_GET [ 'move' ] == " y2 " && canmoveto ( $map [ $y * 2 - 2 ][ $x * 2 ], 2 , $map [ $y * 2 - 1 ][ $x * 2 ])) {
mysql_query ( " UPDATE `caveparties` SET `y` = (`y`-1) WHERE `user` = ' $user[id] ' LIMIT 1 " );
$y -- ;
$moved = 1 ;
}
updparties ();
#$_SESSION['movetime'] = time()+5;
$_SESSION [ 'movetime' ] = time ();
}
if ( $moved && ( substr ( $map [ $y * 2 ][ $x * 2 ], 0 , 1 ) === " e " || substr ( $map [ $y * 2 ][ $x * 2 ], 0 , 1 ) === " p " )) {
$tx = $x ;
$ty = $y ;
$tmp = explode ( " / " , $map [ $y * 2 ][ $x * 2 ]);
2020-09-30 12:01:33 +00:00
if ( file_exists ( " underground/events/ $user->room .php " )) {
include ( " underground/events/ $user->room .php " );
2020-08-29 23:21:22 +00:00
}
}
$ax = 0 ;
$ay = 0 ;
if ( $ambushes [ $y * 2 + 2 ][ $x * 2 ] && $map [ $y * 2 + 1 ][ $x * 2 ] == 0 ) {
$ax = $x ;
$ay = $y + 1 ;
}
if ( $ambushes [ $y * 2 - 2 ][ $x * 2 ] && $map [ $y * 2 - 1 ][ $x * 2 ] == 0 ) {
$ax = $x ;
$ay = $y - 1 ;
}
if ( $ambushes [ $y * 2 ][ $x * 2 + 2 ] && $map [ $y * 2 ][ $x * 2 + 1 ] == 0 ) {
$ax = $x + 1 ;
$ay = $y ;
}
if ( $ambushes [ $y * 2 ][ $x * 2 - 2 ] && $map [ $y * 2 ][ $x * 2 - 1 ] == 0 ) {
$ax = $x - 1 ;
$ay = $y ;
}
if ( $ax && $ay && $user [ 'hp' ] > 0 ) {
2020-09-29 22:39:06 +00:00
$cavedata = Config :: $cavedata ? ? [];
2020-09-30 12:01:33 +00:00
if ( ! ( $cavedata [ $user -> room ][ 'x' . $floor ] == $x && $cavedata [ $user -> room ][ 'y' . $floor ] == $y )) {
2020-08-29 23:21:22 +00:00
if ( $ax < $x ) {
$dir1 = 0 ;
} elseif ( $ax > $x ) {
$dir1 = 2 ;
} elseif ( $ay < $y ) {
$dir1 = 1 ;
} elseif ( $ay > $y ) {
$dir1 = 3 ;
}
if ( $dir != $dir1 ) {
$dir = $dir1 ;
mysql_query ( " UPDATE `caveparties` SET `dir` = ' $dir ' WHERE `user` = ' $user[id] ' LIMIT 1 " );
foreach ( $party as $k => $v ) {
if ( $v [ 'user' ] == $user [ 'id' ]) {
$party [ $k ][ 'dir' ] = $dir1 ;
}
}
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
$_GET [ 'attack' ] = 1 ;
2018-01-28 16:40:49 +00:00
}
}
2020-08-29 23:21:22 +00:00
if ( ! $_SESSION [ 'movetime' ]) {
#$_SESSION['movetime'] = time()+5;
$_SESSION [ 'movetime' ] = time ();
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
if ( @ $_GET [ 'takeitem' ]) {
$_GET [ 'takeitem' ] = ( int ) $_GET [ 'takeitem' ];
$it = mysql_fetch_array ( mysql_query ( " SELECT `item`, `foronetrip`, `incave`, `podzem` FROM `caveitems` WHERE `leader` = ' $user[caveleader] ' AND `x` = ' " . ( $x * 2 ) . " ' AND `y` = ' " . ( $y * 2 ) . " ' AND `floor` = ' $floor ' AND `id` = ' $_GET[takeitem] ' LIMIT 1 " ));
if ( isset ( $it [ 'item' ])) {
$ms = mysql_fetch_assoc ( mysql_query ( " SELECT `massa` AS `mass` FROM $shop WHERE `id` = ' $it[item] ' LIMIT 1 " ));
$shop = 'shop' ;
if ( ! placeinbackpack ( 1 , $user [ 'id' ])) {
$report = " У вас в рюкзаке слишком много предметов." ;
} elseif ( ! cancarry ( $ms [ 'mass' ], $user )) {
$report = " Ваш рюкзак перегружен. " ;
} else {
$destiny = 0 ;
$taken = takeshopitem ( $it [ 'item' ], " $shop " , " " , $it [ 'foronetrip' ], $destiny , [ " podzem " => $it [ " podzem " ], " incave " => $it [ 'incave' ]], 0 , 1 , " Нашёл в пещере " );
if ( @ $taken [ 'error' ]) {
$report = $taken [ 'error' ];
} else {
mysql_query ( " DELETE FROM `caveitems` WHERE `leader` = ' $user[caveleader] ' AND `x` = ' " . ( $x * 2 ) . " ' AND `y` =' " . ( $y * 2 ) . " ' AND `floor` = ' $floor ' AND `id` = ' $_GET[takeitem] ' LIMIT 1 " );
$report = " Вы нашли $taken[name] . " ;
}
}
2018-01-28 16:40:49 +00:00
} else {
2020-08-29 23:21:22 +00:00
$report = " Кто-то оказался быстрее... " ;
}
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
if ( @ $_GET [ 'speak' ]) {
if ( $dir == 0 ) {
$x1 = $x * 2 - 2 ;
} elseif ( $dir == 2 ) {
$x1 = $x * 2 + 2 ;
} else {
$x1 = $x * 2 ;
}
if ( $dir == 1 ) {
$y1 = $y * 2 - 2 ;
} elseif ( $dir == 3 ) {
$y1 = $y * 2 + 2 ;
} else {
$y1 = $y * 2 ;
}
$cell = $map [ $y1 ][ $x1 ];
$tmp = explode ( " / " , $cell );
if ( $tmp [ 0 ] == " d " ) {
header ( " location: dialog.php?char= $tmp[2] " );
2020-09-30 12:01:33 +00:00
exit ;
2020-08-29 23:21:22 +00:00
}
2020-08-30 15:39:27 +00:00
if ( $tmp [ 0 ] == " b " && isset ( $dialogs [ CaveBots :: $bots [ $tmp [ 1 ]]])) {
header ( " location: dialog.php?char= " . CaveBots :: $bots [ $tmp [ 1 ]]);
2020-09-30 12:01:33 +00:00
exit ;
2020-08-29 23:21:22 +00:00
}
}
if ( @ $_GET [ 'attack' ]) {
if ( $dir == 0 ) {
$by = $y * 2 ;
$bx = ( $x - 1 ) * 2 ;
}
if ( $dir == 1 ) {
$by = ( $y - 1 ) * 2 ;
$bx = $x * 2 ;
}
if ( $dir == 2 ) {
$by = $y * 2 ;
$bx = ( $x + 1 ) * 2 ;
}
if ( $dir == 3 ) {
$by = ( $y + 1 ) * 2 ;
$bx = $x * 2 ;
}
2018-01-28 16:40:49 +00:00
2020-08-29 23:21:22 +00:00
$r = mysql_query ( " SELECT `bot`, `cnt`, `battle` FROM `cavebots` WHERE `leader` = ' $user[caveleader] ' AND `x` = $bx AND `y` = $by AND `floor` = ' $floor ' " );
2018-01-28 16:40:49 +00:00
2020-08-29 23:21:22 +00:00
$rec = mysql_fetch_assoc ( $r );
if ( $user [ 'hp' ] <= $user [ 'maxhp' ] * 0.33 ) {
$report = 'Вы слишком ослаблены для поединка' ;
} elseif ( isset ( $rec [ 'bot' ])) {
$btl = $rec [ 'battle' ];
if ( $btl > 0 ) {
2020-08-30 15:39:27 +00:00
battlewithbot ( CaveBots :: $bots [ $rec [ 'bot' ]], " " , " " , 10 , 0 , 0 , $btl );
2020-08-29 23:21:22 +00:00
} else {
2020-08-30 15:39:27 +00:00
$firstbot = CaveBots :: $bots [ $rec [ 'bot' ]];
2020-08-29 23:21:22 +00:00
$otherbots = [];
$rec [ 'cnt' ] -- ;
while ( $rec [ 'cnt' ] > 0 ) {
2020-08-30 15:39:27 +00:00
$otherbots [] = [ 'id' => CaveBots :: $bots [ $rec [ 'bot' ]], 'name' => CaveBots :: $botnames [ $rec [ 'bot' ]]];
2020-08-29 23:21:22 +00:00
$rec [ " cnt " ] -- ;
}
while ( $rec = mysql_fetch_assoc ( $r )) {
while ( $rec [ 'cnt' ] > 0 ) {
2020-08-30 15:39:27 +00:00
$otherbots [] = [ 'id' => CaveBots :: $bots [ $rec [ 'bot' ]], 'name' => CaveBots :: $botnames [ $rec [ 'bot' ]]];
2020-08-29 23:21:22 +00:00
$rec [ 'cnt' ] -- ;
}
}
$btl = battlewithbot ( $firstbot , " " , " " , 10 , 0 , 0 , 0 , $otherbots );
mysql_query ( " UPDATE `cavebots` SET `battle` = ' $btl ' WHERE `leader` = ' $user[caveleader] ' AND `x` = ' $bx ' AND `y` = $by AND `floor` = ' $floor ' " );
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
}
}
if ( @ $_GET [ 'exit' ]) {
if ( count ( $party ) == 1 ) {
mysql_query ( " DELETE FROM `cavebots` WHERE `leader` = ' $user[id] ' " );
mysql_query ( " DELETE FROM `caves` WHERE `leader` = ' $user[id] ' " );
mysql_query ( " DELETE FROM `caveparties` WHERE `leader` = ' $user[id] ' " );
mysql_query ( " DELETE FROM `caveitems` WHERE `leader` = ' $user[id] ' " );
mysql_query ( " UPDATE `users` SET `caveleader` = 0 WHERE `id` = ' $user[id] ' LIMIT 1 " );
} else {
mysql_query ( " LOCK TABLES `users` WRITE, `caveparties` WRITE, `cavebots` WRITE, `caves` WRITE, `caveitems` WRITE, `diseases` WRITE, `caveeffects` WRITE " );
mysql_query ( " DELETE FROM `caveparties` WHERE `user` = ' $user[id] ' " );
mysql_query ( " UPDATE `users` SET `caveleader` = 0 WHERE `id` = ' $user[id] ' LIMIT 1 " );
if ( $user [ 'caveleader' ] == $user [ 'id' ]) {
foreach ( $party as $k => $v ) {
if ( $v [ 'user' ] != $user [ 'id' ]) {
mysql_query ( " UPDATE `users` SET `caveleader` = ' $v[user] ' WHERE `caveleader` = ' $user[id] ' " );
mysql_query ( " UPDATE `cavebots` SET `leader` = ' $v[user] ' WHERE `leader` = ' $user[id] ' " );
mysql_query ( " UPDATE `caves` SET `leader` = ' $v[user] ' WHERE `leader` = ' $user[id] ' " );
mysql_query ( " UPDATE `caveparties` SET `leader` = ' $v[user] ' WHERE `leader` = ' $user[id] ' " );
mysql_query ( " UPDATE `caveitems` SET `leader` = ' $v[user] ' WHERE `leader` = ' $user[id] ' " );
}
}
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
mysql_query ( " UNLOCK TABLES " );
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
$r = mysql_query ( " SELECT `id`, `dressed` FROM `inventory` WHERE `owner` = ' $user[id] ' AND `dressed` = 1 AND `foronetrip` = 1 " );
while ( $rec = mysql_fetch_assoc ( $r )) {
$slot = getslot ( $rec [ 'id' ]);
if ( $slot ) {
dropitemid ( 0 , $user [ 'id' ], $slot );
}
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
mysql_query ( " DELETE FROM `inventory` WHERE `owner` = ' $user[id] ' AND `foronetrip` = 1 " );
2020-09-30 12:01:33 +00:00
gotoroom ( $user -> room - 1 );
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
$standingon = $map [ $y * 2 ][ $x * 2 ];
foreach ( $party as $k => $v ) {
$map [ $v [ 'y' ] * 2 ][ $v [ 'x' ] * 2 ] = " u/ " . $v [ 'user' ];
2018-01-28 16:40:49 +00:00
}
?>
2020-08-29 23:21:22 +00:00
< head >
< script LANGUAGE = 'JavaScript' >
document . ondragstart = test ;
//запрет на перетаскивание
document . onselectstart = test ;
//запрет на выделение элементов страницы
document . oncontextmenu = test ;
//запрет на выведение контекстного меню
function test () {
return false
}
</ SCRIPT >
< link rel = stylesheet type = " text/css " href = " /i/main.css " >
< style >
body {
font - family : Verdana , Arial , Helvetica , sans - serif ;
font - size : 10 px ;
margin : 0 0 0 0 ;
}
. menu {
z - index : 100 ;
background - color : #E4F2DF;
border - style : solid ;
border - width : 2 px ;
border - color : #77c3fc;
position : absolute ;
left : 0 ;
top : 0 ;
visibility : hidden ;
cursor : pointer ;
}
a . menuItem {
border : 0 solid #000000;
background - color : #484848;
color : #000000;
display : block ;
font - family : Verdana , Arial ;
font - size : 8 pt ;
font - weight : bold ;
padding : 2 px 12 px 2 px 8 px ;
text - decoration : none ;
}
a . menuItem : hover {
background - color : #d4cbaa;
color : #000000;
}
div . MoveLine {
width : 108 px ;
height : 7 px ;
size : 2 px ;
font - size : 2 px ;
position : relative ;
overflow : hidden ;
}
img . MoveLine {
width : 108 px ;
height : 7 px ;
border : 0 solid ;
position : absolute ;
left : 0 ;
top : 0
}
. cw1 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /cw1.gif?1)
}
. cw2 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /cw2.gif?1)
}
. cw3 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /cw3.gif?1)
}
. cw4 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /cw4.gif?1)
}
. cw5 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /cw5.gif?1)
}
. lw0 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /lw0.gif)
}
. lw1 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /lw1.gif)
}
. lw2 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /lw2.gif)
}
. lw3 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /lw3.gif)
}
. lw4 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /lw4.gif)
}
. rw0 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /rw0.gif)
}
. rw1 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /rw1.gif)
}
. rw2 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /rw2.gif)
}
. rw3 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /rw3.gif)
}
. rw4 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /rw4.gif)
}
. lsw0 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /lsw0.gif)
}
. lsw1 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /lsw1.gif)
}
. lsw2 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /lsw2.gif)
}
. lsw3 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /lsw3.gif)
}
. lsw4 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /lsw4.gif)
}
. lsw42 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /lsw42.gif)
}
. rsw0 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /rsw0.gif)
}
. rsw1 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /rsw1.gif)
}
. rsw2 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /rsw2.gif)
}
. rsw3 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /rsw3.gif)
}
. rsw4 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /rsw4.gif)
}
. rsw42 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /rsw42.gif)
}
. lw42 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /lw42.gif)
}
. rw42 {
position : absolute ;
left : 0 ;
top : 0 ;
width : 352 px ;
height : 240 px ;
background - image : url ( < ? = $base ?> /rw42.gif)
}
. maptd {
width : 15 px ;
height : 15 px ;
}
</ style >
< script >
var Hint3Name = '' ;
function closehint3 () {
document . getElementById ( " hint3 " ) . style . visibility = 'hidden' ;
}
function findlogin ( title , script , name ) {
document . all ( " hint3 " ) . innerHTML = '<form action="' + script + '" method=GET><table width=100% cellspacing=1 cellpadding=0 bgcolor=CCC3AA><tr><td align=center><B style="font-size:11px">' + title + '</td><td width=20 align=right valign=top style="cursor: pointer" onclick="closehint3();"><BIG><B>x</td></tr><tr><td colspan=2>' +
'<table width=100% cellspacing=0 cellpadding=2 bgcolor=FFF6DD><tr><INPUT TYPE=hidden name=sd4 value="<? echo @$user[' id ']; ?>"><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></td></tr></table></form>' ;
document . getElementById ( " hint3 " ) . style . visibility = " visible " ;
document . getElementById ( " hint3 " ) . style . left = 100 ;
document . getElementById ( " hint3 " ) . style . top = 100 ;
Hint3Name = name ;
document . all ( name ) . focus ();
}
function attackmenu ( e ) {
var el , x , y ;
el = document . getElementById ( " oMenu " );
var posx = 0 ;
var posy = 0 ;
if ( ! e ) var e = window . event ;
if ( e . pageX || e . pageY ) {
posx = e . pageX ;
posy = e . pageY ;
} else if ( e . clientX || e . clientY ) {
posx = e . clientX + document . body . scrollLeft ;
posy = e . clientY + document . body . scrollTop ;
}
el . innerHTML = '<div style="color:#000;font-size:14px;padding:5px 10px 5px 10px" class=menuItem onmouseout="this.className=\'menuItem\';" onmouseover="this.className=\'menuItem2\';" onclick="this.disabled = true;document.location.href=\'cave.php?attack=1<?="&", time()?>\';"> <b>Напасть</b> </div>' ;
el . style . left = posx + " px " ;
el . style . top = posy + " px " ;
el . style . visibility = " visible " ;
}
function speakmenu ( e ) {
var el , x , y ;
el = document . getElementById ( " oMenu " );
var posx = 0 ;
var posy = 0 ;
if ( ! e ) var e = window . event ;
if ( e . pageX || e . pageY ) {
posx = e . pageX ;
posy = e . pageY ;
} else if ( e . clientX || e . clientY ) {
posx = e . clientX + document . body . scrollLeft ;
posy = e . clientY + document . body . scrollTop ;
}
el . innerHTML = '<div style="color:#000;font-size:14px;padding:5px 10px 5px 10px" class=menuItem onmouseout="this.className=\'menuItem\';" onmouseover="this.className=\'menuItem2\';" onclick="this.disabled = true;document.location.href=\'cave.php?speak=1\';closeMenu(event);"> <b>Говорить</b> </div>' ;
el . style . left = posx + " px " ;
el . style . top = posy + " px " ;
el . style . visibility = " visible " ;
}
function speakattackmenu ( e ) {
var el , x , y ;
el = document . getElementById ( " oMenu " );
el2 = document . getElementById ( " oMenu2 " );
var posx = 0 ;
var posy = 0 ;
if ( ! e ) var e = window . event ;
if ( e . pageX || e . pageY ) {
posx = e . pageX ;
posy = e . pageY ;
} else if ( e . clientX || e . clientY ) {
posx = e . clientX + document . body . scrollLeft ;
posy = e . clientY + document . body . scrollTop ;
}
el . innerHTML = '<div style="color:#000;font-size:14px;padding:5px 10px 5px 10px" class=menuItem onmouseout="this.className=\'menuItem\';" onmouseover="this.className=\'menuItem2\';" onclick="this.disabled = true;document.location.href=\'cave.php?attack=1<?="&", time()?>\';"> <b>Напасть</b> </div>' ;
el . style . left = posx + " px " ;
el . style . top = posy + " px " ;
el . style . visibility = " visible " ;
el2 . innerHTML = '<div style="color:#000;font-size:14px;padding:5px 10px 5px 10px" class=menuItem onmouseout="this.className=\'menuItem\';" onmouseover="this.className=\'menuItem2\';" onclick="this.disabled = true;document.location.href=\'cave.php?speak=1\';closeMenu(event);"> <b>Говорить</b> </div>' ;
el2 . style . left = posx + " px " ;
el2 . style . top = posy + 33 + " px " ;
el2 . style . visibility = " visible " ;
}
var delay = 30 , TimerOn = - 1 , tkHP , maxHP , speed = 300 , stLen = 185 , redHP = 0.33 , yellowHP = 0.66 ;
function setHP ( a , b , c ) {
tkHP = a ;
maxHP = b ;
TimerOn >= 0 && ( clearTimeout ( TimerOn ), TimerOn = - 1 );
speed = c ;
setHPlocal ()
}
function setHPlocal () {
tkHP > maxHP && ( tkHP = maxHP );
var a = Math . round ( tkHP ) + " / " + maxHP , a = stLen - ( a . length + 2 ) * 7 ,
b = Math . round (( a - 1 ) / maxHP * tkHP );
a -= b ;
HP = document . getElementById ( " hp_value " );
HP1 = document . getElementById ( " HP1 " );
HP2 = document . getElementById ( " HP2 " );
if ( HP ) HP1 . width = b , HP2 . width = a , HP1 . src = tkHP / maxHP < redHP ? " i/1red.gif " : tkHP / maxHP < yellowHP ? " i/1yellow.gif " : " i/1green.gif " ,
HP . innerHTML = Math . round ( tkHP ) + " / " + maxHP ;
tkHP += maxHP / 60 / 20 * ( speed / 100 );
TimerOn = tkHP < maxHP ? setTimeout ( " setHPlocal() " , delay * 100 ) : - 1
}
setHP ( < ? = $user [ 'hp' ]; ?> , <?=$user['maxhp'];?>, 100);
</ script >
</ head >
< body leftmargin = 5 topmargin = 5 marginwidth = 5 marginheight = 5 bgcolor = " #d7d7d7 "
style = " background-image: url(/i/bagr.gif); width=100%; background-repeat:repeat;background-position:top " >
2018-01-28 16:40:49 +00:00
< div id = hint3 class = ahint ></ div >
2020-08-29 23:21:22 +00:00
< div style = " z-index: 100; background-color: #E4F2DF; border-style: solid; border-width: 2px; border-color: #77c3fc; position: absolute; left: 0; top: 0; visibility: hidden; cursor:pointer; "
id = " oMenu " ></ div >
< div style = " z-index: 100; background-color: #E4F2DF; border-style: solid; border-width: 2px; border-color: #77c3fc; position: absolute; left: 0; top: 0; visibility: hidden; cursor:pointer; "
id = " oMenu2 " ></ div >
2018-01-28 16:40:49 +00:00
< ?
2020-08-29 23:21:22 +00:00
if ( $user [ 'hp' ] <= 0 ) {
makedeath ();
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
function drawmap ( $map1 , $players , $x , $y , $direction )
{
2020-08-30 15:39:27 +00:00
global $base , $user , CaveBots :: $botnames , $imgdata ;
2020-08-29 23:21:22 +00:00
$startx = max ( $x * 2 - 8 , 0 );
$starty = max ( $y * 2 - 8 , 0 );
if ( $direction == 0 ) {
$x1 = $x * 2 + 2 ;
$x2 = $x * 2 - 8 ;
$y1 = $y * 2 + 3 ;
$y2 = $y * 2 - 4 ;
}
if ( $direction == 1 ) {
$x1 = $x * 2 - 3 ;
$x2 = $x * 2 + 4 ;
$y1 = $y * 2 + 2 ;
$y2 = $y * 2 - 8 ;
}
if ( $direction == 2 ) {
$x1 = $x * 2 - 2 ;
$x2 = $x * 2 + 8 ;
$y1 = $y * 2 - 3 ;
$y2 = $y * 2 + 4 ;
}
if ( $direction == 3 ) {
$x1 = $x * 2 + 3 ;
$x2 = $x * 2 - 4 ;
$y1 = $y * 2 - 2 ;
$y2 = $y * 2 + 8 ;
}
2018-01-28 16:40:49 +00:00
2020-08-29 23:21:22 +00:00
if ( $x1 < $x2 ) {
$dx = 1 ;
} else {
$dx = - 1 ;
}
if ( $y1 < $y2 ) {
$dy = 1 ;
} else {
$dy = - 1 ;
}
2018-01-28 16:40:49 +00:00
2020-08-29 23:21:22 +00:00
$x0 = 0 ;
if ( $direction % 2 == 1 ) {
$sy1 = $y1 ;
while ( $x1 != $x2 ) {
$y1 = $sy1 ;
$y0 = - 2 ;
while ( $y1 != $y2 ) {
if ( $map1 [ $y1 ][ $x1 ] == 2 ) {
$sq = 0 ;
} elseif ( isset ( $map1 [ $y1 ][ $x1 ])) {
$sq = $map1 [ $y1 ][ $x1 ];
} else {
$sq = 0 ;
}
$map [ $x0 ][ $y0 ] = $sq ;
$y1 += $dy ;
$y0 ++ ;
}
$x0 ++ ;
$x1 += $dx ;
2018-01-28 16:40:49 +00:00
}
} else {
2020-08-29 23:21:22 +00:00
$sx1 = $x1 ;
while ( $y1 != $y2 ) {
$x1 = $sx1 ;
$x0 = - 2 ;
while ( $x1 != $x2 ) {
if ( $map1 [ $y1 ][ $x1 ] == 2 ) {
$sq = 0 ;
} elseif ( isset ( $map1 [ $y1 ][ $x1 ])) {
$sq = $map1 [ $y1 ][ $x1 ];
} else {
$sq = 0 ;
}
$map [ $y0 ][ $x0 ] = $sq ;
$x1 += $dx ;
$x0 ++ ;
}
$y0 ++ ;
$y1 += $dy ;
2018-01-28 16:40:49 +00:00
}
}
$ret = " <div style= \" width: 530px; height: 260px; background-image: url( $base /podzem.jpg); background-repeat: no-repeat; overflow: hidden; \" ><table cellspacing=0 cellpadding=0><tr><td style= \" padding-left: 10px; padding-top: 10px; \" ><div style= \" position: relative; width: 354px; height: 239px; overflow: hidden; \" > " ;
$i = 7 ;
$centerwall = 8 ;
2020-08-29 23:21:22 +00:00
while ( $i > 0 ) {
if ( $map [ 3 ][ $i ]) {
$centerwall = $i ;
}
$i -= 2 ;
2018-01-28 16:40:49 +00:00
}
$i = 4 ;
2020-08-29 23:21:22 +00:00
function drawbot ( $cell , $x , $y )
{
2020-08-30 15:39:27 +00:00
global CaveBots :: $botnames , $imgdata , CaveBots :: $bots , $dialogs , $user , $floor ;
2020-08-29 23:21:22 +00:00
$data = explode ( " / " , $cell );
$i = 1 ;
$bc = ( count ( $data ) - 1 ) / 2 ;
while ( $data [ $i ]) {
$bot = $data [ $i ];
2020-08-30 15:39:27 +00:00
$botname = CaveBots :: $botnames [ $bot ];
2020-08-29 23:21:22 +00:00
$cnt = $data [ $i + 1 ];
if ( $i == 1 ) {
if ( $bc == 1 ) {
$bn = 1 ;
} else {
$bn = 0 ;
}
} elseif ( $i == 3 ) {
if ( $bc == 2 ) {
$bn = 2 ;
} else {
$bn = 1 ;
}
} else {
$bn = 2 ;
}
$aMap = unserialize ( mysql_result ( mysql_query ( " SELECT `map` FROM `caves` WHERE `leader` = ' $user[caveleader] ' AND `floor` = ' $floor ' " ), 0 , 0 ));
if ( ! $GLOBALS [ 'dir' ]) {
$xx = ( $GLOBALS [ 'x' ] * 2 ) - ( $y * 2 );
$yy = ( $GLOBALS [ 'y' ] * 2 ) - ( $x - 3 );
} elseif ( $GLOBALS [ 'dir' ] == 1 ) {
$xx = ( $GLOBALS [ 'x' ] * 2 ) + ( $x - 3 );
$yy = ( $GLOBALS [ 'y' ] * 2 ) - ( $y * 2 );
} elseif ( $GLOBALS [ 'dir' ] == 2 ) {
$xx = ( $GLOBALS [ 'x' ] * 2 ) + ( $y * 2 );
$yy = ( $GLOBALS [ 'y' ] * 2 ) + ( $x - 3 );
} else {
$xx = ( $GLOBALS [ 'x' ] * 2 ) - ( $x - 3 );
$yy = ( $GLOBALS [ 'y' ] * 2 ) + ( $y * 2 );
}
if ( strpos ( $aMap [ $yy ][ $xx ], 'o/' ) !== false || strpos ( $aMap [ $yy ][ $xx ], 'p/' ) !== false ) {
$ret .= drawobject2 ( $aMap [ $yy ][ $xx ], $x , $y );
}
2020-09-30 12:01:33 +00:00
$rrm = $user -> room ;
2020-08-29 23:21:22 +00:00
2020-09-30 12:01:33 +00:00
if ( isset ( $dialogs [ CaveBots :: $bots [ $data [ 1 ]]]) && ( CaveBots :: $bots [ $data [ 1 ]] == 11147 && $user -> room == 74 )) {
2020-08-29 23:21:22 +00:00
$ret .= " <img title= \" $botname " . ( $cnt > 1 ? " ( $cnt ) " : " " ) . " \" " . ( $y == 1 && $x == 3 ? " onclick= \" speakattackmenu(event); \" " : " " ) . " width= \" " . $imgdata [ $x ][ $y ][ " wd " ] . " \" height= \" " . $imgdata [ $x ][ $y ][ " ht " ] . " \" src= \" /i/dungeon/mobs/ $rrm / $bot .gif \" style= \" position: absolute; left: " . $imgdata [ $x ][ $y ][ " x " ][ $bn ] . " px; top: " . $imgdata [ $x ][ $y ][ " y " ] . " px; " . ( $x == 3 && $y == 1 ? " cursor: pointer; " : " " ) . ( $x == 3 ? " z-index: " . ( 99 - ( $y * 5 )) . " ; " : " " ) . " \" /> " ;
} else {
$ret .= " <img title= \" $botname " . ( $cnt > 1 ? " ( $cnt ) " : " " ) . " \" " . ( $y == 1 && $x == 3 ? " onclick= \" document.location.href='cave.php?attack=1'; \" " : " " ) . " width= \" " . $imgdata [ $x ][ $y ][ " wd " ] . " \" height= \" " . $imgdata [ $x ][ $y ][ " ht " ] . " \" src= \" /i/dungeon/mobs/ $rrm / $bot .gif \" style= \" position: absolute; left: " . $imgdata [ $x ][ $y ][ " x " ][ $bn ] . " px; top: " . $imgdata [ $x ][ $y ][ " y " ] . " px; " . ( $x == 3 && $y == 1 ? " cursor: pointer; " : " " ) . ( $x == 3 ? " z-index: " . ( 99 - ( $y * 5 )) . " ; " : " " ) . " \" /> " ;
} #onclick=\"attackmenu(event);\"
$i += 2 ;
}
return $ret ;
}
function drawdialog ( $cell , $x , $y )
{
global $dialogs , $imgdata ;
$data = explode ( " / " , $cell );
$i = 1 ;
$d = $data [ 2 ];
2018-01-28 16:40:49 +00:00
$bot = $data [ $i ];
2020-08-30 15:39:27 +00:00
$botname = CaveBots :: $botnames [ $bot ];
2020-08-29 23:21:22 +00:00
$cnt = $data [ $i + 1 ];
$ret = " <img title= \" " . $dialogs [ $d ] . " \" " . ( $x == 3 && $y == 1 ? " onclick= \" speakmenu(event); \" " : " " ) . " width= \" " . $imgdata [ $x ][ $y ][ " wd " ] . " \" height= \" " . $imgdata [ $x ][ $y ][ " ht " ] . " \" src= \" /i/dungeon/npcs/ $d .gif \" style= \" position: absolute; left: " . $imgdata [ $x ][ $y ][ " x " ][ 1 ] . " px; top: " . $imgdata [ $x ][ $y ][ " y " ] . " px; " . ( $x == 3 && $y == 1 ? " cursor: pointer; " : " " ) . ( $x == 3 ? " z-index: " . ( 99 - ( $y * 5 )) . " ; " : " " ) . " \" /> " ;
return $ret ;
}
function drawuser ( $cell , $x , $y )
{
2020-08-30 15:39:27 +00:00
global CaveBots :: $botnames , $imgdata , $party ;
2020-08-29 23:21:22 +00:00
$data = explode ( " / " , $cell );
$i = 1 ;
$bc = ( count ( $data ) - 1 );
while ( $data [ $i ]) {
$u = $data [ $i ];
if ( $i == 1 ) {
if ( $bc == 1 ) {
$bn = 1 ;
} else {
$bn = 0 ;
}
} elseif ( $i == 3 ) {
if ( $bc == 2 ) {
$bn = 2 ;
} else {
$bn = 1 ;
}
} else {
$bn = 2 ;
}
foreach ( $party as $k => $v ) {
if ( $v [ 'user' ] == $u ) {
$udata = $v ;
break ;
}
}
$ret .= " <img title= \" $udata[login] \" width= \" " . $imgdata [ $x ][ $y ][ " wd " ] . " \" height= \" " . $imgdata [ $x ][ $y ][ " ht " ] . " \" src= \" /i/dungeon/users/ " . $udata [ 'shadow' ] . " \" style= \" position: absolute; left: " . $imgdata [ $x ][ $y ][ " x " ][ $bn ] . " px; top: " . $imgdata [ $x ][ $y ][ " y " ] . " px; " . ( $x == 3 ? " z-index: " . ( 99 - ( $y * 5 )) . " ; " : " " ) . " \" /> " ;
$i ++ ;
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
return $ret ;
}
2018-01-28 16:40:49 +00:00
2020-08-29 23:21:22 +00:00
function drawobject ( $cell , $x , $y )
{
global $objects , $imgdata , $user , $objdata , $objsizes , $imgmap ;
$tmp = explode ( " / " , $cell );
$obj = $tmp [ 1 ];
$ht = round ( $imgdata [ $x ][ $y ][ " ht " ] / 2 );
if ( $objsizes [ $obj ]) {
$coef = $objdata [ $x ][ $y ][ " coef " ];
$wd = $objsizes [ $obj ][ 0 ] * $coef ;
$ht = $objsizes [ $obj ][ 1 ] * $coef ;
$left = round ( $objdata [ $x ][ $y ][ " x " ] - ( $wd / 2 ));
$top = $objdata [ $x ][ $y ][ " y " ] - $ht ;
} elseif ( $obj == 510 ) {
$wd = round ( $imgdata [ $x ][ $y ][ " wd " ] * 2.5 );
$ht = $imgdata [ $x ][ $y ][ " ht " ];
$left = $imgdata [ $x ][ $y ][ " x " ][ 1 ] - round (( $wd - $imgdata [ $x ][ $y ][ " wd " ]) / 2 );
$top = $imgdata [ $x ][ $y ][ " y " ];
} elseif ( $obj > 600 && $obj < 700 ) {
$wd = round ( $imgdata [ $x ][ $y ][ " wd " ] * 1.26 );
$left = $imgdata [ $x ][ $y ][ " x " ][ 1 ] - round (( $wd - $imgdata [ $x ][ $y ][ " wd " ]) / 2 );
$top = $imgdata [ $x ][ $y ][ " y " ] + $ht ;
} elseif ( $obj >= 700 && $obj < 800 ) {
$wd = round ( $imgdata [ $x ][ $y ][ " wd " ] * 1.24 );
$ht = $imgdata [ $x ][ $y ][ " ht " ];
$left = $imgdata [ $x ][ $y ][ " x " ][ 1 ] - round (( $wd - $imgdata [ $x ][ $y ][ " wd " ]) / 2 );
$top = $imgdata [ $x ][ $y ][ " y " ];
2018-01-28 16:40:49 +00:00
} else {
2020-08-29 23:21:22 +00:00
$wd = $imgdata [ $x ][ $y ][ " wd " ];
$left = $imgdata [ $x ][ $y ][ " x " ][ 1 ];
$top = $imgdata [ $x ][ $y ][ " y " ] + $ht ;
2018-01-28 16:40:49 +00:00
}
2020-09-30 12:01:33 +00:00
$rrm = $user -> room ;
2020-08-29 23:21:22 +00:00
if ( ! isset ( $imgmap [ $obj ])) {
2018-01-28 16:40:49 +00:00
2020-08-29 23:21:22 +00:00
$ret .= "
" . ( $y == 1 && $x == 3 ? " < a href = \ " cave.php?useitem=1 \" > " : " " ) . "
< img border = \ " 0 \" title= \" $objects[$obj] \" width= \" $wd\ " height = \ " $ht\ " src = \ " /i/dungeon/objects/ $rrm / $obj .gif?1 \" style= \" position: absolute; left: { $left } px; top: { $top } px; " . ( $x == 3 ? " z-index: " . ( 99 - ( $y * 5 )) . " ; " : " " ) . " \" />
" . ( $y == 1 && $x == 3 ? " </ a > " : " " );
} else {
$ret .= " <img usemap= \" # " . $imgmap [ $obj ][ 'name' ] . " \" border= \" 0 \" title= \" $objects[$obj] \" width= \" $wd\ " height = \ " $ht\ " src = \ " /i/dungeon/objects/ $rrm / $obj .gif?1 \" style= \" position: absolute; left: { $left } px; top: { $top } px; " . ( $x == 3 ? " z-index: " . ( 99 - ( $y * 5 )) . " ; " : " " ) . " \" /> " ;
$ret .= $imgmap [ $obj ][ 'code' ];
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
return $ret ;
}
2018-01-28 16:40:49 +00:00
2020-08-29 23:21:22 +00:00
function drawobject2 ( $cell , $x , $y )
{
global $objects , $imgdata , $user , $objdata , $objsizes , $imgmap ;
$tmp = explode ( " / " , $cell );
$obj = $tmp [ 1 ];
$ht = round ( $imgdata [ $x ][ $y ][ " ht " ] / 2 );
if ( $objsizes [ $obj ]) {
$coef = $objdata [ $x ][ $y ][ " coef " ];
$wd = $objsizes [ $obj ][ 0 ] * $coef ;
$ht = $objsizes [ $obj ][ 1 ] * $coef ;
$left = round ( $objdata [ $x ][ $y ][ " x " ] - ( $wd / 2 ));
$top = $objdata [ $x ][ $y ][ " y " ] - $ht ;
} elseif ( $obj == 510 ) {
$wd = round ( $imgdata [ $x ][ $y ][ " wd " ] * 2.5 );
$ht = $imgdata [ $x ][ $y ][ " ht " ];
$left = $imgdata [ $x ][ $y ][ " x " ][ 1 ] - round (( $wd - $imgdata [ $x ][ $y ][ " wd " ]) / 2 );
$top = $imgdata [ $x ][ $y ][ " y " ];
} elseif ( $obj > 600 && $obj < 700 ) {
$wd = round ( $imgdata [ $x ][ $y ][ " wd " ] * 1.26 );
$left = $imgdata [ $x ][ $y ][ " x " ][ 1 ] - round (( $wd - $imgdata [ $x ][ $y ][ " wd " ]) / 2 );
$top = $imgdata [ $x ][ $y ][ " y " ] + $ht ;
} elseif ( $obj >= 700 && $obj < 800 ) {
$wd = round ( $imgdata [ $x ][ $y ][ " wd " ] * 1.24 );
$ht = $imgdata [ $x ][ $y ][ " ht " ];
$left = $imgdata [ $x ][ $y ][ " x " ][ 1 ] - round (( $wd - $imgdata [ $x ][ $y ][ " wd " ]) / 2 );
$top = $imgdata [ $x ][ $y ][ " y " ];
2018-01-28 16:40:49 +00:00
} else {
2020-08-29 23:21:22 +00:00
$wd = $imgdata [ $x ][ $y ][ " wd " ];
$left = $imgdata [ $x ][ $y ][ " x " ][ 1 ];
$top = $imgdata [ $x ][ $y ][ " y " ] + $ht ;
}
2020-09-30 12:01:33 +00:00
$rrm = $user -> room ;
2020-08-29 23:21:22 +00:00
if ( ! isset ( $imgmap [ $obj ])) {
$ret .= "
" . ( $y == 1 && $x == 3 ? " < a href = \ " cave.php?useitem=1 \" > " : " " ) . "
< img border = \ " 0 \" title= \" $objects[$obj] \" width= \" $wd\ " height = \ " $ht\ " src = \ " /i/dungeon/objects/ $rrm / $obj .gif?1 \" style= \" position: absolute; left: { $left } px; top: { $top } px; " . ( $x == 3 ? " z-index: " . ( 99 - ( $y * 5 ) - 1 ) . " ; " : " " ) . " \" />
" . ( $y == 1 && $x == 3 ? " </ a > " : " " );
2018-01-28 16:40:49 +00:00
} else {
2020-08-29 23:21:22 +00:00
$ret .= " <img usemap= \" # " . $imgmap [ $obj ][ 'name' ] . " \" border= \" 0 \" title= \" $objects[$obj] \" width= \" $wd\ " height = \ " $ht\ " src = \ " /i/dungeon/objects/ $rrm / $obj .gif?1 \" style= \" position: absolute; left: { $left } px; top: { $top } px; " . ( $x == 3 ? " z-index: " . ( 99 - ( $y * 5 ) - 1 ) . " ; " : " " ) . " \" /> " ;
$ret .= $imgmap [ $obj ][ 'code' ];
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
return $ret ;
}
function drawevent ( $cell , $x , $y )
{
global $events , $eventdata ;
$tmp = explode ( " / " , $cell );
$obj = $tmp [ 1 ];
if ( $obj == 1 ) {
return " " ;
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
$wd = round ( $eventdata [ $x ][ $y ][ " q " ] * $events [ $obj ][ " w " ]);
$ht = round ( $eventdata [ $x ][ $y ][ " q " ] * $events [ $obj ][ " h " ]);
$left = round ( - $events [ $obj ][ " h " ] / 2 + $eventdata [ $x ][ $y ][ " x " ]);
$top = round ( $eventdata [ $x ][ $y ][ " y " ] - $events [ $obj ][ " h " ]);
$ret .= " <img border= \" 0 \" title= \" " . $events [ $obj ][ " name " ] . " \" width= \" $wd\ " height = \ " $ht\ " src = \ " /i/dungeon/events/ $obj .gif \" style= \" position: absolute; left: { $left } px; top: { $top } px; " . ( $x == 3 ? " z-index: " . ( 99 - ( $y * 5 )) . " ; " : " " ) . " \" /> " ;
return $ret ;
}
while ( $i >= 0 ) {
if ( $i == 4 ) {
if ( $map [ 0 ][ 7 ]) {
$ret .= " <div class= \" lw { $i } 2 \" ></div> " ;
}
if ( $map [ 0 ][ 6 ]) {
$ret .= " <div class= \" lsw { $i } 2 \" ></div> " ;
}
if ( $map [ - 1 ][ 6 ]) {
$ret .= " <img width= \" 37 \" height= \" 78 \" src= \" /i/dungeon/mobs/ " . $map [ - 1 ][ 6 ] . " .gif \" style= \" position:absolute;left:-20px;top:60px \" > " ;
}
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
$wall = $i * 2 - 1 ;
$sidewall = $i * 2 ;
if ( $map [ 1 ][ $sidewall ] && $i > 0 ) {
$obj = substr ( $map [ 1 ][ $sidewall ], 0 , 1 );
if ( $obj == " b " ) {
$ret .= drawbot ( $map [ 1 ][ $sidewall ], 1 , $i );
} elseif ( $obj == " u " ) {
$ret .= drawuser ( $map [ 1 ][ $sidewall ], 1 , $i , $players );
} elseif ( $obj == " o " || $obj == " p " ) {
$ret .= drawobject ( $map [ 1 ][ $sidewall ], 1 , $i );
} elseif ( $obj == " e " ) {
$ret .= drawevent ( $map [ 1 ][ $sidewall ], 1 , $i );
} elseif ( $obj == " d " ) {
$ret .= drawdialog ( $map [ 1 ][ $sidewall ], 1 , $i );
} elseif ( $obj != " s " ) {
$o = $map [ 1 ][ $sidewall ] - 10000 ;
if ( $o == 4 ) {
if ( $i == 1 ) {
$ret .= " <img width= \" 106 \" height= \" 101 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position: absolute; left: -42px; top: 90px \" /> " ;
}
if ( $i == 2 ) {
$ret .= " <img width= \" 86 \" height= \" 84 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position: absolute; left: 137px; top: 90px \" /> " ;
}
if ( $i == 3 ) {
$ret .= " <img width= \" 65 \" height= \" 63 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position: absolute; left: 152px; top: 87px \" /> " ;
}
} else {
if ( $i == 1 ) {
2020-09-20 20:16:28 +00:00
$ret .= " <img width= \" 65 \" height= \" 80 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position: absolute; left: 0px; top: 110px \" /> " ;
2020-08-29 23:21:22 +00:00
}
if ( $i == 2 ) {
$ret .= " <img width= \" 43 \" height= \" 56 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position: absolute; left: 17px; top: 90px \" /> " ;
}
if ( $i == 3 ) {
$ret .= " <img width= \" 32 \" height= \" 40 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position: absolute; left: 17px; top: 100px \" /> " ;
}
}
}
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
if ( $map [ 5 ][ $sidewall ] && $i > 0 ) {
$obj = substr ( $map [ 5 ][ $sidewall ], 0 , 1 );
if ( $obj == " b " ) {
$ret .= drawbot ( $map [ 5 ][ $sidewall ], 5 , $i );
} elseif ( $obj == " u " ) {
$ret .= drawuser ( $map [ 5 ][ $sidewall ], 5 , $i , $players );
} elseif ( $obj == " o " || $obj == " p " ) {
$ret .= drawobject ( $map [ 5 ][ $sidewall ], 5 , $i );
} elseif ( $obj == " e " ) {
$ret .= drawevent ( $map [ 5 ][ $sidewall ], 5 , $i );
} elseif ( $obj == " d " ) {
$ret .= drawdialog ( $map [ 5 ][ $sidewall ], 5 , $i );
} elseif ( $obj != " s " ) {
$o = $map [ 5 ][ $sidewall ] - 10000 ;
if ( $o == 4 ) {
if ( $i == 1 ) $ret .= " <img width= \" 106 \" height= \" 101 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position:absolute;left:302px;top:90px \" > " ;
if ( $i == 2 ) $ret .= " <img width= \" 86 \" height= \" 84 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position:absolute;left:137px;top:90px \" > " ;
if ( $i == 3 ) $ret .= " <img width= \" 65 \" height= \" 63 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position:absolute;left:152px;top:87px \" > " ;
} else {
if ( $i == 1 ) $ret .= " <img width= \" 65 \" height= \" 80 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position:absolute;left:320px;top:90px \" > " ;
if ( $i == 2 ) $ret .= " <img width= \" 43 \" height= \" 56 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position:absolute;left:300px;top:100px \" > " ;
if ( $i == 3 ) $ret .= " <img width= \" 32 \" height= \" 40 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position:absolute;left:317px;top:110px \" > " ;
}
}
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
if ( $i > 0 && $map [ 1 ][ $wall ]) $ret .= " <div class= \" lw $i\ " ></ div > " ;
$objInWall = explode ( '/' , $map [ 4 ][ $sidewall ]);
if ( $objInWall [ 1 ] == 'o' ) {
2020-09-20 20:16:28 +00:00
if ( ! passablewall ( $map [ 4 ][ $sidewall ])) $ret .= " <div style= \" position:absolute;left:0;top:0;width:352px;height:240px;background-image:url( $base /rsw $i $objInWall[2] .gif) \" ></div> " ;
2020-08-29 23:21:22 +00:00
} else {
if ( ! passablewall ( $map [ 4 ][ $sidewall ])) $ret .= " <div class= \" rsw $i\ " ></ div > " ;
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
$objInWall = explode ( '/' , $map [ 2 ][ $sidewall ]);
if ( $objInWall [ 1 ] == 'o' ) {
2020-09-20 20:16:28 +00:00
if ( ! passablewall ( $map [ 2 ][ $sidewall ])) $ret .= " <div style= \" position:absolute;left:0;top:0;width:352px;height:240px;background-image:url( $base /lsw $i $objInWall[2] .gif) \" ></div> " ;
2020-08-29 23:21:22 +00:00
} else {
if ( ! passablewall ( $map [ 2 ][ $sidewall ])) $ret .= " <div class= \" lsw $i\ " ></ div > " ;
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
if ( $i > 0 && $map [ 5 ][ $wall ]) $ret .= " <div class= \" rw $i\ " ></ div > " ;
if ( $map [ 3 ][ $sidewall ] && $i > 0 && $sidewall < $centerwall ) {
$obj = substr ( $map [ 3 ][ $sidewall ], 0 , 1 );
if ( $obj == " b " ) {
$ret .= drawbot ( $map [ 3 ][ $sidewall ], 3 , $i );
} elseif ( $obj == " u " ) {
$ret .= drawuser ( $map [ 3 ][ $sidewall ], 3 , $i , $players );
} elseif ( $obj == " o " || $obj == " p " ) {
$ret .= drawobject ( $map [ 3 ][ $sidewall ], 3 , $i );
} elseif ( $obj == " e " ) {
$ret .= drawevent ( $map [ 3 ][ $sidewall ], 3 , $i );
} elseif ( $obj == " d " ) {
$ret .= drawdialog ( $map [ 3 ][ $sidewall ], 3 , $i );
} elseif ( $obj != " s " ) {
$o = $map [ 3 ][ $sidewall ] - 10000 ;
if ( $o == 4 ) {
if ( $i == 1 ) $ret .= " <img width= \" 130 \" height= \" 126 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position:absolute;left:112px;top:80px \" > " ;
if ( $i == 2 ) $ret .= " <img width= \" 86 \" height= \" 84 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position:absolute;left:137px;top:90px \" > " ;
if ( $i == 3 ) $ret .= " <img width= \" 65 \" height= \" 63 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position:absolute;left:147px;top:87px \" > " ;
} else {
if ( $i == 1 ) $ret .= " <a style= \" position:absolute;left:157px;top:110px;z-index:100 \" href= \" cave.php?useitem=1 \" ><img border= \" 0 \" width= \" 65 \" height= \" 80 \" src= \" /i/dungeon/objects/ $o .gif \" ></a> " ;
if ( $i == 2 ) $ret .= " <img width= \" 43 \" height= \" 56 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position:absolute;left:157px;top:105px \" > " ;
if ( $i == 3 ) $ret .= " <img width= \" 32 \" height= \" 40 \" src= \" /i/dungeon/objects/ $o .gif \" style= \" position:absolute;left:157px;top:100px \" > " ;
}
}
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
if ( $map [ 3 ][ $wall ]) {
if ( $i > 0 ) $ret .= " <div class= \" cw $i\ " " . ( $map[3] [ $wall ] > 2 ? " style = \ " background-image:url(' $base /cw $i " . cavewall ( $map [ 3 ][ $wall ]) . " .gif') \" " : " " ) . " ></div> " ;
if ( $i == 1 && $map [ 3 ][ $wall ] > 2 ) {
if ( $map [ 3 ][ $wall ] > 1000 ) {
$ret .= " <a style= \" position:absolute;z-index:99;left:150px;top:35px \" href= \" cave.php?usewallitem=1& " . time () . " \" ><img border= \" 0 \" src= \" " . IMGBASE . " /i/empty.gif \" width= \" 45 \" height= \" 100 \" ></a> " ;
} elseif ( $map [ 3 ][ $wall ] > 100 ) {
$ret .= " <a style= \" position:absolute;z-index:99;left:150px;top:85px \" href= \" cave.php?usewallitem=1 \" ><img border= \" 0 \" src= \" " . IMGBASE . " /i/empty.gif \" width= \" 100 \" height= \" 55 \" ></a> " ;
} else $ret .= " <a style= \" position:absolute;z-index:99;left:60px;top:113px \" href= \" cave.php?usewallitem=1 \" ><img border= \" 0 \" src= \" " . IMGBASE . " /i/empty.gif \" width= \" 128 \" height= \" 55 \" ></a> " ;
}
$objInWall = explode ( '/' , $map [ 3 ][ $wall ]);
if ( $objInWall [ 1 ] == " o " ) {
2020-09-30 12:01:33 +00:00
if ( $user -> room == 83 && ! ( ! $direction && (( $x == 13 && $y == 4 ) || ( $x == 12 && $y == 4 )))) { // исключение 2-у х клеток в комнате 82
2020-08-29 23:21:22 +00:00
$ret .= drawobject ( '//' . $objInWall [ 2 ], 3 , $i );
}
}
$nocenter = 1 ;
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
if ( $i == 4 ) {
if ( $map [ 7 ][ 6 ]) $ret .= " <img width= \" 37 \" height= \" 78 \" src= \" /i/dungeon/mobs/ " . $map [ 7 ][ 6 ] . " .gif \" style= \" position:absolute;left:330px;top:60px \" > " ;
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
$i -- ;
}
2020-09-20 20:16:28 +00:00
$ret .= " </div>
</ td >< td valign = \ " top \" >
< div style = \ " height:116px;position:relative \" >
< div style = \ " padding-top:11px;padding-left:33px \" >
< DIV class = \ " MoveLine \" ><IMG src= \" /i/move/wait3.gif \" id= \" MoveLine \" class= \" MoveLine \" ></DIV>
< div style = \ " visibility:hidden; height:0 \" id= \" moveto \" >0</div>
2018-01-28 16:40:49 +00:00
</ div > " ;
2020-08-29 23:21:22 +00:00
if ( $direction == 0 ) {
$forwardlink = " ?move=x2& " . time ();
$backlink = " ?move=x1& " . time ();
$leftlink = " ?move=y1& " . time ();
$rightlink = " ?move=y2& " . time ();
}
if ( $direction == 2 ) {
$forwardlink = " ?move=x1& " . time ();
$backlink = " ?move=x2& " . time ();
$leftlink = " ?move=y2& " . time ();
$rightlink = " ?move=y1& " . time ();
}
if ( $direction == 1 ) {
$forwardlink = " ?move=y2& " . time ();
$backlink = " ?move=y1& " . time ();
$leftlink = " ?move=x2& " . time ();
$rightlink = " ?move=x1& " . time ();
}
if ( $direction == 3 ) {
$forwardlink = " ?move=y1& " . time ();
$backlink = " ?move=y2& " . time ();
$leftlink = " ?move=x1& " . time ();
$rightlink = " ?move=x2& " . time ();
}
if ( passablewall ( $map [ 3 ][ 1 ]) && canmoveto ( $map [ 3 ][ 2 ])) $ret .= " <div style='position:absolute; left:65px; top:38px;'><a onClick= \" return check('m1'); \" id= \" m1 \" href= \" $forwardlink\ " >< img src = \ " /i/dungeon/forward.gif \" border= \" 0 \" /></a></div> " ;
if ( passablewall ( $map [ 3 ][ - 1 ]) && canmoveto ( $map [ 3 ][ - 2 ])) $ret .= " <div style='position:absolute; left:65px; top:84px;'><a onClick= \" return check('m5'); \" id= \" m5 \" href= \" $backlink\ " >< img src = \ " /i/dungeon/back.gif \" border= \" 0 \" /></a></div> " ;
if ( passablewall ( $map [ 2 ][ 0 ]) && canmoveto ( $map [ 1 ][ 0 ])) $ret .= " <div style='position:absolute; left:17px; top:49px;'><a onClick= \" return check('m7'); \" id= \" m7 \" href= \" $leftlink\ " >< img src = \ " /i/dungeon/left.gif \" border= \" 0 \" /></a></div> " ;
if ( passablewall ( $map [ 4 ][ 0 ]) && canmoveto ( $map [ 5 ][ 0 ])) $ret .= " <div style='position:absolute; left:127px; top:48px;'><a onClick= \" return check('m3'); \" id= \" m3 \" href= \" $rightlink\ " >< img src = \ " /i/dungeon/right.gif \" border= \" 0 \" /></a></div> " ;
$ret .= " <div style='position:absolute; left:37px; top:37px;'><a href= \" ?direction= " . ( $direction == 0 ? 3 : $direction - 1 ) . " & " . time () . " \" title= \" Поворот налево \" ><img src= \" /i/dungeon/turnleft.gif \" width= \" 22 \" height= \" 20 \" border= \" 0 \" /></a></div> " ;
$ret .= " <div style='position:absolute; left:112px; top:37px;'><a href= \" ?direction= " . (( $direction + 1 ) % 4 ) . " & " . time () . " \" title= \" Поворот направо \" ><img src= \" /i/dungeon/turnright.gif \" width= \" 21 \" height= \" 20 \" border= \" 0 \" /></a></div> " ;
$ret .= " <div style='position:absolute; left:66px; top:62px;'><a href= \" $_SERVER[PHP_SELF] \" ><img src= \" /i/dungeon/ref.gif \" border= \" 0 \" /></a></div> " ;
$ret .= " </div>
2018-01-28 16:40:49 +00:00
< div style = \ " margin-left:20px;position:relative \" > " ;
2020-08-29 23:21:22 +00:00
foreach ( $players as $k => $v ) {
if ( $v [ " x " ] - ( $startx / 2 ) >= 0 && $v [ " x " ] - ( $startx / 2 ) <= 8 && $v [ " y " ] - ( $starty / 2 ) >= 0 && $v [ " y " ] - ( $starty / 2 ) <= 8 ) {
$ret .= " <img alt= \" $v[login] \" title= \" $v[login] \" style= \" position:absolute;left: " . (( $v [ " x " ] - ( $startx / 2 )) * 15 + 3 ) . " px;top: " . (( $v [ " y " ] - ( $starty / 2 )) * 15 + 3 ) . " px \" src= \" /i/dungeon/ " . ( $k + 1 ) . " $v[dir] .gif \" > " ;
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
}
$ret .= " <table cellspacing=0 cellpadding=0> " ;
$i = $starty ;
while ( $i < $starty + 18 ) {
$ret .= " <tr> " ;
$i2 = $startx ;
while ( $i2 < $startx + 18 ) {
$ret .= " <td class= \" maptd \" > " ;
if ( strpos ( $map1 [ $i ][ $i2 ], 'h/' ) !== false ) {
$map1 [ $i ][ $i2 ] = 0 ;
}
if ( $map1 [ $i ][ $i2 ]) {
$ret .= " <img src= \" /i/dungeon/ " ;
if ( ! passablewall ( $map1 [ $i ][ $i2 - 1 ])) $ret .= " 0 " ; else $ret .= " 1 " ;
if ( ! passablewall ( $map1 [ $i - 1 ][ $i2 ])) $ret .= " 0 " ; else $ret .= " 1 " ;
if ( ! passablewall ( $map1 [ $i ][ $i2 + 1 ])) $ret .= " 0 " ; else $ret .= " 1 " ;
if ( ! passablewall ( $map1 [ $i + 1 ][ $i2 ])) $ret .= " 0 " ; else $ret .= " 1 " ;
$ret .= " .gif \" > " ;
}
$ret .= " </td> " ;
$i2 += 2 ;
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
$ret .= " </tr> " ;
$i += 2 ;
2018-01-28 16:40:49 +00:00
}
2020-08-29 23:21:22 +00:00
$ret .= " </table></div>
2018-01-28 16:40:49 +00:00
</ td ></ tr ></ table > " ;
2020-08-29 23:21:22 +00:00
$ret .= " > </span>';if (i<32) { s+=' '}}document.getElementById('prcont').innerHTML=s;
2018-01-28 16:40:49 +00:00
</ script ></ div > " ;
2020-08-29 23:21:22 +00:00
$ret .= " <TABLE><tr>
2018-01-28 16:40:49 +00:00
< td nowrap = \ " nowrap \" id= \" moveto \" >
</ td ></ tr ></ TABLE > " ;
2020-08-29 23:21:22 +00:00
$ret .= " </div> " ;
$ret .= " >
2018-01-28 16:40:49 +00:00
var progressEnd = 108 ; // set to number of progress <span>'s.
var progressColor = '#00CC00' ; // set to progress bar color
var mtime = parseInt ( ' " ;
2020-08-29 23:21:22 +00:00
if ( time () < $_SESSION [ " movetime " ]) $ret .= $_SESSION [ " movetime " ] - time ();
else $ret .= 0 ;
$ret .= " ');
2018-01-28 16:40:49 +00:00
if ( ! mtime || mtime <= 0 ) mtime = 0 ;
var progressInterval = Math . round ( mtime * 1000 / progressEnd );
var is_accessible = true ;
var progressAt = progressEnd ;
var progressTimer ;
function progress_clear () {
progressAt = 1 ;
for ( var t = 1 ; t <= 8 ; t ++ ) {
if ( document . getElementById ( 'm' + t ) && ( t != 2 && t != 8 ))
document . getElementById ( 'm' + t ) . style . backgroundImage = \ " none \" ;
}
is_accessible = false ;
set_moveto ( true );
}
function progress_update () {
progressAt ++ ;
if ( progressAt > progressEnd ) {
for ( var t = 1 ; t <= 8 ; t ++ ) {
if ( document . getElementById ( 'm' + t ) && ( t != 2 && t != 8 ))
document . getElementById ( 'm' + t ) . style . backgroundImage = \ " \" ;
}
is_accessible = true ;
if ( window . solo_store && solo_store ) { solo ( solo_store , \ " \" ); } // go to stored
set_moveto ( false );
} else {
if ( ! ( progressAt % 2 ) )
document . getElementById ( 'MoveLine' ) . style . left = progressAt - progressEnd ;
progressTimer = setTimeout ( 'progress_update()' , progressInterval );
}
}
function set_moveto ( val ) {
document . getElementById ( 'moveto' ) . disabled = val ;
if ( document . getElementById ( 'bmoveto' )) {
document . getElementById ( 'bmoveto' ) . disabled = val ;
}
}
function progress_stop () {
clearTimeout ( progressTimer );
progress_clear ();
}
function check ( it ) {
return is_accessible ;
}
function check_access () {
return is_accessible ;
}
function ch_counter_color ( color ) {
progressColor = color ;
for ( var i = 1 ; i <= progressAt ; i ++ ) {
document . getElementById ( 'progress' + i ) . style . backgroundColor = progressColor ;
}
}
if ( mtime > 0 ) {
progress_clear ();
progress_update ();
}
</ script >
" ;
return $ret ;
2020-08-29 23:21:22 +00:00
}
2018-01-28 16:40:49 +00:00
?>
< table width = " 100% " border = " 0 " cellspacing = " 0 " cellpadding = " 0 " >
2020-08-29 23:21:22 +00:00
< tr >
< td valign = " top " align = " left " >
< br >
< table width = " 400 " border = " 0 " cellspacing = " 1 " cellpadding = " 0 " bgcolor = " #000000 " style = " margin-left: 21px; " >
< ?
foreach ( $party as $k => $v ) {
if ( $v [ " user " ] == $user [ " id " ]) {
$usr = $user ;
} else {
$usr = mysql_fetch_array ( mysql_query ( " SELECT `level`, `hp`, `maxhp` FROM `users` WHERE `id` = ' $v[user] ' " ));
}
$wd = floor ( $usr [ " hp " ] / $usr [ " maxhp " ] * 120 );
echo " <tr><td background= \" /i/bg_scroll_05.gif \" align= \" left \" >
2018-01-28 16:40:49 +00:00
< a href = \ " javascript:top.AddToPrivate(' $v[login] ', top.CtrlPress) \" ><img src= \" i/lock.gif \" title= \" Приват \" border= \" 0 \" /></a> <a href= \" inf.php? $v[user] \" target=_blank title= \" Информация о $v[login] \" > $v[login] </a> [ $usr[level] ]<a href='inf.php? $v[user] ' target='_blank'><img src='/i/inf.gif' border=0></a></td>
< td background = \ " /i/bg_scroll_05.gif \" nowrap style= \" font-size:9px \" >
< div style = \ " position: relative;padding-left:5px \" >
2020-08-29 23:21:22 +00:00
< table cellspacing = \ " 0 \" cellpadding= \" 0 \" style='line-height: 1'><td nowrap style= \" font-size:9px \" style= \" position: relative \" ><SPAN " . ( $v [ " user " ] == $user [ " id " ] ? " id= \" HP \" " : " " ) . " style='position: absolute; left: 5; z-index: 1; font-weight: bold; color: #FFFFFF'> " . ( $v [ " user " ] == $user [ " id " ] ? " <span id= \" hp_value \" > " : " " ) . " $usr[hp] " . ( $v [ " user " ] == $user [ " id " ] ? " </span> " : " " ) . " / $usr[maxhp] </SPAN><img src= \" /i/1green.gif \" alt= \" Уровень жизни \" " . ( $v [ " user " ] == $user [ " id " ] ? " name= \" HP1 \" " : " " ) . " width= \" $wd\ " height = \ " 9 \" " . ( $v [ " user " ] == $user [ " id " ] ? " id= \" HP1 \" " : " " ) . " ><img src= \" /i/bk_life_loose.gif \" alt= \" Уровень жизни \" " . ( $v [ " user " ] == $user [ " id " ] ? " name= \" HP2 \" " : " " ) . " width= \" " . ( 120 - $wd ) . " \" height= \" 9 \" " . ( $v [ " user " ] == $user [ " id " ] ? " id= \" HP2 \" " : " " ) . " ></td></table></div></td>
2018-01-28 16:40:49 +00:00
< td background = \ " /i/bg_scroll_05.gif \" align= \" center \" ></td>
< td background = \ " /i/bg_scroll_05.gif \" align= \" center \" > " ;
2020-08-29 23:21:22 +00:00
if ( $v [ " user " ] == $user [ " id " ] && $user [ " id " ] == $user [ " caveleader " ]) echo " <IMG src= \" /i/lead1.gif \" width=24 height=15><A href= \" # \" onClick= \" findlogin('Выберите персонажа которого хотите выгнать','cave.php', 'kill') \" ><IMG alt= \" Выгнать супостата \" src= \" /i/ico_kill_member1.gif \" WIDTH= \" 14 \" HEIGHT= \" 17 \" ></A> <A href= \" # \" onClick= \" findlogin( 'Выберите персонажа которому хотите передать лидерство','cave.php', 'change') \" ><IMG alt= \" Новый царь \" src= \" /i/ico_change_leader1.gif \" WIDTH= \" 14 \" HEIGHT= \" 17 \" ></A> " ;
echo " </td>
2018-01-28 16:40:49 +00:00
</ tr > " ;
2020-08-29 23:21:22 +00:00
}
?>
</ table >
< br >
< div style = " padding-left: 15px; padding-right: 15px; " >
< ? php
if ( isset ( $_GET [ 'msg' ])) {
$report = $_GET [ 'msg' ];
}
?>
< font color = red >< ? = @ $report ?> </font></div>
< br />
< br >< br />
< center >
< ?
$r = mysql_query ( " SELECT * FROM `caveitems` WHERE `leader` = ' $user[caveleader] ' AND `x` = ' " . ( $x * 2 ) . " ' AND `y` = ' " . ( $y * 2 ) . " ' AND `floor` = ' $floor ' " );
if ( mysql_num_rows ( $r ) > 0 ) echo " <font color=red>В комнате разбросаны вещи:</font><div style= \" font-size:3px \" > </div> " ;
while ( $rec = mysql_fetch_assoc ( $r )) {
echo " <a title= \" Поднять $rec[name] \" href= \" cave.php?takeitem= $rec[id] \" ><img src= \" /i/sh/ $rec[img] \" ></a> " ;
}
?> </center>
< br >
< ?
if ( $loses >= 3 ) echo " <center><b><font color=red>В а с убили 3 раза, и вы покидете подземелье</font></b><br><br>
2018-01-28 16:40:49 +00:00
< a href = \ " cave.php?exit=1 \" >Вернуться</a></center><br> " ;
2020-08-29 23:21:22 +00:00
if ( $loses ) echo " <div style= \" padding-left:20px \" ><b>Количество смертей: $loses </b></div> " ;
?>
</ td >
< td width = 540 >
< div style = " text-align:right;padding-right:30px " >
< font style = 'font-size:14px; color:#8f0000' >< b >< ?
2020-09-30 12:01:33 +00:00
$dMap = unserialize ( mysql_result ( mysql_query ( " SELECT `map` FROM `cavemaps` WHERE `floor` = $floor AND `room` = " . ( $user -> room - 1 )), 0 , 0 ));
2020-08-29 23:21:22 +00:00
$cPlace = $dMap [ $y * 2 ][ $x * 2 ];
$tmp = explode ( " / " , $cPlace );
2020-09-30 12:01:33 +00:00
if ( $user -> room == 621 ) {
2020-08-29 23:21:22 +00:00
if ( $floor == 1 ) {
echo 'Проклятый Рудник, 1 этаж' ;
} elseif ( $floor == 2 ) {
echo 'Проклятый Рудник, 2 этаж' ;
}
} elseif ( @ $roomnames [ $tmp [ 1 ]]) echo $roomnames [ $tmp [ 1 ]];
else echo $rooms [ $user [ " room " ]];
?> </b></font>
< font style = 'font-size:14px; color:#8f0000' >< b ></ b ></ font >& nbsp ; & nbsp ; & nbsp ; & nbsp ; < a
style = " cursor:pointer; "
onclick = " if (confirm('Вы уверены что хотите выйти?')) window.location='cave.php?exit=1' " >& nbsp ; < b
style = 'font-size:14px; color:#000066;' > Выйти </ b ></ a >
</ div >
< ?
echo drawmap ( $map , $party , $x , $y , $dir );
?>
</ td >
</ tr >
</ table >
2018-01-28 16:40:49 +00:00
< ?
2020-08-29 23:21:22 +00:00
if ( $user [ " login " ] == " Rallo Tabs " ) {
echo '
2018-01-28 16:40:49 +00:00
< form action = " cave.php " method = " GET " >
x :& nbsp ; < input size = " 2 " name = " x " value = " ' . $x . ' " />
y :& nbsp ; < input size = " 2 " name = " y " value = " ' . $y . ' " />
floor :& nbsp ; < input size = " 2 " name = " floor " value = " ' . $floor . ' " />& nbsp ;
< input type = " submit " name = " goto " value = " перейти " />
</ form > ' ;
}
?>