2022-08-25 11:23:36 +00:00
< ? php
class DungeonEditor
{
2023-01-10 16:29:32 +00:00
public $bs , $info , $see , $error , $gs = 1 , $map = [ 0 => [] //карта
2022-08-25 11:23:36 +00:00
], $id_dng , $cord = [ 'x' => 0 ], $sg = [ 1 => [ 1 => 1 , 2 => 2 , 3 => 3 , 4 => 4 ], 2 => [ 1 => 2 , 2 => 3 , 3 => 4 , 4 => 1 ], 3 => [ 1 => 3 , 2 => 4 , 3 => 1 , 4 => 2 ], 4 => [ 1 => 4 , 2 => 1 , 3 => 2 , 4 => 3 ]];
public function start ()
{
global $u , $c , $code , $id ;
2023-01-10 16:29:32 +00:00
$this -> info = [ 'id2' => $id , 'id' => 0 , 'name' => 'Редактирование Пещеры' , 'room' => 0 , 'time_start' => time (), 'time_start' => 0 , 'uid' => 0 , 'type' => 0 , 'bsid' => 0 ];
2022-08-25 11:23:36 +00:00
$this -> id_dng = $this -> info [ 'id2' ];
$this -> gs = $u -> info [ 'psevdo_s' ];
if ( $this -> gs < 1 || $this -> gs > 4 ) {
$this -> gs = 1 ;
}
if ( $this -> info [ 'bsid' ] > 0 ) {
$this -> bs = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `bs_turnirs` WHERE `city` = "' . $u -> info [ 'city' ] . '" AND `id` = "' . $this -> info [ 'bsid' ] . '" AND `time_start` = "' . $this -> info [ 'time_start' ] . '" LIMIT 1' ));
2023-01-10 16:29:32 +00:00
//Если БС закончена
2022-08-25 11:23:36 +00:00
if ( isset ( $this -> bs [ 'id' ]) && $this -> bs [ 'users' ] - $this -> bs [ 'users_finish' ] < 2 ) {
$u -> bsfinish ( $this -> bs , false , null );
}
}
2023-01-10 16:29:32 +00:00
/* генерируем вид персонажа ( только карта )
$this -> gs = 1 ; //смотрим прямо
2 ; //смотрим лево
3 ; //смотрим вниз
4 ; //смотрим право
2022-08-25 11:23:36 +00:00
( ( ( `y` >= '.$u->info[' psevdo_y '].' && `y` <= '.($u->info[' psevdo_y ']+4).' ) && ( `x` >= '.($u->info[' psevdo_x ']-1).' && `x` <= '.($u->info[' psevdo_x ']+1).' ) ) || ( ( `x` = '.($u->info[' psevdo_x ']+2).' || `x` = '.($u->info[' psevdo_x ']-2).' ) && ( `y` = '.($u->info[' psevdo_y ']+3).' || `y` = '.($u->info[' psevdo_y ']+4).' ) ) )
*/
2023-01-10 16:29:32 +00:00
$whr = [ 1 => ' ((`x` <= ' . ( $u -> info [ 'psevdo_x' ] + 2 ) . ' && `x` >= ' . ( $u -> info [ 'psevdo_x' ] - 2 ) . ') && (`y` >= ' . $u -> info [ 'psevdo_y' ] . ' && `y` <= ' . ( $u -> info [ 'psevdo_y' ] + 4 ) . ')) ' , //прямо
3 => ' ((`x` <= ' . ( $u -> info [ 'psevdo_x' ] + 2 ) . ' && `x` >= ' . ( $u -> info [ 'psevdo_x' ] - 2 ) . ') && (`y` <= ' . $u -> info [ 'psevdo_y' ] . ' && `y` >= ' . ( $u -> info [ 'psevdo_y' ] - 4 ) . ')) ' , //вниз
2 => ' ((`x` <= ' . $u -> info [ 'psevdo_x' ] . ' && `x` >= ' . ( $u -> info [ 'psevdo_x' ] - 4 ) . ') && (`y` <= ' . ( $u -> info [ 'psevdo_y' ] + 2 ) . ' && `y` >= ' . ( $u -> info [ 'psevdo_y' ] - 2 ) . ')) ' , //лево
4 => ' ((`x` >= ' . $u -> info [ 'psevdo_x' ] . ' && `x` <= ' . ( $u -> info [ 'psevdo_x' ] + 4 ) . ') && (`y` <= ' . ( $u -> info [ 'psevdo_y' ] + 2 ) . ' && `y` >= ' . ( $u -> info [ 'psevdo_y' ] - 2 ) . ')) ' //право
2022-08-25 11:23:36 +00:00
];
$i = 1 ;
$sp = mysql_query ( 'SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . $this -> id_dng . '" AND ' . $whr [ $this -> gs ] . ' ORDER BY `y` ASC , `x` ASC LIMIT 25' );
while ( $pl = mysql_fetch_array ( $sp )) {
$this -> map [ 0 ][ $pl [ 'y' ] . '_' . $pl [ 'x' ]] = $pl ;
$i ++ ;
}
2023-01-10 16:29:32 +00:00
$this -> map [ 'good' ] = $i ; //целых клеток
2022-08-25 11:23:36 +00:00
$this -> map [ 1 ] = $this -> genMatix ();
$this -> lookDungeon ();
}
public function usersDng ()
{
global $u , $c ;
$r = '' ;
2023-01-10 16:29:32 +00:00
/* отображение ботов (бесполезно в данном редакторе) */
2022-08-25 11:23:36 +00:00
}
public function atack ( $id )
{
global $u , $c , $code ;
2023-01-10 16:29:32 +00:00
/* нападение, какое нападение может быть в редакторе? :) Н а самого себя, с о стулом? :) */
2022-08-25 11:23:36 +00:00
}
public function takeinv ( $id )
{
global $u , $c , $code ;
2023-01-10 16:29:32 +00:00
/* Это редактор, а не майнкрафт, здесь ничего собирать не нужно :) */
2022-08-25 11:23:36 +00:00
}
public function takeit ( $id )
{
global $u , $c , $code , $magic ;
2023-01-10 16:29:32 +00:00
/* В редакторе ничего не падает ;) */
2022-08-25 11:23:36 +00:00
}
public function addItem ( $i )
{
2023-01-10 16:29:32 +00:00
//добавляем предмет в пещеру (возможно выпал из бота или из сундука)
/* А что еще? Пульт к управлению Землей?! */
2022-08-25 11:23:36 +00:00
}
public function itemsMap ()
{
global $u , $c , $code ;
2023-01-10 16:29:32 +00:00
/* Да ничего здесь не падает! Говорю же! */
2022-08-25 11:23:36 +00:00
}
public function testLike ( $x1 , $y1 , $x2 , $y2 )
{
2023-01-10 16:29:32 +00:00
//из $x1,$y1 в $x2,$y2
//доступна-ли эта клетка для действий
2022-08-25 11:23:36 +00:00
$r = 0 ;
$c1 = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `dungeon_map` WHERE `x` = "' . $x1 . '" AND `y` = "' . $y1 . '" AND `id_dng` = "' . $this -> info [ 'id2' ] . '" LIMIT 1' ));
$c2 = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `dungeon_map` WHERE `x` = "' . $x2 . '" AND `y` = "' . $y2 . '" AND `id_dng` = "' . $this -> info [ 'id2' ] . '" LIMIT 1' ));
if ( isset ( $c1 [ 'id' ]) && isset ( $c2 [ 'id' ])) {
if ( $x1 == $x2 && $y1 == $y2 ) {
$r = 1 ;
} elseif (
2023-01-10 16:29:32 +00:00
$x1 == $x2 - 1 && $c1 [ 'go_1' ] == 1 || //право
$x1 == $x2 + 1 && $c1 [ 'go_2' ] == 1 || //лево
$y1 == $y2 - 1 && $c1 [ 'go_3' ] == 1 || //верх
$y1 == $y2 + 1 && $c1 [ 'go_4' ] == 1 //низ
2022-08-25 11:23:36 +00:00
)
{
$r = 1 ;
}
}
return $r ;
}
public function genObjects ()
{
global $u , $c , $code ;
////i:{id,name,mapPoint,action,img,type},
2023-01-10 16:29:32 +00:00
//'count':1,0:{0:1234,1:'Сундук',2:5,3:'',4:'test.gif',5:0,6:position,7:width,8:heigh,9:left,10:top},
//psition 0 - по центру , 1- сверху, 2- слева, 3- снизу, 4- справа
2022-08-25 11:23:36 +00:00
$r = '' ;
2023-01-10 16:29:32 +00:00
$whr = [ 1 => ' (((`u`.`x` <= ' . ( $u -> info [ 'psevdo_x' ] + 2 ) . ' && `u`.`x` >= ' . ( $u -> info [ 'psevdo_x' ] - 2 ) . ') && (`u`.`y` >= ' . ( $u -> info [ 'psevdo_y' ] + 1 ) . ' && `u`.`y` <= ' . ( $u -> info [ 'psevdo_y' ] + 4 ) . ')) OR (`u`.`y` = ' . $u -> info [ 'psevdo_y' ] . ' && `u`.`x` = ' . $u -> info [ 'psevdo_x' ] . ')) ' , //прямо
3 => ' (((`u`.`x` <= ' . ( $u -> info [ 'psevdo_x' ] + 2 ) . ' && `u`.`x` >= ' . ( $u -> info [ 'psevdo_x' ] - 2 ) . ') && (`u`.`y` <= ' . ( $u -> info [ 'psevdo_y' ] - 1 ) . ' && `u`.`y` >= ' . ( $u -> info [ 'psevdo_y' ] - 4 ) . ')) OR (`u`.`y` = ' . $u -> info [ 'psevdo_y' ] . ' && `u`.`x` = ' . $u -> info [ 'psevdo_x' ] . ')) ' , //вниз
2 => ' (((`u`.`x` <= ' . ( $u -> info [ 'psevdo_x' ] - 1 ) . ' && `u`.`x` >= ' . ( $u -> info [ 'psevdo_x' ] - 4 ) . ') && (`u`.`y` <= ' . ( $u -> info [ 'psevdo_y' ] + 2 ) . ' && `u`.`y` >= ' . ( $u -> info [ 'psevdo_y' ] - 2 ) . '))OR (`u`.`y` = ' . $u -> info [ 'psevdo_y' ] . ' && `u`.`x` = ' . $u -> info [ 'psevdo_x' ] . ')) ' , //лево
4 => ' (((`u`.`x` >= ' . ( $u -> info [ 'psevdo_x' ] + 1 ) . ' && `u`.`x` <= ' . ( $u -> info [ 'psevdo_x' ] + 4 ) . ') && (`u`.`y` <= ' . ( $u -> info [ 'psevdo_y' ] + 2 ) . ' && `u`.`y` >= ' . ( $u -> info [ 'psevdo_y' ] - 2 ) . ')) OR (`u`.`y` = ' . $u -> info [ 'psevdo_y' ] . ' && `u`.`x` = ' . $u -> info [ 'psevdo_x' ] . ')) ' //право
2022-08-25 11:23:36 +00:00
];
$sp = mysql_query ( 'SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "' . $this -> id_dng . '" AND ((`u`.`s` = "0" OR `u`.`s` = "' . $this -> gs . '") OR `u`.`s2` = "' . $this -> gs . '") AND ' . $whr [ $this -> gs ] . ' LIMIT 76' );
# die('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "'.$this->id_dng.'" AND ((`u`.`s` = "0" OR `u`.`s` = "'.$this->gs.'") OR `u`.`s2` = "'.$this->gs.'") AND '.$whr[$this->gs].' LIMIT 76');
$i = 0 ;
$pos = [];
while ( $pl = mysql_fetch_array ( $sp )) {
if ( $pl [ 'fix_x_y' ] == 0 || ( $pl [ 'fix_x_y' ] == 1 && $pl [ 'x' ] == $u -> info [ 'psevdo_x' ]) || ( $pl [ 'fix_x_y' ] == 2 && $pl [ 'y' ] == $u -> info [ 'psevdo_y' ]) || ( $pl [ 'fix_x_y' ] == 3 && $pl [ 'x' ] == $u -> info [ 'psevdo_x' ] && $pl [ 'y' ] == $u -> info [ 'psevdo_y' ])) {
if (( $pl [ 'os1' ] == 0 && $pl [ 'os2' ] == 0 && $pl [ 'os3' ] == 0 && $pl [ 'os4' ] == 0 ) || ( $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]] == $pl [ 'os1' ] || $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]] == $pl [ 'os2' ] || $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]] == $pl [ 'os3' ] || $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]] == $pl [ 'os4' ])) {
$i ++ ;
if ( ! isset ( $pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]])) {
$pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]] = 0 ;
}
$pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]] ++ ;
$r .= ',' . ( $i - 1 ) . ':{\'x\':' . $pl [ 'x' ] . ',\'y\':' . $pl [ 'y' ] . ',0:' . $pl [ 'id' ] . ',1:\'' . $pl [ 'name' ] . '\',2:' . ( 0 + $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]) . ',3:\'action\',4:\'' . $pl [ 'img' ] . '\',5:' . $pl [ 'type' ] . ',6:0,7:' . $pl [ 'w' ] . ',8:' . $pl [ 'h' ] . ',9:' . $pl [ 'left' ] . ',10:' . $pl [ 'top' ] . ',11:' . $pl [ 'date' ] . ',12:' . $pl [ 'type' ] . ',13:' . $pl [ 'type2' ] . ',14:' . $pl [ 's' ] . ',15:' . $pl [ 's2' ] . ',16:' . $pl [ 'os1' ] . ',17:' . $pl [ 'os2' ] . ',18:' . $pl [ 'os3' ] . ',19:' . $pl [ 'os4' ] . ',20:' . $pl [ 'fix_x_y' ] . '}' ;
} elseif ( $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]] == $pl [ 'os1' ] - 1 || $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]] == $pl [ 'os2' ] - 1 || $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]] == $pl [ 'os3' ] - 1 || $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]] == $pl [ 'os4' ] - 1 ) {
$dt2 = explode ( ',' , ltrim ( rtrim ( $pl [ 'date' ], '\}' ), '\{' ));
$da = [];
$is = 0 ;
while ( $is < count ( $dt2 )) {
$dt2 [ $is ] = explode ( ':' , $dt2 [ $is ]);
$da [ $dt2 [ $is ][ 0 ]] = $dt2 [ $is ][ 1 ];
$is ++ ;
}
2023-01-10 16:29:32 +00:00
#if(isset($da['rl2']))$da['rl2'] = -round((int)$da['rl2'] * 0.70); // Слева
if ( isset ( $da [ 'rl2' ])) $da [ 'rl2' ] = round (( int ) $da [ 'rl2' ] - 230 ); // Слева
2022-08-25 11:23:36 +00:00
if ( isset ( $da [ 'rl3' ])) $da [ 'rl3' ] = round (( int ) $da [ 'rl3' ] + 160 );
if ( isset ( $da [ 'rl4' ])) $da [ 'rl4' ] = round (( int ) $da [ 'rl4' ] - 120 );
$pl [ 'date' ] = str_replace ( '"' , '' , json_encode ( $da ));
$i ++ ;
if ( ! isset ( $pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]])) {
$pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]] = 0 ;
}
$pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]] ++ ;
$r .= ',' . ( $i - 1 ) . ':{\'x\':' . $pl [ 'x' ] . ',\'y\':' . $pl [ 'y' ] . ',0:' . $pl [ 'id' ] . ',1:\'' . $pl [ 'name' ] . '\',2:' . ( 0 + $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]) . ',3:\'action\',4:\'' . $pl [ 'img' ] . '\',5:' . $pl [ 'type' ] . ',6:0,7:' . $pl [ 'w' ] . ',8:' . $pl [ 'h' ] . ',9:' . $pl [ 'left' ] . ',10:' . $pl [ 'top' ] . ',11:' . $pl [ 'date' ] . ',12:' . $pl [ 'type' ] . ',13:' . $pl [ 'type2' ] . ',14:' . $pl [ 's' ] . ',15:' . $pl [ 's2' ] . ',16:' . $pl [ 'os1' ] . ',17:' . $pl [ 'os2' ] . ',18:' . $pl [ 'os3' ] . ',19:' . $pl [ 'os4' ] . ',20:' . $pl [ 'fix_x_y' ] . '}' ;
} elseif ( $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]] == $pl [ 'os1' ] + 1 || $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]] == $pl [ 'os2' ] + 1 || $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]] == $pl [ 'os3' ] + 1 || $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]] == $pl [ 'os4' ] + 1 ) {
$dt2 = explode ( ',' , ltrim ( rtrim ( $pl [ 'date' ], '\}' ), '\{' ));
$da = [];
$is = 0 ;
while ( $is < count ( $dt2 )) {
$dt2 [ $is ] = explode ( ':' , $dt2 [ $is ]);
$da [ $dt2 [ $is ][ 0 ]] = $dt2 [ $is ][ 1 ];
$is ++ ;
}
2023-01-10 16:29:32 +00:00
#if(isset($da['rl2']))$da['rl2'] = 355-round((int)$da['rl2'] * 0.30); // Справа
if ( isset ( $da [ 'rl2' ])) $da [ 'rl2' ] = round (( int ) $da [ 'rl2' ] + 230 ); // Справа
2022-08-25 11:23:36 +00:00
if ( isset ( $da [ 'rl3' ])) $da [ 'rl3' ] = round (( int ) $da [ 'rl3' ] - 160 );
if ( isset ( $da [ 'rl4' ])) $da [ 'rl4' ] = round (( int ) $da [ 'rl4' ] + 120 );
$pl [ 'date' ] = str_replace ( '"' , '' , json_encode ( $da ));
$i ++ ;
if ( ! isset ( $pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]])) {
$pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]] = 0 ;
}
$pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]] ++ ;
$r .= ',' . ( $i - 1 ) . ':{\'x\':' . $pl [ 'x' ] . ',\'y\':' . $pl [ 'y' ] . ',0:' . $pl [ 'id' ] . ',1:\'' . $pl [ 'name' ] . '\',2:' . ( 0 + $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]) . ',3:\'action\',4:\'' . $pl [ 'img' ] . '\',5:' . $pl [ 'type' ] . ',6:0,7:' . $pl [ 'w' ] . ',8:' . $pl [ 'h' ] . ',9:' . $pl [ 'left' ] . ',10:' . $pl [ 'top' ] . ',11:' . $pl [ 'date' ] . ',12:' . $pl [ 'type' ] . ',13:' . $pl [ 'type2' ] . ',14:' . $pl [ 's' ] . ',15:' . $pl [ 's2' ] . ',16:' . $pl [ 'os1' ] . ',17:' . $pl [ 'os2' ] . ',18:' . $pl [ 'os3' ] . ',19:' . $pl [ 'os4' ] . ',20:' . $pl [ 'fix_x_y' ] . '}' ;
}
}
}
return 'count:' . $i . $r ;
}
public function genUsers ()
{
global $u , $c , $code ;
////i:{id,login,mapPoint,sex,obraz,type,users_p},
//'count':1,0:{0:1015,1:'Test1',2:5,3:0,4:'1',5:'user',6:1},
$r = '' ;
2023-01-10 16:29:32 +00:00
$whr = [ 1 => ' ((`u`.`x` <= ' . ( $u -> info [ 'psevdo_x' ] + 2 ) . ' && `u`.`x` >= ' . ( $u -> info [ 'psevdo_x' ] - 2 ) . ') && (`u`.`y` >= ' . $u -> info [ 'psevdo_y' ] . ' && `u`.`y` <= ' . ( $u -> info [ 'psevdo_y' ] + 4 ) . ')) ' , //прямо
3 => ' ((`u`.`x` <= ' . ( $u -> info [ 'psevdo_x' ] + 2 ) . ' && `u`.`x` >= ' . ( $u -> info [ 'psevdo_x' ] - 2 ) . ') && (`u`.`y` <= ' . $u -> info [ 'psevdo_y' ] . ' && `u`.`y` >= ' . ( $u -> info [ 'psevdo_y' ] - 4 ) . ')) ' , //вниз
2 => ' ((`u`.`x` <= ' . $u -> info [ 'psevdo_x' ] . ' && `u`.`x` >= ' . ( $u -> info [ 'psevdo_x' ] - 4 ) . ') && (`u`.`y` <= ' . ( $u -> info [ 'psevdo_y' ] + 2 ) . ' && `u`.`y` >= ' . ( $u -> info [ 'psevdo_y' ] - 2 ) . ')) ' , //лево
4 => ' ((`u`.`x` >= ' . $u -> info [ 'psevdo_x' ] . ' && `u`.`x` <= ' . ( $u -> info [ 'psevdo_x' ] + 4 ) . ') && (`u`.`y` <= ' . ( $u -> info [ 'psevdo_y' ] + 2 ) . ' && `u`.`y` >= ' . ( $u -> info [ 'psevdo_y' ] - 2 ) . ')) ' //право
2022-08-25 11:23:36 +00:00
];
$i = 0 ;
2023-01-10 16:29:32 +00:00
//отображаем ботов
2022-08-25 11:23:36 +00:00
$sp = mysql_query ( 'SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE ' . $whr [ $this -> gs ] . ' AND `dn` = "0" AND `for_dn` = "' . $this -> id_dng . '" AND `u`.`delete` = "0" LIMIT 50' );
while ( $pl = mysql_fetch_array ( $sp )) {
$i ++ ;
if ( ! isset ( $pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]])) {
$pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]] = 0 ;
}
$pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]] ++ ;
$dlg = 0 ;
if ( $pl [ 'dialog' ] > 0 ) {
$dlg = $pl [ 'dialog' ];
}
$r .= ',' . ( $i - 1 ) . ':{0:' . $pl [ 'id2' ] . ',1:\'' . $pl [ 'login' ] . '\',2:' . ( 0 + $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]) . ',3:' . $pl [ 'sex' ] . ',4:\'' . str_replace ( '.gif' , '' , $pl [ 'obraz' ]) . '\',5:\'bot\',6:' . $pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]] . ',7:' . $dlg . '}' ;
}
return 'count:' . $i . $r ;
}
public function botAtack ( $bot , $uid , $bs )
{
global $u , $c , $code ;
$user = mysql_fetch_array ( mysql_query ( 'SELECT `id`,`battle` FROM `users` WHERE `id` = "' . $uid [ 'id' ] . '" LIMIT 1' ));
if ( $user [ 'battle' ] > 0 ) {
$btli = mysql_fetch_array ( mysql_query ( 'SELECT `id` FROM `battle` WHERE `id` = "' . $user [ 'battle' ] . '" AND `team_win` = "-1" LIMIT 1' ));
}
if ( ! isset ( $btli [ 'id' ])) {
2023-01-10 16:29:32 +00:00
//Создаем поединок
2022-08-25 11:23:36 +00:00
$btl_id = 0 ;
$expB = 0 ;
$btl = [ 'players' => '' , 'timeout' => 180 , 'type' => 0 , 'invis' => 0 , 'noinc' => 0 , 'travmChance' => 0 , 'typeBattle' => 0 , 'addExp' => $expB , 'money' => 0 ];
mysql_query ( ' INSERT INTO `battle` ( `dungeon` , `dn_id` , `x` , `y` , `city` , `time_start` , `players` , `timeout` , `type` , `invis` , `noinc` , `travmChance` , `typeBattle` , `addExp` , `money` ) VALUES (
" ' . $this->info ['id2'] . ' " ,
" ' . $this->info ['id'] . ' " ,
" ' . $bot['x'] . ' " ,
" ' . $bot['y'] . ' " ,
" ' . $u->info ['city'] . ' " ,
" ' . time() . ' " ,
" ' . $btl['players'] . ' " ,
" ' . $btl['timeout'] . ' " ,
" ' . $btl['type'] . ' " ,
" ' . $btl['invis'] . ' " ,
" ' . $btl['noinc'] . ' " ,
" ' . $btl['travmChance'] . ' " ,
" ' . $btl['typeBattle'] . ' " ,
" ' . $btl['addExp'] . ' " ,
" ' . $btl['money'] . ' " ) ' );
$btl_id = mysql_insert_id ();
if ( $btl_id > 0 ) {
2023-01-10 16:29:32 +00:00
//Добавляем ботов
2022-08-25 11:23:36 +00:00
$sp = mysql_query ( 'SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `x` = "' . $bot [ 'x' ] . '" AND `y` = "' . $bot [ 'y' ] . '" LIMIT 50' );
$j = 0 ;
$logins_bot = [];
while ( $pl = mysql_fetch_array ( $sp )) {
mysql_query ( 'UPDATE `dungeon_bots` SET `inBattle` = "' . $btl_id . '" WHERE `id` = "' . $pl [ 'id' ] . '" LIMIT 1' );
$jui = 1 ;
while ( $jui <= $pl [ 'colvo' ]) {
$k = $u -> addNewbot ( $pl [ 'id_bot' ], null , null , $logins_bot );
$logins_bot = $k [ 'logins_bot' ];
if ( $k ) {
$upd = mysql_query ( 'UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k [ 'id' ] . '" LIMIT 1' );
if ( $upd ) {
$upd = mysql_query ( 'UPDATE `stats` SET `x`="' . $bot [ 'x' ] . '",`y`="' . $bot [ 'y' ] . '",`team` = "1" WHERE `id` = "' . $k [ 'id' ] . '" LIMIT 1' );
if ( $upd ) {
$j ++ ;
}
}
}
$jui ++ ;
}
}
unset ( $logins_bot );
if ( $j > 0 ) {
mysql_query ( 'UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $user [ 'id' ] . '" LIMIT 1' );
mysql_query ( 'UPDATE `stats` SET `team` = "2" WHERE `id` = "' . $user [ 'id' ] . '" LIMIT 1' );
}
}
}
}
public function testGo ( $id )
{
global $u , $c , $code ;
$go = 0 ;
if ( $id == 1 ) {
2023-01-10 16:29:32 +00:00
//вперед
2022-08-25 11:23:36 +00:00
$go = $this -> sg [ $this -> gs ][ 1 ];
} elseif ( $id == 2 ) {
2023-01-10 16:29:32 +00:00
//назад
2022-08-25 11:23:36 +00:00
$go = $this -> sg [ $this -> gs ][ 3 ];
} elseif ( $id == 3 ) {
2023-01-10 16:29:32 +00:00
//на право
2022-08-25 11:23:36 +00:00
$go = $this -> sg [ $this -> gs ][ 4 ];
} elseif ( $id == 4 ) {
2023-01-10 16:29:32 +00:00
//на лево
2022-08-25 11:23:36 +00:00
$go = $this -> sg [ $this -> gs ][ 2 ];
}
$thp = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `dungeon_map` WHERE `x` = "' . $u -> info [ 'psevdo_x' ] . '" AND `y` = "' . $u -> info [ 'psevdo_y' ] . '" AND `id_dng` = "' . $this -> info [ 'id2' ] . '" LIMIT 1' ));
$ng = [ 4 => 1 , 2 => 2 , 1 => 3 , 3 => 4 ];
if ( isset ( $thp [ 'id' ]) && $thp [ 'go_' . $ng [ $go ]] == 0 ) {
$go = 0 ;
}
$tgo = [ 0 => 0 , 1 => 0 ];
if ( $go == 1 ) {
$tgo [ 1 ] += 1 ;
} elseif ( $go == 2 ) {
$tgo [ 0 ] -= 1 ;
} elseif ( $go == 3 ) {
$tgo [ 1 ] -= 1 ;
} elseif ( $go == 4 ) {
$tgo [ 0 ] += 1 ;
}
$tbot = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `dungeon_bots` WHERE `x` = "' . ( $u -> info [ 'psevdo_x' ] + ( int ) $tgo [ 0 ]) . '" AND `y` = "' . ( $u -> info [ 'psevdo_y' ] + ( int ) $tgo [ 1 ]) . '" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1' ));
if ( isset ( $tbot [ 'id2' ]) && $u -> info [ 'admin' ] == 0 ) {
$go = 0 ;
}
$tmap = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `dungeon_map` WHERE `x` = "' . $u -> info [ 'psevdo_x' ] . '" AND `y` = "' . $u -> info [ 'psevdo_y' ] . '" AND `id_dng` = "' . $this -> info [ 'id2' ] . '" LIMIT 1' ));
2023-01-10 16:29:32 +00:00
//наличие предмета
2022-08-25 11:23:36 +00:00
if ( $tmap [ 'tr_items' ] != '' ) {
$ti = explode ( ',' , $tmap [ 'tr_items' ]);
$i = 0 ;
$trnit = '' ;
while ( $i < count ( $ti )) {
$ti2 = explode ( '=' , $ti [ $i ]);
if ( $ti2 [ 0 ] > 0 && $ti2 [ 1 ] > 0 ) {
$num_rows = mysql_num_rows ( mysql_query ( 'SELECT * FROM `items_users` WHERE `uid` = "' . $u -> info [ 'id' ] . '" AND `delete` = "0" AND `inShop` = "0" AND `item_id` = "' . (( int ) $ti2 [ 0 ]) . '" LIMIT ' . (( int ) $ti2 [ 1 ]) . '' ));
if ( $num_rows < ( int ) $ti2 [ 1 ]) {
$tgo = $ti2 [ 2 ];
if ( $tgo != '0000' && $tgo [ $ng [ $go ] - 1 ] == 1 ) {
$go = 0 ;
$trm = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `items_main` WHERE `id` = "' . (( int ) $ti2 [ 0 ]) . '" LIMIT 1' ));
$trnit .= '"' . $trm [ 'name' ] . '", ' ;
}
}
}
$i ++ ;
}
if ( $trnit != '' ) {
$trnit = rtrim ( $trnit , ', ' );
2023-01-10 16:29:32 +00:00
$this -> error = 'У вас нет подходящего предмета. Требуется ' . $trnit ;
2022-08-25 11:23:36 +00:00
}
}
2023-01-10 16:29:32 +00:00
$tmGo = $u -> info [ 'timeGo' ] - time (); //сколько секунд осталось
2022-08-25 11:23:36 +00:00
if ( $tmGo > 0 ) {
$go = 0 ;
2023-01-10 16:29:32 +00:00
$this -> error = 'Н е так быстро...' ;
2022-08-25 11:23:36 +00:00
}
if ( $u -> aves [ 'now' ] >= $u -> aves [ 'max' ]) {
$go = 0 ;
2023-01-10 16:29:32 +00:00
$this -> error = 'Вы не можете перемещаться, рюкзак переполнен ...' ;
2022-08-25 11:23:36 +00:00
}
if ( $go > 0 ) {
if ( $go == 1 ) {
$u -> info [ 'psevdo_y' ] += 1 ;
} elseif ( $go == 2 ) {
$u -> info [ 'psevdo_x' ] -= 1 ;
} elseif ( $go == 3 ) {
$u -> info [ 'psevdo_y' ] -= 1 ;
} elseif ( $go == 4 ) {
$u -> info [ 'psevdo_x' ] += 1 ;
}
$u -> info [ 'timeGo' ] = time () + $tmap [ 'timeGO' ];
$u -> info [ 'timeGoL' ] = time ();
mysql_query ( 'UPDATE `stats` SET `x` = "' . $u -> info [ 'psevdo_x' ] . '",`y` = "' . $u -> info [ 'psevdo_y' ] . '",`timeGo` = "' . $u -> info [ 'timeGo' ] . '",`timeGoL` = "' . $u -> info [ 'timeGoL' ] . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1' );
}
}
public function testGone ( $id )
{
global $u , $c , $code ;
$go = 0 ;
if ( $id == 1 ) {
2023-01-10 16:29:32 +00:00
//вперед
2022-08-25 11:23:36 +00:00
$go = $this -> sg [ $this -> gs ][ 1 ];
} elseif ( $id == 2 ) {
2023-01-10 16:29:32 +00:00
//назад
2022-08-25 11:23:36 +00:00
$go = $this -> sg [ $this -> gs ][ 3 ];
} elseif ( $id == 3 ) {
2023-01-10 16:29:32 +00:00
//на право
2022-08-25 11:23:36 +00:00
$go = $this -> sg [ $this -> gs ][ 4 ];
} elseif ( $id == 4 ) {
2023-01-10 16:29:32 +00:00
//на лево
2022-08-25 11:23:36 +00:00
$go = $this -> sg [ $this -> gs ][ 2 ];
}
$thp = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `dungeon_map` WHERE `x` = "' . $u -> info [ 'psevdo_x' ] . '" AND `y` = "' . $u -> info [ 'psevdo_y' ] . '" AND `id_dng` = "' . $this -> info [ 'id2' ] . '" LIMIT 1' ));
$ng = [ 4 => 1 , 2 => 2 , 1 => 3 , 3 => 4 ];
if ( isset ( $thp [ 'id' ]) && $thp [ 'go_' . $ng [ $go ]] == 0 ) {
$go = 0 ;
}
$tgo = [ 0 => 0 , 1 => 0 ];
if ( $go == 1 ) {
$tgo [ 1 ] += 1 ;
} elseif ( $go == 2 ) {
$tgo [ 0 ] -= 1 ;
} elseif ( $go == 3 ) {
$tgo [ 1 ] -= 1 ;
} elseif ( $go == 4 ) {
$tgo [ 0 ] += 1 ;
}
$tbot = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `dungeon_bots` WHERE `x` = "' . ( $u -> info [ 'psevdo_x' ] + ( int ) $tgo [ 0 ]) . '" AND `y` = "' . ( $u -> info [ 'psevdo_y' ] + ( int ) $tgo [ 1 ]) . '" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1' ));
if ( isset ( $tbot [ 'id2' ]) && $u -> info [ 'admin' ] == 0 ) {
$go = 0 ;
}
return $go ;
}
public function testSt ( $id , $s )
{
$r = 0 ;
2023-01-10 16:29:32 +00:00
//заменяем отображение стен в зависимости от угла обзора
2022-08-25 11:23:36 +00:00
$s = $this -> sg [ $this -> gs ][ $s ];
if ( isset ( $this -> map [ 1 ][ $id ][ 'id' ])) {
$r = $this -> map [ 1 ][ $id ][ 'st' ][( $s - 1 )];
}
return $r ;
}
public function lookDungeon ()
{
global $u , $c , $code , $pd ;
2023-01-10 16:29:32 +00:00
/* Генерируем изображение карты */
2022-08-25 11:23:36 +00:00
/* LEVEL 1 */
if ( $this -> testSt ( 2 , 4 ) > 0 || $this -> testSt ( 3 , 2 ) > 0 ) {
$pd [ 28 ] = 1 ;
}
if ( $this -> testSt ( 1 , 4 ) > 0 || $this -> testSt ( 2 , 2 ) > 0 ) {
$pd [ 27 ] = 1 ;
}
if ( $this -> testSt ( 2 , 1 ) > 0 || $this -> testSt ( 5 , 3 ) > 0 ) {
$pd [ 26 ] = 1 ;
}
if ( $this -> testSt ( 3 , 1 ) > 0 || $this -> testSt ( 6 , 3 ) > 0 ) {
$pd [ 25 ] = 1 ;
}
if ( $this -> testSt ( 1 , 1 ) > 0 || $this -> testSt ( 4 , 3 ) > 0 ) {
$pd [ 24 ] = 1 ;
}
/* LEVEL 2 */
if ( $this -> testSt ( 5 , 4 ) > 0 || $this -> testSt ( 6 , 2 ) > 0 ) {
$pd [ 23 ] = 1 ;
}
if ( $this -> testSt ( 4 , 4 ) > 0 || $this -> testSt ( 5 , 2 ) > 0 ) {
$pd [ 22 ] = 1 ;
}
if ( $this -> testSt ( 5 , 1 ) > 0 || $this -> testSt ( 8 , 3 ) > 0 ) {
$pd [ 21 ] = 1 ;
}
if ( $this -> testSt ( 6 , 1 ) > 0 || $this -> testSt ( 7 , 3 ) > 0 ) {
$pd [ 20 ] = 1 ;
}
if ( $this -> testSt ( 4 , 1 ) > 0 || $this -> testSt ( 9 , 3 ) > 0 ) {
$pd [ 19 ] = 1 ;
}
/* LEVEL 3 */
if ( $this -> testSt ( 8 , 4 ) > 0 || $this -> testSt ( 7 , 2 ) > 0 ) {
$pd [ 18 ] = 1 ;
}
if ( $this -> testSt ( 9 , 4 ) > 0 || $this -> testSt ( 8 , 2 ) > 0 ) {
$pd [ 17 ] = 1 ;
}
if ( $this -> testSt ( 8 , 1 ) > 0 || $this -> testSt ( 12 , 3 ) > 0 ) {
$pd [ 16 ] = 1 ;
}
if ( $this -> testSt ( 7 , 1 ) > 0 || $this -> testSt ( 13 , 3 ) > 0 ) {
$pd [ 15 ] = 1 ;
}
if ( $this -> testSt ( 9 , 1 ) > 0 || $this -> testSt ( 11 , 3 ) > 0 ) {
$pd [ 14 ] = 1 ;
}
/* LEVEL 4 */
if ( $this -> testSt ( 12 , 4 ) > 0 || $this -> testSt ( 13 , 2 ) > 0 ) {
$pd [ 13 ] = 1 ;
}
if ( $this -> testSt ( 12 , 2 ) > 0 || $this -> testSt ( 11 , 4 ) > 0 ) {
$pd [ 12 ] = 1 ;
}
if ( $this -> testSt ( 13 , 1 ) > 0 || $this -> testSt ( 17 , 3 ) > 0 ) {
$pd [ 11 ] = 1 ;
} //8
if ( $this -> testSt ( 11 , 1 ) > 0 || $this -> testSt ( 16 , 3 ) > 0 ) {
$pd [ 10 ] = 1 ;
} //7
if ( $this -> testSt ( 12 , 1 ) > 0 || $this -> testSt ( 15 , 3 ) > 0 ) {
$pd [ 9 ] = 1 ;
}
if ( $this -> testSt ( 14 , 1 ) > 0 || $this -> testSt ( 18 , 3 ) > 0 ) {
$pd [ 6 ] = 1 ;
} //2
if ( $this -> testSt ( 10 , 1 ) > 0 || $this -> testSt ( 19 , 3 ) > 0 ) {
$pd [ 5 ] = 1 ;
} //1
if ( $this -> testSt ( 16 , 4 ) > 0 || $this -> testSt ( 15 , 2 ) > 0 ) {
$pd [ 4 ] = 1 ;
}
if ( $this -> testSt ( 15 , 4 ) > 0 || $this -> testSt ( 17 , 2 ) > 0 ) {
$pd [ 3 ] = 1 ;
}
2023-01-10 16:29:32 +00:00
/* Генерируем предметы на карте */
2022-08-25 11:23:36 +00:00
2023-01-10 16:29:32 +00:00
/* Генерируем персонажей и ботов на карте */
2022-08-25 11:23:36 +00:00
}
public function getMatrix ( $y , $x )
{
global $u ;
$this -> cord [ 'x' ] ++ ;
$this -> cord [( $u -> info [ 'psevdo_y' ] + $y ) . '_' . ( $u -> info [ 'psevdo_x' ] + $x )] = $this -> cord [ 'x' ];
return $this -> map [ 0 ][( $u -> info [ 'psevdo_y' ] + $y ) . '_' . ( $u -> info [ 'psevdo_x' ] + $x )];
}
public function genMatix ()
{
$r = [];
if ( $this -> gs == 1 ) {
2023-01-10 16:29:32 +00:00
//1; //смотрим прямо
2022-08-25 11:23:36 +00:00
$r [ 1 ] = $this -> getMatrix ( 0 , - 1 );
$r [ 2 ] = $this -> getMatrix ( 0 , 0 );
$r [ 3 ] = $this -> getMatrix ( 0 , 1 );
$r [ 4 ] = $this -> getMatrix ( 1 , - 1 );
$r [ 5 ] = $this -> getMatrix ( 1 , 0 );
$r [ 6 ] = $this -> getMatrix ( 1 , 1 );
$r [ 7 ] = $this -> getMatrix ( 2 , 1 );
$r [ 8 ] = $this -> getMatrix ( 2 , 0 );
$r [ 9 ] = $this -> getMatrix ( 2 , - 1 );
$r [ 10 ] = $this -> getMatrix ( 3 , - 2 );
$r [ 11 ] = $this -> getMatrix ( 3 , - 1 );
$r [ 12 ] = $this -> getMatrix ( 3 , 0 );
$r [ 13 ] = $this -> getMatrix ( 3 , 1 );
$r [ 14 ] = $this -> getMatrix ( 3 , 2 );
$r [ 15 ] = $this -> getMatrix ( 4 , 0 );
$r [ 16 ] = $this -> getMatrix ( 4 , - 1 );
$r [ 17 ] = $this -> getMatrix ( 4 , 1 );
$r [ 18 ] = $this -> getMatrix ( 4 , 2 );
$r [ 19 ] = $this -> getMatrix ( 4 , - 2 );
} elseif ( $this -> gs == 2 ) {
2023-01-10 16:29:32 +00:00
//2; //смотрим лево
2022-08-25 11:23:36 +00:00
$r [ 1 ] = $this -> getMatrix ( - 1 , 0 );
$r [ 2 ] = $this -> getMatrix ( 0 , 0 );
$r [ 3 ] = $this -> getMatrix ( 1 , 0 );
$r [ 4 ] = $this -> getMatrix ( - 1 , - 1 );
$r [ 5 ] = $this -> getMatrix ( 0 , - 1 );
$r [ 6 ] = $this -> getMatrix ( 1 , - 1 );
$r [ 7 ] = $this -> getMatrix ( 1 , - 2 );
$r [ 8 ] = $this -> getMatrix ( 0 , - 2 );
$r [ 9 ] = $this -> getMatrix ( - 1 , - 2 );
$r [ 10 ] = $this -> getMatrix ( - 2 , - 3 );
$r [ 11 ] = $this -> getMatrix ( - 1 , - 3 );
$r [ 12 ] = $this -> getMatrix ( 0 , - 3 );
$r [ 13 ] = $this -> getMatrix ( 1 , - 3 );
$r [ 14 ] = $this -> getMatrix ( 2 , - 3 );
$r [ 15 ] = $this -> getMatrix ( 0 , - 4 );
$r [ 16 ] = $this -> getMatrix ( - 1 , - 4 );
$r [ 17 ] = $this -> getMatrix ( 1 , - 4 );
$r [ 18 ] = $this -> getMatrix ( 2 , - 4 );
$r [ 19 ] = $this -> getMatrix ( - 2 , - 4 );
} elseif ( $this -> gs == 3 ) {
2023-01-10 16:29:32 +00:00
//3; //смотрим вниз
2022-08-25 11:23:36 +00:00
$r [ 1 ] = $this -> getMatrix ( 0 , 1 );
$r [ 2 ] = $this -> getMatrix ( 0 , 0 );
$r [ 3 ] = $this -> getMatrix ( 0 , - 1 );
$r [ 4 ] = $this -> getMatrix ( - 1 , 1 );
$r [ 5 ] = $this -> getMatrix ( - 1 , 0 );
$r [ 6 ] = $this -> getMatrix ( - 1 , - 1 );
$r [ 7 ] = $this -> getMatrix ( - 2 , - 1 );
$r [ 8 ] = $this -> getMatrix ( - 2 , 0 );
$r [ 9 ] = $this -> getMatrix ( - 2 , 1 );
$r [ 10 ] = $this -> getMatrix ( - 3 , 2 );
$r [ 11 ] = $this -> getMatrix ( - 3 , 1 );
$r [ 12 ] = $this -> getMatrix ( - 3 , 0 );
$r [ 13 ] = $this -> getMatrix ( - 3 , - 1 );
$r [ 14 ] = $this -> getMatrix ( - 3 , - 2 );
$r [ 15 ] = $this -> getMatrix ( - 4 , 0 );
$r [ 16 ] = $this -> getMatrix ( - 4 , 1 );
$r [ 17 ] = $this -> getMatrix ( - 4 , - 1 );
$r [ 18 ] = $this -> getMatrix ( - 4 , - 2 );
$r [ 19 ] = $this -> getMatrix ( - 4 , 2 );
} elseif ( $this -> gs == 4 ) {
2023-01-10 16:29:32 +00:00
//4; //смотрим право
2022-08-25 11:23:36 +00:00
$r [ 1 ] = $this -> getMatrix ( 1 , 0 );
$r [ 2 ] = $this -> getMatrix ( 0 , 0 );
$r [ 3 ] = $this -> getMatrix ( - 1 , 0 );
$r [ 4 ] = $this -> getMatrix ( 1 , 1 );
$r [ 5 ] = $this -> getMatrix ( 0 , 1 );
$r [ 6 ] = $this -> getMatrix ( - 1 , 1 );
$r [ 7 ] = $this -> getMatrix ( - 1 , 2 );
$r [ 8 ] = $this -> getMatrix ( 0 , 2 );
$r [ 9 ] = $this -> getMatrix ( 1 , 2 );
$r [ 10 ] = $this -> getMatrix ( 2 , 3 );
$r [ 11 ] = $this -> getMatrix ( 1 , 3 );
$r [ 12 ] = $this -> getMatrix ( 0 , 3 );
$r [ 13 ] = $this -> getMatrix ( - 1 , 3 );
$r [ 14 ] = $this -> getMatrix ( - 2 , 3 );
$r [ 15 ] = $this -> getMatrix ( 0 , 4 );
$r [ 16 ] = $this -> getMatrix ( 1 , 4 );
$r [ 17 ] = $this -> getMatrix ( - 1 , 4 );
$r [ 18 ] = $this -> getMatrix ( - 2 , 4 );
$r [ 19 ] = $this -> getMatrix ( 2 , 4 );
}
return $r ;
}
}