2020-10-26 18:16:28 +00:00
< ? php
# Date: 26.10.2020 (16:08)
class Travel
{
2020-10-26 22:13:07 +00:00
/**
* Соответствие ID комнаты игровому файлу .
* @ var string []
*/
private static $roomFileName = [
20 => 'city.php' ,
21 => 'city.php' ,
22 => 'shop.php' ,
23 => 'repair.php' ,
25 => 'comission.php' ,
26 => 'city.php' ,
27 => 'post.php' ,
29 => 'bank.php' ,
30 => 'clan_create.php' ,
31 => 'tower.php' ,
34 => 'fshop.php' ,
37 => 'gotzamok.php' ,
50 => 'ashop.php' ,
51 => 'city.php' ,
61 => 'akadem.php' ,
401 => 'hell.php' ,
402 => 'lab_chaos_enter.php' ,
404 => 'vxod.php' ,
603 => 'aren_of_angels.php' ,
620 => 'enter_cave.php' ,
650 => 'ul_clans.php' ,
660 => 'hostel.php' ,
666 => 'jail.php' ,
777 => 'obshaga.php' ,
1051 => 'lab_enter.php' ,
1055 => 'group_arena.php' ,
2111 => 'city.php' ,
2601 => 'city.php' ,
2655 => 'city.php' ,
];
/**
* Перемещение по комнатам .
* @ param int $roomId ID куда идём .
* @ param int $roomIdCurrent ID откуда идём .
* @ throws \Krugozor\Database\Mysql\Exception
*/
2020-10-26 22:21:00 +00:00
public static function toRoom ( int $roomId , int $roomIdCurrent ) : void
2020-10-26 18:16:28 +00:00
{
2020-10-26 22:13:07 +00:00
$itemsWeight = db :: c () -> query ( 'SELECT SUM(weight) AS all_weight FROM `inventory` WHERE owner_id = ?i AND on_sale = 0' , $_SESSION [ 'uid' ]) -> fetch_assoc ();
2020-10-26 18:16:28 +00:00
$eff = db :: c () -> query ( 'SELECT type FROM users_effects WHERE owner_id = ?i AND (`type` = 10 OR `type` = 13 OR `type` = 14)' , $_SESSION [ 'uid' ]) -> fetch_assoc ();
$errors = [];
if ( $itemsWeight [ 'all_weight' ] > get_meshok ()) {
$errors [ 0 ] = 'У вас переполнен рюкзак, вы не можете передвигаться...' ;
}
if ( $eff [ 'type' ] == 10 ) {
$errors [ 1 ] = 'Вы парализованы и не можете передвигаться...' ;
}
if ( $eff [ 'type' ] == 13 || $eff [ 'type' ] == 14 ) {
$errors [ 2 ] = 'У вас тяжелая травма, вы не можете передвигаться...' ;
}
if ( $errors ) {
foreach ( $errors as $error ) {
echo sprintf ( '<span class="error">%s</span>' , $error );
}
2020-10-26 22:13:07 +00:00
} elseif ( in_array ( $roomId , self :: allowedRoomMoves ( $roomIdCurrent ))) {
echo 111 ;
db :: c () -> query ( 'UPDATE users, online SET users.room = ?i, online.room = ?i WHERE `online`.`user_id` = `users`.`id` AND `online`.`user_id` = ?i' , $roomId , $roomId , $_SESSION [ 'uid' ]);
header ( 'location: ' . self :: $roomFileName [ $roomId ]);
2020-10-26 18:16:28 +00:00
exit ;
}
}
/**
* Проверка можно ли перейти из комнаты в комнату .
* @ param int $roomId ID комнаты
* @ return array | int []
*/
private static function allowedRoomMoves ( int $roomId ) : array
{
/*
* 1 location : main . php ? goto = arena
* 2 Room 22 shop . php
* 3 Room 25 comission . php
* 4 Room 23 repair . php
* 6 Room 27 posr . php
* 7 Room 21 [ STREET ]
* 8 Room 26 [ STREET ]
* 13 location : quest_room . php
* 17 Room 50 ashop . php
* 222 Room 2702 [ STREET ]
*/
2020-10-26 22:21:00 +00:00
$room [ 20 ] = [ 21 , 401 , 660 , 777 , 2601 ];
2020-10-26 18:16:28 +00:00
/*
* 3 Room 2111 [ STREET ]
* 4 Room 20 [ STREET ]
* 5 Room 29 Bank . php
* 13 Room 34 fshop . php
* 14 Room 30 clan_create . php
* 16 Room 31 tower . php
* 650 Room 650 ul_clans . php
*/
2020-10-26 22:13:07 +00:00
$room [ 21 ] = [ 20 , 29 , 30 , 31 , 34 , 650 , 2111 ];
2020-10-26 18:16:28 +00:00
$room [ 26 ] = [ 3 , 4 , 6 , 660 ];
2020-10-26 22:13:07 +00:00
$room [ 2601 ] = [ 26 , 37 , 404 , 1051 , 2655 ];
$room [ 2655 ] = [ 603 , 2601 ];
2020-10-26 18:16:28 +00:00
/*
* 1 Room 21 [ STREET ]
* 2 location : city . php ? haos - где эта херня вообще ?
* 14 NULL
* 21 NULL
* 203 Room 1055 group_arena . php
* [ ! not on map ] 666 Room 666 jail . php
* 1000
*/
2020-10-26 22:13:07 +00:00
$room [ 2111 ] = [ 21 , 620 , 666 , 1055 ];
$room [ 2701 ] = [ 402 , 2111 ];
$room [ 2702 ] = [ 20 , 61 ];
if ( $room [ $roomId ] === null ) {
2020-10-26 18:16:28 +00:00
return [];
}
return $room [ $roomId ];
}
}