2022-08-25 11:23:36 +00:00
< ? php
class Dungeon
{
private $bs ;
2023-01-10 16:29:32 +00:00
private $map = [ 0 => []]; //карта
2022-08-25 11:23:36 +00:00
private $cord = [ 'x' => 0 ];
private $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 $info ;
public $error ;
public $gs = 1 ;
public $information ;
public $id_dng ;
public $see ;
public function start ()
{
global $u , $c , $code ;
2023-01-28 02:24:37 +00:00
$this -> info = mysql_fetch_assoc (
mysql_query ( 'SELECT * FROM `dungeon_now` WHERE `id` = "' . $u -> info [ 'dnow' ] . '" LIMIT 1' )
);
2022-08-25 11:23:36 +00:00
$this -> id_dng = $this -> info [ 'id2' ];
$this -> gs = $u -> info [ 's' ];
if ( $this -> gs < 1 || $this -> gs > 4 ) {
$this -> gs = 1 ;
}
if ( $this -> info [ 'bsid' ] > 0 ) {
2023-01-28 02:24:37 +00:00
$this -> bs = mysql_fetch_assoc (
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'
)
);
2022-08-25 11:23:36 +00:00
}
if ( isset ( $_GET [ 'itm_luck' ]) && $this -> info [ 'bsid' ] == 0 ) {
$this -> itm_luck (( int ) $_GET [ 'itm_luck' ]);
} elseif ( isset ( $_GET [ 'itm_unluck' ]) && $this -> info [ 'bsid' ] == 0 ) {
$this -> itm_unluck (( int ) $_GET [ 'itm_unluck' ]);
} elseif ( isset ( $_GET [ 'atack' ])) {
$this -> atack (( int ) $_GET [ 'atack' ]);
} elseif ( isset ( $_GET [ 'take' ])) {
$this -> takeinv (( int ) $_GET [ 'take' ]);
} elseif ( isset ( $_GET [ 'take_obj' ])) {
$this -> takeit (( int ) $_GET [ 'take_obj' ]);
} elseif ( isset ( $_GET [ 'look' ])) {
if (( int ) $_GET [ 'look' ] == 1 ) {
if ( $this -> gs == 1 ) {
$this -> gs = 2 ;
} elseif ( $this -> gs == 2 ) {
$this -> gs = 3 ;
} elseif ( $this -> gs == 3 ) {
$this -> gs = 4 ;
} elseif ( $this -> gs == 4 ) {
$this -> gs = 1 ;
}
} elseif (( int ) $_GET [ 'look' ] == 2 ) {
if ( $this -> gs == 1 ) {
$this -> gs = 4 ;
} elseif ( $this -> gs == 2 ) {
$this -> gs = 1 ;
} elseif ( $this -> gs == 3 ) {
$this -> gs = 2 ;
} elseif ( $this -> gs == 4 ) {
$this -> gs = 3 ;
}
}
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `stats` SET `s` = "' . (( int ) $this -> gs ) . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
$u -> info [ 's' ] = $this -> gs ;
} elseif ( isset ( $_GET [ 'go' ])) {
2023-01-10 16:29:32 +00:00
//перемещение
2022-08-25 11:23:36 +00:00
$this -> testGo (( int ) $_GET [ 'go' ]);
}
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[' y '].' && `y` <= '.($u->info[' y ']+4).' ) && ( `x` >= '.($u->info[' x ']-1).' && `x` <= '.($u->info[' x ']+1).' ) ) || ( ( `x` = '.($u->info[' x ']+2).' || `x` = '.($u->info[' x ']-2).' ) && ( `y` = '.($u->info[' y ']+3).' || `y` = '.($u->info[' y ']+4).' ) ) )
*/
2023-01-10 16:29:32 +00:00
$whr = [ 1 => ' ((`x` <= ' . ( $u -> info [ 'x' ] + 2 ) . ' && `x` >= ' . ( $u -> info [ 'x' ] - 2 ) . ') && (`y` >= ' . $u -> info [ 'y' ] . ' && `y` <= ' . ( $u -> info [ 'y' ] + 4 ) . ')) ' , //прямо
3 => ' ((`x` <= ' . ( $u -> info [ 'x' ] + 2 ) . ' && `x` >= ' . ( $u -> info [ 'x' ] - 2 ) . ') && (`y` <= ' . $u -> info [ 'y' ] . ' && `y` >= ' . ( $u -> info [ 'y' ] - 4 ) . ')) ' , //вниз
2 => ' ((`x` <= ' . $u -> info [ 'x' ] . ' && `x` >= ' . ( $u -> info [ 'x' ] - 4 ) . ') && (`y` <= ' . ( $u -> info [ 'y' ] + 2 ) . ' && `y` >= ' . ( $u -> info [ 'y' ] - 2 ) . ')) ' , //лево
2023-01-28 02:24:37 +00:00
4 => ' ((`x` >= ' . $u -> info [ 'x' ] . ' && `x` <= ' . ( $u -> info [ 'x' ] + 4 ) . ') && (`y` <= ' . ( $u -> info [ 'y' ] + 2 ) . ' && `y` >= ' . ( $u -> info [ 'y' ] - 2 ) . ')) ' , //право
2022-08-25 11:23:36 +00:00
];
$i = 1 ;
2023-01-28 02:24:37 +00:00
$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'
);
2022-08-25 11:23:36 +00:00
while ( $pl = mysql_fetch_assoc ( $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 ();
}
2023-01-28 02:24:37 +00:00
public function pickitem ( $obj , int $itm , $for , $data = '' , $dn_delete = false , $chat = 0 ) : bool
2022-08-25 11:23:36 +00:00
{
global $u ;
2023-01-28 02:24:37 +00:00
$itm = mysql_fetch_assoc (
mysql_query ( 'SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $itm . '" LIMIT 1' )
);
if ( ! isset ( $itm [ 'id' ])) {
return false ;
}
$tou = 0 ; //какому юзеру предназначено
/* выделяем случайного юзера из команды */
$itmnm = mysql_fetch_assoc ( mysql_query ( 'SELECT `name` FROM `items_main` WHERE `id` = "' . $itm . '" LIMIT 1' ));
$itmnm = $itmnm [ 'name' ];
$asex = '' ;
if ( $u -> info [ 'sex' ] == 1 ) {
$asex = 'а ' ;
}
2022-08-25 11:23:36 +00:00
2023-01-28 02:24:37 +00:00
if ( $for > 0 ) {
$tou = $for ;
$rtxt = '<b>' . $u -> info [ 'login' ] . '</b> обнаружил' . $asex . ' предмет "' . $itm [ 'name' ] . '" в "' . $obj [ 'name' ] . '"' ;
} else {
$rtxt = '<b>' . $u -> info [ 'login' ] . '</b> обнаружил' . $asex . ' предмет "' . $itm [ 'name' ] . '" в "' . $obj [ 'name' ] . '", и вы решили разыграть е г о ' ;
2022-08-25 11:23:36 +00:00
}
2023-01-28 02:24:37 +00:00
$dn_delete = $dn_delete ? 1 : 0 ;
if ( $chat == 0 ) {
$this -> sys_chat ( $rtxt );
}
mysql_query (
' INSERT INTO `dungeon_items` ( `dn_delete` , `data` , `dn` , `user` , `item_id` , `time` , `x` , `y` ) VALUES (
" ' . $dn_delete . ' " ,
" ' . mysql_real_escape_string( $data ) . ' " ,
" ' . $u->info ['dnow'] . ' " ,
" ' . $tou . ' " ,
" ' . $itm['id'] . ' " ,
" ' . time() . ' " ,
" ' . $u->info ['x'] . ' " ,
" ' . $u->info ['y'] . ' " ) '
);
return true ;
2022-08-25 11:23:36 +00:00
}
public function n_lead ( $who , $lead )
{
global $u , $c , $code ;
2023-01-28 02:24:37 +00:00
$to = mysql_fetch_assoc (
mysql_query (
'SELECT `u`.`id`, `u`.`login`, `st`.`id`, `st`.`dnow` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`login` = "' . mysql_real_escape_string (
$who
) . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( $this -> info [ 'uid' ] != $lead ) {
2023-01-10 16:29:32 +00:00
$this -> error = '<b>Вы не лидер...</b>' ;
2022-08-25 11:23:36 +00:00
} elseif ( ! isset ( $to [ 'id' ])) {
2023-01-10 16:29:32 +00:00
$this -> error = '<b>Персонаж не найден...</b>' ;
2022-08-25 11:23:36 +00:00
} elseif ( $to [ 'id' ] == $this -> info [ 'uid' ]) {
2023-01-10 16:29:32 +00:00
$this -> error = '<b>Вы и так лидер...</b>' ;
2022-08-25 11:23:36 +00:00
} elseif ( $to [ 'dnow' ] != $this -> info [ 'id' ]) {
2023-01-10 16:29:32 +00:00
$this -> error = '<b>Персонаж не найден в вашей команде...</b>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `dungeon_now` SET `uid` = "' . $to [ 'id' ] . '" WHERE `id` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
if ( $u -> info [ 'sex' ] == 0 ) {
2023-01-28 02:24:37 +00:00
$this -> sys_chat (
'<b>' . $u -> info [ 'login' ] . '</b> передал лидерство в группе персонажу <b>' . $to [ 'login' ] . '</b>'
);
2022-08-25 11:23:36 +00:00
} else {
2023-01-28 02:24:37 +00:00
$this -> sys_chat (
'<b>' . $u -> info [ 'login' ] . '</b> передала лидерство в группе персонажу <b>' . $to [ 'login' ] . '</b>'
);
2022-08-25 11:23:36 +00:00
}
//header('Location: main.php');
die ( '<script>top.frames[\'main\'].location = "main.php";</script>' );
}
}
public function go_to_hell ( $who , $lead )
{
global $u , $c , $code ;
2023-01-28 02:24:37 +00:00
$to = mysql_fetch_assoc (
mysql_query (
'SELECT `u`.`id`, `u`.`login`, `st`.`id`, `st`.`dnow` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`login` = "' . mysql_real_escape_string (
$who
) . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( $this -> info [ 'uid' ] != $lead ) {
2023-01-10 16:29:32 +00:00
$this -> error = '<b>Вы не лидер...</b>' ;
2022-08-25 11:23:36 +00:00
} elseif ( ! isset ( $to [ 'id' ])) {
2023-01-10 16:29:32 +00:00
$this -> error = '<b>Персонаж не найден...</b>' ;
2022-08-25 11:23:36 +00:00
} elseif ( $to [ 'id' ] == $this -> info [ 'uid' ]) {
2023-01-10 16:29:32 +00:00
$this -> error = '<b>Лидера нельзя выгнать...</b>' ;
2022-08-25 11:23:36 +00:00
} elseif ( $to [ 'dnow' ] != $this -> info [ 'id' ]) {
2023-01-10 16:29:32 +00:00
$this -> error = '<b>Персонаж не найден в вашей команде...</b>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$rb = 321 ; // Магический портал
2022-08-25 11:23:36 +00:00
if ( $u -> info [ 'room' ] == 304 ) {
2023-01-10 16:29:32 +00:00
$rb = 209 ; // Вход в ледяную пещеру
2022-08-25 11:23:36 +00:00
} elseif ( $u -> info [ 'room' ] == 396 ) {
2023-01-10 16:29:32 +00:00
$rb = 395 ; // Канализация (Ангелс)
2022-08-25 11:23:36 +00:00
} elseif ( $u -> info [ 'room' ] == 398 ) {
2023-01-10 16:29:32 +00:00
$rb = 321 ; // В с е пещеры
2022-08-25 11:23:36 +00:00
} elseif ( $this -> info [ 'id2' ] == 3 ) {
2023-01-10 16:29:32 +00:00
$rb = 293 ; // Вход в Катакомбы
2022-08-25 11:23:36 +00:00
} elseif ( $this -> info [ 'id2' ] == 1 ) {
2023-01-10 16:29:32 +00:00
$rb = 188 ; // Вход в Канализацию
2022-08-25 11:23:36 +00:00
} elseif ( $this -> info [ 'id2' ] == 13 ) {
2023-01-10 16:29:32 +00:00
$rb = 275 ; // Гора Легиона
2022-08-25 11:23:36 +00:00
} elseif ( $this -> info [ 'id2' ] == 12 ) {
2023-01-10 16:29:32 +00:00
$rb = 372 ; // Вход в Пещеру Тысячи Проклятий
2022-08-25 11:23:36 +00:00
} elseif ( $this -> info [ 'id2' ] == 444 ) {
2023-01-10 16:29:32 +00:00
$rb = 321 ; // Вход в пещеру инкв
2022-08-25 11:23:36 +00:00
} elseif ( $this -> info [ 'id2' ] == 31 ) {
2023-01-10 16:29:32 +00:00
$rb = 321 ; // Вход в пещеру инкв
2022-08-25 11:23:36 +00:00
} elseif ( $this -> info [ 'id2' ] == 101 ) {
2023-01-10 16:29:32 +00:00
$rb = 321 ; // Вход в Бездну
2022-08-25 11:23:36 +00:00
}
$sp = mysql_query ( 'SELECT * FROM `dungeon_now` WHERE `time_finish` = "0" LIMIT 50' );
while ( $pl = mysql_fetch_assoc ( $sp )) {
2023-01-28 02:24:37 +00:00
$cn = mysql_fetch_assoc (
mysql_query ( 'SELECT `id` FROM `stats` WHERE `dnow` = "' . $pl [ 'id' ] . '" LIMIT 1' )
);
2022-08-25 11:23:36 +00:00
if ( ! isset ( $cn [ 'id' ])) {
mysql_query ( 'DELETE FROM `dungeon_bots` WHERE `dn` = "' . $pl [ 'id' ] . '" AND `for_dn` = "0"' );
mysql_query ( 'DELETE FROM `dungeon_obj` WHERE `dn` = "' . $pl [ 'id' ] . '" AND `for_dn` = "0"' );
mysql_query ( 'DELETE FROM `dungeon_items` WHERE `dn` = "' . $pl [ 'id' ] . '" AND `for_dn` = "0"' );
mysql_query ( 'DELETE FROM `dungeon_bots` WHERE `dn` = "' . $pl [ 'id' ] . '" AND `for_dn` = "0"' );
mysql_query ( 'DELETE FROM `dungeon_actions` WHERE `dn` = "' . $pl [ 'id' ] . '"' );
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `dungeon_now` SET `time_finish` = "' . time (
) . '" WHERE `id` = "' . $pl [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
}
}
2023-01-28 02:24:37 +00:00
$city = mysql_fetch_assoc (
mysql_query ( 'SELECT `id`, `city` FROM `room` WHERE `id` = "' . $rb . '" LIMIT 1' )
);
2022-08-25 11:23:36 +00:00
mysql_query ( 'UPDATE `stats` SET `dnow` = "0" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1' );
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `users` SET `room` = "' . $rb . '", `city`="' . $city [ 'city' ] . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2023-01-10 16:29:32 +00:00
//удаляем все предметы которые пропадают после выхода из пещеры
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `items_users` SET `delete` = "' . time (
) . '" WHERE `uid` = "' . $u -> info [ 'id' ] . '" AND `dn_delete` = "1" LIMIT 1000'
);
2022-08-25 11:23:36 +00:00
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `items_users` SET `delete` = "' . time (
) . '" WHERE `uid` = "' . $u -> info [ 'id' ] . '" AND (`item_id` = "1189" OR `item_id` = "4447" OR `item_id` = "1174") LIMIT 1000'
);
2022-08-25 11:23:36 +00:00
if ( $u -> info [ 'sex' ] == 0 ) {
2023-01-28 02:24:37 +00:00
$this -> sys_chat (
'<b>' . $u -> info [ 'login' ] . '</b> выгнал из похода персонажа <b>' . $to [ 'login' ] . '</b>'
);
2022-08-25 11:23:36 +00:00
} else {
2023-01-28 02:24:37 +00:00
$this -> sys_chat (
'<b>' . $u -> info [ 'login' ] . '</b> выгнала из похода персонажа <b>' . $to [ 'login' ] . '</b>'
);
2022-08-25 11:23:36 +00:00
}
header ( 'Location: /main.php' );
}
}
public function usersDng ( $laba = false )
{
global $u , $c ;
$r = '' ;
$stt = [];
if ( $laba == false ) {
2023-01-28 02:24:37 +00:00
$sp = mysql_query (
'SELECT `u`.`id`,`st`.`id` FROM `stats` AS `u` LEFT JOIN `users` AS `st` ON (`st`.`id` = `u`.`id`) WHERE `u`.`dnow` = "' . $this -> info [ 'id' ] . '" LIMIT 10'
);
2022-08-25 11:23:36 +00:00
} else {
2023-01-28 02:24:37 +00:00
$sp = mysql_query (
'SELECT `u`.`id` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`st`.`id` = `u`.`id`) WHERE `u`.`room` = 370 AND `st`.`dnow` = "' . $laba . '" AND `st`.`bot` = 0 LIMIT 6'
);
2022-08-25 11:23:36 +00:00
}
while ( $pl = mysql_fetch_assoc ( $sp )) {
$stt = $u -> getStats ( $pl [ 'id' ], 0 );
if ( $stt [ 'mpAll' ] > 0 ) {
$pm = $stt [ 'mpNow' ] / $stt [ 'mpAll' ] * 100 ;
}
$ph = $stt [ 'hpNow' ] / $stt [ 'hpAll' ] * 100 ;
$r .= ' < table border = " 0 " cellspacing = " 0 " cellpadding = " 0 " height = " 20 " >
< tr >< td valign = " middle " > & nbsp ; < font color = " #990000 " > ' . $u->microLogin($pl[' id '], 1) . ' </ font > & nbsp ; </ td >
< td valign = " middle " width = " 120 " ' ;
if ( $stt [ 'mpAll' ] < 1 ) {
$r .= 'style="padding-top:12px"' ;
}
$r .= ' >
2023-01-28 02:24:37 +00:00
< div style = " position:relative; " >< div id = " vhp' . ( $pl['id'] + 1000000000000) . ' " title = " Уровень жизни " align = " left " class = " seehp " style = " position:absolute; top:-10px; width:120px; height:10px; z-index:12; " > ' . floor (
$stt [ 'hpNow' ]
) . '/' . $stt [ 'hpAll' ] . ' </ div >
2023-03-31 18:30:14 +00:00
< div title = " Уровень жизни " class = " hpborder " style = " position:absolute; top:-10px; width:120px; height:9px; z-index:13; " >< img src = " //img.new-combats.tech/1x1.gif " height = " 9 " width = " 1 " ></ div >
2023-01-28 02:24:37 +00:00
< div class = " hp_3 senohp " style = " height:9px; width:' . floor(
120 / 100 * $ph
2023-03-31 18:30:14 +00:00
) . 'px; position:absolute; top:-10px; z-index:11;" id="lhp' . ( $pl [ 'id' ] + 1000000000000 ) . ' " ><img src= " //img.new-combats.tech/1x1.gif" height="9" width="1"></div>
< div title = " Уровень жизни " class = " hp_none " style = " position:absolute; top:-10px; width:120px; height:10px; z-index:10; " >< img src = " //img.new-combats.tech/1x1.gif " height = " 10 " ></ div >
2022-08-25 11:23:36 +00:00
' ;
if ( $stt [ 'mpAll' ] > 0 ) {
2023-01-28 02:24:37 +00:00
$r .= '<div id="vmp' . ( $pl [ 'id' ] + 1000000000000 ) . '" title="Уровень маны" align="left" class="seemp" style="position:absolute; top:0px; width:120px; height:10px; z-index:12;"> ' . floor (
$stt [ 'mpNow' ]
) . '/' . $stt [ 'mpAll' ] . ' </ div >
2023-03-31 18:30:14 +00:00
< div title = " Уровень маны " class = " hpborder " style = " position:absolute; top:0px; width:120px; height:9px; z-index:13; " >< img src = " //img.new-combats.tech/1x1.gif " height = " 9 " width = " 1 " ></ div >
2023-01-28 02:24:37 +00:00
< div class = " hp_mp senohp " style = " height:9px; position:absolute; top:0px; width:' . floor(
120 / 100 * $pm
2023-03-31 18:30:14 +00:00
) . 'px; z-index:11;" id="lmp' . ( $pl [ 'id' ] + 1000000000000 ) . ' " ><img src= " //img.new-combats.tech/1x1.gif" height="9" width="1"></div>
2023-01-10 16:29:32 +00:00
< div title = " Уровень маны " class = " hp_none " style = " position:absolute; top:0px; width:120px; height:10px; z-index:10; " ></ div > ' ;
2022-08-25 11:23:36 +00:00
}
$r .= '</div></td><td>' ;
if ( $this -> info [ 'uid' ] == $pl [ 'id' ]) {
2023-03-31 18:30:14 +00:00
$r .= '<img src="//img.new-combats.tech/i/lead1.gif" title="Лидер группы" >' ;
2022-08-25 11:23:36 +00:00
}
if ( $this -> info [ 'uid' ] == $u -> info [ 'id' ] && $pl [ 'id' ] == $u -> info [ 'id' ] && $this -> info [ 'id2' ] != 15 ) {
2023-03-31 18:30:14 +00:00
$r .= '<a href="javascript: void(0);" onclick="top.n_lead();"><img src="//img.new-combats.tech/i/ico/ico_change_leader.gif" title="Новый лидер" /></a> ' ;
$r .= '<a href="javascript: void(0);" onclick="top.go_from_psh();"><img src="//img.new-combats.tech/i/ico/ico_kill_member.gif" title="Выгнать супостата" /></a> ' ;
2022-08-25 11:23:36 +00:00
}
$r .= '</td></tr></table><br>' ;
$r .= '<script>top.startHpRegen("main",' . ( $pl [ 'id' ] + 1000000000000 ) . ',' . ( 0 + $stt [ 'hpNow' ]) . ',' . ( 0 + $stt [ 'hpAll' ]) . ',' . ( 0 + $stt [ 'mpNow' ]) . ',' . ( 0 + $stt [ 'mpAll' ]) . ',0,0,0,0,1);</script>' ;
}
unset ( $stt , $ph , $pm );
return $r ;
}
public function atack ( $id )
{
global $u , $c , $code ;
2023-01-28 02:24:37 +00:00
$bot = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_bots` WHERE `id2` = "' . $id . '" AND `for_dn` = "0" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `delete` = "0" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( isset ( $bot [ 'id2' ])) {
2023-01-28 02:24:37 +00:00
if (( $u -> info [ 'x' ] != $bot [ 'x' ] || $bot [ 'y' ] != $u -> info [ 'y' ]) && $this -> testLike (
$u -> info [ 'x' ], $u -> info [ 'y' ], $bot [ 'x' ], $bot [ 'y' ]
) == 1 ) {
2023-01-10 16:29:32 +00:00
//Создаем подеинок
2023-01-28 02:24:37 +00:00
$tbtl = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `battle` WHERE `dn_id` = "' . $this -> info [ 'id' ] . '" AND `team_win` = "-1" AND `x` = "' . $bot [ 'x' ] . '" AND `y` = "' . $bot [ 'y' ] . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( isset ( $tbtl [ 'id' ])) {
2023-01-10 16:29:32 +00:00
//вступаем в поединок
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `users` SET `battle` = "' . $tbtl [ 'id' ] . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
mysql_query ( 'UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1' );
2023-01-10 16:29:32 +00:00
/*#$this->error = 'Нападаем ... '; // <script>location="main.php?rnd='.$code.'";</script>*/
2022-08-25 11:23:36 +00:00
//header('location: main.php');
die ( '<script>top.frames[\'main\'].location = "main.php";</script>' );
} else {
$btl_id = 0 ;
//$expB = -77.77;
$expB = 0 ;
$btl = [ 'players' => '' , 'timeout' => 120 , 'type' => 0 , 'invis' => 0 , 'noinc' => 0 , 'travmChance' => 0 , 'typeBattle' => 0 , 'addExp' => $expB , 'money' => 0 ];
2023-01-28 02:24:37 +00:00
$ins = mysql_query (
' INSERT INTO `battle` ( `dungeon` , `dn_id` , `x` , `y` , `city` , `time_start` , `players` , `timeout` , `type` , `invis` , `noinc` , `travmChance` , `typeBattle` , `addExp` , `money` ) VALUES (
2022-08-25 11:23:36 +00:00
" ' . $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'] . ' " ,
2023-01-28 02:24:37 +00:00
" ' . $btl['money'] . ' " ) '
);
2022-08-25 11:23:36 +00:00
$btl_id = mysql_insert_id ();
if ( $btl_id > 0 ) {
2023-01-10 16:29:32 +00:00
//Добавляем ботов
2023-01-28 02:24:37 +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' ] . '" AND `delete` = "0" LIMIT 1001'
);
2022-08-25 11:23:36 +00:00
$j = 0 ;
$logins_bot = [];
while ( $pl = mysql_fetch_assoc ( $sp )) {
$jui = 1 ;
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `dungeon_bots` SET `inBattle` = "' . $btl_id . '" WHERE `id2` = "' . $pl [ 'id2' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
while ( $jui <= $pl [ 'colvo' ]) {
$k = $u -> addNewbot ( $pl [ 'id_bot' ], null , null , $logins_bot );
$logins_bot = $k [ 'logins_bot' ];
if ( $k != false ) {
2023-01-28 02:24:37 +00:00
$upd = mysql_query (
'UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
if ( $upd ) {
2023-01-28 02:24:37 +00:00
$upd = mysql_query (
'UPDATE `stats` SET `x`="' . $bot [ 'x' ] . '",`y`="' . $bot [ 'y' ] . '",`team` = "2" WHERE `id` = "' . $k [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
if ( $upd ) {
$j ++ ;
}
}
}
$jui ++ ;
}
}
unset ( $logins_bot );
if ( $j > 0 ) {
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2023-01-10 16:29:32 +00:00
/*#$this->error = 'Нападаем ...';// <script>location="main.php?rnd='.$code.'";</script>*/ //
2022-08-25 11:23:36 +00:00
//header('location: main.php');
die ( '<script>top.frames[\'main\'].location = "main.php";</script>' );
} else {
2023-01-10 16:29:32 +00:00
$this -> error = 'Н е удалось напасть, ошибка обьекта нападения ...' ;
2022-08-25 11:23:36 +00:00
}
} else {
2023-01-10 16:29:32 +00:00
$this -> error = 'Н е удалось создать поединок ...' ;
2022-08-25 11:23:36 +00:00
}
}
} else {
2023-01-10 16:29:32 +00:00
$this -> error = 'Н е удалось напасть ...' ;
2022-08-25 11:23:36 +00:00
}
} else {
if ( isset ( $this -> bs [ 'id' ]) || $this -> info [ 'id2' ] == 15 ) {
2023-01-28 02:24:37 +00:00
$bot = mysql_fetch_assoc (
mysql_query (
'SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . mysql_real_escape_string (
$id
) . '" LIMIT 1'
)
);
if (( $u -> info [ 'x' ] != $bot [ 'x' ] || $bot [ 'y' ] != $u -> info [ 'y' ]) && $this -> testLike (
$u -> info [ 'x' ], $u -> info [ 'y' ], $bot [ 'x' ], $bot [ 'y' ]
) == 1 ) {
2023-01-10 16:29:32 +00:00
//Создаем подеинок
2023-01-28 02:24:37 +00:00
$tbtl = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `battle` WHERE `dn_id` = "' . $this -> info [ 'id' ] . '" AND `team_win` = "-1" AND `x` = "' . $bot [ 'x' ] . '" AND `y` = "' . $bot [ 'y' ] . '" LIMIT 1'
)
);
2023-01-10 16:29:32 +00:00
//die('Нападения временно запрещены. ['.$tbtl['id'].'] 5-10 мин.');
2022-08-25 11:23:36 +00:00
if ( isset ( $tbtl [ 'id' ])) {
2023-01-10 16:29:32 +00:00
//вступаем в поединок
2023-01-28 02:24:37 +00:00
$lstm = mysql_fetch_assoc (
mysql_query (
'SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle`="' . $tbtl [ 'id' ] . '" ORDER BY `st`.`team` DESC LIMIT 1'
)
);
mysql_query (
'UPDATE `users` SET `battle` = "' . $tbtl [ 'id' ] . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
$nextteam = $lstm [ 'team' ] + 1 ;
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `stats` SET `team` = "' . $nextteam . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `stats` SET `x` = "' . $bot [ 'x' ] . '", `y` = "' . $bot [ 'y' ] . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
//
if ( $this -> info [ 'bsid' ] > 0 ) {
2023-01-28 02:24:37 +00:00
$me_real = mysql_fetch_assoc (
mysql_query (
'SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "' . $u -> info [ 'id' ] . '" AND `login` = "' . $u -> info [ 'login' ] . '" LIMIT 1'
)
);
$usr_real = mysql_fetch_assoc (
mysql_query (
'SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "' . $bot [ 'id' ] . '" AND `login` = "' . $bot [ 'login' ] . '" LIMIT 1'
)
);
mysql_query (
'UPDATE `stats` SET `tactic7`= 20.000 WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2023-01-10 16:29:32 +00:00
//Заносим в лог БС
2022-08-25 11:23:36 +00:00
if ( $u -> info [ 'sex' ] == 0 ) {
2023-01-10 16:29:32 +00:00
$text = '{u1} вмешался в поединок напав на {u2} <a target=_blank href=/logs.php?log=' . $tbtl [ 'id' ] . ' >»»</a>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$text = '{u1} вмешалася в поединок напав на {u2} <a target=_blank href=/logs.php?log=' . $tbtl [ 'id' ] . ' >»»</a>' ;
2022-08-25 11:23:36 +00:00
}
if ( isset ( $usr_real [ 'id' ])) {
$usrreal = '' ;
if ( $usr_real [ 'align' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$usrreal .= '<img src=//img.new-combats.tech/i/align/align' . $usr_real [ 'align' ] . '.gif width=12 height=15 >' ;
2022-08-25 11:23:36 +00:00
}
if ( $usr_real [ 'clan' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$usrreal .= '<img src=//img.new-combats.tech/i/clan/' . $usr_real [ 'clan' ] . '.gif width=24 height=15 >' ;
2022-08-25 11:23:36 +00:00
}
2023-03-31 18:30:14 +00:00
$usrreal .= '<b>' . $usr_real [ 'login' ] . '</b>[' . $usr_real [ 'level' ] . ']<a target=_blank href=/info/' . $usr_real [ 'id' ] . ' ><img width=12 hiehgt=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$mereal = '<i>Невидимка</i>[??]' ;
2022-08-25 11:23:36 +00:00
}
if ( isset ( $me_real [ 'id' ])) {
$mereal = '' ;
if ( $me_real [ 'align' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$mereal .= '<img src=//img.new-combats.tech/i/align/align' . $me_real [ 'align' ] . '.gif width=12 height=15 >' ;
2022-08-25 11:23:36 +00:00
}
if ( $me_real [ 'clan' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$mereal .= '<img src=//img.new-combats.tech/i/clan/' . $me_real [ 'clan' ] . '.gif width=24 height=15 >' ;
2022-08-25 11:23:36 +00:00
}
2023-03-31 18:30:14 +00:00
$mereal .= '<b>' . $me_real [ 'login' ] . '</b>[' . $me_real [ 'level' ] . ']<a target=_blank href=/info/' . $me_real [ 'id' ] . ' ><img width=12 hiehgt=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$mereal = '<i>Невидимка</i>[??]' ;
2022-08-25 11:23:36 +00:00
}
$text = str_replace ( '{u1}' , $mereal , $text );
$text = str_replace ( '{u2}' , $usrreal , $text );
2023-01-10 16:29:32 +00:00
//Добавляем в лог БС
2023-01-28 02:24:37 +00:00
mysql_query (
' INSERT INTO `bs_logs` ( `type` , `text` , `time` , `id_bs` , `count_bs` , `city` , `m` , `u` ) VALUES (
" 1 " , " ' . mysql_real_escape_string( $text ) . ' " , " ' . time(
) . '", "' . $this -> bs [ 'id' ] . '", "' . $this -> bs [ 'count' ] . '", "' . $this -> bs [ 'city' ] . ' " ,
2022-08-25 11:23:36 +00:00
" ' . round( $this->bs ['money'] * 0.85, 2) . ' " , " ' . $i . ' "
2023-01-28 02:24:37 +00:00
) '
);
2022-08-25 11:23:36 +00:00
//
}
//
2023-01-10 16:29:32 +00:00
$this -> error = 'Нападаем ... <script>location="main.php?rnd=' . $code . '";</script>' ;
2022-08-25 11:23:36 +00:00
} else {
$btl_id = 0 ;
//$expB = -77.77;
if ( $this -> info [ 'id2' ] == 1 ) {
$expB = 200 ;
}
$btl = [ 'players' => '' , 'timeout' => 40 , 'type' => 0 , 'invis' => 0 , 'noinc' => 0 , 'travmChance' => 0 , 'typeBattle' => 0 , 'addExp' => $expB , 'money' => 0 , 'inTurnir' => 0 ];
if ( $this -> info [ 'bsid' ] > 0 ) {
$btl [ 'inTurnir' ] = $this -> info [ 'bsid' ];
}
2023-01-28 02:24:37 +00:00
$ins = mysql_query (
' INSERT INTO `battle` ( `inTurnir` , `dungeon` , `dn_id` , `x` , `y` , `city` , `time_start` , `players` , `timeout` , `type` , `invis` , `noinc` , `travmChance` , `typeBattle` , `addExp` , `money` ) VALUES (
2022-08-25 11:23:36 +00:00
" ' . $btl['inTurnir'] . ' " ,
" ' . $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'] . ' " ,
2023-01-28 02:24:37 +00:00
" ' . $btl['money'] . ' " ) '
);
2022-08-25 11:23:36 +00:00
$btl_id = mysql_insert_id ();
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `stats` SET `x` = "' . $bot [ 'x' ] . '", `y` = "' . $bot [ 'y' ] . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `stats` SET `x` = "' . $bot [ 'x' ] . '", `y` = "' . $bot [ 'y' ] . '" WHERE `id` = "' . $bot [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
if ( $btl_id > 0 ) {
2023-01-10 16:29:32 +00:00
//Добавляем ботов
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $bot [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
mysql_query ( 'UPDATE `stats` SET `team` = "2" WHERE `id` = "' . $bot [ 'id' ] . '" LIMIT 1' );
if ( $u -> stats [ 'hpNow' ] < 1 ) {
$u -> stats [ 'hpNow' ] = 1 ;
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `stats` SET `hpNow` = "1" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `users` SET `lose` = `lose` + 1 WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
}
if ( $bot [ 'hpNow' ] < 1 ) {
$bot [ 'hpNow' ] = 1 ;
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `stats` SET `hpNow` = "1" WHERE `id` = "' . $bot [ 'id' ] . '" LIMIT 1'
);
mysql_query (
'UPDATE `users` SET `lose` = `lose` + 1 WHERE `id` = "' . $bot [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
}
if ( $this -> info [ 'bsid' ] > 0 ) {
2023-01-28 02:24:37 +00:00
$me_real = mysql_fetch_assoc (
mysql_query (
'SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "' . $u -> info [ 'id' ] . '" AND `login` = "' . $u -> info [ 'login' ] . '" LIMIT 1'
)
);
$usr_real = mysql_fetch_assoc (
mysql_query (
'SELECT `id`,`login`,`align`,`clan`,`battle`,`level` FROM `users` WHERE `inUser` = "' . $bot [ 'id' ] . '" AND `login` = "' . $bot [ 'login' ] . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
2023-01-10 16:29:32 +00:00
//Заносим в лог БС
2022-08-25 11:23:36 +00:00
if ( $u -> info [ 'sex' ] == 0 ) {
2023-01-10 16:29:32 +00:00
$text = '{u1} напал на {u2} завязался бой <a target=_blank href=/logs.php?log=' . $btl_id . ' >»»</a>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$text = '{u1} напала на {u2} завязался бой <a target=_blank href=/logs.php?log=' . $btl_id . ' >»»</a>' ;
2022-08-25 11:23:36 +00:00
}
if ( isset ( $usr_real [ 'id' ])) {
$usrreal = '' ;
if ( $usr_real [ 'align' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$usrreal .= '<img src=//img.new-combats.tech/i/align/align' . $usr_real [ 'align' ] . '.gif width=12 height=15 >' ;
2022-08-25 11:23:36 +00:00
}
if ( $usr_real [ 'clan' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$usrreal .= '<img src=//img.new-combats.tech/i/clan/' . $usr_real [ 'clan' ] . '.gif width=24 height=15 >' ;
2022-08-25 11:23:36 +00:00
}
2023-03-31 18:30:14 +00:00
$usrreal .= '<b>' . $usr_real [ 'login' ] . '</b>[' . $usr_real [ 'level' ] . ']<a target=_blank href=/info/' . $usr_real [ 'id' ] . ' ><img width=12 hiehgt=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$mereal = '<i>Невидимка</i>[??]' ;
2022-08-25 11:23:36 +00:00
}
if ( isset ( $me_real [ 'id' ])) {
$mereal = '' ;
if ( $me_real [ 'align' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$mereal .= '<img src=//img.new-combats.tech/i/align/align' . $me_real [ 'align' ] . '.gif width=12 height=15 >' ;
2022-08-25 11:23:36 +00:00
}
if ( $me_real [ 'clan' ] > 0 ) {
2023-03-31 18:30:14 +00:00
$mereal .= '<img src=//img.new-combats.tech/i/clan/' . $me_real [ 'clan' ] . '.gif width=24 height=15 >' ;
2022-08-25 11:23:36 +00:00
}
2023-03-31 18:30:14 +00:00
$mereal .= '<b>' . $me_real [ 'login' ] . '</b>[' . $me_real [ 'level' ] . ']<a target=_blank href=/info/' . $me_real [ 'id' ] . ' ><img width=12 hiehgt=11 src=//img.new-combats.tech/i/inf_capitalcity.gif ></a>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$mereal = '<i>Невидимка</i>[??]' ;
2022-08-25 11:23:36 +00:00
}
$text = str_replace ( '{u1}' , $mereal , $text );
$text = str_replace ( '{u2}' , $usrreal , $text );
2023-01-10 16:29:32 +00:00
//Добавляем в лог БС
2023-01-28 02:24:37 +00:00
mysql_query (
' INSERT INTO `bs_logs` ( `type` , `text` , `time` , `id_bs` , `count_bs` , `city` , `m` , `u` ) VALUES (
" 1 " , " ' . mysql_real_escape_string( $text ) . ' " , " ' . time(
) . '", "' . $this -> bs [ 'id' ] . '", "' . $this -> bs [ 'count' ] . '", "' . $this -> bs [ 'city' ] . ' " ,
2022-08-25 11:23:36 +00:00
" ' . round( $this->bs ['money'] * 0.85, 2) . ' " , " ' . $i . ' "
2023-01-28 02:24:37 +00:00
) '
);
2022-08-25 11:23:36 +00:00
//
}
2023-01-10 16:29:32 +00:00
$this -> error = 'Нападаем ... <script>location="main.php?rnd=' . $code . '";</script>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$this -> error = 'Н е удалось создать поединок ...' ;
2022-08-25 11:23:36 +00:00
}
}
} else {
2023-01-10 16:29:32 +00:00
$this -> error = 'Н е удалось напасть ...' ;
2022-08-25 11:23:36 +00:00
}
} else {
2023-01-10 16:29:32 +00:00
$this -> error = 'Н е удалось напасть, слишком далеко (id' . $id . ') ...' ;
2022-08-25 11:23:36 +00:00
}
}
}
public function testDie ()
{
global $u , $c , $code ;
2023-01-28 02:24:37 +00:00
$dies = mysql_fetch_assoc (
mysql_query (
'SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $u -> info [ 'id' ] . '" AND `dn` = "' . $u -> info [ 'dnow' ] . '" AND `vars` = "die" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
$dies = $dies [ 0 ];
if ( $u -> stats [ 'hpNow' ] < 1 || $dies > 2 ) {
if ( $dies < 2 ) {
2023-01-28 02:24:37 +00:00
mysql_query (
' INSERT INTO `dungeon_actions` ( `dn` , `uid` , `x` , `y` , `time` , `vars` , `vals` ) VALUES (
" ' . $u->info ['dnow'] . ' " , " ' . $u->info ['id'] . ' " , " ' . $u->info ['x'] . ' " , " ' . $u->info ['y'] . ' " , " ' . time(
) . ' " , " die " , " "
) '
);
2023-01-10 16:29:32 +00:00
//21:50 Ярополк трагически погиб и находится в комнате "Этаж 2 - Водосток"
2023-01-28 02:24:37 +00:00
$dnow = mysql_fetch_assoc (
mysql_query ( 'SELECT id2 FROM `dungeon_now` WHERE `id` = "' . $u -> info [ 'dnow' ] . '" LIMIT 1' )
);
$room = mysql_fetch_assoc (
mysql_query (
'SELECT name FROM `dungeon_map_info` WHERE `x` = "' . $u -> info [ 'res_x' ] . '" AND `y` = "' . $u -> info [ 'res_y' ] . '" AND `id_dng` = "' . $dnow [ 'id2' ] . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( $u -> info [ 'sex' ] == 0 ) {
2023-01-28 02:24:37 +00:00
$this -> sys_chat (
'<b>' . $u -> info [ 'login' ] . '</b> трагически погиб и находится в комнате "' . $room [ 'name' ] . '"'
);
2022-08-25 11:23:36 +00:00
} else {
2023-01-28 02:24:37 +00:00
$this -> sys_chat (
'<b>' . $u -> info [ 'login' ] . '</b> трагически погибла и находится в комнате "' . $room [ 'name' ] . '"'
);
2022-08-25 11:23:36 +00:00
}
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `stats` SET `hpNow` = "1",`x` = "' . $u -> info [ 'res_x' ] . '",`y` = "' . $u -> info [ 'res_y' ] . '",`s` = "' . $u -> info [ 'res_s' ] . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
//header('location: main.php');
die ( '<script>top.frames[\'main\'].location = "main.php";</script>' );
} else {
2023-01-28 02:24:37 +00:00
mysql_query (
' INSERT INTO `dungeon_actions` ( `dn` , `uid` , `x` , `y` , `time` , `vars` , `vals` ) VALUES (
" ' . $u->info ['dnow'] . ' " , " ' . $u->info ['id'] . ' " , " ' . $u->info ['x'] . ' " , " ' . $u->info ['y'] . ' " , " ' . time(
) . ' " , " die " , " "
) '
);
2023-01-10 16:29:32 +00:00
//21:50 Ярополк трагически погиб и находится в комнате "Этаж 2 - Водосток"
2022-08-25 11:23:36 +00:00
if ( $u -> info [ 'sex' ] == 0 ) {
2023-01-10 16:29:32 +00:00
$this -> sys_chat ( '<b>' . $u -> info [ 'login' ] . '</b> трагически погиб без права на воскрешение' );
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$this -> sys_chat ( '<b>' . $u -> info [ 'login' ] . '</b> трагически погибла без права на воскрешение' );
2022-08-25 11:23:36 +00:00
}
$_GET [ 'exitd' ] = true ;
}
}
}
2023-01-10 16:29:32 +00:00
//Предметы для БС
2023-01-28 02:24:37 +00:00
public array $itbs = [ 0 => 558 , 1 => 722 , 2 => 718 , 3 => 700 , 4 => 291 , 5 => 545 , 6 => 533 , 7 => 536 , 8 => 628 , 9 => 710 , 10 => 654 , 11 => 684 , 12 => 689 , 13 => 552 , 14 => 552 , 15 => 716 , 16 => 320 , 17 => 290 , 18 => 543 , 19 => 528 , 20 => 540 , 21 => 627 , 22 => 709 , 23 => 653 , 24 => 681 , 25 => 687 , 26 => 523 , 27 => 523 , 28 => 712 , 29 => 1151 , 30 => 544 , 31 => 541 , 32 => 525 , 33 => 539 , 34 => 633 , 35 => 707 , 36 => 647 , 37 => 680 , 38 => 685 , 39 => 567 , 40 => 717 , 41 => 706 , 42 => 527 , 43 => 537 , 44 => 626 , 45 => 708 , 46 => 723 , 47 => 651 , 48 => 683 , 49 => 686 , 50 => 2862 , 51 => 2863 , 52 => 2864 ];
2022-08-25 11:23:36 +00:00
public function sys_chat ( $rtxt )
{
global $u ;
2023-01-28 02:24:37 +00:00
$cmsg = new ChatMessage ();
$cmsg -> setDn ( $u -> info [ 'dnow' ]);
$cmsg -> setCity ( $u -> info [ 'city' ]);
$cmsg -> setRoom ( $u -> info [ 'room' ]);
$cmsg -> setText ( $rtxt );
$cmsg -> setType ( 6 );
$cmsg -> setTypeTime ( 1 );
( new Chat ()) -> sendMsg ( $cmsg );
2022-08-25 11:23:36 +00:00
}
public function takeit ( $id )
{
global $u , $c , $code , $magic ;
2023-01-28 02:24:37 +00:00
$obj = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_obj` WHERE `id` = "' . $id . '" AND `for_dn` = "0" AND `dn` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( isset ( $obj [ 'id' ])) {
2023-01-28 02:24:37 +00:00
$tbot = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_bots` WHERE `x` = "' . $obj [ 'x' ] . '" AND `y` = "' . $obj [ 'y' ] . '" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
$i = 0 ;
2023-01-10 16:29:32 +00:00
# Создаем МАССИВ { $act_sl['save_pos'] = "save_pos" }или { $act_sl['port'] = "10:20" }
2022-08-25 11:23:36 +00:00
$act_sl = [];
$act_sm = explode ( '|' , $obj [ 'action' ]);
while ( $i < count ( $act_sm )) {
$s = explode ( ':' , $act_sm [ $i ]);
if ( isset ( $s [ 1 ]) && $s [ 1 ] != '' ) {
$act_sl [ $s [ 0 ]] = $s [ 1 ];
} else {
$act_sl [ $s [ 0 ]] = $s [ 0 ];
}
$i ++ ;
}
if ( isset ( $tbot [ 'id2' ])) {
2023-01-10 16:29:32 +00:00
$this -> error = 'Н е удалось, что-то или кто-то мешает ...' ;
2022-08-25 11:23:36 +00:00
} elseif ( $this -> testLike ( $u -> info [ 'x' ], $u -> info [ 'y' ], $obj [ 'x' ], $obj [ 'y' ]) != 1 ) {
2023-01-10 16:29:32 +00:00
$this -> error = 'Н е удалось, слишком далеко ...!' ;
2022-08-25 11:23:36 +00:00
} else {
$a = explode ( '|' , $obj [ 'action' ]);
$r = '' ;
$i = 0 ;
while ( $i < count ( $a )) {
$s = explode ( ':' , $a [ $i ]);
if ( $s [ 0 ] == 'kill_bot' ) {
2023-01-10 16:29:32 +00:00
//Требуется убить ботов
2022-08-25 11:23:36 +00:00
$t = explode ( ',' , $s [ 1 ]);
$tr_gd = 0 ;
2023-01-10 16:29:32 +00:00
//Проверяем кого нужно убить и убили-ли
2022-08-25 11:23:36 +00:00
$j = 1 ;
$jn = 0 ;
while ( $j < count ( $t )) {
$itm = explode ( '.' , $t [ $j ]);
//[0] - x , [1] - y
2023-01-28 02:24:37 +00:00
$bot_itm = mysql_fetch_assoc (
mysql_query (
'SELECT `u`.`id2`,`st`.`login` FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE `u`.`dn` = "' . $u -> info [ 'dnow' ] . '" AND `u`.`x` = "' . $itm [ 0 ] . '" AND `u`.`y` = "' . $itm [ 1 ] . '" AND `u`.`delete` = "0" LIMIT 10'
)
);
2022-08-25 11:23:36 +00:00
if ( isset ( $bot_itm [ 'id2' ])) {
$jn ++ ;
}
$j ++ ;
}
if ( $jn == 0 ) {
$tr_gd = 1 ;
}
unset ( $itm , $bot_itm , $jn );
if ( $tr_gd == 0 ) {
if ( $t [ 0 ] == '0' ) {
2023-01-10 16:29:32 +00:00
$r .= 'Н е удалось, что-то или кто-то мешает ...' ;
2022-08-25 11:23:36 +00:00
} else {
$r .= $t [ 0 ];
}
$i = count ( $a );
}
} elseif ( $s [ 0 ] == 'kill_bot_d' ) {
2023-01-10 16:29:32 +00:00
//Требуется убить ботов (все боты нападают , если что-то не так )
2022-08-25 11:23:36 +00:00
$t = explode ( ',' , $s [ 1 ]);
$tr_gd = 0 ;
2023-01-10 16:29:32 +00:00
//Проверяем кого нужно убить и убили-ли
2022-08-25 11:23:36 +00:00
$j = 1 ;
$jn = 0 ;
2023-01-28 02:24:37 +00:00
$tuz = mysql_fetch_assoc (
mysql_query (
'SELECT `x`,`y`,`id`,`hpNow` FROM `stats` WHERE `dnow` = "' . $this -> info [ 'id' ] . '" AND ( (`x` = ' . ( $pl [ 'x' ] + 1 ) . ' AND `y` = ' . ( $pl [ 'y' ]) . ') OR (`x` = ' . ( $pl [ 'x' ] - 1 ) . ' AND `y` = ' . ( $pl [ 'y' ]) . ') OR (`x` = ' . ( $pl [ 'x' ]) . ' AND `y` = ' . ( $pl [ 'y' ] + 1 ) . ') OR (`x` = ' . ( $pl [ 'x' ]) . ' AND `y` = ' . ( $pl [ 'y' ] - 1 ) . ') ) LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
while ( $j < count ( $t )) {
$itm = explode ( '.' , $t [ $j ]);
//[0] - x , [1] - y
2023-01-28 02:24:37 +00:00
$bot_itm_sp = mysql_query (
'SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE `u`.`dn` = "' . $u -> info [ 'dnow' ] . '" AND `u`.`x` = "' . $itm [ 0 ] . '" AND `u`.`y` = "' . $itm [ 1 ] . '" AND `u`.`delete` = "0" LIMIT 50'
);
2022-08-25 11:23:36 +00:00
while ( $bot_itm = mysql_fetch_assoc ( $bot_itm_sp )) {
$jn ++ ;
$this -> botAtack ( $bot_itm , $u -> info , 1 );
}
$j ++ ;
}
if ( $jn == 0 ) {
$tr_gd = 1 ;
}
unset ( $itm , $bot_itm , $jn );
if ( $tr_gd == 0 ) {
if ( $t [ 0 ] == '0' ) {
2023-01-10 16:29:32 +00:00
$r .= 'Н е удалось, что-то или кто-то мешает ...' ;
2022-08-25 11:23:36 +00:00
} else {
$r .= $t [ 0 ];
}
2023-01-10 16:29:32 +00:00
$r .= ' Монстры начали атаковать вас!' ;
2022-08-25 11:23:36 +00:00
$i = count ( $a );
}
} elseif ( $s [ 0 ] == 'ditm' ) {
2023-01-10 16:29:32 +00:00
//требует предмет для действия
2022-08-25 11:23:36 +00:00
$j = 0 ;
$t = explode ( ',' , $s [ 1 ]);
$tr_gd = 1 ;
while ( $j < count ( $t )) {
$itm = explode ( '=' , $t [ $j ]);
2023-01-28 02:24:37 +00:00
$uitm = mysql_fetch_array (
mysql_query ( 'SELECT `name` FROM `items_main` WHERE `id` = "' . $itm [ 0 ] . '" LIMIT 1' )
);
mysql_query (
'UPDATE `items_users` SET `delete` = "' . time (
) . '" WHERE `item_id` = "' . $itm [ 0 ] . '" AND `uid` = "' . $u -> info [ 'id' ] . '" AND (`delete` = 0 OR `delete` = 100) AND `inShop` = 0 AND `inTransfer` = 0 AND `inOdet` = 0 LIMIT ' . $itm [ 1 ]
);
2023-01-10 16:29:32 +00:00
$r .= 'Предмет "<b>' . $uitm [ 'name' ] . '</b>" (x' . $itm [ 1 ] . ') был утрачен...<br>' ;
2022-08-25 11:23:36 +00:00
$j ++ ;
}
} elseif ( $s [ 0 ] == 'tritm' ) {
2023-01-10 16:29:32 +00:00
//требует предмет для действия
2022-08-25 11:23:36 +00:00
$j = 0 ;
$t = explode ( ',' , $s [ 1 ]);
$j = 0 ;
$tr_gd = 1 ;
while ( $j < count ( $t )) {
$itm = explode ( '=' , $t [ $j ]);
2023-01-28 02:24:37 +00:00
$uitm = mysql_fetch_array (
mysql_query (
'SELECT COUNT(`id`) FROM `items_users` WHERE `item_id` = "' . $itm [ 0 ] . '" AND `uid` = "' . $u -> info [ 'id' ] . '" AND (`delete` = 0 OR `delete` = 100) AND `inShop` = 0 AND `inTransfer` = 0 AND `inOdet` = 0 LIMIT ' . $itm [ 1 ]
)
);
2022-08-25 11:23:36 +00:00
$uitm = $uitm [ 0 ];
if ( $uitm < $itm [ 1 ]) {
$tr_gd = 0 ;
2023-01-28 02:24:37 +00:00
$uitm = mysql_fetch_assoc (
mysql_query (
'SELECT `name` FROM `items_main` WHERE `id` = "' . $itm [ 0 ] . '" LIMIT 1'
)
);
2023-01-10 16:29:32 +00:00
$r .= 'Требуется предмет "<b>' . $uitm [ 'name' ] . '</b>" (x' . $itm [ 1 ] . ')<br>' ;
2022-08-25 11:23:36 +00:00
}
$j ++ ;
}
if ( rand ( 0 , 10000 ) > $itm [ 2 ] * 100 ) {
$tr_gd = 0 ;
2023-01-10 16:29:32 +00:00
$r .= 'Странно, но ничего не произошло...<br>' ;
2022-08-25 11:23:36 +00:00
}
if ( $tr_gd == 1 ) {
2023-01-10 16:29:32 +00:00
//все отлично
2022-08-25 11:23:36 +00:00
} else {
$i = count ( $a );
}
} elseif ( $s [ 0 ] == 'repl_ptp' ) {
require_once ( 'dnaction/_dungeon_replace.php' );
die ();
//header('Location: ../../modules_data/location/_dungeon_replace.php');
} elseif ( $s [ 0 ] == 'add_eff' ) {
2023-01-10 16:29:32 +00:00
//Кастуем эффект
2022-08-25 11:23:36 +00:00
$t = explode ( ',' , $s [ 1 ]);
$j = 0 ;
while ( $j < count ( $t )) {
$itm = explode ( '=' , $t [ $j ]);
2023-01-28 02:24:37 +00:00
$ch = $u -> testAction (
'`vars` = "add_eff_' . $this -> info [ 'id' ] . '_' . $obj [ 'id' ] . '" AND `uid` = "' . $u -> info [ 'id' ] . '" LIMIT ' . ( 1 + ( int ) $itm [ 2 ]) . '' ,
2
); //кол-во прошлых попыток
2022-08-25 11:23:36 +00:00
$ch = $ch [ 0 ];
2023-01-28 02:24:37 +00:00
$ch2 = $u -> testAction (
' `vars` = "add_eff_' . $this -> info [ 'id' ] . '_' . $obj [ 'id' ] . '" LIMIT ' . ( 1 + ( int ) $itm [ 4 ]) . '' ,
2
); //кол-во прошлых попыток (все юзеры)
2022-08-25 11:23:36 +00:00
$ch2 = $ch2 [ 0 ];
if (( $ch2 < $itm [ 4 ] || $itm [ 4 ] == 0 ) && $ch < $itm [ 2 ]) {
if ( $itm [ 1 ] * 100 >= rand ( 0 , 10000 )) {
2023-01-10 16:29:32 +00:00
//удачно
2023-01-28 02:24:37 +00:00
$eff_d = mysql_fetch_assoc (
mysql_query (
'SELECT `id2`,`mname` FROM `eff_main` WHERE `id2` = "' . $itm [ 0 ] . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( isset ( $eff_d [ 'id2' ])) {
2023-01-10 16:29:32 +00:00
//добавляем эффект
2022-08-25 11:23:36 +00:00
$us = $magic -> add_eff ( $u -> info [ 'id' ], $itm [ 0 ], 1 );
if ( $us [ 0 ] == 1 ) {
2023-01-10 16:29:32 +00:00
$r .= '<div>Н а В а с наложили заклятие "' . $eff_d [ 'mname' ] . '".</div>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$r .= '<div>Что-то пошло не так... Ощущается чье-то присутствие...</div>' ;
2022-08-25 11:23:36 +00:00
}
} else {
2023-01-10 16:29:32 +00:00
$r .= '<div>Что-то пошло не так... Слышен чей-то вой...</div>' ;
2022-08-25 11:23:36 +00:00
}
unset ( $eff_d , $us );
} else {
2023-01-10 16:29:32 +00:00
//не удачно
$r .= '<div>Н е удалось...</div>' ;
2022-08-25 11:23:36 +00:00
}
2023-01-28 02:24:37 +00:00
$u -> addAction (
time (), 'add_eff_' . $this -> info [ 'id' ] . '_' . $obj [ 'id' ], $u -> info [ 'city' ]
);
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
//уже нельзя юзать
$r .= '<div>Что-то пошло не так...</div>' ;
2022-08-25 11:23:36 +00:00
}
unset ( $ch , $ch2 );
$j ++ ;
}
} elseif ( $s [ 0 ] == 'mfast' ) {
2023-01-10 16:29:32 +00:00
//Добавляем баф //Ловушки и бафы
2022-08-25 11:23:36 +00:00
$j = 0 ;
$t = explode ( ',' , $s [ 1 ]);
while ( $j < count ( $t )) {
$itm = explode ( '=' , $t [ $j ]);
2023-01-28 02:24:37 +00:00
$ch = $u -> testAction (
'`vars` = "bafit_' . $this -> info [ 'id' ] . '_' . $obj [ 'id' ] . '" LIMIT ' . ( 1 + ( int ) $itm [ 2 ]) . '' ,
2
); //кол-во прошлых попыток
2022-08-25 11:23:36 +00:00
$ch = $ch [ 0 ];
if ( $ch < $itm [ 3 ]) {
if ( $itm [ 2 ] * 1000 >= rand ( 1 , 100000 )) {
if ( $itm [ 0 ] == 'hpNow' ) {
$mm = explode ( 'r' , $itm [ 1 ]);
if ( $mm [ 1 ] != 0 ) {
$itm [ 1 ] = rand ( $mm [ 0 ], $mm [ 1 ]);
}
if ( $itm [ 1 ] < 0 ) {
2023-01-10 16:29:32 +00:00
$r .= '<div>Вы попали в ловушку... Здоровье: <b>' . $itm [ 1 ] . ' HP</b></div>' ;
2022-08-25 11:23:36 +00:00
} elseif ( $itm [ 1 ] > 0 ) {
2023-01-10 16:29:32 +00:00
$r .= '<div>Вы прикоснулись к магии... Здоровье: <b>+' . $itm [ 1 ] . ' HP</b></div>' ;
2022-08-25 11:23:36 +00:00
}
$u -> info [ 'hpNow' ] += $itm [ 1 ];
if ( $u -> info [ 'hpNow' ] < 1 ) {
2023-01-10 16:29:32 +00:00
$r .= '<div>Вы перемещены в точку возрождения...</div>' ;
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `stats` SET `hpNow` = "' . $u -> info [ 'hpNow' ] . '",`x` = "' . $u -> info [ 'res_x' ] . '",`y` = "' . $u -> info [ 'res_y' ] . '",`s` = "' . $u -> info [ 'res_s' ] . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
} else {
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `stats` SET `hpNow` = "' . $u -> info [ 'hpNow' ] . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
}
}
}
2023-01-28 02:24:37 +00:00
$u -> addAction (
time (), 'bafit_' . $this -> info [ 'id' ] . '_' . $obj [ 'id' ], $u -> info [ 'city' ]
);
2022-08-25 11:23:36 +00:00
}
2023-01-10 16:29:32 +00:00
//записываем попытку
2022-08-25 11:23:36 +00:00
$j ++ ;
}
} elseif ( $s [ 0 ] == 'save_pos' ) {
if ( isset ( $act_sl [ 'port' ])) {
$itm = explode ( '=' , $act_sl [ 'port' ]);
$obj [ 'x' ] = $itm [ 0 ];
$obj [ 'y' ] = $itm [ 1 ];
}
2023-01-10 16:29:32 +00:00
#$r .= 'Позиция сохранена. Теперь после смерти вы оживете здесь.';
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `stats` SET `res_x` = "' . $obj [ 'x' ] . '",`res_y` = "' . $obj [ 'y' ] . '",`res_s` = "' . $u -> info [ 's' ] . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
} elseif ( $s [ 0 ] == 'look_text' ) {
$itm = explode ( '=' , $s [ 1 ]);
$r .= $itm [ rand ( 0 , count ( $itm ) - 1 )];
} elseif ( $s [ 0 ] == 'save_pos_xy' ) {
$itm = explode ( '=' , $s [ 1 ]);
$u -> info [ 'res_x' ] = $itm [ 0 ];
$u -> info [ 'res_y' ] = $itm [ 1 ];
2023-01-28 02:24:37 +00:00
$upd = mysql_query (
'UPDATE `stats` SET `res_x` = "' . $u -> info [ 'x' ] . '",`res_y` = "' . $u -> info [ 'y' ] . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
if ( $upd ) {
2023-01-10 16:29:32 +00:00
$r .= 'Вы куда-то переместились... на этот раз удачно...<br>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$r .= 'Что-то здесь не так ...' ;
2022-08-25 11:23:36 +00:00
}
} elseif ( $s [ 0 ] == 'port' ) {
2023-01-10 16:29:32 +00:00
//телепортирует пользователя
2022-08-25 11:23:36 +00:00
$itm = explode ( '=' , $s [ 1 ]);
$u -> info [ 'x' ] = $itm [ 0 ];
$u -> info [ 'y' ] = $itm [ 1 ];
2023-01-28 02:24:37 +00:00
$upd = mysql_query (
' UPDATE `stats` SET
2022-08-25 11:23:36 +00:00
`x` = " ' . $u->info ['x'] . ' " , `y` = " ' . $u->info ['y'] . ' "
2023-01-28 02:24:37 +00:00
WHERE `id` = " ' . $u->info ['id'] . ' " LIMIT 1 '
);
2022-08-25 11:23:36 +00:00
if ( $upd ) {
2023-01-10 16:29:32 +00:00
$r .= 'Вы куда-то переместились... на этот раз удачно...<br>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$r .= 'Что-то здесь не так ...' ;
2022-08-25 11:23:36 +00:00
}
} elseif ( $s [ 0 ] == 'save_port' ) {
$itm = explode ( '=' , $s [ 1 ]);
$u -> info [ 'res_x' ] = $itm [ 0 ];
$u -> info [ 'res_y' ] = $itm [ 1 ];
2023-01-28 02:24:37 +00:00
$upd = mysql_query (
'UPDATE `stats` SET `res_x` = "' . $u -> info [ 'res_x' ] . '", `res_y` = "' . $u -> info [ 'res_y' ] . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
} elseif ( $s [ 0 ] == 'itm' ) {
2023-01-10 16:29:32 +00:00
//Добавляем предмет
2022-08-25 11:23:36 +00:00
$j = 0 ;
$t = explode ( ',' , $s [ 1 ]);
while ( $j < count ( $t )) {
$itm = explode ( '=' , $t [ $j ]);
2023-01-28 02:24:37 +00:00
$ch = $u -> testAction (
'`uid` = "' . $u -> info [ 'id' ] . '" AND `vars` = "takeit_' . $this -> info [ 'id' ] . '_' . $obj [ 'id' ] . '" LIMIT ' . ( 1 + ( int ) $itm [ 2 ]) . '' ,
2
); //кол-во прошлых попыток
2022-08-25 11:23:36 +00:00
$ch = $ch [ 0 ];
if ( $ch >= $itm [ 2 ]) {
2023-01-10 16:29:32 +00:00
//закончились попытки
$r = 'ничего не произошло...<br>' ;
2022-08-25 11:23:36 +00:00
} else {
if ( $itm [ 1 ] * 1000 >= rand ( 1 , 100000 )) {
2023-01-10 16:29:32 +00:00
//Случайный предмет (Башня смерти)
2022-08-25 11:23:36 +00:00
if ( $itm [ 0 ] == 'random1' ) {
$itm [ 0 ] = $this -> itbs [ rand ( 0 , count ( $this -> itbs ))];
}
2023-01-10 16:29:32 +00:00
//удачная попытка
2023-01-28 02:24:37 +00:00
$it = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `items_main` WHERE `id`="' . (( int ) $itm [ 0 ]) . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( isset ( $it [ 'id' ])) {
2023-01-10 16:29:32 +00:00
$r .= 'Вы обнаружили предмет "<b>' . $it [ 'name' ] . '</b>".<br>' ;
2023-01-28 02:24:37 +00:00
$this -> addItem (
[ 'uid' => $u -> info [ 'id' ], 'iid' => $it [ 'id' ], 'time' => time (
), 'x' => $u -> info [ 'x' ], 'y' => $u -> info [ 'y' ], 'bid' => 0 , 'del' => ( int ) $itm [ 4 ]]
);
2022-08-25 11:23:36 +00:00
}
} else {
2023-01-10 16:29:32 +00:00
//неудачная попытка
$r .= 'Вы ничего не нашли ...<br>' ;
2022-08-25 11:23:36 +00:00
}
2023-01-28 02:24:37 +00:00
$u -> addAction (
time (), 'takeit_' . $this -> info [ 'id' ] . '_' . $obj [ 'id' ], $u -> info [ 'city' ]
);
2022-08-25 11:23:36 +00:00
}
2023-01-10 16:29:32 +00:00
//записываем попытку
2022-08-25 11:23:36 +00:00
$j ++ ;
}
} elseif ( $s [ 0 ] == 'itm1' ) {
2023-01-10 16:29:32 +00:00
//Добавляем предмет , только 1 предмет из всех и все юзеры могут тоже
2022-08-25 11:23:36 +00:00
$nj = 0 ;
$t = explode ( ',' , $s [ 1 ]);
$j = rand ( 0 , count ( $t ));
if ( $nj == 0 ) {
$itm = explode ( '=' , $t [ $j ]);
2023-01-28 02:24:37 +00:00
$ch = $u -> testAction (
'`uid` = "' . $u -> info [ 'id' ] . '" AND `vars` = "takeit_' . $this -> info [ 'id' ] . '_' . $obj [ 'id' ] . '" LIMIT ' . ( 1 + ( int ) $itm [ 2 ]) . '' ,
2
); //кол-во прошлых попыток
2022-08-25 11:23:36 +00:00
$ch = $ch [ 0 ];
if ( $ch >= $itm [ 2 ]) {
2023-01-10 16:29:32 +00:00
//закончились попытки
$r .= 'Странно, но ничего не произошло... <br>' ;
2022-08-25 11:23:36 +00:00
} else {
if ( $itm [ 1 ] * 1000 >= rand ( 1 , 100000 )) {
2023-01-10 16:29:32 +00:00
//Случайный предмет (Башня смерти)
2022-08-25 11:23:36 +00:00
if ( $itm [ 0 ] == 'random1' ) {
$itm [ 0 ] = $this -> itbs [ rand ( 0 , count ( $this -> itbs ))];
}
2023-01-10 16:29:32 +00:00
//удачная попытка
2023-01-28 02:24:37 +00:00
$it = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `items_main` WHERE `id`="' . (( int ) $itm [ 0 ]) . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( isset ( $it [ 'id' ])) {
2023-01-10 16:29:32 +00:00
$r .= 'Вы обнаружили предмет "<b>' . $it [ 'name' ] . '</b>".<br>' ;
2023-01-28 02:24:37 +00:00
$u -> addAction (
time (), 'takeit_' . $this -> info [ 'id' ] . '_' . $obj [ 'id' ], $u -> info [ 'city' ]
);
$this -> addItem (
[ 'uid' => $u -> info [ 'id' ], 'iid' => $it [ 'id' ], 'time' => time (
), 'x' => $u -> info [ 'x' ], 'y' => $u -> info [ 'y' ], 'bid' => 0 , 'del' => ( int ) $itm [ 4 ]]
);
2022-08-25 11:23:36 +00:00
$nj ++ ;
}
} else {
2023-01-10 16:29:32 +00:00
//неудачная попытка
2023-01-28 02:24:37 +00:00
$u -> addAction (
time (), 'takeit_' . $this -> info [ 'id' ] . '_' . $obj [ 'id' ], $u -> info [ 'city' ]
);
2023-01-10 16:29:32 +00:00
$r .= 'Вы ничего не нашли ... <br>' ;
2022-08-25 11:23:36 +00:00
}
}
}
} elseif ( $s [ 0 ] == 'itm2' ) {
2023-01-10 16:29:32 +00:00
//Добавляем предмет , только 1 предмет из всех и только 1 юзер может поднять
2022-08-25 11:23:36 +00:00
$nj = 0 ;
$t = explode ( ',' , $s [ 1 ]);
$j = rand ( 0 , count ( $t ) - 1 );
if ( $nj == 0 ) {
$itm = explode ( '=' , $t [ $j ]);
2023-01-28 02:24:37 +00:00
$ch = $u -> testAction (
'`vars` = "takeit_' . $this -> info [ 'id' ] . '_' . $obj [ 'id' ] . '" LIMIT ' . ( 1 + ( int ) $itm [ 2 ]) . '' ,
2
); //кол-во прошлых попыток
2022-08-25 11:23:36 +00:00
$ch = $ch [ 0 ];
if ( $ch >= $itm [ 2 ]) {
2023-01-10 16:29:32 +00:00
//закончились попытки
$r .= 'Ничего не произошло... <br>' ;
2022-08-25 11:23:36 +00:00
} else {
if ( $itm [ 1 ] * 1000 >= rand ( 1 , 100000 )) {
2023-01-10 16:29:32 +00:00
//Случайный предмет (Башня смерти)
2022-08-25 11:23:36 +00:00
if ( $itm [ 0 ] == 'random1' ) {
$itm [ 0 ] = $this -> itbs [ rand ( 0 , count ( $this -> itbs ))];
}
2023-01-10 16:29:32 +00:00
//удачная попытка
2023-01-28 02:24:37 +00:00
$it = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `items_main` WHERE `id`="' . (( int ) $itm [ 0 ]) . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( isset ( $it [ 'id' ])) {
2023-01-10 16:29:32 +00:00
$r .= 'Вы обнаружили предмет "<b>' . $it [ 'name' ] . '</b>".<br>' ;
2023-01-28 02:24:37 +00:00
$u -> addAction (
time (), 'takeit_' . $this -> info [ 'id' ] . '_' . $obj [ 'id' ], $u -> info [ 'city' ]
);
$this -> addItem (
[ 'uid' => $u -> info [ 'id' ], 'iid' => $it [ 'id' ], 'time' => time (
), 'x' => $u -> info [ 'x' ], 'y' => $u -> info [ 'y' ], 'bid' => 0 , 'del' => ( int ) $itm [ 4 ]]
);
2022-08-25 11:23:36 +00:00
$nj ++ ;
}
} else {
2023-01-10 16:29:32 +00:00
//неудачная попытка
2023-01-28 02:24:37 +00:00
$u -> addAction (
time (), 'takeit_' . $this -> info [ 'id' ] . '_' . $obj [ 'id' ], $u -> info [ 'city' ]
);
2023-01-10 16:29:32 +00:00
$r .= 'Вы ничего не нашли ... <br>' ;
2022-08-25 11:23:36 +00:00
}
}
}
} elseif ( $s [ 0 ] == 'fileact' ) {
require ( 'dnaction/' . $s [ 1 ] . '.php' );
}
$i ++ ;
}
$r = rtrim ( $r , '\<br\>' );
if ( $r == '' ) {
2023-01-10 16:29:32 +00:00
$r = 'В этот раз не удалось найти что-либо еще' ;
2022-08-25 11:23:36 +00:00
}
$this -> error = $r ;
}
} else {
2023-01-10 16:29:32 +00:00
$this -> error = 'Предмет не найден ...' ;
2022-08-25 11:23:36 +00:00
}
}
public function addItem ( $i )
{
2023-01-10 16:29:32 +00:00
//добавляем предмет в пещеру (возможно выпал из бота или из сундука)
2023-01-28 02:24:37 +00:00
return mysql_query (
'INSERT INTO `dungeon_items` (`dn`,`user`,`item_id`,`time`,`x`,`y`,`bot`,`del`) VALUES ("' . $this -> info [ 'id' ] . '","' . $i [ 'uid' ] . '","' . $i [ 'iid' ] . '","' . $i [ 'time' ] . '","' . $i [ 'x' ] . '","' . $i [ 'y' ] . '","' . $i [ 'bid' ] . '","' . (( int ) $i [ 'del' ]) . '")'
);
2022-08-25 11:23:36 +00:00
}
public function takeinv ( $id )
{
global $u , $c , $code ;
2023-01-28 02:24:37 +00:00
$obj = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_items` WHERE `id` = "' . $id . '" AND `for_dn` = "0" AND `dn` = "' . $this -> info [ 'id' ] . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( isset ( $obj [ 'id' ])) {
$this -> test_luck ( $id );
2023-01-28 02:24:37 +00:00
$fxv = [ 'luck_count' => mysql_fetch_assoc (
mysql_query (
'SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "' . $this -> info [ 'id' ] . '" AND `vars` = "luck_itm' . mysql_real_escape_string (
$id
) . '" LIMIT 1'
)
), 'user_count' => mysql_fetch_assoc (
mysql_query ( 'SELECT COUNT(*) FROM `stats` WHERE `dnow` = "' . $this -> info [ 'id' ] . '" LIMIT 1' )
)];
2022-08-25 11:23:36 +00:00
if ( $obj [ 'user' ] == 0 && $fxv [ 'user_count' ][ 0 ] > $fxv [ 'luck_count' ][ 0 ] && $fxv [ 'user_count' ][ 0 ] > 1 && $this -> info [ 'bsid' ] == 0 ) {
2023-01-28 02:24:37 +00:00
$this -> error = 'Вы не можете сейчас поднять этот предмет, дождитесь завершения розыгрыша. Осталось ' . $u -> timeOut (
$obj [ 'time' ] - time () + 300
);
2022-08-25 11:23:36 +00:00
} elseif ( $u -> info [ 'x' ] != $obj [ 'x' ] || $obj [ 'y' ] != $u -> info [ 'y' ]) {
2023-01-10 16:29:32 +00:00
$this -> error = 'Предмет не найден ...' ;
2022-08-25 11:23:36 +00:00
} else {
if ( $obj [ 'take' ] > 0 ) {
2023-01-10 16:29:32 +00:00
$this -> error = 'Кто-то опередил вас ...' ;
2022-08-25 11:23:36 +00:00
} else {
if ( $obj [ 'user' ] > 0 && $obj [ 'user' ] != $u -> info [ 'id' ] && $obj [ 'time' ] > time () - 300 ) {
2023-01-28 02:24:37 +00:00
$uo = mysql_fetch_assoc (
mysql_query (
'SELECT `id`,`login`,`sex` FROM `users` WHERE `id` = "' . $obj [ 'user' ] . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
}
if ( isset ( $uo [ 'id' ])) {
2023-01-10 16:29:32 +00:00
$this -> error = 'Предмет предназначен для "' . $uo [ 'login' ] . '". Вы сможете забрать этот предмет, если ' ;
2022-08-25 11:23:36 +00:00
if ( $uo [ 'sex' ] == 1 ) {
2023-01-10 16:29:32 +00:00
$this -> error .= 'она ' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$this -> error .= 'он ' ;
2022-08-25 11:23:36 +00:00
}
2023-01-28 02:24:37 +00:00
$this -> error .= ' не поднимет е г о в течении ' . ceil (
5 - ( time () - $obj [ 'time' ]) / 60
) . ' мин.' ;
2022-08-25 11:23:36 +00:00
unset ( $uo );
} else {
2023-01-28 02:24:37 +00:00
$upd = mysql_query (
'UPDATE `dungeon_items` SET `take` = "' . $u -> info [ 'id' ] . '" WHERE `id` = "' . $obj [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
if ( $upd ) {
2023-01-28 02:24:37 +00:00
$it = mysql_fetch_assoc (
mysql_query ( 'SELECT * FROM `items_main` WHERE `id` = "' . $obj [ 'item_id' ] . '" LIMIT 1' )
);
2022-08-25 11:23:36 +00:00
if ( isset ( $it [ 'id' ])) {
$data = '|noremont=1|frompisher=' . $this -> info [ 'id2' ];
if ( $it [ 'ts' ] != 0 ) {
$data .= '|sudba=' . $u -> info [ 'login' ];
}
if ( $obj [ 'data' ] != '' ) {
$data .= $obj [ 'data' ];
}
$data = str_replace ( '|sudba=-1' , '|sudba=' . $u -> info [ 'login' ] . '' , $data );
2023-04-15 23:54:34 +00:00
$idl = \User\ItemsModel :: addItem ( $obj [ 'item_id' ], $u -> info [ 'id' ], $data , $obj );
2022-08-25 11:23:36 +00:00
if ( $obj [ 'del' ] > 0 ) {
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `items_users` SET `dn_delete` = 1 WHERE `id` = "' . $idl . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
}
unset ( $idl );
if ( $this -> info [ 'bsid' ] == 0 ) {
2023-01-10 16:29:32 +00:00
$rtxt = '<b>' . $u -> info [ 'login' ] . '</b> поднял предмет "' . $it [ 'name' ] . '"' ;
2022-08-25 11:23:36 +00:00
if ( $obj [ 'quest' ] > 0 ) {
2023-01-10 16:29:32 +00:00
$rtxt .= ' (Квест)' ;
2022-08-25 11:23:36 +00:00
}
2023-01-28 02:24:37 +00:00
$this -> sys_chat ( $rtxt );
2022-08-25 11:23:36 +00:00
}
2023-01-10 16:29:32 +00:00
$this -> error = 'Вы подняли "' . $it [ 'name' ] . '"' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$this -> error = 'Н е удалось найти предмет ...' ;
2022-08-25 11:23:36 +00:00
}
} else {
2023-01-10 16:29:32 +00:00
$this -> error = 'Н е удалось добавить предмет в инвентарь ...' ;
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 test_luck ( $id )
{
global $u ;
2023-01-28 02:24:37 +00:00
$fxv = [ 'itm' => mysql_fetch_assoc (
mysql_query (
'SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`dn` = "' . $this -> info [ 'id' ] . '" AND `ish`.`id` = "' . mysql_real_escape_string (
$id
) . '" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" AND `ish`.`x` = "' . $u -> info [ 'x' ] . '" AND `ish`.`y` = "' . $u -> info [ 'y' ] . '" LIMIT 1'
)
), 'luck_count' => mysql_fetch_assoc (
mysql_query (
'SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "' . $this -> info [ 'id' ] . '" AND `vars` = "luck_itm' . mysql_real_escape_string (
$id
) . '" LIMIT 1'
)
), 'user_count' => mysql_fetch_assoc (
mysql_query ( 'SELECT COUNT(*) FROM `stats` WHERE `dnow` = "' . $this -> info [ 'id' ] . '" LIMIT 1' )
)];
2022-08-25 11:23:36 +00:00
$fxv [ 'luck_count' ] = $fxv [ 'luck_count' ][ 0 ];
$fxv [ 'user_count' ] = $fxv [ 'user_count' ][ 0 ];
2023-01-28 02:24:37 +00:00
if (( $fxv [ 'luck_count' ] >= $fxv [ 'user_count' ] || $fxv [ 'itm' ][ 'time' ] + 300 < time (
)) && ! empty ( $fxv [ 'itm' ][ 'user' ])) {
$fxv [ 'sp' ] = mysql_query (
'SELECT * FROM `dungeon_actions` WHERE `dn` = "' . $this -> info [ 'id' ] . '" AND `vars` = "luck_itm' . mysql_real_escape_string (
$id
) . '" ORDER BY `vals` DESC LIMIT ' . $fxv [ 'luck_count' ] . ''
);
2022-08-25 11:23:36 +00:00
$fxv [ 'winner' ] = [];
$fxv [ 'win_val' ] = 0 ;
unset ( $fxv [ 'pl' ], $fxv [ 'sp' ]);
if ( count ( $fxv [ 'winner' ]) > 1 ) {
2023-01-10 16:29:32 +00:00
//Розыгрыш еще раз между победителями
$this -> error .= '<div>Розыгрыш завершен!</div>' ;
2022-08-25 11:23:36 +00:00
} elseif ( count ( $fxv [ 'winner' ]) == 1 ) {
2023-01-28 02:24:37 +00:00
$fxv [ 'user_win' ] = mysql_fetch_assoc (
mysql_query (
'SELECT `id`,`login`,`sex` FROM `users` WHERE `id` = "' . $fxv [ 'winner' ][ 0 ] . '" LIMIT 1'
)
);
2023-01-10 16:29:32 +00:00
$fxv [ 'text' ] = '<b>' . $fxv [ 'user_win' ][ 'login' ] . '</b> выигрывает в споре за предмет "' . $fxv [ 'itm' ][ 'name' ] . '"' ;
2022-08-25 11:23:36 +00:00
$this -> sys_chat ( $fxv [ 'text' ]);
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `dungeon_items` SET `time` = "' . time (
) . '",`user` = "' . $fxv [ 'user_win' ][ 'id' ] . '" WHERE `id` = "' . $fxv [ 'itm' ][ 'id' ] . '" LIMIT 1'
);
2023-01-10 16:29:32 +00:00
$this -> error .= '<div>Розыгрыш завершен! Победитель <b>' . $fxv [ 'user_win' ][ 'login' ] . '</b>!</div>' ;
2022-08-25 11:23:36 +00:00
}
} else {
2023-01-28 02:24:37 +00:00
$this -> error .= '<div>У остальных участников осталось ' . $u -> timeOut (
$fxv [ 'itm' ][ 'time' ] + 300 - time ()
) . ' мин. до конца розыгрыша</div>' ;
2022-08-25 11:23:36 +00:00
}
unset ( $fxv );
}
public function itm_luck ( $id )
{
global $u ;
2023-01-28 02:24:37 +00:00
$fxv = [ 'itm' => mysql_fetch_assoc (
mysql_query (
'SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`dn` = "' . $this -> info [ 'id' ] . '" AND `ish`.`id` = "' . mysql_real_escape_string (
$id
) . '" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" AND `ish`.`x` = "' . $u -> info [ 'x' ] . '" AND `ish`.`y` = "' . $u -> info [ 'y' ] . '" LIMIT 1'
)
), 'luck' => mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_actions` WHERE `uid` = "' . $u -> info [ 'id' ] . '" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `vars` = "luck_itm' . mysql_real_escape_string (
$id
) . '" LIMIT 1'
)
), 'luck2' => mysql_fetch_assoc (
mysql_query (
'SELECT COUNT(*) FROM `dungeon_actions` WHERE `uid` = "' . $u -> info [ 'id' ] . '" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `vars` = "luck_itm' . mysql_real_escape_string (
$id
) . '" LIMIT 1'
)
)];
2023-01-10 16:29:32 +00:00
if ( $u -> stats [ 'silver' ] >= 3 ) { //дополнительный бросок
2022-08-25 11:23:36 +00:00
$fxv [ 'luck2' ][ 0 ] -- ;
}
if ( $fxv [ 'itm' ][ 'user' ] > 0 ) {
2023-01-10 16:29:32 +00:00
$this -> error = 'Розыгрыш предмет уже завершился...' ;
2022-08-25 11:23:36 +00:00
} elseif ( ! isset ( $fxv [ 'itm' ][ 'id' ])) {
2023-01-10 16:29:32 +00:00
$this -> error .= '<div>Предмет не найден</div>' ;
2022-08-25 11:23:36 +00:00
} elseif ( $fxv [ 'luck2' ][ 0 ] > 0 ) {
2023-01-28 02:24:37 +00:00
$this -> error .= '<div>Вы уже учавствуете в розыгрыше "' . $fxv [ 'itm' ][ 'name' ] . '", ожидаем других участников еще ' . $u -> timeOut (
$fxv [ 'itm' ][ 'time' ] - time () + 300
) . '</div>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-28 02:24:37 +00:00
$luck_users = mysql_fetch_assoc (
mysql_query (
'SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $u -> info [ 'id' ] . '" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `vars` = "luck_itm' . mysql_real_escape_string (
$id
) . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
$luck_users = $luck_users [ 0 ];
if ( $luck_users < 1 ) {
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `dungeon_items` SET `time` = "' . time (
) . '" WHERE `id` = "' . $fxv [ 'itm' ][ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
}
$rndl = rand ( 1 , 100 );
2023-01-28 02:24:37 +00:00
mysql_query (
' INSERT INTO `dungeon_actions` ( `uid` , `dn` , `x` , `y` , `time` , `vars` , `vals` ) VALUES (
" ' . $u->info ['id'] . ' " , " ' . $u->info ['dnow'] . ' " , " ' . $u->info ['x'] . ' " , " ' . $u->info ['y'] . ' " , " ' . time(
) . ' " ,
2022-08-25 11:23:36 +00:00
" luck_itm' . mysql_real_escape_string( $id ) . ' " , " ' . $rndl . ' "
2023-01-28 02:24:37 +00:00
) '
);
2022-08-25 11:23:36 +00:00
if ( $u -> info [ 'sex' ] == 0 ) {
2023-01-10 16:29:32 +00:00
$fxv [ 'text' ] = '<b>' . $u -> info [ 'login' ] . '</b> выбросил *' . $rndl . '* в споре за предмет "' . $fxv [ 'itm' ][ 'name' ] . '"' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$fxv [ 'text' ] = '<b>' . $u -> info [ 'login' ] . '</b> выбросила *' . $rndl . '* в споре за предмет "' . $fxv [ 'itm' ][ 'name' ] . '"' ;
2022-08-25 11:23:36 +00:00
}
$this -> sys_chat ( $fxv [ 'text' ]);
2023-01-10 16:29:32 +00:00
$this -> error .= '<div>Вы выбросили <b>' . $rndl . '</b> в споре за "' . $fxv [ 'itm' ][ 'name' ] . '"</div>' ;
2022-08-25 11:23:36 +00:00
}
$this -> test_luck ( $id );
unset ( $fxv );
}
public function itm_unluck ( $id )
{
global $u ;
2023-01-28 02:24:37 +00:00
$fxv = [ 'itm' => mysql_fetch_assoc (
mysql_query (
'SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`dn` = "' . $this -> info [ 'id' ] . '" AND `ish`.`id` = "' . mysql_real_escape_string (
$id
) . '" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" AND `ish`.`x` = "' . $u -> info [ 'x' ] . '" AND `ish`.`y` = "' . $u -> info [ 'y' ] . '" LIMIT 1'
)
), 'luck' => mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_actions` WHERE `uid` = "' . $u -> info [ 'id' ] . '" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `vars` = "luck_itm' . mysql_real_escape_string (
$id
) . '" LIMIT 1'
)
)];
2022-08-25 11:23:36 +00:00
if ( $fxv [ 'itm' ][ 'user' ] > 0 ) {
2023-01-10 16:29:32 +00:00
$this -> error = 'Розыгрыш предмет уже завершился...' ;
2022-08-25 11:23:36 +00:00
} elseif ( ! isset ( $fxv [ 'itm' ][ 'id' ])) {
2023-01-10 16:29:32 +00:00
$this -> error .= '<div>Предмет не найден</div>' ;
2022-08-25 11:23:36 +00:00
} elseif ( isset ( $fxv [ 'luck' ][ 'id' ])) {
if ( $fxv [ 'luck' ][ 'vals' ] == 0 ) {
2023-01-10 16:29:32 +00:00
$this -> error .= '<div>Вы уже отказались от участия в розыгрыше "' . $fxv [ 'itm' ][ 'name' ] . '"</div>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-28 02:24:37 +00:00
$this -> error .= '<div>Вы уже учавствуете в розыгрыше "' . $fxv [ 'itm' ][ 'name' ] . '", ожидаем других участников еще ' . $u -> timeOut (
$fxv [ 'itm' ][ 'time' ] - time () + 300
) . '</div>' ;
2022-08-25 11:23:36 +00:00
}
} else {
2023-01-28 02:24:37 +00:00
$luck_users = mysql_fetch_assoc (
mysql_query (
'SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $u -> info [ 'id' ] . '" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `vars` = "luck_itm' . mysql_real_escape_string (
$id
) . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
$luck_users = $luck_users [ 0 ];
if ( $luck_users < 1 ) {
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `dungeon_items` SET `time` = "' . time (
) . '" WHERE `id` = "' . $fxv [ 'itm' ][ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
}
if ( $u -> info [ 'sex' ] == 0 ) {
2023-01-10 16:29:32 +00:00
$fxv [ 'text' ] = '<b>' . $u -> info [ 'login' ] . '</b> отказался от спора за предмет "' . $fxv [ 'itm' ][ 'name' ] . '"' ;
2022-08-25 11:23:36 +00:00
} else {
2023-01-10 16:29:32 +00:00
$fxv [ 'text' ] = '<b>' . $u -> info [ 'login' ] . '</b> отказалась от спора за предмет "' . $fxv [ 'itm' ][ 'name' ] . '"' ;
2022-08-25 11:23:36 +00:00
}
$this -> sys_chat ( $fxv [ 'text' ]);
2023-01-28 02:24:37 +00:00
mysql_query (
' INSERT INTO `dungeon_actions` ( `uid` , `dn` , `x` , `y` , `time` , `vars` , `vals` ) VALUES (
" ' . $u->info ['id'] . ' " , " ' . $u->info ['dnow'] . ' " , " ' . $u->info ['x'] . ' " , " ' . $u->info ['y'] . ' " , " ' . time(
) . ' " ,
2022-08-25 11:23:36 +00:00
" luck_itm' . mysql_real_escape_string( $id ) . ' " , " 0 "
2023-01-28 02:24:37 +00:00
) '
);
2023-01-10 16:29:32 +00:00
$this -> error .= '<div>Вы отказались от участия в розыгрыше "' . $fxv [ 'itm' ][ 'name' ] . '"</div>' ;
2022-08-25 11:23:36 +00:00
}
unset ( $fxv );
}
public function itemsMap ()
{
global $u , $c , $code ;
$r = '' ;
2023-01-28 02:24:37 +00:00
$live_users = mysql_fetch_assoc (
mysql_query ( 'SELECT COUNT(`id`) FROM `stats` WHERE `dnow` = "' . $this -> info [ 'id' ] . '" LIMIT 1' )
);
2022-08-25 11:23:36 +00:00
$live_users = $live_users [ 0 ];
2023-01-28 02:24:37 +00:00
$sp = mysql_query (
'SELECT `im`.*,`ish`.* FROM `dungeon_items` AS `ish` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `ish`.`item_id`) WHERE `ish`.`dn` = "' . $this -> info [ 'id' ] . '" AND `ish`.`take` = "0" AND `ish`.`delete` = "0" AND ( `ish`.`onlyfor` = "0" OR `ish`.`onlyfor` = "' . $u -> info [ 'id' ] . '" ) AND `ish`.`x` = "' . $u -> info [ 'x' ] . '" AND `ish`.`y` = "' . $u -> info [ 'y' ] . '" LIMIT 100'
);
2022-08-25 11:23:36 +00:00
while ( $pl = mysql_fetch_assoc ( $sp )) {
$action = 'main.php?take=' . $pl [ 'id' ] . '' ;
$tk = 0 ;
2023-01-28 02:24:37 +00:00
$luck_users = mysql_fetch_assoc (
mysql_query (
'SELECT COUNT(`id`) FROM `dungeon_actions` WHERE `uid` = "' . $u -> info [ 'id' ] . '" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `vars` = "luck_itm' . mysql_real_escape_string (
$pl [ 'id' ]
) . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
$luck_users = $luck_users [ 0 ];
if ( $pl [ 'user' ] == 0 && $live_users > 1 && ( $pl [ 'time' ] + 300 > time () || $luck_users < 1 )) {
2023-01-28 02:24:37 +00:00
$fxv = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_actions` WHERE `uid` = "' . $u -> info [ 'id' ] . '" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `vars` = "luck_itm' . $pl [ 'id' ] . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( ! isset ( $fxv [ 'id' ])) {
2023-01-10 16:29:32 +00:00
//Розыгрыш
2022-08-25 11:23:36 +00:00
if ( $this -> info [ 'bsid' ] == 0 ) {
$action = 'javascript: top.fartgame(\'' . $pl [ 'id' ] . '\',\'' . $pl [ 'img' ] . '\',\'' . $pl [ 'name' ] . '\',1,\'\');' ;
$tk = 1 ;
}
}
}
if ( $tk == 0 ) {
2023-03-31 18:30:14 +00:00
$r .= '<a onclick="takeItem(' . $pl [ 'id' ] . ')"><img style="padding: 5px; cursor: pointer;" title="Взять "' . $pl [ 'name' ] . '"" src="//img.new-combats.tech/i/items/' . $pl [ 'img' ] . '" /></a>' ;
2022-08-25 11:23:36 +00:00
} elseif ( $tk == 1 ) {
2023-03-31 18:30:14 +00:00
$r .= '<a href="' . $action . '"><img style="padding: 5px; cursor: pointer;" title="Взять "' . $pl [ 'name' ] . '"" src="//img.new-combats.tech/i/items/' . $pl [ 'img' ] . '" /></a>' ;
2022-08-25 11:23:36 +00:00
}
}
if ( $r != '' ) {
2023-01-10 16:29:32 +00:00
$r = '<H4>В комнате разбросаны вещи:</H4>' . $r ; //<br> <a onclick="takeItemAll">Подобрать все</a><br>
2022-08-25 11:23:36 +00:00
}
return $r ;
}
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 ;
2023-01-28 02:24:37 +00:00
$c1 = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_map` WHERE `x` = "' . $x1 . '" AND `y` = "' . $y1 . '" AND `id_dng` = "' . $this -> info [ 'id2' ] . '" LIMIT 1'
)
);
$c2 = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_map` WHERE `x` = "' . $x2 . '" AND `y` = "' . $y2 . '" AND `id_dng` = "' . $this -> info [ 'id2' ] . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( isset ( $c1 [ 'id' ]) && isset ( $c2 [ 'id' ])) {
if ( $x1 == $x2 && $y1 == $y2 ) {
$r = 1 ;
2023-01-10 16:29:32 +00:00
} elseif ( $x1 == $x2 - 1 && $c1 [ 'go_1' ] == 1 ) //право
2022-08-25 11:23:36 +00:00
{
$r = 1 ;
2023-01-10 16:29:32 +00:00
} elseif ( $x1 == $x2 + 1 && $c1 [ 'go_2' ] == 1 ) //лево
2022-08-25 11:23:36 +00:00
{
$r = 1 ;
2023-01-10 16:29:32 +00:00
} elseif ( $y1 == $y2 - 1 && $c1 [ 'go_3' ] == 1 ) //верх
2022-08-25 11:23:36 +00:00
{
$r = 1 ;
2023-01-10 16:29:32 +00:00
} elseif ( $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 [ 'x' ] + 2 ) . ' && `u`.`x` >= ' . ( $u -> info [ 'x' ] - 2 ) . ') && (`u`.`y` >= ' . ( $u -> info [ 'y' ] + 1 ) . ' && `u`.`y` <= ' . ( $u -> info [ 'y' ] + 4 ) . ')) OR (`u`.`y` = ' . $u -> info [ 'y' ] . ' && `u`.`x` = ' . $u -> info [ 'x' ] . ')) ' , //прямо
3 => ' (((`u`.`x` <= ' . ( $u -> info [ 'x' ] + 2 ) . ' && `u`.`x` >= ' . ( $u -> info [ 'x' ] - 2 ) . ') && (`u`.`y` <= ' . ( $u -> info [ 'y' ] - 1 ) . ' && `u`.`y` >= ' . ( $u -> info [ 'y' ] - 4 ) . ')) OR (`u`.`y` = ' . $u -> info [ 'y' ] . ' && `u`.`x` = ' . $u -> info [ 'x' ] . ')) ' , //вниз
2 => ' (((`u`.`x` <= ' . ( $u -> info [ 'x' ] - 1 ) . ' && `u`.`x` >= ' . ( $u -> info [ 'x' ] - 4 ) . ') && (`u`.`y` <= ' . ( $u -> info [ 'y' ] + 2 ) . ' && `u`.`y` >= ' . ( $u -> info [ 'y' ] - 2 ) . '))OR (`u`.`y` = ' . $u -> info [ 'y' ] . ' && `u`.`x` = ' . $u -> info [ 'x' ] . ')) ' , //лево
2023-01-28 02:24:37 +00:00
4 => ' (((`u`.`x` >= ' . ( $u -> info [ 'x' ] + 1 ) . ' && `u`.`x` <= ' . ( $u -> info [ 'x' ] + 4 ) . ') && (`u`.`y` <= ' . ( $u -> info [ 'y' ] + 2 ) . ' && `u`.`y` >= ' . ( $u -> info [ 'y' ] - 2 ) . ')) OR (`u`.`y` = ' . $u -> info [ 'y' ] . ' && `u`.`x` = ' . $u -> info [ 'x' ] . ')) ' , //право
2022-08-25 11:23:36 +00:00
];
2023-01-28 02:24:37 +00:00
$sp = mysql_query (
'SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "' . $u -> info [ 'dnow' ] . '" AND `u`.`for_dn` = "0" AND ((`u`.`s` = "0" OR `u`.`s` = "' . $this -> gs . '") OR `u`.`s2` = "' . $this -> gs . '") AND ' . $whr [ $this -> gs ] . ' LIMIT 150'
);
2022-08-25 11:23:36 +00:00
$i = 0 ;
$pos = [];
while ( $pl = mysql_fetch_assoc ( $sp )) {
if ( $pl [ 'fix_x_y' ] == 0 || ( $pl [ 'fix_x_y' ] == 1 && $pl [ 'x' ] == $u -> info [ 'x' ]) || ( $pl [ 'fix_x_y' ] == 2 && $pl [ 'y' ] == $u -> info [ 'y' ]) || ( $pl [ 'fix_x_y' ] == 3 && $pl [ 'x' ] == $u -> info [ 'x' ] && $pl [ 'y' ] == $u -> info [ '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 ) . ':{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' ] . '}' ;
} 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-28 02:24:37 +00:00
if ( isset ( $da [ 'use' ])) {
unset ( $da [ 'use' ]);
} // Справа
if ( isset ( $da [ 'rl2' ])) {
$da [ 'rl2' ] = - round (( int ) $da [ 'rl2' ] * 1.55 );
} // Слева
if ( isset ( $da [ 'rl3' ])) {
$da [ 'rl3' ] = round (( int ) $da [ 'rl3' ] + 160 );
}
if ( isset ( $da [ 'rl4' ])) {
$da [ 'rl4' ] = round (( int ) $da [ 'rl4' ] - 120 );
}
2022-08-25 11:23:36 +00:00
$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 ) . ':{0:' . $pl [ 'id' ] . ',1:\'' . $pl [ 'name' ] . '\',2:' . ( 0 + $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]) . ',3:\'\',4:\'' . $pl [ 'img' ] . '\',5:' . $pl [ 'type' ] . ',6:0,7:' . $pl [ 'w' ] . ',8:' . $pl [ 'h' ] . ',9:' . $pl [ 'left' ] . ',10:' . $pl [ 'top' ] . ',11:' . $pl [ 'date' ] . '}' ;
} 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-28 02:24:37 +00:00
if ( isset ( $da [ 'use' ])) {
unset ( $da [ 'use' ]);
} // Справа
if ( isset ( $da [ 'rl2' ])) {
$da [ 'rl2' ] = 355 - round (( int ) $da [ 'rl2' ] * 0.30 );
} // Справа
if ( isset ( $da [ 'rl3' ])) {
$da [ 'rl3' ] = round (( int ) $da [ 'rl3' ] - 160 );
}
if ( isset ( $da [ 'rl4' ])) {
$da [ 'rl4' ] = round (( int ) $da [ 'rl4' ] + 120 );
}
2022-08-25 11:23:36 +00:00
$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 ) . ':{0:' . $pl [ 'id' ] . ',1:\'' . $pl [ 'name' ] . '\',2:' . ( 0 + $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]) . ',3:\'\',4:\'' . $pl [ 'img' ] . '\',5:' . $pl [ 'type' ] . ',6:0,7:' . $pl [ 'w' ] . ',8:' . $pl [ 'h' ] . ',9:' . $pl [ 'left' ] . ',10:' . $pl [ 'top' ] . ',11:' . $pl [ 'date' ] . '}' ;
}
}
}
return 'count:' . $i . $r ;
}
public function botAtack ( $bot , $uid , $bs )
{
global $u , $c , $code ;
2023-01-28 02:24:37 +00:00
$user = mysql_fetch_assoc (
mysql_query ( 'SELECT `id`,`battle` FROM `users` WHERE `id` = "' . $uid [ 'id' ] . '" LIMIT 1' )
);
2022-08-25 11:23:36 +00:00
if ( $user [ 'battle' ] > 0 ) {
2023-01-28 02:24:37 +00:00
$btli = mysql_fetch_assoc (
mysql_query (
'SELECT `id` FROM `battle` WHERE `id` = "' . $user [ 'battle' ] . '" AND `team_win` = "-1" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
}
2023-01-10 16:29:32 +00:00
if ( ! isset ( $btli [ 'id' ])) { //Создаем поединок
2022-08-25 11:23:36 +00:00
$btl_id = 0 ;
$expB = 0 ;
$btl = [ 'players' => '' , 'timeout' => 120 , 'type' => 0 , 'invis' => 0 , 'noinc' => 0 , 'travmChance' => 0 , 'typeBattle' => 0 , 'addExp' => $expB , 'money' => 0 ];
2023-01-28 02:24:37 +00:00
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' ] . '")'
);
2022-08-25 11:23:36 +00:00
$btl_id = mysql_insert_id ();
2023-01-10 16:29:32 +00:00
if ( $btl_id > 0 ) { //Добавляем ботов
2023-01-28 02:24:37 +00:00
$sp = mysql_query (
'SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `delete` = "0" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `id2` = "' . $bot [ 'id2' ] . '" LIMIT 1'
); // Только тот, который напал и жив ли он?
2022-08-25 11:23:36 +00:00
$j = 0 ;
$logins_bot = [];
while ( $pl = mysql_fetch_assoc ( $sp )) {
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `dungeon_bots` SET `inBattle` = "' . $btl_id . '" WHERE `id2` = "' . $bot [ 'id2' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
$jui = 1 ;
while ( $jui <= $pl [ 'colvo' ]) {
$k = $u -> addNewbot ( $pl [ 'id_bot' ], null , null , $logins_bot );
$logins_bot = $k [ 'logins_bot' ];
if ( $k ) {
2023-01-28 02:24:37 +00:00
$upd = mysql_query (
'UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
if ( $upd ) {
2023-01-28 02:24:37 +00:00
$upd = mysql_query (
'UPDATE `stats` SET `team` = "2" WHERE `id` = "' . $k [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
if ( $upd ) {
$j ++ ;
}
}
}
$jui ++ ;
}
}
unset ( $logins_bot );
if ( $j > 0 ) {
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $user [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
mysql_query ( 'UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $user [ 'id' ] . '" LIMIT 1' );
}
}
} else {
$btl_id = $btli [ 'id' ];
2023-01-10 16:29:32 +00:00
//Добавляем ботов
2023-01-28 02:24:37 +00:00
$sp = mysql_query (
'SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `delete` = "0" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `id2` = "' . $bot [ 'id2' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
$j = 0 ;
$logins_bot = [];
$logins_bot_text = [];
$logins_bot_vars = [ 'time1=' . time () . '' ];
while ( $pl = mysql_fetch_assoc ( $sp )) {
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `dungeon_bots` SET `inBattle` = "' . $btl_id . '" WHERE `id2` = "' . $bot [ 'id2' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
$jui = 1 ;
while ( $jui <= $pl [ 'colvo' ]) {
$k = $u -> addNewbot ( $pl [ 'id_bot' ], null , null , $logins_bot );
$logins_bot = $k [ 'logins_bot' ];
$logins_bot_text [] = ' <strong>' . $k [ 'login' ] . '</strong>' ;
if ( $k != false ) {
2023-01-28 02:24:37 +00:00
$upd = mysql_query (
'UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
if ( $upd ) {
2023-01-28 02:24:37 +00:00
$upd = mysql_query (
'UPDATE `stats` SET `team` = "2" WHERE `id` = "' . $k [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
if ( $upd ) {
$j ++ ;
}
}
}
$jui ++ ;
}
if ( $j > 0 ) {
2023-01-10 16:29:32 +00:00
$logins_bot_text = '{tm1} В поединок вмешались: ' . implode ( ', ' , $logins_bot_text ) . '.' ;
2022-08-25 11:23:36 +00:00
$logins_bot_vars = implode ( '||' , $logins_bot_vars );
2023-01-28 02:24:37 +00:00
$battle_log = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `battle_logs` WHERE `battle`=' . $btl_id . ' ORDER BY `id_hod` DESC LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( $battle_log [ 'id_hod' ] > 0 ) {
2023-01-28 02:24:37 +00:00
mysql_query (
'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zonb1`,`zona2`,`zonb2`,`type`) VALUES ("' . time (
) . '","' . $btl_id . '","' . ( $battle_log [ 'id_hod' ] + 1 ) . '","' . $logins_bot_text . '","' . $logins_bot_vars . '","","","","",1)'
);
2022-08-25 11:23:36 +00:00
}
}
}
unset ( $logins_bot );
if ( $j > 0 ) {
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $user [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
mysql_query ( 'UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $user [ 'id' ] . '" LIMIT 1' );
}
}
}
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 [ 'x' ] + 2 ) . ' && `u`.`x` >= ' . ( $u -> info [ 'x' ] - 2 ) . ') && (`u`.`y` >= ' . $u -> info [ 'y' ] . ' && `u`.`y` <= ' . ( $u -> info [ 'y' ] + 4 ) . ')) ' , //прямо
3 => ' ((`u`.`x` <= ' . ( $u -> info [ 'x' ] + 2 ) . ' && `u`.`x` >= ' . ( $u -> info [ 'x' ] - 2 ) . ') && (`u`.`y` <= ' . $u -> info [ 'y' ] . ' && `u`.`y` >= ' . ( $u -> info [ 'y' ] - 4 ) . ')) ' , //вниз
2 => ' ((`u`.`x` <= ' . $u -> info [ 'x' ] . ' && `u`.`x` >= ' . ( $u -> info [ 'x' ] - 4 ) . ') && (`u`.`y` <= ' . ( $u -> info [ 'y' ] + 2 ) . ' && `u`.`y` >= ' . ( $u -> info [ 'y' ] - 2 ) . ')) ' , //лево
2023-01-28 02:24:37 +00:00
4 => ' ((`u`.`x` >= ' . $u -> info [ 'x' ] . ' && `u`.`x` <= ' . ( $u -> info [ 'x' ] + 4 ) . ') && (`u`.`y` <= ' . ( $u -> info [ 'y' ] + 2 ) . ' && `u`.`y` >= ' . ( $u -> info [ 'y' ] - 2 ) . ')) ' , //право
2022-08-25 11:23:36 +00:00
];
//
2023-01-28 02:24:37 +00:00
$tmsu = mysql_fetch_assoc (
mysql_query ( 'SELECT * FROM `katok_now` WHERE `clone` = "' . $u -> info [ 'id' ] . '" LIMIT 1' )
);
2022-08-25 11:23:36 +00:00
//
2023-01-28 02:24:37 +00:00
$sp = mysql_query (
'SELECT `u`.*,`st`.* FROM `stats` AS `u` LEFT JOIN `users` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`dnow` = "' . $u -> info [ 'dnow' ] . '" AND ' . $whr [ $this -> gs ] . ' AND `u`.`id` != "' . $u -> info [ 'id' ] . '" LIMIT 100'
);
2022-08-25 11:23:36 +00:00
$i = 0 ;
$pos = [];
while ( $pl = mysql_fetch_assoc ( $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' ]]] ++ ;
$noat = 0 ;
if ( $this -> info [ 'bsid' ] > 0 ) {
$noat = 1 ;
}
if ( $this -> info [ 'id2' ] == 15 ) {
2023-01-10 16:29:32 +00:00
//Хоккей
2023-01-28 02:24:37 +00:00
$r .= ',' . ( $i - 1 ) . ':{8:' . $noat . ',0:' . $pl [ 'id' ] . ',1:\'' . $pl [ 'login' ] . '\',2:' . ( 0 + $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]) . ',3:' . $pl [ 'sex' ] . ',4:\'' . str_replace (
'.gif' , '' , $pl [ 'obraz' ]
) . '\',5:\'user\',6:' . $pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]] . '' ;
2022-08-25 11:23:36 +00:00
//
2023-01-28 02:24:37 +00:00
$tms = mysql_fetch_assoc (
mysql_query ( 'SELECT * FROM `katok_now` WHERE `clone` = "' . $pl [ 'id' ] . '" LIMIT 1' )
);
2022-08-25 11:23:36 +00:00
if ( $tms [ 'team' ] == $tmsu [ 'team' ]) {
$r .= ',9:1' ;
} else {
$r .= ',9:2' ;
}
$r .= '' ;
//
$r .= '}' ;
} else {
2023-01-28 02:24:37 +00:00
$r .= ',' . ( $i - 1 ) . ':{9:0,8:' . $noat . ',0:' . $pl [ 'id' ] . ',1:\'' . $pl [ 'login' ] . '\',2:' . ( 0 + $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]) . ',3:' . $pl [ 'sex' ] . ',4:\'' . str_replace (
'.gif' , '' , $pl [ 'obraz' ]
) . '\',5:\'user\',6:' . $pos [ $this -> cord [ $pl [ 'y' ] . '_' . $pl [ 'x' ]]] . '}' ;
2022-08-25 11:23:36 +00:00
}
}
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 `u`.`dn` = "'.$u->info['dnow'].'" AND `u`.`atack` = "0" AND `u`.`delete` = "0" AND `u`.`inBattle` = "0" AND `u`.`go_bot` > 0 ORDER BY `u`.`go_bot` ASC LIMIT 35');
2023-01-10 16:29:32 +00:00
// Выбираем Ботов в подземельи, которые Н е в бою, Живые, и не дальше чем -\+30 по X и -\+35 по Y (дабы не гонять всех ботов, меньше выборка).
2022-08-25 11:23:36 +00:00
2023-01-28 02:24:37 +00:00
$sp = mysql_query (
'SELECT `db`.*, `tb`.* FROM `dungeon_bots` AS `db` LEFT JOIN `test_bot` AS `tb` ON (`db`.`id_bot` = `tb`.`id`) LEFT JOIN `stats` as `st` ON (`st`.`dnow` = `db`.`dn`) WHERE `db`.`dn` = "' . $u -> info [ 'dnow' ] . '" AND `db`.`x` > `st`.`x`-30 AND `db`.`x` < `st`.`x`+30 AND `db`.`y` > `st`.`y`-35 AND `db`.`y` < `st`.`y`+35 AND `db`.`atack` = "0" AND `db`.`delete` = "0" AND `db`.`inBattle` = "0" AND `db`.`go_bot` > 0 GROUP BY `db`.`id2` ORDER BY `db`.`go_bot` ASC LIMIT 100'
);
2022-08-25 11:23:36 +00:00
while ( $pl = mysql_fetch_assoc ( $sp )) {
2023-01-10 16:29:32 +00:00
//перемещение бота, каждые 3-10 сек.
2022-08-25 11:23:36 +00:00
if ( $pl [ 'go_bot' ] > 0 && $pl [ 'go_bot' ] <= time ()) {
$tgx = rand ( - 1 , 1 );
$tgy = rand ( - 1 , 1 );
if ( $tgx != 0 && $tgy != 0 ) {
if ( rand ( 0 , 1 ) == 1 ) {
$tgy = 0 ;
} else {
$tgx = 0 ;
}
}
$vlb = $this -> testLike ( $pl [ 'x' ], $pl [ 'y' ], $pl [ 'x' ] + $tgx , $pl [ 'y' ] + $tgy );
2023-01-10 16:29:32 +00:00
//Кто-то рядом
2023-01-28 02:24:37 +00:00
$tuz = mysql_fetch_assoc (
mysql_query (
'SELECT `x`,`y`,`id`,`hpNow` FROM `stats` WHERE `dnow` = "' . $this -> info [ 'id' ] . '" AND ( (`x` = ' . ( $pl [ 'x' ] + 1 ) . ' AND `y` = ' . ( $pl [ 'y' ]) . ') OR (`x` = ' . ( $pl [ 'x' ] - 1 ) . ' AND `y` = ' . ( $pl [ 'y' ]) . ') OR (`x` = ' . ( $pl [ 'x' ]) . ' AND `y` = ' . ( $pl [ 'y' ] + 1 ) . ') OR (`x` = ' . ( $pl [ 'x' ]) . ' AND `y` = ' . ( $pl [ 'y' ] - 1 ) . ') ) LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( isset ( $tuz [ 'id' ]) && $this -> testLike ( $pl [ 'x' ], $pl [ 'y' ], $tuz [ 'x' ], $tuz [ 'y' ]) == 1 ) {
$tuz [ 'x' ] = $pl [ 'x' ];
$tuz [ 'y' ] = $pl [ 'y' ];
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `stats` SET `x` = "' . $tuz [ 'x' ] . '" , `y` = "' . $tuz [ 'y' ] . '" WHERE `id` = "' . $tuz [ 'id' ] . '" LIMIT 1'
);
2023-01-10 16:29:32 +00:00
$this -> botAtack ( $pl , $tuz , 1 ); //Тут
2023-01-28 02:24:37 +00:00
$sps = mysql_query (
'SELECT `db`.*, `tb`.* FROM `dungeon_bots` AS `db` LEFT JOIN `test_bot` AS `tb` ON (`db`.`id_bot` = `tb`.`id`) LEFT JOIN `stats` as `st` ON (`st`.`dnow` = `db`.`dn`) WHERE `db`.`dn` = "' . $u -> info [ 'dnow' ] . '" AND `db`.`x` ="' . $tuz [ 'x' ] . '" AND `db`.`y` ="' . $tuz [ 'y' ] . '" AND `db`.`atack` = "0" AND `db`.`delete` = "0" AND `db`.`inBattle` = "0" GROUP BY `db`.`id2` ORDER BY `db`.`go_bot` ASC LIMIT 50'
);
2022-08-25 11:23:36 +00:00
while ( $pll = mysql_fetch_assoc ( $sps )) {
$this -> botAtack ( $pll , $tuz , 1 );
}
2023-01-10 16:29:32 +00:00
} elseif ( $vlb == 1 ) { // Передвижение ботов.
2022-08-25 11:23:36 +00:00
$pl [ 'go_bot' ] = time () + 10 + rand ( 1 , 5 );
$pl [ 'x' ] += $tgx ;
$pl [ 'y' ] += $tgy ;
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `dungeon_bots` SET `x` = "' . $pl [ 'x' ] . '",`y` = "' . $pl [ 'y' ] . '",`go_bot` = "' . $pl [ 'go_bot' ] . '" WHERE `id2` = "' . $pl [ 'id2' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
}
unset ( $tgx , $tgy , $vlb , $tuz );
}
}
2023-01-28 02:24:37 +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 `u`.`dn` = "' . $u -> info [ 'dnow' ] . '" AND ' . $whr [ $this -> gs ] . ' AND `u`.`delete` = "0" LIMIT 50'
);
2022-08-25 11:23:36 +00:00
while ( $pl = mysql_fetch_assoc ( $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' ];
}
$noat = 1 ;
if ( $pl [ 'noatack' ] == 1 && $this -> info [ 'bsid' ] == 0 ) {
$noat = 0 ;
}
2023-01-28 02:24:37 +00:00
$r .= ',' . ( $i - 1 ) . ':{9:0,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 . ',8:' . $noat . '}' ;
2022-08-25 11:23:36 +00:00
}
return 'count:' . $i . $r ;
}
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 ];
}
2023-01-28 02:24:37 +00:00
$thp = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_map` WHERE `x` = "' . $u -> info [ 'x' ] . '" AND `y` = "' . $u -> info [ 'y' ] . '" AND `id_dng` = "' . $this -> info [ 'id2' ] . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
$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 ;
}
2023-01-28 02:24:37 +00:00
$tbot = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_bots` WHERE `x` = "' . ( $u -> info [ 'x' ] + ( int ) $tgo [ 0 ]) . '" AND `y` = "' . ( $u -> info [ 'y' ] + ( int ) $tgo [ 1 ]) . '" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( isset ( $tbot [ 'id2' ]) && $u -> info [ 'admin' ] == 0 ) {
$go = 0 ;
}
2023-01-28 02:24:37 +00:00
$tmap = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_map` WHERE `x` = "' . $u -> info [ 'x' ] . '" AND `y` = "' . $u -> info [ '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 ) {
2023-01-28 02:24:37 +00:00
$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 ]) . ''
)
);
2022-08-25 11:23:36 +00:00
if ( $num_rows < ( int ) $ti2 [ 1 ]) {
$tgo = $ti2 [ 2 ];
if ( $tgo != '0000' && $tgo [ $ng [ $go ] - 1 ] == 1 ) {
$go = 0 ;
2023-01-28 02:24:37 +00:00
$trm = mysql_fetch_assoc (
mysql_query ( 'SELECT * FROM `items_main` WHERE `id` = "' . (( int ) $ti2 [ 0 ]) . '" LIMIT 1' )
);
2022-08-25 11:23:36 +00:00
$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 [ 'y' ] += 1 ;
} elseif ( $go == 2 ) {
$u -> info [ 'x' ] -= 1 ;
} elseif ( $go == 3 ) {
$u -> info [ 'y' ] -= 1 ;
} elseif ( $go == 4 ) {
$u -> info [ 'x' ] += 1 ;
}
if ( $u -> stats [ 'speed_dungeon' ] > 0 ) {
$tmap [ 'timeGO' ] = round ( $tmap [ 'timeGO' ] / 100 * ( 100 - $u -> stats [ 'speed_dungeon' ]));
if ( $tmap [ 'timeGO' ] < 2 ) {
$tmap [ 'timeGO' ] = 1 ;
}
}
$u -> info [ 'timeGo' ] = time () + $tmap [ 'timeGO' ];
$u -> info [ 'timeGoL' ] = time ();
2023-01-28 02:24:37 +00:00
$tmap0 = mysql_fetch_assoc (
mysql_query (
'SELECT `id`,`teleport` FROM `dungeon_map` WHERE `id_dng` = "' . $tmap [ 'id_dng' ] . '" AND `x` = "' . $u -> info [ 'x' ] . '" AND `y` = "' . $u -> info [ 'y' ] . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( $tmap0 [ 'teleport' ] > 0 ) {
2023-01-28 02:24:37 +00:00
$tmap1 = mysql_fetch_assoc (
mysql_query (
'SELECT `id`,`x`,`y` FROM `dungeon_map` WHERE `id` = "' . $tmap0 [ 'teleport' ] . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
if ( isset ( $tmap1 [ 'id' ])) {
$u -> info [ 'x' ] = $tmap1 [ 'x' ];
$u -> info [ 'y' ] = $tmap1 [ 'y' ];
2023-01-10 16:29:32 +00:00
$this -> error = 'Вы переместились в другую комнату...' ;
2022-08-25 11:23:36 +00:00
}
}
2023-01-28 02:24:37 +00:00
mysql_query (
'UPDATE `stats` SET `x` = "' . $u -> info [ 'x' ] . '",`y` = "' . $u -> info [ 'y' ] . '",`timeGo` = "' . $u -> info [ 'timeGo' ] . '",`timeGoL` = "' . $u -> info [ 'timeGoL' ] . '" WHERE `id` = "' . $u -> info [ 'id' ] . '" LIMIT 1'
);
2022-08-25 11:23:36 +00:00
unset ( $id );
}
}
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 ];
}
2023-01-28 02:24:37 +00:00
$thp = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_map` WHERE `x` = "' . $u -> info [ 'x' ] . '" AND `y` = "' . $u -> info [ 'y' ] . '" AND `id_dng` = "' . $this -> info [ 'id2' ] . '" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
$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 ;
}
2023-01-28 02:24:37 +00:00
$tbot = mysql_fetch_assoc (
mysql_query (
'SELECT * FROM `dungeon_bots` WHERE `x` = "' . ( $u -> info [ 'x' ] + ( int ) $tgo [ 0 ]) . '" AND `y` = "' . ( $u -> info [ 'y' ] + ( int ) $tgo [ 1 ]) . '" AND `dn` = "' . $this -> info [ 'id' ] . '" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1'
)
);
2022-08-25 11:23:36 +00:00
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
/* Генерируем изображение карты */ /* LEVEL 1 */
2022-08-25 11:23:36 +00:00
2023-01-10 16:29:32 +00:00
// Исправления от 29/10/2014 относительно D5, 2 этаж, ПТП. Покрутиться и все гуд. и от 22/11/2014 для обратных стен. Если стена к нам задницей, мы её не видим.
2022-08-25 11:23:36 +00:00
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 [ 'y' ] + $y ) . '_' . ( $u -> info [ 'x' ] + $x )] = $this -> cord [ 'x' ];
return $this -> map [ 0 ][( $u -> info [ 'y' ] + $y ) . '_' . ( $u -> info [ 'x' ] + $x )];
}
public function genMatix ()
{
$r = [];
if ( $this -> gs == 1 ) {
2023-01-10 16:29:32 +00:00
//1; //смотрим прямо
$r [ 1 ] = $this -> getMatrix ( 0 , - 1 ); # слева от меня
$r [ 2 ] = $this -> getMatrix ( 0 , 0 ); # подомной
$r [ 3 ] = $this -> getMatrix ( 0 , 1 ); # справа от меня
$r [ 4 ] = $this -> getMatrix ( 1 , - 1 ); # слева +1 вперед
$r [ 5 ] = $this -> getMatrix ( 1 , 0 ); # передомной +1
$r [ 6 ] = $this -> getMatrix ( 1 , 1 ); # справа +1 вперед
$r [ 7 ] = $this -> getMatrix ( 2 , 1 ); # справа +2 вперед
$r [ 8 ] = $this -> getMatrix ( 2 , 0 ); # передомной +2
$r [ 9 ] = $this -> getMatrix ( 2 , - 1 ); # слева +2 вперед
$r [ 10 ] = $this -> getMatrix ( 3 , - 2 ); # слева через одну, +3 вперед
$r [ 11 ] = $this -> getMatrix ( 3 , - 1 ); # слева +3 вперед
$r [ 12 ] = $this -> getMatrix ( 3 , 0 ); # передомной +3
$r [ 13 ] = $this -> getMatrix ( 3 , 1 ); # справа +3 вперед
$r [ 14 ] = $this -> getMatrix ( 3 , 2 ); # справа через одну, +3 вперед
$r [ 15 ] = $this -> getMatrix ( 4 , 0 ); # передомной +4
$r [ 16 ] = $this -> getMatrix ( 4 , - 1 ); # слева +4 вперед
$r [ 17 ] = $this -> getMatrix ( 4 , 1 ); # справа +4 вперед
$r [ 18 ] = $this -> getMatrix ( 4 , 2 ); # справа через одну, +4 вперед
$r [ 19 ] = $this -> getMatrix ( 4 , - 2 ); # слева через одну, +4 вперед
2022-08-25 11:23:36 +00:00
} 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 ;
}
}